qgis_label_buffers_patch.diff

Nikolay's buffers patch with modifications by Tim - Tim Sutton, 2009-12-02 03:24 PM

Download (32 KB)

View differences:

python/core/qgslabel.sip (working copy)
30 30
      YOffset,
31 31
      Angle,
32 32
      Alignment,
33
      BufferEnabled,
33
      BufferType,
34
      BufferArrowType,
34 35
      BufferSize,
35 36
      BufferColor,
36 37
      BufferBrush,
......
62 63
     *  \param classAttributes attributes to use for labeling
63 64
     *  \note added in 1.2
64 65
    */
65
    void renderLabel ( QgsRenderContext &renderContext, QgsFeature &feature, bool selected, QgsLabelAttributes *classAttributes=0);
66
    void renderLabel ( QgsRenderContext &renderContext, QgsFeature &feature,
67
                       bool selected, QgsLabelAttributes *classAttributes=0);
66 68

  
67 69
    /** Reads the renderer configuration from an XML file
68 70
     @param rnode the Dom node to read 
src/app/qgslabeldialog.cpp (working copy)
44 44

  
45 45
  connect( btnDefaultFont, SIGNAL( clicked() ),
46 46
           this, SLOT( changeFont() ) );
47
  connect( pbnDefaultBufferColor_2, SIGNAL( clicked() ),
47
  connect( pbnBufferColor, SIGNAL( clicked() ),
48 48
           this, SLOT( changeBufferColor() ) );
49 49
  connect( pbnDefaultFontColor, SIGNAL( clicked() ),
50 50
           this, SLOT( changeFontColor() ) );
......
258 258
  //set the state of the multiline enabled checkbox
259 259
  chkUseMultiline->setChecked( myLabelAttributes->multilineEnabled() );
260 260
  //set the state of the buffer enabled checkbox
261
  chkUseBuffer->setChecked( myLabelAttributes->bufferEnabled() );
261
  cboBufferType->setCurrentIndex( myLabelAttributes->bufferType() );
262
  //cboBufferArrowType->setCurrentIndex( myLabelAttributes->bufferArrowType() );
262 263

  
263 264
  //NOTE: do we need this line too? TS
264 265
  spinBufferSize->setValue( myLabelAttributes->bufferSize() );
......
366 367
  {
367 368
    myTypeInt = QgsLabelAttributes::MapUnits;
368 369
  }
370

  
371

  
369 372
  myLabelAttributes->setOffset( spinXOffset->value(), spinYOffset->value(), myTypeInt );
370 373
  myLabelAttributes->setAutoAngle( spinAngle->value() == -1 );
371 374
  myLabelAttributes->setAngle( spinAngle->value() );
......
384 387
  if ( radioOver->isChecked() )        myLabelAttributes->setAlignment( Qt::AlignCenter );
385 388

  
386 389
  myLabelAttributes->setMultilineEnabled( chkUseMultiline->isChecked() );
387
  myLabelAttributes->setBufferEnabled( chkUseBuffer->isChecked() );
390
  myLabelAttributes->setBufferType( cboBufferType->currentIndex() );
391
  //myLabelAttributes->setBufferArrowType( cboBufferArrowType->currentIndex() );
388 392
  myLabelAttributes->setBufferColor( mBufferColor );
389 393
  myTypeInt = 0;
390 394
  if ( radioBufferUnitsPoints->isChecked() )
......
395 399
  {
396 400
    myTypeInt = QgsLabelAttributes::MapUnits;
397 401
  }
402

  
398 403
  myLabelAttributes->setBufferSize( spinBufferSize->value(), myTypeInt );
399 404
  //TODO - transparency attributes for buffers
400 405

  
src/core/qgslabelattributes.cpp (working copy)
44 44
    mAngleIsAuto( false ),
45 45
    mAlignment( 0 ),
46 46
    mAlignmentIsSet( false ),
47
    mBufferEnabledFlag( false ),
48 47
    mBufferSizeType( 0 ),
49 48
    mBufferSize( 0.0 ),
50 49
    mBufferSizeIsSet( false ),
......
288 287
}
289 288

  
290 289
/* Buffer */
290
/** @note since v1.4 this just tests to see if 
291
    buffer type is font and returns true if it is */
291 292
bool QgsLabelAttributes::bufferEnabled() const
292 293
{
293
  return mBufferEnabledFlag;
294
  return false; //FIXME!
294 295
}
296
/** @note since v1.4 this just returns true if  
297
    buffer type is font */
295 298
void QgsLabelAttributes::setBufferEnabled( bool useBufferFlag )
296 299
{
297
  mBufferEnabledFlag = useBufferFlag;
300
  return 	; // FIXME!
298 301
}
302
void QgsLabelAttributes::setBufferArrowType( int BufferArrowType )
303
{
304
  mBufferArrowType = BufferArrowType;
305
}
306
int QgsLabelAttributes::bufferType()
307
{
308
  return mBufferType;
309
}
310
int QgsLabelAttributes::bufferArrowType()
311
{
312
  return mBufferArrowType;
313
}
314
void QgsLabelAttributes::setBufferType( int BufferType )
315
{
316
  mBufferType = BufferType;
317
}
318

  
299 319
void QgsLabelAttributes::setBufferSize( double size, int type )
300 320
{
301 321
  mBufferSizeType = type;
src/core/qgslabel.cpp (working copy)
250 250

  
251 251
  int dx = 0;
252 252
  int dy = 0;
253
  int labeltype = -1;
253 254

  
254 255
  value = fieldValue( Alignment, feature );
255 256
  if ( value.isEmpty() )
......
275 276
      alignment |= Qt::AlignTop;
276 277
    else
277 278
      alignment |= Qt::AlignVCenter;
279

  
280
	labeltype = -1; // not set
281
    if ( value.contains( "plaintext" ) )
282
      labeltype = 1;
283
    else if ( value.contains( "plainrect" ) )
284
      labeltype = 2;
285
    else if ( value.contains( "plainroundrect" ) )
286
      labeltype = 3;
287
    else if ( value.contains( "linerect" ) )
288
      labeltype = 4;
289
    else if ( value.contains( "lineroundrect" ) )
290
      labeltype = 5;
291
    else if ( value.contains( "arrowrect" ) )
292
      labeltype = 6;
293
    else if ( value.contains( "arrowroundrect" ) )
294
      labeltype = 7;
278 295
  }
279 296

  
280 297
  if ( alignment & Qt::AlignLeft )
......
352 369
  // Work out a suitable position to put the label for the
353 370
  // feature. For multi-geometries, put the same label on each
354 371
  // part.
355
  if ( useOverridePoint )
372
  std::vector<labelpoint> points;
373
  labelPoint( points, feature );
374
  for ( uint i = 0; i < points.size(); ++i )
356 375
  {
357
    renderLabel( renderContext, overridePoint, text, font, pen, dx, dy,
358
                 xoffset, yoffset, ang, width, height, alignment );
359
  }
360
  else
361
  {
362
    std::vector<labelpoint> points;
363
    labelPoint( points, feature );
364
    for ( uint i = 0; i < points.size(); ++i )
365
    {
376
	if ( useOverridePoint ) {
377
	  QgsPoint pointtmp01 = renderContext.mapToPixel().transform( points[i].p );
378
	  QgsPoint pointtmp02 = renderContext.mapToPixel().transform( overridePoint );
366 379
      renderLabel( renderContext, points[i].p, text, font, pen, dx, dy,
367
                   xoffset, yoffset, mLabelAttributes->angleIsAuto() ? points[i].angle : ang, width, height, alignment );
380
                   pointtmp02.x()-pointtmp01.x(), pointtmp01.y()-pointtmp02.y(), mLabelAttributes->angleIsAuto() ? points[i].angle : ang, width, height, alignment, labeltype );
381
    } else {
382
      renderLabel( renderContext, points[i].p, text, font, pen, dx, dy,
383
                   xoffset, yoffset, mLabelAttributes->angleIsAuto() ? points[i].angle : ang, width, height, alignment, labeltype );
368 384
    }
369 385
  }
370 386
}
......
375 391
                            int dx, int dy,
376 392
                            double xoffset, double yoffset,
377 393
                            double ang,
378
                            int width, int height, int alignment )
394
                            int width, int height, int alignment, int labeltype )
379 395
{
380 396
  QPainter *painter = renderContext.painter();
381 397

  
......
415 431
  //
416 432
  // Draw a buffer behind the text if one is desired
417 433
  //
418
  if ( mLabelAttributes->bufferSizeIsSet() && mLabelAttributes->bufferEnabled() )
434
  if ( mLabelAttributes->bufferSizeIsSet() && (mLabelAttributes->bufferType() != 0) )
419 435
  {
420 436
    double myBufferSize = mLabelAttributes->bufferSize() * 0.3527 * renderContext.scaleFactor() * renderContext.rasterScaleFactor();
421 437
    QPen bufferPen;
......
439 455
      bufferStepSize = 1 / renderContext.rasterScaleFactor();
440 456
    }
441 457

  
442
    for ( double i = dx - myBufferSize; i <= dx + myBufferSize; i += bufferStepSize )
443
    {
444
      for ( double j = dy - myBufferSize; j <= dy + myBufferSize; j += bufferStepSize )
445
      {
446
        if ( mLabelAttributes->multilineEnabled() )
447
          painter->drawText( QRectF( i, j - height, width, height ), alignment, text );
448
        else
449
          painter->drawText( QPointF( i, j ), text );
450
      }
451
    }
458
	if (labeltype==-1) {
459
		labeltype = mLabelAttributes->bufferType();
460
	}
461
	if (labeltype==2) { // plainrect
462
    	int lxl = dx - myBufferSize; // label x left
463
	    int lxr = dx + myBufferSize + width; // label x right
464
	    int lyt = dy - myBufferSize - height; // label y top
465
        int lyb = dy + myBufferSize; // label y bottom
466
	    QPainterPath rectPath;
467
        rectPath.moveTo( lxl, lyt );
468
        rectPath.lineTo( lxr, lyt );
469
        rectPath.lineTo( lxr, lyb );
470
        rectPath.lineTo( lxl, lyb );
471
        rectPath.closeSubpath();
472
	    QColor brushColor = mLabelAttributes->bufferColor();
473
	    brushColor.setAlpha( 50 );
474
	    QBrush symbolBrush = QBrush( brushColor );
475
	    painter->fillPath( rectPath, symbolBrush );
476
	    QColor frameColor = mLabelAttributes->color();
477
	    QPen framePen = QPen( QColor( frameColor ) );
478
	    framePen.setWidth( 2 );
479
	    painter->setPen( framePen );
480
	    painter->drawPath( rectPath );
481
	} else if (labeltype==3) { // plainroundrect
482
    	int lxl = dx - myBufferSize; // label x left
483
	    int lxr = dx + myBufferSize + width; // label x right
484
	    int lyt = dy - myBufferSize - height; // label y top
485
        int lyb = dy + myBufferSize; // label y bottom
486
	    QPainterPath roundRectPath;
487
		roundRectPath.moveTo( lxl, lyt+5 );
488
        roundRectPath.arcTo( lxl, lyt, 10.0, 10.0, 180.0, -90.0);
489
        roundRectPath.lineTo( lxr-5, lyt );
490
        roundRectPath.arcTo( lxr-10, lyt, 10.0, 10.0, 90.0, -90.0);
491
        roundRectPath.lineTo( lxr, lyb-5 );
492
        roundRectPath.arcTo( lxr-10, lyb-10, 10.0, 10.0, 0.0, -90.0);
493
        roundRectPath.lineTo( lxl+5, lyb );
494
        roundRectPath.arcTo( lxl, lyb-10 , 10.0, 10.0, 270.0, -90.0);
495
        roundRectPath.closeSubpath();
496
	    QColor brushColor = mLabelAttributes->bufferColor();
497
	    brushColor.setAlpha( 50 );
498
	    QBrush symbolBrush = QBrush( brushColor );
499
	    painter->fillPath( roundRectPath, symbolBrush );
500
	    QColor frameColor = mLabelAttributes->color();
501
	    QPen framePen = QPen( QColor( frameColor ) );
502
	    framePen.setWidth( 2 );
503
	    painter->setPen( framePen );
504
	    painter->drawPath( roundRectPath );
505
	} else if (labeltype==4) { // linerect
506
    	int lxl = dx - myBufferSize; // label x left
507
	    int lxr = dx + myBufferSize + width; // label x right
508
	    int lyt = dy - myBufferSize - height; // label y top
509
        int lyb = dy + myBufferSize; // label y bottom
510
	    bool bNeedArrow = !( (lxl<=0-xoffset) and (0-xoffset<=lxr) and (lyt<=0+yoffset) and (0+yoffset<=lyb) );
511
	    QPainterPath rectPath;
512
        rectPath.moveTo( lxl, lyt );
513
        rectPath.lineTo( lxr, lyt );
514
        rectPath.lineTo( lxr, lyb );
515
        rectPath.lineTo( lxl, lyb );
516
        rectPath.closeSubpath();
517
	    QColor brushColor = mLabelAttributes->bufferColor();
518
	    brushColor.setAlpha( 50 );
519
	    QBrush symbolBrush = QBrush( brushColor );
520
	    painter->fillPath( rectPath, symbolBrush );
521
	    QColor frameColor = mLabelAttributes->color();
522
	    QPen framePen = QPen( QColor( frameColor ) );
523
	    framePen.setWidth( 2 );
524
	    painter->setPen( framePen );
525
	    painter->drawPath( rectPath );
526
	    if (bNeedArrow) {
527
		    int llx;
528
		    int lly;
529
		    if (abs(0-xoffset-lxl)>(abs(0-xoffset-lxr))) {
530
			    llx = lxr;
531
		    } else {
532
  			    llx = lxl;
533
		    }
534
		    if (abs(0+yoffset-lyt)>(abs(0+yoffset-lyb))) {
535
			    lly = lyb;
536
		    } else {
537
  			    lly = lyt;
538
		    }
539
		    painter->drawLine( 0-xoffset,0+yoffset, llx,lly );
540
            //painter->drawRect( -5,-5, 10,10 );
541
	    }
542
	} else if (labeltype==5) { // lineroundrect
543
    	int lxl = dx - myBufferSize; // label x left
544
	    int lxr = dx + myBufferSize + width; // label x right
545
	    int lyt = dy - myBufferSize - height; // label y top
546
        int lyb = dy + myBufferSize; // label y bottom
547
	    bool bNeedArrow = !( (lxl<=0-xoffset) and (0-xoffset<=lxr) and (lyt<=0+yoffset) and (0+yoffset<=lyb) );
548
	    QPainterPath roundRectPath;
549
		roundRectPath.moveTo( lxl, lyt+5 );
550
        roundRectPath.arcTo( lxl, lyt, 10.0, 10.0, 180.0, -90.0);
551
        roundRectPath.lineTo( lxr-5, lyt );
552
        roundRectPath.arcTo( lxr-10, lyt, 10.0, 10.0, 90.0, -90.0);
553
        roundRectPath.lineTo( lxr, lyb-5 );
554
        roundRectPath.arcTo( lxr-10, lyb-10, 10.0, 10.0, 0.0, -90.0);
555
        roundRectPath.lineTo( lxl+5, lyb );
556
        roundRectPath.arcTo( lxl, lyb-10 , 10.0, 10.0, 270.0, -90.0);
557
        roundRectPath.closeSubpath();
558
	    QColor brushColor = mLabelAttributes->bufferColor();
559
	    brushColor.setAlpha( 50 );
560
	    QBrush symbolBrush = QBrush( brushColor );
561
	    painter->fillPath( roundRectPath, symbolBrush );
562
	    QColor frameColor = mLabelAttributes->color();
563
	    QPen framePen = QPen( QColor( frameColor ) );
564
	    framePen.setWidth( 2 );
565
	    painter->setPen( framePen );
566
	    painter->drawPath( roundRectPath );
567
	    if (bNeedArrow) {
568
		    int llx;
569
		    int lly;
570
		    if (abs(0-xoffset-lxl)>(abs(0-xoffset-lxr))) {
571
			    llx = lxr-2;
572
		    } else {
573
  			    llx = lxl+2;
574
		    }
575
		    if (abs(0+yoffset-lyt)>(abs(0+yoffset-lyb))) {
576
			    lly = lyb-2;
577
		    } else {
578
  			    lly = lyt+2;
579
		    }
580
		    painter->drawLine( 0-xoffset,0+yoffset, llx,lly );
581
            //painter->drawRect( -5,-5, 10,10 );
582
	    }
583
	} else if (labeltype==6) { // arrowrect  (not ready yet)
584
    	int lxl = dx - myBufferSize; // label x left
585
	    int lxr = dx + myBufferSize + width; // label x right
586
	    int lyt = dy - myBufferSize - height; // label y top
587
        int lyb = dy + myBufferSize; // label y bottom
588
	    bool bNeedArrow = !( (lxl<=0-xoffset) and (0-xoffset<=lxr) and (lyt<=0+yoffset) and (0+yoffset<=lyb) );
589
	    QPainterPath rectPath;
590
        rectPath.moveTo( lxl, lyt );
591
        rectPath.lineTo( lxr, lyt );
592
        rectPath.lineTo( lxr, lyb );
593
        rectPath.lineTo( lxl, lyb );
594
        rectPath.closeSubpath();
595
	    QColor brushColor = mLabelAttributes->bufferColor();
596
	    brushColor.setAlpha( 50 );
597
	    QBrush symbolBrush = QBrush( brushColor );
598
	    painter->fillPath( rectPath, symbolBrush );
599
	    QColor frameColor = mLabelAttributes->color();
600
	    QPen framePen = QPen( QColor( frameColor ) );
601
	    framePen.setWidth( 2 );
602
	    painter->setPen( framePen );
603
	    painter->drawPath( rectPath );
604
	    if (bNeedArrow) {
605
		    int llx;
606
		    int lly;
607
		    if (abs(0-xoffset-lxl)>(abs(0-xoffset-lxr))) {
608
			    llx = lxr;
609
		    } else {
610
  			    llx = lxl;
611
		    }
612
		    if (abs(0+yoffset-lyt)>(abs(0+yoffset-lyb))) {
613
			    lly = lyb;
614
		    } else {
615
  			    lly = lyt;
616
		    }
617
		    painter->drawLine( 0-xoffset,0+yoffset, llx,lly );
618
            //painter->drawRect( -5,-5, 10,10 );
619
	    }
620
	} else if (labeltype==7) { // arrowroundrect (not ready yet)
621
    	int lxl = dx - myBufferSize; // label x left
622
	    int lxr = dx + myBufferSize + width; // label x right
623
	    int lyt = dy - myBufferSize - height; // label y top
624
        int lyb = dy + myBufferSize; // label y bottom
625
	    bool bNeedArrow = !( (lxl<=0-xoffset) and (0-xoffset<=lxr) and (lyt<=0+yoffset) and (0+yoffset<=lyb) );
626
	    QPainterPath roundRectPath;
627
		roundRectPath.moveTo( lxl, lyt+5 );
628
        roundRectPath.arcTo( lxl, lyt, 10.0, 10.0, 180.0, -90.0);
629
        roundRectPath.lineTo( lxr-5, lyt );
630
        roundRectPath.arcTo( lxr-10, lyt, 10.0, 10.0, 90.0, -90.0);
631
        roundRectPath.lineTo( lxr, lyb-5 );
632
        roundRectPath.arcTo( lxr-10, lyb-10, 10.0, 10.0, 0.0, -90.0);
633
        roundRectPath.lineTo( lxl+5, lyb );
634
        roundRectPath.arcTo( lxl, lyb-10 , 10.0, 10.0, 270.0, -90.0);
635
        roundRectPath.closeSubpath();
636
	    QColor brushColor = mLabelAttributes->bufferColor();
637
	    brushColor.setAlpha( 50 );
638
	    QBrush symbolBrush = QBrush( brushColor );
639
	    painter->fillPath( roundRectPath, symbolBrush );
640
	    QColor frameColor = mLabelAttributes->color();
641
	    QPen framePen = QPen( QColor( frameColor ) );
642
	    framePen.setWidth( 2 );
643
	    painter->setPen( framePen );
644
	    painter->drawPath( roundRectPath );
645
	    if (bNeedArrow) {
646
		    int llx;
647
		    int lly;
648
		    if (abs(0-xoffset-lxl)>(abs(0-xoffset-lxr))) {
649
			    llx = lxr-2;
650
		    } else {
651
  			    llx = lxl+2;
652
		    }
653
		    if (abs(0+yoffset-lyt)>(abs(0+yoffset-lyb))) {
654
			    lly = lyb-2;
655
		    } else {
656
  			    lly = lyt+2;
657
		    }
658
		    painter->drawLine( 0-xoffset,0+yoffset, llx,lly );
659
            //painter->drawRect( -5,-5, 10,10 );
660
	    }
661
	} else { // plaintext
662
        for ( double i = dx - myBufferSize; i <= dx + myBufferSize; i += bufferStepSize )
663
        {
664
            for ( double j = dy - myBufferSize; j <= dy + myBufferSize; j += bufferStepSize )
665
            {
666
                if ( mLabelAttributes->multilineEnabled() )
667
                    painter->drawText( QRectF( i, j - height, width, height ), alignment, text );
668
                else
669
                    painter->drawText( QPointF( i, j ), text );
670
			}
671
        }
672
	};
452 673
  }
453

  
454 674
  painter->setPen( pen );
455 675
  if ( mLabelAttributes->multilineEnabled() )
456 676
    painter->drawText( dx, dy - height, width, height, alignment, text );
......
975 1195
  {
976 1196
    el = scratchNode.toElement();
977 1197

  
978
    mLabelAttributes->setBufferEnabled(( bool )el.attribute( "on", "0" ).toInt() );
979
    readLabelField( el, BufferEnabled );
1198
    mLabelAttributes->setBufferType(( int )el.attribute( "on", "0" ).toInt() );
1199
    readLabelField( el, BufferType );
980 1200
  }
981 1201

  
982 1202
  scratchNode = node.namedItem( "multilineenabled" );
......
1272 1492

  
1273 1493
  // buffer enabled
1274 1494
  QDomElement bufferenabled = document.createElement( "bufferenabled" );
1275
  if ( mLabelAttributes->bufferEnabled() )
1495
  if ( mLabelAttributes->bufferType() != 0 )
1276 1496
  {
1277
    bufferenabled.setAttribute( "on", mLabelAttributes->bufferEnabled() );
1278
    if ( mLabelFieldIdx[BufferEnabled] != -1 )
1497
    bufferenabled.setAttribute( "on", mLabelAttributes->bufferType() );
1498
    if ( mLabelFieldIdx[BufferType] != 0 )
1279 1499
    {
1280
      bufferenabled.setAttribute( "fieldname", labelField( BufferEnabled ) );
1500
	  bufferenabled.setAttribute( "fieldname", labelField( BufferType ) );
1281 1501
    }
1282 1502
    else
1283 1503
    {
src/core/qgslabel.h (working copy)
73 73
      YOffset,
74 74
      Angle,
75 75
      Alignment,
76
      BufferEnabled,
76
      BufferType,
77
      BufferArrowType,
77 78
      BufferSize,
78 79
      BufferColor,
79 80
      BufferBrush,
......
113 114
     *  \param sizeScale global scale factor for size in pixels, labels in map units are not scaled
114 115
     *  \note added in 1.2
115 116
     */
116
    void renderLabel( QgsRenderContext &renderContext, QgsFeature &feature, bool selected, QgsLabelAttributes *classAttributes = 0 );
117
    void renderLabel( QgsRenderContext &renderContext, 
118
                      QgsFeature &feature,
119
                      bool selected, 
120
                      QgsLabelAttributes *classAttributes = 0 );
117 121

  
118 122
    /** Reads the renderer configuration from an XML file
119 123
     @param rnode the Dom node to read
......
181 185
                      int dx, int dy,
182 186
                      double xoffset, double yoffset,
183 187
                      double ang,
184
                      int width, int height, int alignment );
188
                      int width, int height, int alignment, int labeltype  );
185 189

  
186 190
    bool readLabelField( QDomElement &el, int attr, QString prefix );
187 191

  
src/core/qgslabelattributes.h (working copy)
149 149
    int  alignment( void ) const;
150 150

  
151 151
    /* Buffer */
152
    /** @note since v1.4 this just tests to see if 
153
         buffer type is font and returns true if it is */
152 154
    bool   bufferEnabled() const;
155
    /** @note since v1.4 this just returns true if  
156
         buffer type is font */
153 157
    void   setBufferEnabled( bool useBufferFlag );
158
    void   setBufferType( int BufferType );
159
    void   setBufferArrowType( int BufferArrowType );
160
    int    bufferType();
161
    int    bufferArrowType();
154 162
    void   setBufferSize( double size, int type );
155 163
    bool   bufferSizeIsSet( void ) const;
156 164
    int    bufferSizeType( void ) const;
......
217 225
    bool mAlignmentIsSet;
218 226

  
219 227
    /** Buffer enablement */
220
    bool mBufferEnabledFlag;
228
    int mBufferType;
229
	int mBufferArrowType;
221 230
    /** Buffer size, size type */
222 231
    int    mBufferSizeType;
223 232
    double mBufferSize;
src/ui/qgslabeldialogbase.ui (working copy)
6 6
   <rect>
7 7
    <x>0</x>
8 8
    <y>0</y>
9
    <width>642</width>
10
    <height>516</height>
9
    <width>756</width>
10
    <height>567</height>
11 11
   </rect>
12 12
  </property>
13 13
  <property name="sizePolicy">
......
32 32
      <property name="geometry">
33 33
       <rect>
34 34
        <x>0</x>
35
        <y>-990</y>
36
        <width>619</width>
37
        <height>1440</height>
35
        <y>0</y>
36
        <width>733</width>
37
        <height>1551</height>
38 38
       </rect>
39 39
      </property>
40
      <layout class="QGridLayout" name="gridLayout">
40
      <layout class="QGridLayout" name="gridLayout_8">
41 41
       <item row="0" column="0">
42 42
        <layout class="QGridLayout">
43 43
         <item row="0" column="0">
......
45 45
           <property name="title">
46 46
            <string>Basic label options</string>
47 47
           </property>
48
           <layout class="QGridLayout" name="gridLayout_8">
48
           <layout class="QGridLayout" name="gridLayout">
49 49
            <item row="0" column="0">
50 50
             <widget class="QLabel" name="textLabel5">
51 51
              <property name="text">
......
56 56
              </property>
57 57
             </widget>
58 58
            </item>
59
            <item row="0" column="2">
59
            <item row="0" column="1">
60 60
             <widget class="QComboBox" name="cboLabelField">
61 61
              <property name="sizePolicy">
62 62
               <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
......
76 76
              </property>
77 77
             </widget>
78 78
            </item>
79
            <item row="1" column="2">
79
            <item row="1" column="1">
80 80
             <widget class="QLineEdit" name="leDefaultLabel">
81 81
              <property name="sizePolicy">
82 82
               <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
......
100 100
             </widget>
101 101
            </item>
102 102
            <item row="2" column="1">
103
             <widget class="QLabel" name="textLabel5_2_2_3_2">
104
              <property name="text">
105
               <string>Font size</string>
106
              </property>
107
              <property name="alignment">
108
               <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
109
              </property>
110
              <property name="buddy">
111
               <cstring>spinFontSize</cstring>
112
              </property>
113
             </widget>
103
             <layout class="QHBoxLayout" name="horizontalLayout_4">
104
              <item>
105
               <widget class="QLabel" name="textLabel5_2_2_3_2">
106
                <property name="text">
107
                 <string>Font size</string>
108
                </property>
109
                <property name="alignment">
110
                 <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
111
                </property>
112
                <property name="buddy">
113
                 <cstring>spinFontSize</cstring>
114
                </property>
115
               </widget>
116
              </item>
117
              <item>
118
               <widget class="QDoubleSpinBox" name="spinFontSize">
119
                <property name="sizePolicy">
120
                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
121
                  <horstretch>0</horstretch>
122
                  <verstretch>0</verstretch>
123
                 </sizepolicy>
124
                </property>
125
                <property name="minimumSize">
126
                 <size>
127
                  <width>50</width>
128
                  <height>0</height>
129
                 </size>
130
                </property>
131
                <property name="decimals">
132
                 <number>6</number>
133
                </property>
134
                <property name="maximum">
135
                 <double>1000000.000000000000000</double>
136
                </property>
137
                <property name="value">
138
                 <double>0.000000000000000</double>
139
                </property>
140
               </widget>
141
              </item>
142
             </layout>
114 143
            </item>
115
            <item row="2" column="2">
116
             <widget class="QDoubleSpinBox" name="spinFontSize">
117
              <property name="sizePolicy">
118
               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
119
                <horstretch>0</horstretch>
120
                <verstretch>0</verstretch>
121
               </sizepolicy>
122
              </property>
123
              <property name="minimumSize">
124
               <size>
125
                <width>50</width>
126
                <height>0</height>
127
               </size>
128
              </property>
129
              <property name="decimals">
130
               <number>6</number>
131
              </property>
132
              <property name="maximum">
133
               <double>1000000.000000000000000</double>
134
              </property>
135
              <property name="value">
136
               <double>0.000000000000000</double>
137
              </property>
138
             </widget>
139
            </item>
140 144
            <item row="3" column="0">
141 145
             <widget class="QPushButton" name="pbnDefaultFontColor">
142 146
              <property name="sizePolicy">
......
151 155
             </widget>
152 156
            </item>
153 157
            <item row="3" column="1">
154
             <widget class="QLabel" name="textLabel1_2_2_2_2_2">
155
              <property name="text">
156
               <string>Angle (deg)</string>
157
              </property>
158
              <property name="buddy">
159
               <cstring>spinAngle</cstring>
160
              </property>
161
             </widget>
158
             <layout class="QHBoxLayout" name="horizontalLayout_3">
159
              <item>
160
               <widget class="QLabel" name="textLabel1_2_2_2_2_2">
161
                <property name="text">
162
                 <string>Angle (deg)</string>
163
                </property>
164
                <property name="buddy">
165
                 <cstring>spinAngle</cstring>
166
                </property>
167
               </widget>
168
              </item>
169
              <item>
170
               <widget class="QSpinBox" name="spinAngle">
171
                <property name="suffix">
172
                 <string>°</string>
173
                </property>
174
                <property name="maximum">
175
                 <number>360</number>
176
                </property>
177
                <property name="value">
178
                 <number>0</number>
179
                </property>
180
               </widget>
181
              </item>
182
             </layout>
162 183
            </item>
163
            <item row="3" column="2">
164
             <widget class="QSpinBox" name="spinAngle">
165
              <property name="suffix">
166
               <string>°</string>
167
              </property>
168
              <property name="maximum">
169
               <number>360</number>
170
              </property>
171
              <property name="value">
172
               <number>0</number>
173
              </property>
174
             </widget>
175
            </item>
176 184
            <item row="4" column="0">
177 185
             <widget class="QCheckBox" name="chkUseMultiline">
178 186
              <property name="text">
......
189 197
        </layout>
190 198
       </item>
191 199
       <item row="1" column="0">
200
        <widget class="QGroupBox" name="groupBox_9">
201
         <property name="title">
202
          <string>Buffer</string>
203
         </property>
204
         <layout class="QGridLayout" name="gridLayout_11">
205
          <item row="0" column="0">
206
           <widget class="QLabel" name="label_2">
207
            <property name="text">
208
             <string>Type</string>
209
            </property>
210
           </widget>
211
          </item>
212
          <item row="0" column="1">
213
           <layout class="QHBoxLayout" name="horizontalLayout">
214
            <item>
215
             <widget class="QComboBox" name="cboBufferType">
216
              <item>
217
               <property name="text">
218
                <string>None</string>
219
               </property>
220
              </item>
221
              <item>
222
               <property name="text">
223
                <string>Text buffer</string>
224
               </property>
225
              </item>
226
              <item>
227
               <property name="text">
228
                <string>Plain rectangle</string>
229
               </property>
230
              </item>
231
              <item>
232
               <property name="text">
233
                <string>Rounded rectangle</string>
234
               </property>
235
              </item>
236
              <item>
237
               <property name="text">
238
                <string>Plain rect with arrow</string>
239
               </property>
240
              </item>
241
              <item>
242
               <property name="text">
243
                <string>Rounded rect with arrow</string>
244
               </property>
245
              </item>
246
             </widget>
247
            </item>
248
            <item>
249
             <widget class="QToolButton" name="pbnBufferColor">
250
              <property name="text">
251
               <string>Color</string>
252
              </property>
253
             </widget>
254
            </item>
255
           </layout>
256
          </item>
257
          <item row="1" column="0">
258
           <widget class="QLabel" name="textLabel4_3_2_7">
259
            <property name="text">
260
             <string>Buffer size</string>
261
            </property>
262
           </widget>
263
          </item>
264
          <item row="1" column="1">
265
           <layout class="QHBoxLayout" name="horizontalLayout_2">
266
            <item>
267
             <widget class="QDoubleSpinBox" name="spinBufferSize_2"/>
268
            </item>
269
            <item>
270
             <widget class="QCheckBox" name="chkBufferUnitsMap">
271
              <property name="text">
272
               <string>Map units</string>
273
              </property>
274
             </widget>
275
            </item>
276
           </layout>
277
          </item>
278
         </layout>
279
        </widget>
280
       </item>
281
       <item row="2" column="0">
192 282
        <widget class="QGroupBox" name="groupBox_2">
193 283
         <property name="title">
194 284
          <string>Placement</string>
......
350 440
         </layout>
351 441
        </widget>
352 442
       </item>
353
       <item row="10" column="0">
443
       <item row="5" column="0">
354 444
        <widget class="QGroupBox" name="groupBox_4">
355 445
         <property name="title">
356 446
          <string>Buffer size units</string>
......
441 531
         </layout>
442 532
        </widget>
443 533
       </item>
444
       <item row="11" column="0">
534
       <item row="6" column="0">
445 535
        <widget class="QGroupBox" name="buttonGroup10">
446 536
         <property name="title">
447 537
          <string>Offset units</string>
......
492 582
         </layout>
493 583
        </widget>
494 584
       </item>
495
       <item row="12" column="0">
585
       <item row="7" column="0">
496 586
        <widget class="QGroupBox" name="groupBox_5">
497 587
         <property name="title">
498 588
          <string>Data defined placement</string>
......
533 623
         </layout>
534 624
        </widget>
535 625
       </item>
536
       <item row="13" column="0">
626
       <item row="8" column="0">
537 627
        <widget class="QGroupBox" name="groupBox">
538 628
         <property name="title">
539 629
          <string>Data defined properties</string>
......
701 791
         </layout>
702 792
        </widget>
703 793
       </item>
704
       <item row="14" column="0">
794
       <item row="9" column="0">
705 795
        <widget class="QGroupBox" name="groupBox_6">
706 796
         <property name="title">
707 797
          <string>Data defined buffer</string>
......
761 851
         </layout>
762 852
        </widget>
763 853
       </item>
764
       <item row="15" column="0">
854
       <item row="10" column="0">
765 855
        <widget class="QGroupBox" name="groupBox_7">
766 856
         <property name="title">
767 857
          <string>Data defined position</string>
......
881 971
  <tabstop>pbnDefaultFontColor</tabstop>
882 972
  <tabstop>spinAngle</tabstop>
883 973
  <tabstop>chkUseMultiline</tabstop>
974
  <tabstop>cboBufferType</tabstop>
975
  <tabstop>pbnBufferColor</tabstop>
976
  <tabstop>spinBufferSize_2</tabstop>
977
  <tabstop>chkBufferUnitsMap</tabstop>
884 978
  <tabstop>radioAboveLeft</tabstop>
885 979
  <tabstop>radioAbove</tabstop>
886 980
  <tabstop>radioAboveRight</tabstop>