Lines 42-47
Link Here
|
42 |
#include <editeng/svxfont.hxx> |
42 |
#include <editeng/svxfont.hxx> |
43 |
#include <editeng/escpitem.hxx> |
43 |
#include <editeng/escpitem.hxx> |
44 |
|
44 |
|
|
|
45 |
#include <stdio.h> |
46 |
|
45 |
// Minimum: Prozentwert fuers kernen |
47 |
// Minimum: Prozentwert fuers kernen |
46 |
#define MINKERNPERCENT 5 |
48 |
#define MINKERNPERCENT 5 |
47 |
|
49 |
|
Lines 458-487
Link Here
|
458 |
Size SvxFont::QuickGetTextSize( const OutputDevice *pOut, const XubString &rTxt, |
460 |
Size SvxFont::QuickGetTextSize( const OutputDevice *pOut, const XubString &rTxt, |
459 |
const USHORT nIdx, const USHORT nLen, sal_Int32* pDXArray ) const |
461 |
const USHORT nIdx, const USHORT nLen, sal_Int32* pDXArray ) const |
460 |
{ |
462 |
{ |
|
|
463 |
Size aTxtSize; |
461 |
if ( !IsCaseMap() && !IsKern() ) |
464 |
if ( !IsCaseMap() && !IsKern() ) |
462 |
return Size( pOut->GetTextArray( rTxt, pDXArray, nIdx, nLen ), |
465 |
{ |
|
|
466 |
aTxtSize = Size( pOut->GetTextArray( rTxt, pDXArray, nIdx, nLen ), |
463 |
pOut->GetTextHeight() ); |
467 |
pOut->GetTextHeight() ); |
464 |
|
468 |
|
465 |
Size aTxtSize; |
469 |
// for (int i = 0;i < nLen; i++) |
466 |
aTxtSize.setHeight( pOut->GetTextHeight() ); |
470 |
// fprintf(stderr, "initial pos %d is at %d\n", i, pDXArray[i]); |
467 |
if ( !IsCaseMap() ) |
471 |
|
468 |
aTxtSize.setWidth( pOut->GetTextArray( rTxt, pDXArray, nIdx, nLen ) ); |
472 |
} |
469 |
else |
473 |
else |
470 |
aTxtSize.setWidth( pOut->GetTextArray( CalcCaseMap( rTxt ), |
474 |
{ |
471 |
pDXArray, nIdx, nLen ) ); |
475 |
aTxtSize.setHeight( pOut->GetTextHeight() ); |
|
|
476 |
if ( !IsCaseMap() ) |
477 |
aTxtSize.setWidth( pOut->GetTextArray( rTxt, pDXArray, nIdx, nLen ) ); |
478 |
else |
479 |
aTxtSize.setWidth( pOut->GetTextArray( CalcCaseMap( rTxt ), |
480 |
pDXArray, nIdx, nLen ) ); |
472 |
|
481 |
|
473 |
if( IsKern() && ( nLen > 1 ) ) |
482 |
if( IsKern() && ( nLen > 1 ) ) |
474 |
{ |
483 |
{ |
475 |
aTxtSize.Width() += ( ( nLen-1 ) * long( nKern ) ); |
484 |
aTxtSize.Width() += ( ( nLen-1 ) * long( nKern ) ); |
476 |
|
485 |
|
477 |
if ( pDXArray ) |
486 |
if ( pDXArray ) |
478 |
{ |
487 |
{ |
479 |
for ( xub_StrLen i = 0; i < nLen; i++ ) |
488 |
for ( xub_StrLen i = 0; i < nLen; i++ ) |
480 |
pDXArray[i] += ( (i+1) * long( nKern ) ); |
489 |
pDXArray[i] += ( (i+1) * long( nKern ) ); |
481 |
// Der letzte ist um ein nKern zu gross: |
490 |
// Der letzte ist um ein nKern zu gross: |
482 |
pDXArray[nLen-1] -= nKern; |
491 |
pDXArray[nLen-1] -= nKern; |
483 |
} |
492 |
} |
|
|
493 |
} |
484 |
} |
494 |
} |
|
|
495 |
|
496 |
// for (int i = 0;i < nLen; i++) |
497 |
// fprintf(stderr, "pos %d is at %d\n", i, pDXArray[i]); |
498 |
|
485 |
return aTxtSize; |
499 |
return aTxtSize; |
486 |
} |
500 |
} |
487 |
|
501 |
|