Lines 2075-2105
void SdrEditView::DoImportMarkedMtf(SvdProgressInfo *pProgrInfo)
Link Here
|
2075 |
SdrGrafObj* pGraf=PTR_CAST(SdrGrafObj,pObj); |
2075 |
SdrGrafObj* pGraf=PTR_CAST(SdrGrafObj,pObj); |
2076 |
SdrOle2Obj* pOle2=PTR_CAST(SdrOle2Obj,pObj); |
2076 |
SdrOle2Obj* pOle2=PTR_CAST(SdrOle2Obj,pObj); |
2077 |
sal_uIntPtr nInsAnz=0; |
2077 |
sal_uIntPtr nInsAnz=0; |
|
|
2078 |
Rectangle aLogicRect; |
2079 |
|
2078 |
if (pGraf!=NULL && pGraf->HasGDIMetaFile()) |
2080 |
if (pGraf!=NULL && pGraf->HasGDIMetaFile()) |
2079 |
{ |
2081 |
{ |
2080 |
ImpSdrGDIMetaFileImport aFilter(*pMod); |
2082 |
ImpSdrGDIMetaFileImport aFilter(*pMod); |
2081 |
aFilter.SetScaleRect(pGraf->GetSnapRect()); |
2083 |
|
|
|
2084 |
aLogicRect = pGraf->GetLogicRect(); |
2085 |
aFilter.SetScaleRect(aLogicRect); |
2082 |
aFilter.SetLayer(pObj->GetLayer()); |
2086 |
aFilter.SetLayer(pObj->GetLayer()); |
2083 |
nInsAnz=aFilter.DoImport(pGraf->GetTransformedGraphic().GetGDIMetaFile(),*pOL,nInsPos,pProgrInfo); |
2087 |
|
|
|
2088 |
nInsAnz=aFilter.DoImport(pGraf->GetTransformedGraphic( |
2089 |
SDRGRAFOBJ_TRANSFORMATTR_COLOR|SDRGRAFOBJ_TRANSFORMATTR_MIRROR).GetGDIMetaFile(), |
2090 |
*pOL,nInsPos,pProgrInfo); |
2084 |
} |
2091 |
} |
2085 |
if ( pOle2!=NULL && pOle2->GetGraphic() ) |
2092 |
if ( pOle2!=NULL && pOle2->GetGraphic() ) |
2086 |
{ |
2093 |
{ |
2087 |
//const GDIMetaFile* pMtf=pOle2->GetGDIMetaFile(); |
2094 |
//const GDIMetaFile* pMtf=pOle2->GetGDIMetaFile(); |
2088 |
ImpSdrGDIMetaFileImport aFilter(*pMod); |
2095 |
ImpSdrGDIMetaFileImport aFilter(*pMod); |
2089 |
aFilter.SetScaleRect(pOle2->GetLogicRect()); |
2096 |
|
|
|
2097 |
aLogicRect = pOle2->GetLogicRect(); |
2098 |
aFilter.SetScaleRect(aLogicRect); |
2090 |
aFilter.SetLayer(pObj->GetLayer()); |
2099 |
aFilter.SetLayer(pObj->GetLayer()); |
|
|
2100 |
|
2091 |
nInsAnz=aFilter.DoImport(pOle2->GetGraphic()->GetGDIMetaFile(),*pOL,nInsPos,pProgrInfo); |
2101 |
nInsAnz=aFilter.DoImport(pOle2->GetGraphic()->GetGDIMetaFile(),*pOL,nInsPos,pProgrInfo); |
2092 |
} |
2102 |
} |
2093 |
if (nInsAnz!=0) |
2103 |
if (nInsAnz!=0) |
2094 |
{ |
2104 |
{ |
2095 |
sal_uIntPtr nObj=nInsPos; |
2105 |
// transformation |
2096 |
for (sal_uIntPtr i=0; i<nInsAnz; i++) |
2106 |
GeoStat aGeoStat(pGraf ? pGraf->GetGeoStat() : pOle2->GetGeoStat()); |
|
|
2107 |
sal_uIntPtr nObj=nInsPos; |
2108 |
|
2109 |
if(aGeoStat.nShearWink) |
2110 |
{ |
2111 |
aGeoStat.RecalcTan(); |
2112 |
} |
2113 |
|
2114 |
if(aGeoStat.nDrehWink) |
2115 |
{ |
2116 |
aGeoStat.RecalcSinCos(); |
2117 |
} |
2118 |
|
2119 |
for (sal_uIntPtr i=0; i<nInsAnz; i++) |
2097 |
{ |
2120 |
{ |
2098 |
if( bUndo ) |
2121 |
if( bUndo ) |
2099 |
AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoNewObject(*pOL->GetObj(nObj))); |
2122 |
AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoNewObject(*pOL->GetObj(nObj))); |
2100 |
|
2123 |
|
2101 |
// Neue MarkList pflegen |
2124 |
// Neue MarkList pflegen |
2102 |
SdrMark aNewMark(pOL->GetObj(nObj), pPV); |
2125 |
SdrObject* pCandidate = pOL->GetObj(nObj); |
|
|
2126 |
|
2127 |
// apply original transformation |
2128 |
if(aGeoStat.nShearWink) |
2129 |
{ |
2130 |
pCandidate->NbcShear(aLogicRect.TopLeft(), aGeoStat.nShearWink, aGeoStat.nTan, false); |
2131 |
} |
2132 |
|
2133 |
if(aGeoStat.nDrehWink) |
2134 |
{ |
2135 |
pCandidate->NbcRotate(aLogicRect.TopLeft(), aGeoStat.nDrehWink, aGeoStat.nSin, aGeoStat.nCos); |
2136 |
} |
2137 |
|
2138 |
SdrMark aNewMark(pCandidate, pPV); |
2103 |
aNewMarked.InsertEntry(aNewMark); |
2139 |
aNewMarked.InsertEntry(aNewMark); |
2104 |
|
2140 |
|
2105 |
nObj++; |
2141 |
nObj++; |