Skip to content

Commit fe2db52

Browse files
committedMar 28, 2015
Possible fix for placement of labels with offset from point mode and rotation (refs #12217)
1 parent 9961095 commit fe2db52

File tree

1 file changed

+17
-37
lines changed

1 file changed

+17
-37
lines changed
 

‎src/core/pal/feature.cpp

Lines changed: 17 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -332,20 +332,26 @@ namespace pal
332332
*lPos = new LabelPosition *[nbp];
333333

334334
// get from feature
335-
double label_x = f->label_x;
336-
double label_y = f->label_y;
337335
double labelW = f->label_x;
338336
double labelH = f->label_y;
339337

340-
double xdiff = 0.0;
341-
double ydiff = 0.0;
342-
double lx = 0.0;
343-
double ly = 0.0;
344338
double cost = 0.0001;
345339
int id = 0;
346340

347-
xdiff -= label_x / 2.0;
348-
ydiff -= label_y / 2.0;
341+
double xdiff = -labelW / 2.0;
342+
double ydiff = -labelH / 2.0;
343+
344+
if ( f->quadOffset )
345+
{
346+
if ( f->quadOffsetX != 0 )
347+
{
348+
xdiff += labelW / 2.0 * f->quadOffsetX;
349+
}
350+
if ( f->quadOffsetY != 0 )
351+
{
352+
ydiff += labelH / 2.0 * f->quadOffsetY;
353+
}
354+
}
349355

350356
if ( ! f->fixedPosition() )
351357
{
@@ -358,32 +364,6 @@ namespace pal
358364
}
359365
}
360366

361-
if ( angle != 0 )
362-
{
363-
// use LabelPosition construction to calculate new rotated label dimensions
364-
pal::LabelPosition* lp = new LabelPosition( 1, lx, ly, label_x, label_y, angle, 0.0, this );
365-
366-
double amin[2], amax[2];
367-
lp->getBoundingBox( amin, amax );
368-
labelW = amax[0] - amin[0];
369-
labelH = amax[1] - amin[1];
370-
371-
delete lp;
372-
}
373-
374-
LabelPosition::Quadrant quadrant = f->quadOffset ? quadrantFromOffset() : LabelPosition::QuadrantOver;
375-
if ( f->quadOffset )
376-
{
377-
if ( f->quadOffsetX != 0 )
378-
{
379-
xdiff += labelW / 2 * f->quadOffsetX;
380-
}
381-
if ( f->quadOffsetY != 0 )
382-
{
383-
ydiff += labelH / 2 * f->quadOffsetY;
384-
}
385-
}
386-
387367
if ( f->offsetPos )
388368
{
389369
if ( f->offsetPosX != 0 )
@@ -396,10 +376,10 @@ namespace pal
396376
}
397377
}
398378

399-
lx = x + xdiff;
400-
ly = y + ydiff;
379+
double lx = x + xdiff;
380+
double ly = y + ydiff;
401381

402-
( *lPos )[0] = new LabelPosition( id, lx, ly, label_x, label_y, angle, cost, this, false, quadrant );
382+
( *lPos )[0] = new LabelPosition( id, lx, ly, labelW, labelH, angle, cost, this );
403383
return nbp;
404384
}
405385

0 commit comments

Comments
 (0)
Please sign in to comment.