Add missing chart data point ODF1.2 standard symbols
This commit is contained in:
committed by
Kohei Yoshida
parent
53abf4dc1c
commit
3e5edf6ca9
@@ -151,7 +151,7 @@ sal_Int32 lcl_getSymbolType( const ::com::sun::star::chart2::Symbol& rSymbol )
|
||||
nSymbol = ::com::sun::star::chart::ChartSymbolType::AUTO;
|
||||
break;
|
||||
case chart2::SymbolStyle_STANDARD:
|
||||
nSymbol = rSymbol.StandardSymbol%8;
|
||||
nSymbol = rSymbol.StandardSymbol%15;
|
||||
break;
|
||||
case chart2::SymbolStyle_POLYGON://new feature
|
||||
nSymbol = ::com::sun::star::chart::ChartSymbolType::AUTO;
|
||||
|
@@ -1263,6 +1263,13 @@ enum SymbolType { SYMBOL_SQUARE=0
|
||||
, SYMBOL_ARROW_LEFT
|
||||
, SYMBOL_BOWTIE
|
||||
, SYMBOL_SANDGLASS
|
||||
, SYMBOL_CIRCLE
|
||||
, SYMBOL_STAR
|
||||
, SYMBOL_X
|
||||
, SYMBOL_PLUS
|
||||
, SYMBOL_ASTERISK
|
||||
, SYMBOL_HORIZONTAL_BAR
|
||||
, SYMBOL_VERTICAL_BAR
|
||||
, SYMBOL_COUNT
|
||||
};
|
||||
|
||||
@@ -1286,6 +1293,9 @@ drawing::PolyPolygonShape3D createPolyPolygon_Symbol( const drawing::Position3D&
|
||||
const double fWidthH = rSize.DirectionX/2.0; //fWidthH stands for Half Width
|
||||
const double fHeightH = rSize.DirectionY/2.0; //fHeightH stands for Half Height
|
||||
|
||||
double fMaxSize = fHeightH > fWidthH ? fHeightH : fWidthH; //assumes non negative
|
||||
const sal_Int32 nQuarterCount = 35; // points inside a quadrant, used in case circle
|
||||
|
||||
sal_Int32 nPointCount = 4; //all arrow symbols only need 4 points
|
||||
switch( eSymbolType )
|
||||
{
|
||||
@@ -1293,8 +1303,25 @@ drawing::PolyPolygonShape3D createPolyPolygon_Symbol( const drawing::Position3D&
|
||||
case SYMBOL_DIAMOND:
|
||||
case SYMBOL_BOWTIE:
|
||||
case SYMBOL_SANDGLASS:
|
||||
case SYMBOL_HORIZONTAL_BAR:
|
||||
case SYMBOL_VERTICAL_BAR:
|
||||
nPointCount = 5;
|
||||
break;
|
||||
case SYMBOL_X:
|
||||
nPointCount = 13;
|
||||
break;
|
||||
case SYMBOL_PLUS:
|
||||
nPointCount = 13;
|
||||
break;
|
||||
case SYMBOL_STAR:
|
||||
nPointCount = 9;
|
||||
break;
|
||||
case SYMBOL_ASTERISK:
|
||||
nPointCount = 19;
|
||||
break;
|
||||
case SYMBOL_CIRCLE:
|
||||
nPointCount = 5 + 4 * nQuarterCount;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1323,6 +1350,24 @@ drawing::PolyPolygonShape3D createPolyPolygon_Symbol( const drawing::Position3D&
|
||||
|
||||
switch(eSymbolType)
|
||||
{
|
||||
case SYMBOL_SQUARE:
|
||||
{
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
break;
|
||||
}
|
||||
case SYMBOL_ARROW_UP:
|
||||
{
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
@@ -1438,6 +1483,284 @@ drawing::PolyPolygonShape3D createPolyPolygon_Symbol( const drawing::Position3D&
|
||||
*pInnerSequenceY++ = fY;
|
||||
break;
|
||||
}
|
||||
case SYMBOL_HORIZONTAL_BAR:
|
||||
{
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY-0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY-0.2*fHeightH;
|
||||
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY+0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY+0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY-0.2*fHeightH;
|
||||
break;
|
||||
}
|
||||
case SYMBOL_VERTICAL_BAR:
|
||||
{
|
||||
*pInnerSequenceX++ = fX-0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
|
||||
*pInnerSequenceX++ = fX+0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
break;
|
||||
}
|
||||
case SYMBOL_CIRCLE:
|
||||
{
|
||||
double fOmega = 1.5707963267948966192 / (nQuarterCount + 1.0);
|
||||
// one point in the middle of each edge to get full size bounding rectangle
|
||||
*pInnerSequenceX++ = fX + fWidthH;
|
||||
*pInnerSequenceY++ = fY;
|
||||
// 0 to PI/2
|
||||
for (sal_Int32 i = 1; i <= nQuarterCount; ++i)
|
||||
{
|
||||
*pInnerSequenceX++ = fX + fWidthH * cos( i * fOmega );
|
||||
*pInnerSequenceY++ = fY - fHeightH * sin( i * fOmega );
|
||||
}
|
||||
// PI/2 to PI
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY - fHeightH;
|
||||
for (sal_Int32 i = 1; i <= nQuarterCount; ++i)
|
||||
{
|
||||
*pInnerSequenceX++ = fX - fWidthH * sin( i * fOmega);
|
||||
*pInnerSequenceY++ = fY - fHeightH * cos( i * fOmega);
|
||||
}
|
||||
// PI to 3/2*PI
|
||||
*pInnerSequenceX++ = fX - fWidthH;
|
||||
*pInnerSequenceY++ = fY;
|
||||
for (sal_Int32 i = 1; i <= nQuarterCount; ++i)
|
||||
{
|
||||
*pInnerSequenceX++ = fX - fWidthH * cos( i * fOmega);
|
||||
*pInnerSequenceY++ = fY + fHeightH * sin( i * fOmega);
|
||||
}
|
||||
// 3/2*PI to 2*PI
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY + fHeightH;
|
||||
for (sal_Int32 i = 1; i <= nQuarterCount; ++i)
|
||||
{
|
||||
*pInnerSequenceX++ = fX + fWidthH * sin(i * fOmega);
|
||||
*pInnerSequenceY++ = fY + fHeightH * cos(i * fOmega);
|
||||
}
|
||||
// close polygon
|
||||
*pInnerSequenceX++ = fX + fWidthH;
|
||||
*pInnerSequenceY++ = fY;
|
||||
break;
|
||||
}
|
||||
case SYMBOL_STAR:
|
||||
{
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY-0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY;
|
||||
|
||||
*pInnerSequenceX++ = fX+0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY+0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY+0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY;
|
||||
|
||||
*pInnerSequenceX++ = fX-0.2*fWidthH;
|
||||
*pInnerSequenceY++ = fY-0.2*fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
break;
|
||||
}
|
||||
case SYMBOL_X:
|
||||
{
|
||||
const double fScaleX = fWidthH / 128.0;
|
||||
const double fScaleY = fHeightH / 128.0;
|
||||
const double fSmall = sqrt(200.0);
|
||||
const double fLarge = 128.0 - fSmall;
|
||||
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY - fScaleY * fSmall;
|
||||
|
||||
*pInnerSequenceX++ = fX - fScaleX * fLarge;
|
||||
*pInnerSequenceY++ = fY - fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX - fWidthH;
|
||||
*pInnerSequenceY++ = fY - fScaleY * fLarge;
|
||||
|
||||
*pInnerSequenceX++ = fX - fScaleX * fSmall;
|
||||
*pInnerSequenceY++ = fY;
|
||||
|
||||
*pInnerSequenceX++ = fX - fWidthH;
|
||||
*pInnerSequenceY++ = fY + fScaleY * fLarge;
|
||||
|
||||
*pInnerSequenceX++ = fX - fScaleX * fLarge;
|
||||
*pInnerSequenceY++ = fY + fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY + fScaleY * fSmall;
|
||||
|
||||
*pInnerSequenceX++ = fX + fScaleX * fLarge;
|
||||
*pInnerSequenceY++ = fY + fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX + fWidthH;
|
||||
*pInnerSequenceY++ = fY + fScaleY * fLarge;
|
||||
|
||||
*pInnerSequenceX++ = fX + fScaleX * fSmall;
|
||||
*pInnerSequenceY++ = fY;
|
||||
|
||||
*pInnerSequenceX++ = fX + fWidthH;
|
||||
*pInnerSequenceY++ = fY - fScaleY * fLarge;
|
||||
|
||||
*pInnerSequenceX++ = fX + fScaleX * fLarge;
|
||||
*pInnerSequenceY++ = fY - fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX;
|
||||
*pInnerSequenceY++ = fY - fScaleY * fSmall;
|
||||
break;
|
||||
|
||||
}
|
||||
case SYMBOL_PLUS:
|
||||
{
|
||||
const double fScaleX = fWidthH / 128.0;
|
||||
const double fScaleY = fHeightH / 128.0;
|
||||
const double fHalf = 10.0; //half line width on 256 size square
|
||||
const double fdX = fScaleX * fHalf;
|
||||
const double fdY = fScaleY * fHalf;
|
||||
|
||||
*pInnerSequenceX++ = fX-fdX;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fdX;
|
||||
*pInnerSequenceY++ = fY-fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY-fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY+fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX-fdX;
|
||||
*pInnerSequenceY++ = fY+fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX-fdX;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+fdX;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX+fdX;
|
||||
*pInnerSequenceY++ = fY+fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY+fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY-fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX+fdX;
|
||||
*pInnerSequenceY++ = fY-fdY;
|
||||
|
||||
*pInnerSequenceX++ = fX+fdY;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
|
||||
*pInnerSequenceX++ = fX-fdX;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
break;
|
||||
|
||||
}
|
||||
case SYMBOL_ASTERISK:
|
||||
{
|
||||
const double fHalf = 10.0; // half line width on 256 size square
|
||||
const double fTwoY = fHalf * sqrt(3.0);
|
||||
const double fFourY = (128.0 - 2.0 * fHalf ) / sqrt(3.0);
|
||||
const double fThreeX = 128.0 - fHalf;
|
||||
const double fThreeY = fHalf * sqrt(3.0) + fFourY;
|
||||
const double fFiveX = 2.0 * fHalf;
|
||||
|
||||
const double fScaleX = fWidthH / 128.0;
|
||||
const double fScaleY = fHeightH / 128.0;
|
||||
|
||||
//1
|
||||
*pInnerSequenceX++ = fX-fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
//2
|
||||
*pInnerSequenceX++ = fX-fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY-fScaleY * fTwoY;
|
||||
//3
|
||||
*pInnerSequenceX++ = fX-fScaleX * fThreeX;
|
||||
*pInnerSequenceY++ = fY-fScaleY * fThreeY;
|
||||
//4
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY-fScaleY * fFourY;
|
||||
//5
|
||||
*pInnerSequenceX++ = fX-fScaleX * fFiveX;
|
||||
*pInnerSequenceY++ = fY;
|
||||
//6 as 4
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
*pInnerSequenceY++ = fY+fScaleY * fFourY;
|
||||
//7 as 3
|
||||
*pInnerSequenceX++ = fX-fScaleX * fThreeX;
|
||||
*pInnerSequenceY++ = fY+fScaleY * fThreeY;
|
||||
//8 as 2
|
||||
*pInnerSequenceX++ = fX-fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY+fScaleY * fTwoY;
|
||||
//9 as 1
|
||||
*pInnerSequenceX++ = fX-fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
//10 as 1
|
||||
*pInnerSequenceX++ = fX+fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY+fHeightH;
|
||||
//11 as 2
|
||||
*pInnerSequenceX++ = fX+fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY+fScaleY * fTwoY;
|
||||
//12 as 3
|
||||
*pInnerSequenceX++ = fX+fScaleX * fThreeX;
|
||||
*pInnerSequenceY++ = fY+fScaleY * fThreeY;
|
||||
//13 as 4
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY+fScaleY * fFourY;
|
||||
//14 as 5
|
||||
*pInnerSequenceX++ = fX+fScaleX * fFiveX;
|
||||
*pInnerSequenceY++ = fY;
|
||||
//15 as 4
|
||||
*pInnerSequenceX++ = fX+fWidthH;
|
||||
*pInnerSequenceY++ = fY-fScaleY * fFourY;
|
||||
//16 as 3
|
||||
*pInnerSequenceX++ = fX+fScaleX * fThreeX;
|
||||
*pInnerSequenceY++ = fY-fScaleY * fThreeY;
|
||||
//17 as 2
|
||||
*pInnerSequenceX++ = fX+fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY-fScaleY * fTwoY;
|
||||
// 18 as 1
|
||||
*pInnerSequenceX++ = fX+fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
// 19 = 1, closing
|
||||
*pInnerSequenceX++ = fX-fScaleX * fHalf;
|
||||
*pInnerSequenceY++ = fY-fHeightH;
|
||||
break;
|
||||
}
|
||||
default: //case SYMBOL_SQUARE:
|
||||
{
|
||||
*pInnerSequenceX++ = fX-fWidthH;
|
||||
|
@@ -910,8 +910,6 @@ void SvxLineTabPage::Reset( const SfxItemSet& rAttrs )
|
||||
if(pObj)
|
||||
{
|
||||
pObj=pObj->Clone();
|
||||
pPage->NbcInsertObject(pObj);
|
||||
pView->MarkObj(pObj,pPageView);
|
||||
if(pSymbolAttr)
|
||||
{
|
||||
pObj->SetMergedItemSet(*pSymbolAttr);
|
||||
@@ -920,17 +918,31 @@ void SvxLineTabPage::Reset( const SfxItemSet& rAttrs )
|
||||
{
|
||||
pObj->SetMergedItemSet(rOutAttrs);
|
||||
}
|
||||
|
||||
pPage->NbcInsertObject(pObj);
|
||||
|
||||
// Generate invisible square to give all symbol types a
|
||||
// bitmap size, which is indepedent from specific glyph
|
||||
SdrObject *pInvisibleSquare=pSymbolList->GetObj(0);
|
||||
pInvisibleSquare=pInvisibleSquare->Clone();
|
||||
pPage->NbcInsertObject(pInvisibleSquare);
|
||||
pInvisibleSquare->SetMergedItem(XFillTransparenceItem(100));
|
||||
pInvisibleSquare->SetMergedItem(XLineTransparenceItem(100));
|
||||
|
||||
pView->MarkAll();
|
||||
GDIMetaFile aMeta(pView->GetAllMarkedMetaFile());
|
||||
|
||||
aSymbolGraphic=Graphic(aMeta);
|
||||
aSymbolSize=pObj->GetSnapRect().GetSize();
|
||||
aSymbolGraphic.SetPrefSize(aSymbolSize);
|
||||
aSymbolGraphic.SetPrefSize(pInvisibleSquare->GetSnapRect().GetSize());
|
||||
aSymbolGraphic.SetPrefMapMode(MAP_100TH_MM);
|
||||
bPrevSym=sal_True;
|
||||
bEnable=sal_True;
|
||||
bIgnoreGraphic=sal_True;
|
||||
|
||||
pView->UnmarkAll();
|
||||
pInvisibleSquare=pPage->RemoveObject(1);
|
||||
SdrObject::Free( pInvisibleSquare);
|
||||
pObj=pPage->RemoveObject(0);
|
||||
SdrObject::Free( pObj );
|
||||
}
|
||||
@@ -957,12 +969,12 @@ void SvxLineTabPage::Reset( const SfxItemSet& rAttrs )
|
||||
bPrevSym=sal_True;
|
||||
}
|
||||
}
|
||||
|
||||
if(rAttrs.GetItemState(rAttrs.GetPool()->GetWhich(SID_ATTR_SYMBOLSIZE),sal_True,&pPoolItem) == SFX_ITEM_SET)
|
||||
{
|
||||
aSymbolSize = ((const SvxSizeItem *)pPoolItem)->GetSize();
|
||||
}
|
||||
|
||||
|
||||
aSymbolRatioCB.Enable(bEnable);
|
||||
aSymbolHeightFT.Enable(bEnable);
|
||||
aSymbolWidthFT.Enable(bEnable);
|
||||
@@ -1537,6 +1549,15 @@ IMPL_LINK( SvxLineTabPage, MenuCreateHdl_Impl, MenuButton *, pButton )
|
||||
|
||||
PopupMenu* pPopup = new PopupMenu;
|
||||
String aEmptyStr;
|
||||
|
||||
// Generate invisible square to give all symbols a
|
||||
// bitmap size, which is indepedent from specific glyph
|
||||
SdrObject *pInvisibleSquare=pSymbolList->GetObj(0);
|
||||
pInvisibleSquare=pInvisibleSquare->Clone();
|
||||
pPage->NbcInsertObject(pInvisibleSquare);
|
||||
pInvisibleSquare->SetMergedItem(XFillTransparenceItem(100));
|
||||
pInvisibleSquare->SetMergedItem(XLineTransparenceItem(100));
|
||||
|
||||
for(long i=0;; ++i)
|
||||
{
|
||||
SdrObject *pObj=pSymbolList->GetObj(i);
|
||||
@@ -1545,7 +1566,6 @@ IMPL_LINK( SvxLineTabPage, MenuCreateHdl_Impl, MenuButton *, pButton )
|
||||
pObj=pObj->Clone();
|
||||
aGrfNames.push_back(aEmptyStr);
|
||||
pPage->NbcInsertObject(pObj);
|
||||
pView->MarkObj(pObj,pPageView);
|
||||
if(pSymbolAttr)
|
||||
{
|
||||
pObj->SetMergedItemSet(*pSymbolAttr);
|
||||
@@ -1554,11 +1574,11 @@ IMPL_LINK( SvxLineTabPage, MenuCreateHdl_Impl, MenuButton *, pButton )
|
||||
{
|
||||
pObj->SetMergedItemSet(rOutAttrs);
|
||||
}
|
||||
|
||||
pView->MarkAll();
|
||||
Bitmap aBitmap(pView->GetAllMarkedBitmap());
|
||||
GDIMetaFile aMeta(pView->GetAllMarkedMetaFile());
|
||||
pView->UnmarkAll();
|
||||
pObj=pPage->RemoveObject(0);
|
||||
pObj=pPage->RemoveObject(1);
|
||||
SdrObject::Free(pObj);
|
||||
|
||||
SvxBrushItem* pBrushItem = new SvxBrushItem(Graphic(aMeta), GPOS_AREA, SID_ATTR_BRUSH);
|
||||
@@ -1585,6 +1605,9 @@ IMPL_LINK( SvxLineTabPage, MenuCreateHdl_Impl, MenuButton *, pButton )
|
||||
Image aImage(aBitmap);
|
||||
pPopup->InsertItem(pInfo->nItemId,aEmptyStr,aImage);
|
||||
}
|
||||
pInvisibleSquare=pPage->RemoveObject(0);
|
||||
SdrObject::Free(pInvisibleSquare);
|
||||
|
||||
aSymbolMB.GetPopupMenu()->SetPopupMenu( MN_SYMBOLS, pPopup );
|
||||
|
||||
if(aGrfNames.empty())
|
||||
|
@@ -451,19 +451,19 @@ void TypeGroupConverter::convertMarker( PropertySet& rPropSet, sal_Int32 nOoxSym
|
||||
// symbol style
|
||||
cssc::Symbol aSymbol;
|
||||
aSymbol.Style = cssc::SymbolStyle_STANDARD;
|
||||
switch( nOoxSymbol )
|
||||
switch( nOoxSymbol ) // compare with XclChPropSetHelper::WriteMarkerProperties in xlchart.cxx
|
||||
{
|
||||
case XML_auto: aSymbol.Style = cssc::SymbolStyle_AUTO; break;
|
||||
case XML_none: aSymbol.Style = cssc::SymbolStyle_NONE; break;
|
||||
case XML_square: aSymbol.StandardSymbol = 0; break; // square
|
||||
case XML_diamond: aSymbol.StandardSymbol = 1; break; // diamond
|
||||
case XML_triangle: aSymbol.StandardSymbol = 3; break; // arrow up
|
||||
case XML_x: aSymbol.StandardSymbol = 6; break; // bow tie
|
||||
case XML_star: aSymbol.StandardSymbol = 7; break; // sand glass
|
||||
case XML_x: aSymbol.StandardSymbol = 10; break; // X, legacy bow tie
|
||||
case XML_star: aSymbol.StandardSymbol = 12; break; // asterisk, legacy sand glass
|
||||
case XML_dot: aSymbol.StandardSymbol = 4; break; // arrow right
|
||||
case XML_dash: aSymbol.StandardSymbol = 2; break; // arrow down
|
||||
case XML_circle: aSymbol.StandardSymbol = 4; break; // arrow right
|
||||
case XML_plus: aSymbol.StandardSymbol = 5; break; // arrow left
|
||||
case XML_dash: aSymbol.StandardSymbol = 13; break; // horizontal bar, legacy arrow down
|
||||
case XML_circle: aSymbol.StandardSymbol = 8; break; // circle, legacy arrow right
|
||||
case XML_plus: aSymbol.StandardSymbol = 11; break; // plus, legacy arrow left
|
||||
}
|
||||
|
||||
// symbol size (points in OOXML, 1/100 mm in Chart2)
|
||||
|
@@ -944,10 +944,17 @@ void XclChPropSetHelper::ReadMarkerProperties(
|
||||
case 1: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_DIAMOND; break; // diamond
|
||||
case 2: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_STDDEV; break; // arrow down
|
||||
case 3: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_TRIANGLE; break; // arrow up
|
||||
case 4: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_CIRCLE; break; // arrow right
|
||||
case 4: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_DOWJ; break; // arrow right, same as import
|
||||
case 5: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_PLUS; break; // arrow left
|
||||
case 6: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_CROSS; break; // bow tie
|
||||
case 7: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_STAR; break; // sand glass
|
||||
case 8: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_CIRCLE; break; // circle new in LibO3.5
|
||||
case 9: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_DIAMOND; break; // star new in LibO3.5
|
||||
case 10: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_CROSS; break; // X new in LibO3.5
|
||||
case 11: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_PLUS; break; // plus new in LibO3.5
|
||||
case 12: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_STAR; break; // asterisk new in LibO3.5
|
||||
case 13: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_STDDEV; break; // horizontal bar new in LibO3.5
|
||||
case 14: rMarkerFmt.mnMarkerType = EXC_CHMARKERFORMAT_STAR; break; // vertical bar new in LibO3.5
|
||||
default: rMarkerFmt.mnMarkerType = XclChartHelper::GetAutoMarkerType( nFormatIdx );
|
||||
}
|
||||
break;
|
||||
@@ -1153,12 +1160,13 @@ void XclChPropSetHelper::WriteMarkerProperties(
|
||||
case EXC_CHMARKERFORMAT_SQUARE: aApiSymbol.StandardSymbol = 0; break; // square
|
||||
case EXC_CHMARKERFORMAT_DIAMOND: aApiSymbol.StandardSymbol = 1; break; // diamond
|
||||
case EXC_CHMARKERFORMAT_TRIANGLE: aApiSymbol.StandardSymbol = 3; break; // arrow up
|
||||
case EXC_CHMARKERFORMAT_CROSS: aApiSymbol.StandardSymbol = 6; break; // bow tie
|
||||
case EXC_CHMARKERFORMAT_STAR: aApiSymbol.StandardSymbol = 7; break; // sand glass
|
||||
case EXC_CHMARKERFORMAT_DOWJ: aApiSymbol.StandardSymbol = 4; break; // arrow right
|
||||
case EXC_CHMARKERFORMAT_STDDEV: aApiSymbol.StandardSymbol = 2; break; // arrow down
|
||||
case EXC_CHMARKERFORMAT_CIRCLE: aApiSymbol.StandardSymbol = 4; break; // arrow right
|
||||
case EXC_CHMARKERFORMAT_PLUS: aApiSymbol.StandardSymbol = 5; break; // arrow left
|
||||
case EXC_CHMARKERFORMAT_CROSS: aApiSymbol.StandardSymbol = 10; break; // X, legacy bow tie
|
||||
case EXC_CHMARKERFORMAT_STAR: aApiSymbol.StandardSymbol = 12; break; // asterisk, legacy sand glass
|
||||
case EXC_CHMARKERFORMAT_DOWJ: aApiSymbol.StandardSymbol = 4; break; // arrow right, same as export
|
||||
case EXC_CHMARKERFORMAT_STDDEV: aApiSymbol.StandardSymbol = 13; break; // horizontal bar, legacy arrow down
|
||||
case EXC_CHMARKERFORMAT_CIRCLE: aApiSymbol.StandardSymbol = 8; break; // circle, legacy arrow right
|
||||
case EXC_CHMARKERFORMAT_PLUS: aApiSymbol.StandardSymbol = 11; break; // plus, legacy arrow left
|
||||
default: break;
|
||||
}
|
||||
|
||||
// symbol size
|
||||
|
@@ -3139,6 +3139,12 @@ namespace xmloff { namespace token {
|
||||
|
||||
XML_MARGIN, // #i117001#
|
||||
|
||||
// regina, ODF1.2 additional symbols in charts
|
||||
XML_STAR,
|
||||
XML_ASTERISK,
|
||||
XML_HORIZONTAL_BAR,
|
||||
XML_VERTICAL_BAR,
|
||||
|
||||
XML_TOKEN_END
|
||||
};
|
||||
|
||||
|
@@ -63,6 +63,13 @@ SvXMLSignedEnumMapEntry aXMLChartSymbolNameMap[] =
|
||||
{ XML_ARROW_LEFT, 5 },
|
||||
{ XML_BOW_TIE, 6 },
|
||||
{ XML_HOURGLASS, 7 },
|
||||
{ XML_CIRCLE, 8 },
|
||||
{ XML_STAR, 9 },
|
||||
{ XML_X, 10 },
|
||||
{ XML_PLUS, 11 },
|
||||
{ XML_ASTERISK, 12 },
|
||||
{ XML_HORIZONTAL_BAR, 13 },
|
||||
{ XML_VERTICAL_BAR, 14 },
|
||||
{ XML_TOKEN_INVALID, 0 }
|
||||
};
|
||||
|
||||
|
@@ -3137,6 +3137,12 @@ namespace xmloff { namespace token {
|
||||
|
||||
TOKEN( "margin", XML_MARGIN),
|
||||
|
||||
// regina, ODF1.2 additional symbols in charts
|
||||
TOKEN( "star", XML_STAR ),
|
||||
TOKEN( "asterisk", XML_ASTERISK ),
|
||||
TOKEN( "horizontal-bar", XML_HORIZONTAL_BAR ),
|
||||
TOKEN( "vertical-bar", XML_VERTICAL_BAR ),
|
||||
|
||||
#if OSL_DEBUG_LEVEL > 0
|
||||
{ 0, NULL, NULL, XML_TOKEN_END }
|
||||
#else
|
||||
|
@@ -389,6 +389,20 @@ void XMLPropertiesTContext_Impl::StartElement(
|
||||
nSymbolType = 6;
|
||||
else if( IsXMLToken( rAttrValue, XML_HOURGLASS ))
|
||||
nSymbolType = 7;
|
||||
else if( IsXMLToken( rAttrValue, XML_CIRCLE ))
|
||||
nSymbolType = 8;
|
||||
else if( IsXMLToken( rAttrValue, XML_STAR ))
|
||||
nSymbolType = 9;
|
||||
else if( IsXMLToken( rAttrValue, XML_X ))
|
||||
nSymbolType = 10;
|
||||
else if( IsXMLToken( rAttrValue, XML_PLUS ))
|
||||
nSymbolType = 11;
|
||||
else if( IsXMLToken( rAttrValue, XML_ASTERISK ))
|
||||
nSymbolType = 12;
|
||||
else if( IsXMLToken( rAttrValue, XML_HORIZONTAL_BAR ))
|
||||
nSymbolType = 13;
|
||||
else if( IsXMLToken( rAttrValue, XML_VERTICAL_BAR ))
|
||||
nSymbolType = 14;
|
||||
|
||||
if( nSymbolType >= 0 )
|
||||
pAttrList->AddAttribute(
|
||||
|
@@ -772,6 +772,27 @@ void XMLPropertiesOOoTContext_Impl::StartElement(
|
||||
case 7:
|
||||
eToken = XML_HOURGLASS;
|
||||
break;
|
||||
case 8:
|
||||
eToken = XML_CIRCLE;
|
||||
break;
|
||||
case 9:
|
||||
eToken = XML_STAR;
|
||||
break;
|
||||
case 10:
|
||||
eToken = XML_X;
|
||||
break;
|
||||
case 11:
|
||||
eToken = XML_PLUS;
|
||||
break;
|
||||
case 12:
|
||||
eToken = XML_ASTERISK;
|
||||
break;
|
||||
case 13:
|
||||
eToken = XML_HORIZONTAL_BAR;
|
||||
break;
|
||||
case 14:
|
||||
eToken = XML_VERTICAL_BAR;
|
||||
break;
|
||||
default:
|
||||
OSL_FAIL( "invalid named symbol" );
|
||||
break;
|
||||
|
Reference in New Issue
Block a user