summaryrefslogtreecommitdiff
path: root/svx/inc/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/inc/svx')
-rw-r--r--svx/inc/svx/AccessibleControlShape.hxx216
-rw-r--r--svx/inc/svx/AccessibleGraphicShape.hxx123
-rw-r--r--svx/inc/svx/AccessibleOLEShape.hxx133
-rwxr-xr-xsvx/inc/svx/AccessibleShape.hxx410
-rw-r--r--svx/inc/svx/AccessibleShapeInfo.hxx109
-rw-r--r--svx/inc/svx/AccessibleShapeTreeInfo.hxx216
-rw-r--r--svx/inc/svx/AccessibleTableShape.hxx132
-rw-r--r--svx/inc/svx/AccessibleTextHelper.hxx431
-rw-r--r--svx/inc/svx/ChildrenManager.hxx216
-rw-r--r--svx/inc/svx/EnhancedCustomShapeFunctionParser.hxx214
-rw-r--r--svx/inc/svx/IAccessibleParent.hxx95
-rw-r--r--svx/inc/svx/IAccessibleViewForwarder.hxx132
-rw-r--r--svx/inc/svx/IAccessibleViewForwarderListener.hxx74
-rwxr-xr-xsvx/inc/svx/ShapeTypeHandler.hxx237
-rw-r--r--svx/inc/svx/SmartTagCtl.hxx86
-rw-r--r--svx/inc/svx/SmartTagItem.hxx96
-rw-r--r--svx/inc/svx/SmartTagMgr.hxx234
-rw-r--r--svx/inc/svx/SpellDialogChildWindow.hxx125
-rw-r--r--svx/inc/svx/SvxShapeTypes.hxx88
-rw-r--r--svx/inc/svx/algitem.hxx202
-rw-r--r--svx/inc/svx/bmpmask.hxx200
-rw-r--r--svx/inc/svx/camera3d.hxx94
-rw-r--r--svx/inc/svx/charmap.hxx140
-rw-r--r--svx/inc/svx/checklbx.hxx94
-rw-r--r--svx/inc/svx/colrctrl.hxx145
-rw-r--r--svx/inc/svx/contdlg.hxx142
-rw-r--r--svx/inc/svx/ctredlin.hxx431
-rw-r--r--svx/inc/svx/cube3d.hxx95
-rw-r--r--svx/inc/svx/dataaccessdescriptor.hxx164
-rw-r--r--svx/inc/svx/databaselocationinput.hxx97
-rw-r--r--svx/inc/svx/dbaexchange.hxx299
-rw-r--r--svx/inc/svx/dbaobjectex.hxx94
-rwxr-xr-xsvx/inc/svx/dbcharsethelper.hxx66
-rwxr-xr-xsvx/inc/svx/dbtoolsclient.hxx235
-rw-r--r--svx/inc/svx/def3d.hxx54
-rw-r--r--svx/inc/svx/deflt3d.hxx135
-rw-r--r--svx/inc/svx/dialmgr.hxx49
-rwxr-xr-xsvx/inc/svx/dialogs.hrc1055
-rw-r--r--svx/inc/svx/dlgctl3d.hxx215
-rw-r--r--svx/inc/svx/dlgctrl.hxx539
-rw-r--r--svx/inc/svx/dstribut_enum.hxx53
-rw-r--r--svx/inc/svx/e3ditem.hxx73
-rw-r--r--svx/inc/svx/e3dsceneupdater.hxx74
-rw-r--r--svx/inc/svx/e3dundo.hxx124
-rw-r--r--svx/inc/svx/exthelpid.hrc55
-rw-r--r--svx/inc/svx/extrud3d.hxx110
-rw-r--r--svx/inc/svx/extrusionbar.hxx61
-rw-r--r--svx/inc/svx/extrusioncolorcontrol.hxx56
-rw-r--r--svx/inc/svx/f3dchild.hxx51
-rw-r--r--svx/inc/svx/fillctrl.hxx108
-rw-r--r--svx/inc/svx/float3d.hxx313
-rw-r--r--svx/inc/svx/fmdmod.hxx45
-rw-r--r--svx/inc/svx/fmdpage.hxx76
-rw-r--r--svx/inc/svx/fmglob.hxx66
-rw-r--r--svx/inc/svx/fmgridcl.hxx216
-rw-r--r--svx/inc/svx/fmmodel.hxx102
-rw-r--r--svx/inc/svx/fmpage.hxx87
-rw-r--r--svx/inc/svx/fmsearch.hxx95
-rw-r--r--svx/inc/svx/fmshell.hxx191
-rw-r--r--svx/inc/svx/fmtools.hxx234
-rw-r--r--svx/inc/svx/fmview.hxx166
-rw-r--r--svx/inc/svx/fntctl.hxx69
-rw-r--r--svx/inc/svx/fntctrl.hxx90
-rw-r--r--svx/inc/svx/fntszctl.hxx69
-rw-r--r--svx/inc/svx/fontwork.hxx197
-rw-r--r--svx/inc/svx/fontworkbar.hxx61
-rw-r--r--svx/inc/svx/framebordertype.hxx65
-rw-r--r--svx/inc/svx/framelink.hxx727
-rw-r--r--svx/inc/svx/framelinkarray.hxx537
-rw-r--r--svx/inc/svx/frmdirlbox.hxx106
-rw-r--r--svx/inc/svx/frmsel.hxx204
-rw-r--r--svx/inc/svx/gallery1.hxx183
-rw-r--r--svx/inc/svx/galmisc.hxx262
-rw-r--r--svx/inc/svx/graphctl.hxx193
-rw-r--r--svx/inc/svx/grfcrop.hxx80
-rw-r--r--svx/inc/svx/grfflt.hxx69
-rw-r--r--svx/inc/svx/gridctrl.hxx623
-rw-r--r--svx/inc/svx/hdft.hxx136
-rw-r--r--svx/inc/svx/helperhittest3d.hxx110
-rw-r--r--svx/inc/svx/ifaceids.hxx45
-rw-r--r--svx/inc/svx/ipolypolygoneditorcontroller.hxx76
-rw-r--r--svx/inc/svx/itemwin.hxx197
-rw-r--r--svx/inc/svx/langbox.hxx128
-rw-r--r--svx/inc/svx/lathe3d.hxx122
-rw-r--r--svx/inc/svx/msdffdef.hxx1223
-rw-r--r--svx/inc/svx/numfmtsh.hxx267
-rw-r--r--svx/inc/svx/numinf.hxx100
-rw-r--r--svx/inc/svx/obj3d.hxx328
-rw-r--r--svx/inc/svx/pagectrl.hxx170
-rw-r--r--svx/inc/svx/pageitem.hxx157
-rw-r--r--svx/inc/svx/paraprev.hxx113
-rw-r--r--svx/inc/svx/polygn3d.hxx89
-rw-r--r--svx/inc/svx/polypolygoneditor.hxx76
-rw-r--r--svx/inc/svx/polysc3d.hxx50
-rw-r--r--svx/inc/svx/rectenum.hxx46
-rw-r--r--svx/inc/svx/ruler.hxx270
-rw-r--r--svx/inc/svx/scene3d.hxx252
-rw-r--r--svx/inc/svx/sdangitm.hxx59
-rw-r--r--svx/inc/svx/sdasaitm.hxx82
-rw-r--r--svx/inc/svx/sdasitm.hxx146
-rw-r--r--svx/inc/svx/sderitm.hxx42
-rw-r--r--svx/inc/svx/sdgcoitm.hxx86
-rw-r--r--svx/inc/svx/sdgcpitm.hxx54
-rw-r--r--svx/inc/svx/sdggaitm.hxx55
-rw-r--r--svx/inc/svx/sdginitm.hxx52
-rw-r--r--svx/inc/svx/sdgluitm.hxx69
-rw-r--r--svx/inc/svx/sdgmoitm.hxx62
-rw-r--r--svx/inc/svx/sdgtritm.hxx51
-rw-r--r--svx/inc/svx/sdmetitm.hxx61
-rw-r--r--svx/inc/svx/sdooitm.hxx58
-rw-r--r--svx/inc/svx/sdprcitm.hxx79
-rw-r--r--svx/inc/svx/sdr/animation/animationstate.hxx83
-rw-r--r--svx/inc/svx/sdr/animation/objectanimator.hxx57
-rw-r--r--svx/inc/svx/sdr/animation/scheduler.hxx159
-rw-r--r--svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx80
-rw-r--r--svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx92
-rw-r--r--svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx82
-rw-r--r--svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx81
-rw-r--r--svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx79
-rw-r--r--svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx76
-rw-r--r--svx/inc/svx/sdr/attribute/sdrtextattribute.hxx130
-rw-r--r--svx/inc/svx/sdr/contact/displayinfo.hxx129
-rw-r--r--svx/inc/svx/sdr/contact/objectcontact.hxx229
-rw-r--r--svx/inc/svx/sdr/contact/objectcontactofobjlistpainter.hxx144
-rw-r--r--svx/inc/svx/sdr/contact/objectcontactofpageview.hxx153
-rw-r--r--svx/inc/svx/sdr/contact/objectcontacttools.hxx62
-rw-r--r--svx/inc/svx/sdr/contact/viewcontact.hxx172
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3d.hxx120
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dcube.hxx71
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dextrude.hxx71
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dlathe.hxx71
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dpolygon.hxx71
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx122
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dsphere.hxx71
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofgraphic.hxx94
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofgroup.hxx75
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofmasterpagedescriptor.hxx85
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofpageobj.hxx80
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrcaptionobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrcircobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdredgeobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrmeasureobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrmediaobj.hxx89
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrobj.hxx99
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrobjcustomshape.hxx73
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx81
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrpage.hxx311
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrpathobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofsdrrectobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactoftextobj.hxx65
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofunocontrol.hxx101
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofvirtobj.hxx70
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontact.hxx157
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofe3d.hxx82
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofe3dscene.hxx62
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofgraphic.hxx81
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx59
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx65
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofpageobj.hxx71
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofsdrmediaobj.hxx72
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofsdrobj.hxx61
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofsdrole2obj.hxx62
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofsdrpage.hxx246
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofunocontrol.hxx142
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactredirector.hxx74
-rw-r--r--svx/inc/svx/sdr/event/eventhandler.hxx140
-rw-r--r--svx/inc/svx/sdr/overlay/overlayanimatedbitmapex.hxx105
-rw-r--r--svx/inc/svx/sdr/overlay/overlaybitmapex.hxx76
-rw-r--r--svx/inc/svx/sdr/overlay/overlaycrosshair.hxx59
-rw-r--r--svx/inc/svx/sdr/overlay/overlayhatchrect.hxx81
-rw-r--r--svx/inc/svx/sdr/overlay/overlayhelpline.hxx68
-rw-r--r--svx/inc/svx/sdr/overlay/overlayline.hxx68
-rw-r--r--svx/inc/svx/sdr/overlay/overlaymanager.hxx150
-rw-r--r--svx/inc/svx/sdr/overlay/overlaymanagerbuffered.hxx113
-rw-r--r--svx/inc/svx/sdr/overlay/overlayobject.hxx203
-rw-r--r--svx/inc/svx/sdr/overlay/overlayobjectcell.hxx70
-rw-r--r--svx/inc/svx/sdr/overlay/overlayobjectlist.hxx85
-rw-r--r--svx/inc/svx/sdr/overlay/overlaypolypolygon.hxx67
-rw-r--r--svx/inc/svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx70
-rw-r--r--svx/inc/svx/sdr/overlay/overlayrollingrectangle.hxx85
-rw-r--r--svx/inc/svx/sdr/overlay/overlayselection.hxx95
-rw-r--r--svx/inc/svx/sdr/overlay/overlaytools.hxx278
-rw-r--r--svx/inc/svx/sdr/overlay/overlaytriangle.hxx72
-rw-r--r--svx/inc/svx/sdr/primitive2d/primitiveFactory2d.hxx84
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx140
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx87
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx76
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx97
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx88
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx120
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx84
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx133
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx78
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrolecontentprimitive2d.hxx92
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx80
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx60
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx90
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrtextprimitive2d.hxx305
-rw-r--r--svx/inc/svx/sdr/primitive2d/svx_primitivetypes2d.hxx64
-rw-r--r--svx/inc/svx/sdr/primitive3d/sdrattributecreator3d.hxx63
-rw-r--r--svx/inc/svx/sdr/properties/attributeproperties.hxx101
-rw-r--r--svx/inc/svx/sdr/properties/captionproperties.hxx75
-rw-r--r--svx/inc/svx/sdr/properties/circleproperties.hxx75
-rw-r--r--svx/inc/svx/sdr/properties/connectorproperties.hxx71
-rw-r--r--svx/inc/svx/sdr/properties/customshapeproperties.hxx94
-rw-r--r--svx/inc/svx/sdr/properties/defaultproperties.hxx112
-rw-r--r--svx/inc/svx/sdr/properties/e3dcompoundproperties.hxx79
-rw-r--r--svx/inc/svx/sdr/properties/e3dextrudeproperties.hxx66
-rw-r--r--svx/inc/svx/sdr/properties/e3dlatheproperties.hxx66
-rw-r--r--svx/inc/svx/sdr/properties/e3dproperties.hxx72
-rw-r--r--svx/inc/svx/sdr/properties/e3dsceneproperties.hxx96
-rw-r--r--svx/inc/svx/sdr/properties/e3dsphereproperties.hxx66
-rw-r--r--svx/inc/svx/sdr/properties/emptyproperties.hxx104
-rw-r--r--svx/inc/svx/sdr/properties/graphicproperties.hxx75
-rw-r--r--svx/inc/svx/sdr/properties/groupproperties.hxx129
-rw-r--r--svx/inc/svx/sdr/properties/itemsettools.hxx76
-rw-r--r--svx/inc/svx/sdr/properties/measureproperties.hxx75
-rw-r--r--svx/inc/svx/sdr/properties/oleproperties.hxx69
-rw-r--r--svx/inc/svx/sdr/properties/pageproperties.hxx80
-rw-r--r--svx/inc/svx/sdr/properties/properties.hxx197
-rw-r--r--svx/inc/svx/sdr/properties/rectangleproperties.hxx69
-rw-r--r--svx/inc/svx/sdr/properties/textproperties.hxx97
-rw-r--r--svx/inc/svx/sdr/table/tabledesign.hxx54
-rw-r--r--svx/inc/svx/sdrcomment.hxx105
-rw-r--r--svx/inc/svx/sdrhittesthelper.hxx78
-rw-r--r--svx/inc/svx/sdrmasterpagedescriptor.hxx98
-rw-r--r--svx/inc/svx/sdrobjectfilter.hxx58
-rw-r--r--svx/inc/svx/sdrobjectuser.hxx60
-rw-r--r--svx/inc/svx/sdrpageuser.hxx60
-rw-r--r--svx/inc/svx/sdrpagewindow.hxx142
-rw-r--r--svx/inc/svx/sdshcitm.hxx46
-rw-r--r--svx/inc/svx/sdshitm.hxx44
-rw-r--r--svx/inc/svx/sdshtitm.hxx42
-rw-r--r--svx/inc/svx/sdsxyitm.hxx51
-rw-r--r--svx/inc/svx/sdtaaitm.hxx47
-rw-r--r--svx/inc/svx/sdtacitm.hxx40
-rw-r--r--svx/inc/svx/sdtaditm.hxx61
-rw-r--r--svx/inc/svx/sdtagitm.hxx51
-rw-r--r--svx/inc/svx/sdtaiitm.hxx45
-rw-r--r--svx/inc/svx/sdtaitm.hxx89
-rw-r--r--svx/inc/svx/sdtakitm.hxx105
-rw-r--r--svx/inc/svx/sdtayitm.hxx44
-rw-r--r--svx/inc/svx/sdtcfitm.hxx42
-rw-r--r--svx/inc/svx/sdtditm.hxx60
-rw-r--r--svx/inc/svx/sdtfchim.hxx57
-rw-r--r--svx/inc/svx/sdtfsitm.hxx71
-rw-r--r--svx/inc/svx/sdtmfitm.hxx69
-rw-r--r--svx/inc/svx/sdynitm.hxx55
-rw-r--r--svx/inc/svx/selectioncontroller.hxx86
-rwxr-xr-xsvx/inc/svx/shapeproperty.hxx59
-rw-r--r--svx/inc/svx/shapepropertynotifier.hxx148
-rw-r--r--svx/inc/svx/simptabl.hxx180
-rw-r--r--svx/inc/svx/sphere3d.hxx88
-rw-r--r--svx/inc/svx/splitcelldlg.hxx62
-rw-r--r--svx/inc/svx/stddlg.hxx51
-rw-r--r--svx/inc/svx/strarray.hxx53
-rw-r--r--svx/inc/svx/subtoolboxcontrol.hxx55
-rw-r--r--svx/inc/svx/svdattr.hxx76
-rw-r--r--svx/inc/svx/svdattrx.hxx85
-rw-r--r--svx/inc/svx/svdcrtv.hxx209
-rw-r--r--svx/inc/svx/svddef.hxx313
-rw-r--r--svx/inc/svx/svddrag.hxx192
-rw-r--r--svx/inc/svx/svddrgmt.hxx324
-rw-r--r--svx/inc/svx/svddrgv.hxx321
-rw-r--r--svx/inc/svx/svdedtv.hxx473
-rw-r--r--svx/inc/svx/svdedxv.hxx306
-rw-r--r--svx/inc/svx/svdetc.hxx356
-rw-r--r--svx/inc/svx/svdfield.hxx36
-rw-r--r--svx/inc/svx/svdglev.hxx119
-rw-r--r--svx/inc/svx/svdglue.hxx151
-rw-r--r--svx/inc/svx/svdhdl.hxx534
-rw-r--r--svx/inc/svx/svdhlpln.hxx107
-rw-r--r--svx/inc/svx/svdlayer.hxx160
-rw-r--r--svx/inc/svx/svdmark.hxx412
-rw-r--r--svx/inc/svx/svdmodel.hxx767
-rw-r--r--svx/inc/svx/svdmrkv.hxx539
-rw-r--r--svx/inc/svx/svdoashp.hxx265
-rw-r--r--svx/inc/svx/svdoattr.hxx90
-rw-r--r--svx/inc/svx/svdobj.hxx1186
-rw-r--r--svx/inc/svx/svdocapt.hxx171
-rw-r--r--svx/inc/svx/svdocirc.hxx153
-rw-r--r--svx/inc/svx/svdoedge.hxx436
-rw-r--r--svx/inc/svx/svdograf.hxx227
-rw-r--r--svx/inc/svx/svdogrp.hxx125
-rw-r--r--svx/inc/svx/svdomeas.hxx217
-rw-r--r--svx/inc/svx/svdomedia.hxx93
-rw-r--r--svx/inc/svx/svdoole2.hxx190
-rw-r--r--svx/inc/svx/svdopage.hxx76
-rw-r--r--svx/inc/svx/svdopath.hxx195
-rw-r--r--svx/inc/svx/svdorect.hxx137
-rw-r--r--svx/inc/svx/svdotable.hxx342
-rw-r--r--svx/inc/svx/svdotext.hxx610
-rw-r--r--svx/inc/svx/svdouno.hxx163
-rw-r--r--svx/inc/svx/svdoutl.hxx60
-rw-r--r--svx/inc/svx/svdovirt.hxx165
-rw-r--r--svx/inc/svx/svdpage.hxx617
-rw-r--r--svx/inc/svx/svdpagv.hxx294
-rw-r--r--svx/inc/svx/svdpntv.hxx577
-rw-r--r--svx/inc/svx/svdpoev.hxx110
-rw-r--r--svx/inc/svx/svdpool.hxx63
-rw-r--r--svx/inc/svx/svdsnpv.hxx338
-rw-r--r--svx/inc/svx/svdsob.hxx133
-rw-r--r--svx/inc/svx/svdtext.hxx88
-rw-r--r--svx/inc/svx/svdtrans.hxx326
-rw-r--r--svx/inc/svx/svdtypes.hxx169
-rw-r--r--svx/inc/svx/svdundo.hxx882
-rw-r--r--svx/inc/svx/svdview.hxx339
-rw-r--r--svx/inc/svx/svdxcgv.hxx162
-rw-r--r--svx/inc/svx/svx3ditems.hxx377
-rw-r--r--svx/inc/svx/svxdlg.hxx507
-rw-r--r--svx/inc/svx/svxdllapi.h40
-rwxr-xr-xsvx/inc/svx/svxids.hrc1328
-rw-r--r--svx/inc/svx/svxitems.hrc174
-rw-r--r--svx/inc/svx/sxallitm.hxx69
-rw-r--r--svx/inc/svx/sxcaitm.hxx60
-rw-r--r--svx/inc/svx/sxcecitm.hxx93
-rw-r--r--svx/inc/svx/sxcgitm.hxx43
-rw-r--r--svx/inc/svx/sxciaitm.hxx51
-rw-r--r--svx/inc/svx/sxcikitm.hxx55
-rw-r--r--svx/inc/svx/sxcllitm.hxx58
-rw-r--r--svx/inc/svx/sxctitm.hxx52
-rw-r--r--svx/inc/svx/sxekitm.hxx58
-rw-r--r--svx/inc/svx/sxelditm.hxx64
-rw-r--r--svx/inc/svx/sxenditm.hxx78
-rw-r--r--svx/inc/svx/sxfiitm.hxx57
-rw-r--r--svx/inc/svx/sxlayitm.hxx56
-rw-r--r--svx/inc/svx/sxlogitm.hxx51
-rw-r--r--svx/inc/svx/sxmbritm.hxx48
-rw-r--r--svx/inc/svx/sxmfsitm.hxx42
-rw-r--r--svx/inc/svx/sxmkitm.hxx55
-rw-r--r--svx/inc/svx/sxmlhitm.hxx85
-rw-r--r--svx/inc/svx/sxmoitm.hxx41
-rw-r--r--svx/inc/svx/sxmovitm.hxx51
-rw-r--r--svx/inc/svx/sxmsitm.hxx43
-rw-r--r--svx/inc/svx/sxmspitm.hxx51
-rw-r--r--svx/inc/svx/sxmsuitm.hxx40
-rw-r--r--svx/inc/svx/sxmtaitm.hxx51
-rw-r--r--svx/inc/svx/sxmtfitm.hxx58
-rw-r--r--svx/inc/svx/sxmtpitm.hxx77
-rw-r--r--svx/inc/svx/sxmtritm.hxx49
-rw-r--r--svx/inc/svx/sxmuitm.hxx54
-rw-r--r--svx/inc/svx/sxoneitm.hxx69
-rw-r--r--svx/inc/svx/sxonitm.hxx44
-rw-r--r--svx/inc/svx/sxopitm.hxx48
-rw-r--r--svx/inc/svx/sxraitm.hxx42
-rw-r--r--svx/inc/svx/sxreaitm.hxx56
-rw-r--r--svx/inc/svx/sxreoitm.hxx56
-rw-r--r--svx/inc/svx/sxroaitm.hxx42
-rw-r--r--svx/inc/svx/sxrooitm.hxx42
-rw-r--r--svx/inc/svx/sxsaitm.hxx42
-rw-r--r--svx/inc/svx/sxsalitm.hxx51
-rw-r--r--svx/inc/svx/sxsiitm.hxx45
-rw-r--r--svx/inc/svx/sxsoitm.hxx51
-rw-r--r--svx/inc/svx/sxtraitm.hxx69
-rw-r--r--svx/inc/svx/tabarea.hxx76
-rw-r--r--svx/inc/svx/tabline.hxx66
-rw-r--r--svx/inc/svx/tbcontrl.hxx447
-rw-r--r--svx/inc/svx/tbxcolorupdate.hxx85
-rw-r--r--svx/inc/svx/ucsubset.hrc155
-rw-r--r--svx/inc/svx/ucsubset.hxx81
-rw-r--r--svx/inc/svx/unomid.hxx117
-rw-r--r--svx/inc/svx/unomod.hxx66
-rw-r--r--svx/inc/svx/unomodel.hxx112
-rw-r--r--svx/inc/svx/unopage.hxx160
-rw-r--r--svx/inc/svx/unoprov.hxx149
-rw-r--r--svx/inc/svx/unoshape.hxx892
-rw-r--r--svx/inc/svx/unoshprp.hxx534
-rw-r--r--svx/inc/svx/unoshtxt.hxx99
-rw-r--r--svx/inc/svx/view3d.hxx277
-rw-r--r--svx/inc/svx/viewlayoutitem.hxx63
-rw-r--r--svx/inc/svx/viewpt3d.hxx132
-rw-r--r--svx/inc/svx/volume3d.hxx33
-rw-r--r--svx/inc/svx/xbitmap.hxx100
-rw-r--r--svx/inc/svx/xbtmpit.hxx76
-rw-r--r--svx/inc/svx/xcolit.hxx67
-rw-r--r--svx/inc/svx/xdash.hxx77
-rw-r--r--svx/inc/svx/xdef.hxx101
-rw-r--r--svx/inc/svx/xenum.hxx62
-rw-r--r--svx/inc/svx/xfillit.hxx51
-rw-r--r--svx/inc/svx/xfillit0.hxx63
-rw-r--r--svx/inc/svx/xflasit.hxx54
-rw-r--r--svx/inc/svx/xflbckit.hxx58
-rw-r--r--svx/inc/svx/xflbmpit.hxx60
-rw-r--r--svx/inc/svx/xflbmsli.hxx56
-rw-r--r--svx/inc/svx/xflbmsxy.hxx88
-rw-r--r--svx/inc/svx/xflbmtit.hxx56
-rw-r--r--svx/inc/svx/xflboxy.hxx79
-rw-r--r--svx/inc/svx/xflbstit.hxx56
-rw-r--r--svx/inc/svx/xflbtoxy.hxx79
-rw-r--r--svx/inc/svx/xflclit.hxx63
-rw-r--r--svx/inc/svx/xflftrit.hxx72
-rw-r--r--svx/inc/svx/xflgrit.hxx74
-rw-r--r--svx/inc/svx/xflhtit.hxx76
-rw-r--r--svx/inc/svx/xfltrit.hxx54
-rw-r--r--svx/inc/svx/xftadit.hxx55
-rw-r--r--svx/inc/svx/xftdiit.hxx50
-rw-r--r--svx/inc/svx/xftmrit.hxx50
-rw-r--r--svx/inc/svx/xftouit.hxx50
-rw-r--r--svx/inc/svx/xftsfit.hxx55
-rw-r--r--svx/inc/svx/xftshcit.hxx53
-rw-r--r--svx/inc/svx/xftshit.hxx56
-rw-r--r--svx/inc/svx/xftshtit.hxx49
-rw-r--r--svx/inc/svx/xftshxy.hxx67
-rw-r--r--svx/inc/svx/xftstit.hxx50
-rw-r--r--svx/inc/svx/xgrad.hxx86
-rw-r--r--svx/inc/svx/xgrscit.hxx54
-rw-r--r--svx/inc/svx/xhatch.hxx65
-rw-r--r--svx/inc/svx/xit.hxx88
-rw-r--r--svx/inc/svx/xlineit.hxx54
-rw-r--r--svx/inc/svx/xlineit0.hxx59
-rw-r--r--svx/inc/svx/xlinjoit.hxx60
-rw-r--r--svx/inc/svx/xlnasit.hxx55
-rw-r--r--svx/inc/svx/xlnclit.hxx58
-rw-r--r--svx/inc/svx/xlndsit.hxx80
-rw-r--r--svx/inc/svx/xlnedcit.hxx55
-rw-r--r--svx/inc/svx/xlnedit.hxx72
-rw-r--r--svx/inc/svx/xlnedwit.hxx59
-rw-r--r--svx/inc/svx/xlnstcit.hxx56
-rw-r--r--svx/inc/svx/xlnstit.hxx72
-rw-r--r--svx/inc/svx/xlnstwit.hxx58
-rw-r--r--svx/inc/svx/xlntrit.hxx54
-rw-r--r--svx/inc/svx/xlnwtit.hxx55
-rw-r--r--svx/inc/svx/xpoly.hxx216
-rw-r--r--svx/inc/svx/xpool.hxx60
-rw-r--r--svx/inc/svx/xsetit.hxx53
-rw-r--r--svx/inc/svx/xsflclit.hxx58
-rw-r--r--svx/inc/svx/xtable.hxx653
-rw-r--r--svx/inc/svx/xtextit.hxx48
-rw-r--r--svx/inc/svx/xtextit0.hxx72
-rw-r--r--svx/inc/svx/zoomitem.hxx91
-rw-r--r--svx/inc/svx/zoomsliderctrl.hxx62
-rw-r--r--svx/inc/svx/zoomslideritem.hxx68
432 files changed, 59296 insertions, 0 deletions
diff --git a/svx/inc/svx/AccessibleControlShape.hxx b/svx/inc/svx/AccessibleControlShape.hxx
new file mode 100644
index 000000000000..60158c0a55d3
--- /dev/null
+++ b/svx/inc/svx/AccessibleControlShape.hxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_CONTROL_SHAPE_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_CONTROL_SHAPE_HXX
+
+#include <svx/AccessibleShape.hxx>
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventListener.hpp>
+#include <com/sun/star/util/XModeChangeBroadcaster.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+#include <cppuhelper/implbase3.hxx>
+#include <comphelper/uno3.hxx>
+
+namespace com { namespace sun { namespace star { namespace awt {
+ class XControl;
+} } } }
+
+namespace comphelper
+{
+ class OWrappedAccessibleChildrenManager;
+}
+
+class SdrObject;
+namespace accessibility {
+
+ typedef ::cppu::ImplHelper4 < ::com::sun::star::beans::XPropertyChangeListener
+ , ::com::sun::star::util::XModeChangeListener
+ , ::com::sun::star::container::XContainerListener
+ , ::com::sun::star::accessibility::XAccessibleEventListener
+ > AccessibleControlShape_Base;
+/** @descr
+*/
+class AccessibleControlShape
+ :public AccessibleShape
+ ,public AccessibleControlShape_Base
+{
+public:
+ //===== internal ========================================================
+ AccessibleControlShape(
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+ virtual ~AccessibleControlShape( );
+
+protected:
+ //--- XAccessible ----------------------------------------
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- XAccessibleComponent -------------------------------
+ /// forward the focus to the contained control(in alive mode)
+ virtual void SAL_CALL grabFocus( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- XAccessibleContext ---------------------------------
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+
+ //--- XServiceInfo ---------------------------------------
+ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- XInterface -----------------------------------------
+ DECLARE_XINTERFACE( )
+
+ //--- XTypeProvider --------------------------------------
+ DECLARE_XTYPEPROVIDER( )
+
+ //--- XPropertyChangeListener ----------------------------
+ virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- XComponent -----------------------------------------
+ virtual void SAL_CALL disposing( );
+
+ //--- XEventListener -------------------------------------
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- XModeChangeListener --------------------------------
+ virtual void SAL_CALL modeChanged( const ::com::sun::star::util::ModeChangeEvent& _rSource ) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- XAccessibleEventListener ----------------------------
+ virtual void SAL_CALL notifyEvent( const ::com::sun::star::accessibility::AccessibleEventObject& aEvent ) throw(::com::sun::star::uno::RuntimeException);
+
+ //--- document::XEventListener ----------------------------
+ using AccessibleShape::notifyEvent;
+
+ // XVclContainerListener
+ virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ /** Initialize a new shape. See the documentation of the base' constructor
+ for the reason of this method's existence.
+ */
+ virtual void Init( );
+
+ /// Create a name string that contains the accessible name.
+ virtual ::rtl::OUString
+ CreateAccessibleBaseName( )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ /** Create a unique name string that contains the accessible name. The
+ name consists of the base name and the index.
+ */
+ virtual ::rtl::OUString
+ CreateAccessibleName( )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ /// Create a description string that contains the accessible description.
+ virtual ::rtl::OUString
+ CreateAccessibleDescription( )
+ throw(::com::sun::star::uno::RuntimeException);
+
+#ifdef DBG_UTIL
+ /// Set the specified state
+ virtual sal_Bool SetState( sal_Int16 _nState );
+#endif // DBG_UTIL
+
+ /// (safely) reads the given property from the model of the UNO control
+ ::rtl::OUString getControlModelStringProperty( const ::rtl::OUString& _rPropertyName ) const SAL_THROW(( ));
+
+ /// ensure that our control model exists(will be retrieved upon need only)
+ sal_Bool ensureControlModelAccess( ) SAL_THROW(( ));
+
+ /// ensures that we're listening for the given property if(and only if!) necessary
+ sal_Bool ensureListeningState( const sal_Bool _bCurrentlyListening, const sal_Bool _bNeedNewListening,
+ const ::rtl::OUString& _rPropertyName );
+
+ /// starts multiplexing the state changes of our aggregate context
+ void startStateMultiplexing( );
+ /// stops multiplexing the state changes of our aggregate context
+ void stopStateMultiplexing( );
+
+ /// retrieves the SdrObject of the shape we represent
+ SdrObject* getSdrObject( ) const;
+
+ /** adjusts our AccessibleRole, depending on the control type we're working for
+
+ <p>Only to be called during inituialization</p>
+ */
+ void adjustAccessibleRole( );
+
+ /** initializes composed states of the context
+
+ <p>Some of the states of our inner context need to be propagated to the "composed context", too
+ (such as "checked" for check boxes). At lifetime, this is done by multiplexing state changes,
+ at initialization time, this method is used.</p>
+ */
+ void initializeComposedState( );
+
+private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+ m_xControlModel;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ m_xModelPropsMeta; // cache this for performance reasons
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >
+ m_xUnoControl; // our UNO control
+
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessibleContext >
+ m_aControlContext; // the AccessibleContext of the control
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation >
+ m_xControlContextProxy; // the proxy for "aggregating" the AccessibleContext of the control
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XTypeProvider >
+ m_xControlContextTypeAccess; // cached interface of our aggregate
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ m_xControlContextComponent; // cached interface of our aggregate
+
+ ::comphelper::OWrappedAccessibleChildrenManager*
+ m_pChildManager;
+
+ sal_Bool m_bListeningForName : 1; // are we currently listening for changes of the "Name" property?
+ sal_Bool m_bListeningForDesc : 1; // are we currently listening for changes of the "HelpText" property?
+ sal_Bool m_bMultiplexingStates : 1; // are we currently multiplexing state changes of the native context?
+ sal_Bool m_bDisposeNativeContext : 1; // do we need to dispose mxNativeContextComponent?
+ sal_Bool m_bWaitingForControl : 1; // if we are created before our control exists, we need to wait for it to appear ...
+
+private:
+ /** Don't use the default constructor. Use the public constructor that
+ takes the original shape and the parent as arguments instead.
+ */
+ AccessibleControlShape( );
+
+ /// Don't use the constructor. not implemented.
+ AccessibleControlShape(const AccessibleControlShape&);
+
+ /// Don't use the assignment operator. not implemented.
+ AccessibleControlShape& operator= (const AccessibleControlShape&);
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleGraphicShape.hxx b/svx/inc/svx/AccessibleGraphicShape.hxx
new file mode 100644
index 000000000000..09cee5c069ad
--- /dev/null
+++ b/svx/inc/svx/AccessibleGraphicShape.hxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_GRAPHIC_SHAPE_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_GRAPHIC_SHAPE_HXX
+
+#include <svx/AccessibleShape.hxx>
+#include <com/sun/star/accessibility/XAccessibleImage.hpp>
+#include "svx/svxdllapi.h"
+
+namespace accessibility {
+
+/** @descr
+ This class makes graphic shapes accessible. With respect to its
+ base class <type>AccessibleShape</type> it supports the additional
+ <type>XAccessibleImage</type> interface.
+*/
+class SVX_DLLPUBLIC AccessibleGraphicShape
+ : public AccessibleShape,
+ public ::com::sun::star::accessibility::XAccessibleImage
+{
+public:
+ //===== internal ========================================================
+ AccessibleGraphicShape (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+
+ virtual ~AccessibleGraphicShape (void);
+
+ //===== XAccessibleImage ================================================
+
+ ::rtl::OUString SAL_CALL getAccessibleImageDescription (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ sal_Int32 SAL_CALL getAccessibleImageHeight (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ sal_Int32 SAL_CALL getAccessibleImageWidth (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== XInterface ======================================================
+
+ virtual com::sun::star::uno::Any SAL_CALL
+ queryInterface (const com::sun::star::uno::Type & rType)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual void SAL_CALL
+ acquire (void)
+ throw ();
+
+ virtual void SAL_CALL
+ release (void)
+ throw ();
+
+ //===== XServiceInfo ====================================================
+
+ /** Returns an identifier for the implementation of this object.
+ */
+ virtual ::rtl::OUString SAL_CALL
+ getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== XTypeProvider ===================================================
+
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL
+ getTypes (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ /// Create a name string that contains the accessible name.
+ virtual ::rtl::OUString
+ CreateAccessibleBaseName ()
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /// Create a description string that contains the accessible description.
+ virtual ::rtl::OUString
+ CreateAccessibleDescription ()
+ throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ /** Don't use the default constructor. Use the public constructor that
+ takes the original shape and the parent as arguments instead.
+ */
+ SVX_DLLPRIVATE AccessibleGraphicShape (void);
+
+ /// Don't use the constructor. Not yet implemented.
+ SVX_DLLPRIVATE AccessibleGraphicShape (const AccessibleGraphicShape&);
+
+ /// Don't use the assignment operator. Not yet implemented.
+ SVX_DLLPRIVATE AccessibleGraphicShape& operator= (const AccessibleGraphicShape&);
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleOLEShape.hxx b/svx/inc/svx/AccessibleOLEShape.hxx
new file mode 100644
index 000000000000..27cd0f5fe237
--- /dev/null
+++ b/svx/inc/svx/AccessibleOLEShape.hxx
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_OLE_SHAPE_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_OLE_SHAPE_HXX
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_MANAGER_HXX
+#include <svx/AccessibleShape.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_ACCESSIBILITY_XACCESSIBLE_ACTION_HPP_
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#endif
+#include "svx/svxdllapi.h"
+
+namespace accessibility {
+
+/** @descr
+ This class makes OLE objects accessible. With respect to its
+ base class <type>AccessibleShape</type> it supports the additional
+ <type>XAccessibleAction</type> interface.
+*/
+class SVX_DLLPUBLIC AccessibleOLEShape
+ : public AccessibleShape,
+ public ::com::sun::star::accessibility::XAccessibleAction
+{
+public:
+ //===== internal ========================================================
+ AccessibleOLEShape (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+ virtual ~AccessibleOLEShape (void);
+
+ //===== XAccessibleAction ===============================================
+
+ sal_Int32 SAL_CALL getAccessibleActionCount (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ sal_Bool SAL_CALL doAccessibleAction (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+
+ ::rtl::OUString SAL_CALL getAccessibleActionDescription (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleKeyBinding> SAL_CALL getAccessibleActionKeyBinding (
+ sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::uno::RuntimeException);
+
+ //===== XInterface ======================================================
+
+ virtual com::sun::star::uno::Any SAL_CALL
+ queryInterface (const com::sun::star::uno::Type & rType)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual void SAL_CALL
+ acquire (void)
+ throw ();
+
+ virtual void SAL_CALL
+ release (void)
+ throw ();
+
+ //===== XServiceInfo ====================================================
+
+ virtual ::rtl::OUString SAL_CALL
+ getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== XTypeProvider ===================================================
+
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL
+ getTypes (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ /// Create a name string that contains the accessible name.
+ virtual ::rtl::OUString
+ CreateAccessibleBaseName ()
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /// Create a description string that contains the accessible description.
+ virtual ::rtl::OUString
+ CreateAccessibleDescription ()
+ throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ /** Don't use the default constructor. Use the public constructor that
+ takes the original shape and the parent as arguments instead.
+ */
+ SVX_DLLPRIVATE AccessibleOLEShape (void);
+
+ /// Don't use the constructor. Not yet implemented.
+ SVX_DLLPRIVATE AccessibleOLEShape (const AccessibleOLEShape&);
+
+ /// Don't use the assignment operator. Not yet implemented.
+ SVX_DLLPRIVATE AccessibleOLEShape& operator= (const AccessibleOLEShape&);
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleShape.hxx b/svx/inc/svx/AccessibleShape.hxx
new file mode 100755
index 000000000000..e1979294b2d8
--- /dev/null
+++ b/svx/inc/svx/AccessibleShape.hxx
@@ -0,0 +1,410 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_HXX
+
+#include <editeng/AccessibleContextBase.hxx>
+#include <editeng/AccessibleComponentBase.hxx>
+#include <svx/IAccessibleViewForwarderListener.hxx>
+#include <com/sun/star/document/XEventListener.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <svx/AccessibleTextHelper.hxx>
+#include "svx/svxdllapi.h"
+#include "ChildrenManager.hxx"
+
+class SdrObject;
+
+namespace accessibility {
+
+class AccessibleShapeInfo;
+class AccessibleShapeTreeInfo;
+class IAccessibleParent;
+
+/** This base class provides a base implementation for all shapes. For more
+ detailed documentation about the methods refer to the descriptions of
+ the implemented interfaces. These are, among others,
+ <type>XAccessible</type>, <type>XAccessibleContext</type>,
+ <type>XAccessibleComponent</type> and
+ <type>XAccessibleExtendedComponent</type>.
+
+ <p>The children of a shape can stem from two sources which, in case of
+ SVX and SD shapes, are mutually exclusive. This implementation,
+ however, handles both simultaniously to cope with future extensions or
+ shapes from other projects.
+ <ul>
+ <li>If this shape is a group shape, i.e. a
+ <type>SvxShapeGroup</type> or a <type>Svx3DSceneObject</type>, it
+ can have nested shapes.</li>
+ <li>If this shape is a descendant from <type>SvxShapeText</type>
+ then the text paragraphs are its children.</li>
+ </ul>
+ </p>
+
+ <p>Accessible shapes do not listen for disposing() calls of the UNO
+ shapes they make accessible. This is the task of their owner, usually a
+ container, who can then call dispose() at the accessible object.</p>
+*/
+class SVX_DLLPUBLIC AccessibleShape
+ : public AccessibleContextBase,
+ public AccessibleComponentBase,
+ public IAccessibleViewForwarderListener,
+ public ::com::sun::star::document::XEventListener,
+ public ::com::sun::star::lang::XUnoTunnel
+{
+public:
+ //===== internal ========================================================
+
+ /** Create a new accessible object that makes the given shape accessible.
+ @param rShapeInfo
+ This object contains all information specific to the new
+ accessible shape. That are e.g. the shape to be made accessible
+ and the accessible object that will become the parent of the new
+ object.
+ @param rShapeTreeInfo
+ Bundel of information passed to this shape and all of its desendants.
+ @attention
+ Always call the <member>init</member> method after creating a
+ new accessible shape. This is one way to overcome the potential
+ problem of registering the new object with e.g. event
+ broadcasters. That would delete the new object if a broadcaster
+ would not keep a strong reference to the new object.
+ */
+ AccessibleShape (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo);
+
+ /** The destructor releases its children manager and text engine if
+ still existent. These are responsible to send appropriate events.
+ */
+ virtual ~AccessibleShape (void);
+
+ /** Initialize a new shape. See the documentation of the constructor
+ for the reason of this method's existence.
+ */
+ virtual void Init (void);
+
+ /** Compare two accessible shapes using object identity
+ @param rShape
+ This is the second operand.
+ @return
+ Returns true if both shapes are the same object.
+ */
+ virtual bool operator== (const AccessibleShape& rShape);
+
+ /** Set the specified state. If the state is <const>FOCUSED</const>
+ then, additionally to the inherited functionality, the focus
+ listeners registered with the <type>XAccessibleComponent</type>
+ interface are called (if that state really changes).
+
+ @param aState
+ The state to turn on.
+
+ @return
+ The returned flag indicates whether the specified state has been
+ changed (<TRUE/>), i.e. it has formerly not been set.
+ */
+ virtual sal_Bool SetState (sal_Int16 aState);
+
+ /** Reset the specified state. If the state is <const>FOCUSED</const>
+ then, additionally to the inherited functionality, the focus
+ listeners registered with the <type>XAccessibleComponent</type>
+ interface are called (if that state really changes).
+
+ @param aState
+ The state to turn off.
+
+ @return
+ The returned flag indicates whether the specified state has been
+ changed (<TRUE/>), i.e. it has formerly been set.
+ */
+ virtual sal_Bool ResetState (sal_Int16 aState);
+
+ /** Return the state of the specified state. Take the
+ <const>FOCUSED</const> state from the accessible edit engine.
+
+ @param aState
+ The state for which to return its value.
+ @return
+ A value of <TRUE/> indicates that the state is set. A <FALSE/>
+ value indicates an unset state or the inability to access the
+ entity that manages the state set.
+
+ */
+ sal_Bool GetState (sal_Int16 aState);
+
+
+ //===== XAccessibleContext ==============================================
+
+ /// Return the number of currently visible children.
+ virtual sal_Int32 SAL_CALL
+ getAccessibleChildCount (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** Return the specified child.
+ @param nIndex
+ Index of the requested child.
+ @return
+ Reference of the requested child which is the accessible object
+ of a visible shape.
+ @raises IndexOutOfBoundsException
+ Throws an exception if the index is not valid.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible> SAL_CALL
+ getAccessibleChild (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+
+ /// Return the set of current states.
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL
+ getAccessibleStateSet (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /// Return this objects index among the parents children.
+ virtual sal_Int32 SAL_CALL
+ getAccessibleIndexInParent (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== XAccessibleComponent ============================================
+
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > SAL_CALL
+ getAccessibleAtPoint (const ::com::sun::star::awt::Point& aPoint)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocation (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getForeground (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getBackground (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+
+
+ //===== XComponent ========================================================
+
+ using WeakComponentImplHelperBase::addEventListener;
+ using WeakComponentImplHelperBase::removeEventListener;
+
+ //===== XAccessibleEventBroadcaster =====================================
+
+ /** This call is forwarded to a) the base class and b) to the
+ accessible edit engine if it is present.
+
+ @param rxListener
+ This listener is informed about accessibility events.
+ */
+ virtual void SAL_CALL
+ addEventListener (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** This call is forwarded to a) the base class and b) to the
+ accessible edit engine if it is present.
+
+ @param rxListener
+ This listener will not be informed about accessibility events
+ anymore.
+ */
+ virtual void SAL_CALL
+ removeEventListener (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleEventListener >& rxListener)
+ throw (::com::sun::star::uno::RuntimeException);
+
+
+ //===== XInterface ======================================================
+
+ virtual com::sun::star::uno::Any SAL_CALL
+ queryInterface (const com::sun::star::uno::Type & rType)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual void SAL_CALL
+ acquire (void)
+ throw ();
+
+ virtual void SAL_CALL
+ release (void)
+ throw ();
+
+
+ //===== XServiceInfo ====================================================
+
+ /** Returns an identifier for the implementation of this object.
+ */
+ virtual ::rtl::OUString SAL_CALL
+ getImplementationName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
+ getSupportedServiceNames (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== XTypeProvider ===================================================
+
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL
+ getTypes (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== IAccessibleViewForwarderListener ================================
+ virtual void ViewForwarderChanged (ChangeType aChangeType,
+ const IAccessibleViewForwarder* pViewForwarder);
+
+ //===== lang::XEventListener ============================================
+
+ /** Listen for disposing events of the model. The accessible shape
+ remains functional when this happens.
+ */
+ virtual void SAL_CALL
+ disposing (const ::com::sun::star::lang::EventObject& Source)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //===== document::XEventListener ========================================
+
+ virtual void SAL_CALL
+ notifyEvent (const ::com::sun::star::document::EventObject& rEventObject)
+ throw (::com::sun::star::uno::RuntimeException);
+
+
+ //===== XUnoTunnel ========================================================
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelImplementationId() throw();
+ static AccessibleShape* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxIFace ) throw();
+ sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& _rIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //===== Misc ========================================================
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
+ GetXShape();
+
+ /** set the index _nIndex at the accessible shape
+ @param _nIndex
+ The new index in parent.
+ */
+ inline void setIndexInParent(sal_Int32 _nIndex) { m_nIndexInParent = _nIndex; }
+
+protected:
+ /// Children manager. May be empty if there are no children.
+ ChildrenManager* mpChildrenManager;
+
+ /// Reference to the actual shape.
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape> mxShape;
+
+ /** Bundle of information passed to all shapes in a document tree.
+ */
+ AccessibleShapeTreeInfo maShapeTreeInfo;
+
+ /** Index that is appended to the object's name to disambiguate between
+ different names with the otherwise same name.
+ */
+ long mnIndex;
+
+ /** the index in parent.
+ */
+ sal_Int32 m_nIndexInParent;
+
+ /** The accessible text engine. May be NULL if it can not be created.
+ */
+ AccessibleTextHelper* mpText;
+
+ /** This object can be used to modify the child list of our parent.
+ */
+ IAccessibleParent* mpParent;
+
+ /** This object can be removed when we have an extra interface to ask if the shape is selected
+ */
+ SdrObject* m_pShape;
+
+ /** This method is called from the component helper base class while
+ disposing.
+ */
+ virtual void SAL_CALL disposing (void);
+
+ /** Create a base name string that contains the accessible name.
+ */
+ virtual ::rtl::OUString
+ CreateAccessibleBaseName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** Create a unique name string that contains the accessible name. The
+ name consists of the base name and the index.
+ */
+ virtual ::rtl::OUString
+ CreateAccessibleName (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /// Create a description string that contains the accessible description.
+ virtual ::rtl::OUString
+ CreateAccessibleDescription (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** Update the <const>OPAQUE</const> and <const>SELECTED</const> state.
+ */
+ virtual void UpdateStates (void);
+
+private:
+ /** Don't use the default constructor. Use the public constructor that
+ takes the original shape and the parent as arguments instead.
+ */
+ SVX_DLLPRIVATE explicit AccessibleShape (void);
+ /// Don't use the copy constructor. Is there any use for it?
+ SVX_DLLPRIVATE explicit AccessibleShape (const AccessibleShape&);
+ /// Don't use the assignment operator. Do we need this?
+ SVX_DLLPRIVATE AccessibleShape& operator= (const AccessibleShape&);
+
+ /** Call this method when the title, name, or description of the mxShape
+ member (may) have been changed.
+ This method adapts the name and description members of the
+ AccessibleContextBase base class.
+ */
+ void UpdateNameAndDescription (void);
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleShapeInfo.hxx b/svx/inc/svx/AccessibleShapeInfo.hxx
new file mode 100644
index 000000000000..3aa8908087dd
--- /dev/null
+++ b/svx/inc/svx/AccessibleShapeInfo.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_INFO_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_INFO_HXX
+
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <svx/IAccessibleParent.hxx>
+#include "svx/svxdllapi.h"
+
+namespace accessibility {
+
+/** @descr
+ This class is a container for the information specific for a single
+ shape that is passed to the constructor of that shape. It allows to
+ separate the class definitions of the shapes from the information
+ needed on construction. Only the shapes' implementation has to be
+ adapted to a modified <type>AccessibleShapeInfo</type> definition.
+
+ <p>Note that this class complements the
+ <type>AccessibleShapeTreeInfo</type> interface which contains
+ information that is passed to all shapes in a subtree not just to a
+ single shape. </p>
+*/
+class SVX_DLLPUBLIC AccessibleShapeInfo
+{
+public:
+ /** The shape itself for which an accessible object is to be
+ constructed.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape> mxShape;
+
+ /** The accessible parent object of the shape.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible> mxParent;
+
+ /** This object that may be realized by the same implementation as that
+ of that of <member>mxParent</member> can be used to modify
+ parent/child relationships with the shape as initiator.
+ Note that NULL is a valid value for this member.
+ */
+ IAccessibleParent* mpChildrenManager;
+
+ /** This index is used to disambiguate names of accessible objects. A
+ value of (the default) -1 leads to the use of the object's z-order
+ instead. Because that is not a good substitute, better pass an ever
+ increasing counter.
+ */
+ sal_Int32 mnIndex;
+
+ /** Copy the given values into the members described above.
+ */
+ AccessibleShapeInfo (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape>& rxShape,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>& rxParent,
+ IAccessibleParent* pChildrenManager,
+ sal_Int32 nIndex = -1);
+
+ /** Copy the given values into the members described above.
+ The accessible parent implementation object is set to NULL.
+ */
+ AccessibleShapeInfo (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape>& rxShape,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>& rxParent,
+ sal_Int32 nIndex = -1);
+
+ ~AccessibleShapeInfo (void);
+
+ AccessibleShapeInfo (const AccessibleShapeInfo&);
+private:
+ // Don't use these three methods.
+ SVX_DLLPRIVATE explicit AccessibleShapeInfo (void);
+ SVX_DLLPRIVATE AccessibleShapeInfo& operator= (const AccessibleShapeInfo&);
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleShapeTreeInfo.hxx b/svx/inc/svx/AccessibleShapeTreeInfo.hxx
new file mode 100644
index 000000000000..f43f0666a437
--- /dev/null
+++ b/svx/inc/svx/AccessibleShapeTreeInfo.hxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_TREE_INFO_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_TREE_INFO_HXX
+
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <svx/IAccessibleViewForwarder.hxx>
+#include "svx/svxdllapi.h"
+
+class SdrView;
+class Window;
+
+namespace accessibility {
+
+/** This class bundles all information that is passed down the tree of
+ accessible shapes so that each shape has access to that info.
+
+ There are basically four members that can be set and queried:
+ <ul>
+ <li>The model broadcaster is used for getting notified about shape
+ changes. Using this broadcaster makes in unnecessary to register at
+ each shape seperately.</li>
+ <li>The view forwarder is responsible for transformation between
+ coordinate systems and for providing the visible area both with respect
+ to a specific window.</li>
+ <li>The SdrView is used for creating accessible edit engines.</li>
+ <li>The Window is used for creating accessible edit engines.</li>
+ </ul>
+*/
+class SVX_DLLPUBLIC AccessibleShapeTreeInfo
+{
+public:
+ /** Deprecated. Don't use this constructor any more.
+ */
+ AccessibleShapeTreeInfo (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleComponent>& rxDocumentWindow,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::document::XEventBroadcaster>& rxBroadcaster);
+
+ /** Use this constructor to create an empty object that is filled later
+ with more meaningfull data.
+ */
+ AccessibleShapeTreeInfo (void);
+
+ /** Create a copy of the given shape info.
+ @param rInfo
+ The shape tree info object to copy.
+ */
+ AccessibleShapeTreeInfo (const AccessibleShapeTreeInfo& rInfo);
+
+ ~AccessibleShapeTreeInfo (void);
+
+ AccessibleShapeTreeInfo& operator= (const AccessibleShapeTreeInfo& rInfo);
+
+ /** Deprecated. Don't use this method.
+ */
+ void SetDocumentWindow (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleComponent>& rxViewWindow);
+ /** Deprecated. Don't use this method.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleComponent>
+ GetDocumentWindow (void) const;
+
+ /** Deprecated. Use the correctly named SetModelBroadcaster method
+ instead.
+ */
+ void SetControllerBroadcaster (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::document::XEventBroadcaster>& rxControllerBroadcaster);
+ /** Deprecated. Use the correctly named GetModelBroadcaster method
+ instead.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::document::XEventBroadcaster>
+ GetControllerBroadcaster (void) const;
+
+ /** Set a new broadcaster that sends events indicating shape changes.
+ The broadcaster usually is or belongs to a document model.
+ @param rxModelBroadcaster
+ The new broadcaster. It replaces the current one. An empty
+ reference may be passed to unset the broadcaster
+ */
+ void SetModelBroadcaster (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::document::XEventBroadcaster>& rxModelBroadcaster);
+
+ /** Return the current model broadcaster.
+ @return
+ The returned reference may be empty if the broadcaster has not
+ been set or has been set to an empty reference.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::document::XEventBroadcaster>
+ GetModelBroadcaster (void) const;
+
+ /** Set the view that will be used to construct SvxTextEditSources which
+ in turn are used to create accessible edit engines.
+ @param pView
+ The new SdrView that replaces the current one. A NULL pointer
+ may be passed to unset the view.
+ */
+ void SetSdrView (SdrView* pView);
+
+ /** Return the current SdrView.
+ @return
+ The returned value may be NULL.
+ */
+ SdrView* GetSdrView (void) const;
+
+ /** Set a new controller. This will usually but not necessarily
+ correspond to the SdrView.
+ @param rxController
+ The new controller that replaces the current one. An empty
+ reference may be passed to unset the controller.
+ */
+ void SetController (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XController>& rxController);
+
+ /** Return the currently set controller.
+ @return
+ The reference to the currently set controller may be empty.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XController>
+ GetController (void) const;
+
+ /** Set the window that is used to construct SvxTextEditSources which in
+ turn is used to create accessible edit engines.
+ */
+ void SetWindow (Window* pWindow);
+
+ /** Return the current Window.
+ @return
+ The returned value may be NULL.
+ */
+ Window* GetWindow (void) const;
+
+ /** The view forwarder allows the transformation between internal
+ and pixel coordinates and can be asked for the visible area.
+ @param pViewForwarder
+ This view forwarder replaces the current one.
+ */
+ void SetViewForwarder (const IAccessibleViewForwarder* pViewForwarder);
+
+ /** Return the current view forwarder.
+ @return
+ The returned pointer may be NULL.
+ */
+ const IAccessibleViewForwarder* GetViewForwarder (void) const;
+
+private:
+ /** Deprecated.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessibleComponent> mxDocumentWindow;
+
+ /** this broadcaster sends events indicating shape changes.
+ The broadcaster usually is or belongs to a document model.
+
+ This once was named mxControllerBroadcaster.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::document::XEventBroadcaster> mxModelBroadcaster;
+
+ /** This view is necessary to construct an SvxTextEditSource which in
+ turn is used to create an accessible edit engine.
+ */
+ SdrView* mpView;
+
+ /** The controller is used e.g. for obtaining the selected shapes.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XController> mxController;
+
+ /** This window is necessary to construct an SvxTextEditSource which in
+ turn is used to create an accessible edit engine.
+ */
+ Window* mpWindow;
+
+ /** The view forwarder allows the transformation between internal
+ and pixel coordinates and can be asked for the visible area.
+ */
+ const IAccessibleViewForwarder* mpViewForwarder;
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleTableShape.hxx b/svx/inc/svx/AccessibleTableShape.hxx
new file mode 100644
index 000000000000..9f3edef84a3c
--- /dev/null
+++ b/svx/inc/svx/AccessibleTableShape.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_TABLE_SHAPE_HXX
+#define _SVX_ACCESSIBILITY_ACCESSIBLE_TABLE_SHAPE_HXX
+
+#include <com/sun/star/table/XTable.hpp>
+#include <com/sun/star/accessibility/XAccessibleTable.hpp>
+#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+
+#include <rtl/ref.hxx>
+
+#include <cppuhelper/implbase2.hxx>
+
+#include <svx/AccessibleShape.hxx>
+
+#include <boost/noncopyable.hpp>
+
+namespace sdr { namespace table {
+ class SvxTableController;
+} }
+
+namespace accessibility
+{
+ class AccessibleTableShapeImpl;
+
+ typedef ::cppu::ImplInheritanceHelper2< AccessibleShape,
+ ::com::sun::star::accessibility::XAccessibleSelection,
+ ::com::sun::star::accessibility::XAccessibleTable
+ > AccessibleTableShape_Base;
+/** @descr
+*/
+class AccessibleTableShape : boost::noncopyable, public AccessibleTableShape_Base
+{
+public:
+ AccessibleTableShape( const AccessibleShapeInfo& rShapeInfo, const AccessibleShapeTreeInfo& rShapeTreeInfo );
+ virtual ~AccessibleTableShape( );
+
+ virtual void Init (void);
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw ();
+ virtual void SAL_CALL release( ) throw ();
+
+ // XAccessible
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleContext
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getAccessibleRole (void) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleTable
+ virtual sal_Int32 SAL_CALL getAccessibleRowCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleColumnCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleCaption( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleSummary( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleSelection
+ virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL clearAccessibleSelection( ) throw ( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL selectAllAccessibleChildren( ) throw ( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw ( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL disposing( );
+
+ using AccessibleShape::disposing;
+
+protected:
+ virtual ::rtl::OUString CreateAccessibleBaseName(void) throw (::com::sun::star::uno::RuntimeException);
+
+ sdr::table::SvxTableController* getTableController();
+
+ void checkCellPosition( sal_Int32 nCol, sal_Int32 nRow ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ void getColumnAndRow( sal_Int32 nChildIndex, sal_Int32& rnColumn, sal_Int32& rnRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException );
+
+private:
+ rtl::Reference< AccessibleTableShapeImpl > mxImpl;
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/AccessibleTextHelper.hxx b/svx/inc/svx/AccessibleTextHelper.hxx
new file mode 100644
index 000000000000..1d0b8cdf8cfb
--- /dev/null
+++ b/svx/inc/svx/AccessibleTextHelper.hxx
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSILE_TEXT_HELPER_HXX_
+#define _SVX_ACCESSILE_TEXT_HELPER_HXX_
+
+#include <memory>
+#include <sal/types.h>
+#include <tools/gen.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include "svx/svxdllapi.h"
+
+
+class SvxTextForwarder;
+class SvxViewForwarder;
+class SvxEditSource;
+
+namespace accessibility
+{
+
+ class AccessibleTextHelper_Impl;
+
+ /** Helper class for objects containing EditEngine/Outliner text
+
+ This class provides the methods from the XAccessibleContext,
+ XAccessibleEventBroadcaster and XAccessibleComponent
+ interfaces, that are common to all accessible objects
+ containing an edit engine.
+
+ The text contained in the EditEngine/Outliner is presented as
+ children of this class, namely for every text paragraph a
+ AccessibleEditableTextPara child object is generated. As this
+ class manages these children for itself, it has to send out
+ AccessibleEventId::CHILD events on your
+ behalf. Thus, you must forward every call to your
+ addEventListener()/removeEventListener() methods to the
+ AccessibleTextHelper (methods
+ AddEventListener/RemoveEventListener), otherwise none or not
+ every one of your event listener will notice child changes.
+
+ You have to implement the SvxEditSource, SvxTextForwarder,
+ SvxViewForwarder and SvxEditViewForwarder interfaces in order
+ to enable your object to cooperate with this
+ class. SvxTextForwarder encapsulates the fact that text
+ objects do not necessarily have an EditEngine at their
+ disposal, SvxViewForwarder and SvxEditViewForwarder do the
+ same for the document and the edit view. The three mentioned
+ forwarder objects are not stored by the AccessibleTextHelper,
+ but fetched every time from the SvxEditSource. So you are best
+ off making your SvxEditSource::Get*Forwarder methods cache the
+ current forwarder.
+
+ To support changes in edit mode or conversion of fixed text
+ into EditEngine text, you can change the SvxEditSource this
+ class is referring to. This might render all children invalid
+ and change the child count, since the AccessibleTextHelper
+ reinitializes itself from scratch.
+
+ This class registers itself at the SvxEditSource as a state
+ listener and manages the state of its children (i.e. the
+ paragraphs). See the method documentation of
+ AccessibleTextHelper::SetEditSource for the expected
+ events. Generally, be prepared that when sending any of these
+ events via SvxEditSource::GetBroadcaster() broadcaster, the
+ AccessibleTextHelper will call the SvxEditSource and their
+ forwarder to update it's state. Avoid being inconsistent in
+ the facts you tell in the events, e.g. when sending a
+ TEXT_HINT_PARAINSERTED event, the
+ SvxEditSource::GetTextForwarder().GetParagraphCount() should
+ already include the newly inserted paragraph.
+
+ @attention All public methods must not be called with any
+ mutex hold, except when calling from the main thread (with
+ holds the solar mutex), unless stated otherwise. This is
+ because they themselves might need the solar mutex in addition
+ to the object mutex, and the ordering of the locking must be:
+ first solar mutex, then object mutex. Furthermore, state
+ change events might be fired internally.
+
+ @derive Use this class in an aggregation and forward, or
+ derive from it and overwrite. If the Remove/AddEventListener
+ methods are overwritten, make sure FireEvent is adapted,
+ too.
+
+ @see SvxEditSource
+ @see SvxTextForwarder
+ @see SvxViewForwarder
+ @see SvxEditViewForwarder
+ */
+ class SVX_DLLPUBLIC AccessibleTextHelper
+ {
+
+ public:
+ typedef ::std::vector< sal_Int16 > VectorOfStates;
+
+ /** Create accessible text object for given edit source
+
+ @param pEditSource
+ The edit source to use. Object ownership is transferred
+ from the caller to the callee. The object listens on the
+ SvxEditSource for object disposal, so no provisions have
+ to be taken if the caller destroys the data (e.g. the
+ model) contained in the given SvxEditSource.
+
+ */
+ explicit AccessibleTextHelper( ::std::auto_ptr< SvxEditSource > pEditSource );
+ virtual ~AccessibleTextHelper();
+
+ protected:
+
+ // declared, but not defined
+ AccessibleTextHelper( const AccessibleTextHelper& );
+ // declared, but not defined
+ AccessibleTextHelper& operator= ( const AccessibleTextHelper& );
+
+ public:
+ /** Query the current edit source
+
+ @attention This method returns by reference, so you are
+ responsible for serialization (typically, you aquired the
+ solar mutex when calling this method). Thus, the method
+ should only be called from the main office thread.
+
+ */
+ virtual const SvxEditSource& GetEditSource() const SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ /** Set the current edit source
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ The EditSource set here is required to broadcast out the
+ following hints: EDITSOURCE_HINT_PARASMOVED,
+ EDITSOURCE_HINT_SELECTIONCHANGED, TEXT_HINT_MODIFIED,
+ TEXT_HINT_PARAINSERTED, TEXT_HINT_PARAREMOVED,
+ TEXT_HINT_TEXTHEIGHTCHANGED,
+ TEXT_HINT_VIEWSCROLLED. Otherwise, not all state changes
+ will get noticed by the accessibility object. Further
+ more, when the corresponding core object or the model is
+ dying, either the edit source must be set to NULL or it
+ has to broadcast a SFX_HINT_DYING hint.
+
+ If the SvxEditSource's managed text can change between
+ edit/non-edit mode (i.e. there are times when
+ SvxEditSource::GetEditViewForwarder(sal_False) returns
+ NULL), then the two additional hints are required:
+ HINT_BEGEDIT and HINT_ENDEDIT. When the
+ AccessibleTextHelper receives a HINT_BEGEDIT, it expects
+ the SvxEditSource already in edit mode. On a HINT_ENDEDIT,
+ edit mode must already been left. The rationale for these
+ events are the fact that focus and selection have to be
+ updated in edit mode, and completely relinquished and
+ reset to the parent (for the focus) in non-edit mode.
+
+ This class does not have a dispose method, since it is not
+ a UNO component. Nevertheless, it holds C++ references to
+ several core objects, so you should issue a
+ SetEditSource(::std::auto_ptr<SvxEditSource>(NULL)) in
+ your dispose() method.
+
+ @param pEditSource
+ The new edit source to set. Object ownership is transferred
+ from the caller to the callee.
+ */
+ virtual void SetEditSource( ::std::auto_ptr< SvxEditSource > pEditSource ) SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ /** Set the event source
+
+ You should set the event source before registering any
+ event listener and before requesting any child. Children
+ of this object receive the event source as their parent
+ accessible object. That is, the event source is best set
+ in your object's init method.
+
+ @attention When setting a reference here, you should call
+ Dispose() when you as the owner are disposing, since until
+ then this object will hold that reference
+
+ @param rInterface
+ The interface that should be set as the source for
+ accessibility events sent by this object.
+ */
+ virtual void SetEventSource( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rInterface );
+
+ /** Get the event source
+
+ @return the interface that is set as the source for
+ accessibility events sent by this object.
+ */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetEventSource() const;
+
+ /** Set offset of EditEngine/Outliner from parent
+
+ If the origin of the underlying EditEngine/Outliner does
+ not correspond to the upper left corner of the object
+ using this class, you have to specify the offset.
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ @param rPoint
+ The offset in screen coordinates (i.e. pixel)
+ */
+ virtual void SetOffset( const Point& rPoint );
+
+ /** Query offset of EditEngine/Outliner from parent
+
+ @return the offset in screen coordinates (i.e. pixel)
+ */
+ virtual Point GetOffset() const;
+
+ /** Set offset the object adds to all children's indices
+
+ This can be used if the owner of this object has children
+ handled by itself. Setting an offset different from 0
+ leads to this object mimicking that all it's children are
+ within the range [nOffset, GetChildCount()+nOffset). That
+ means, GetChild() also expects the index to be in this
+ range.
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ @param nOffset
+ The offset to add to every children's index.
+ */
+ virtual void SetStartIndex( sal_Int32 nOffset );
+
+ /** Query offset the object adds to all children's indices
+
+ @return the offset to add to every children's index.
+ */
+ virtual sal_Int32 GetStartIndex() const;
+
+ /** Sets a vector of additional accessible states.
+
+ The states are passed to every created child object
+ (text paragraph). The state values are defined in
+ com::sun::star::accessibility::AccessibleStateType.
+
+ This function has to be called before querying for
+ any children (e.g. with GetChild()).
+ */
+ void SetAdditionalChildStates( const VectorOfStates& rChildStates );
+
+ /** Returns the additional accessible states for children.
+ */
+ const VectorOfStates& GetAdditionalChildStates() const;
+
+ /** Update the visible children
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ This method reevaluates the visibility of all
+ childrens. Call this method if your visibility state has
+ changed somehow, e.g. if the visible area has changed and
+ the AccessibleTextHelper isn't notified internally
+ (e.g. via TEXT_HINT_VIEWSCROLLED). Normally, there should
+ not be a need to call this method.
+ */
+ virtual void UpdateChildren() SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ /** Drop all references and enter disposed state
+
+ This method drops all references to external objects (also
+ the event source reference set via SetEventSource()) and
+ sets the object into the disposed state (i.e. the methods
+ return default values or throw a uno::DisposedException
+ exception).
+ */
+ virtual void Dispose();
+
+ /** Set the focus state of the accessibility object
+
+ Since this class handles children which also might get the
+ focus, the user of this class is encouraged to delegate
+ focus handling. Whenever the focus state of the
+ surrounding object changes, this method has to be called.
+
+ The protocol of focus handling for a user of this class is
+ then to call SetFocus() with the appropriate focus state,
+ and HaveFocus() to determine the focus state you tell the
+ outside.
+
+ @attention Might fire state change events, therefore,
+ don't hold any mutex except solar mutex, which you are
+ required to lock before. This method should only be called
+ from the main office thread.
+
+ @param bHaveFocus
+ Whether we got or we lost the focus. Set to sal_True if
+ focus is gotten, sal_False otherwise.
+
+ @see HaveFocus()
+ */
+ virtual void SetFocus( sal_Bool bHaveFocus = sal_True ) SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ /** Query the focus state of the surrounding object
+
+ If focus handling is delegated to this class, determine
+ focus state with this method. Be prepared that even if you
+ set the focus with SetFocus(sal_True), this method might
+ return sal_False. This is the case if one of the children
+ actually got the focus.
+
+ @return the state of the focus ownership
+ */
+ virtual sal_Bool HaveFocus() SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ /** Call this method to invoke all event listeners with the given event
+
+ @attention Fires state change events, therefore, don't hold any mutex
+
+ @param nEventId
+ Id of the event to send, @see AccessibleEventId
+
+ @param rNewValue
+ The value we've changed into
+
+ @param rOldValue
+ The old value before the change
+ */
+ virtual void FireEvent( const sal_Int16 nEventId,
+ const ::com::sun::star::uno::Any& rNewValue = ::com::sun::star::uno::Any(),
+ const ::com::sun::star::uno::Any& rOldValue = ::com::sun::star::uno::Any() ) const;
+
+ /** Call this method to invoke all event listeners with the given event
+
+ @attention Fires state change events, therefore, don't hold any mutex
+
+ @param rEvent
+ The event to send, @see AccessibleEventObject
+
+ */
+ // TODO: make that virtual next time
+ void FireEvent( const ::com::sun::star::accessibility::AccessibleEventObject& rEvent ) const;
+
+ /** Query select state of the text managed by this object
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method aquires it anyway.
+
+ @return sal_True, if the text or parts of it are currently selected
+ */
+ virtual sal_Bool IsSelected() const;
+
+ // XAccessibleContext child handling methods
+ //-----------------------------------------------------------------
+ /** Implements getAccessibleChildCount
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method aquires it anyway.
+ */
+ virtual sal_Int32 GetChildCount() SAL_THROW((::com::sun::star::uno::RuntimeException));
+ /** Implements getAccessibleChild
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method aquires it anyway.
+ */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetChild( sal_Int32 i ) SAL_THROW((::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException));
+
+ // XAccessibleEventBroadcaster child related methods
+ //-----------------------------------------------------------------
+ /** Implements addEventListener
+
+ @attention Don't call with locked mutexes
+ */
+ virtual void AddEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) SAL_THROW((::com::sun::star::uno::RuntimeException));
+ /** Implements removeEventListener
+
+ @attention Don't call with locked mutexes
+ */
+ virtual void RemoveEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleEventListener >& xListener ) SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ // XAccessibleComponent child related methods
+ //-----------------------------------------------------------------
+ /** Implements getAccessibleAt
+
+ @attention Don't call with locked mutexes. You may hold
+ the solar mutex, but this method aquires it anyway.
+ */
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL GetAt( const ::com::sun::star::awt::Point& aPoint ) SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ private:
+
+ /// @dyn
+ const std::auto_ptr< AccessibleTextHelper_Impl > mpImpl;
+
+ };
+
+} // end of namespace accessibility
+
+#endif /* _SVX_ACCESSILE_TEXT_HELPER_HXX_ */
diff --git a/svx/inc/svx/ChildrenManager.hxx b/svx/inc/svx/ChildrenManager.hxx
new file mode 100644
index 000000000000..131f834eac03
--- /dev/null
+++ b/svx/inc/svx/ChildrenManager.hxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_CHILDREN_MANAGER_HXX
+#define _SVX_ACCESSIBILITY_CHILDREN_MANAGER_HXX
+
+#include <svx/IAccessibleViewForwarderListener.hxx>
+#include <svx/AccessibleShapeTreeInfo.hxx>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <memory>
+#include "svx/svxdllapi.h"
+
+namespace accessibility {
+
+class AccessibleContextBase;
+class AccessibleShape;
+class ChildrenManagerImpl;
+
+/** The <type>AccessibleChildrenManager</type> class acts as a cache of the
+ accessible objects of the currently visible shapes of a draw page and as
+ a factory to create the corresponding accessible object for a given
+ shape.
+
+ <p>There are two sources of shapes. The first is a list of UNO shapes.
+ It is passes to the constructor and can be re-set with a call to
+ <member>SetShapeList</member>. Accessibility objects which represent
+ these shapes are constructed usually on demand. The second source is a
+ set of single <type>AccessibleShape</type> objects added by calls to
+ <member>AddAccessibleShape</member>. These are not modified by this
+ class. They are only copied into the list of visible shapes depending
+ on their visibility. The later list can be cleared by calling
+ <member>ClearAccessibleShapeList</member>. The actual set of children
+ accessible through the <member>GetChildrenCount</member> and
+ <member>GetChild</member> methods are the accessible objects that lie
+ completely or partially inside the visible area obtained from the view
+ forwarder in the shape tree info.</p>
+
+ <p>A children manager registers itself at the broadcaster passed to its
+ constructor and transforms/forwards the recieved events to the listeners
+ of the also given context base. The transformation process includes
+ interpreting a <type>document::XEventListener</type>, the change from
+ XShape references to the associated XAccessible reference, and the
+ creation of an XAccessibleEventObject. The event object is then passed
+ to the <method>fireEvent</method> method of the context and from there
+ forwarded to all listeners.</p>
+
+ <p>Note that some of the data given to the constructor is passed to the
+ accessible shape objects created by that child manager which in turn
+ pass these data to their child managers. The data is thus propagated
+ down a tree of child managers/accessible shape objects from a top level
+ class that is usually a document/model. This is the way to give all
+ accessible objects access to data normally known only to the top level
+ owner of the shapes.</p>
+*/
+class SVX_DLLPUBLIC ChildrenManager
+ : public IAccessibleViewForwarderListener
+{
+public:
+ /** Create a children manager, which manages the children of the given
+ parent. The parent is used for creating accessible objects. The
+ list of shapes for which to create those objects is not derived from
+ the parent and has to be provided seperately by calling one of the
+ update methods.
+ @param rxParent
+ The parent of the accessible objects which will be created
+ on demand at some point of time in the future.
+ @param rxShapeList
+ List of UNO shapes to manage.
+ @param rShapeTreeInfo
+ Bundel of information passed down the shape tree.
+ @param rContext
+ An accessible context object that is called for fireing events
+ for new and deleted children, i.e. that holds a list of
+ listeners to be informed.
+ */
+ ChildrenManager (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>& rxParent,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShapes>& rxShapeList,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo,
+ AccessibleContextBase& rContext);
+
+ /** If there still are managed children these are marked as DEFUNC and
+ released.
+ */
+ virtual ~ChildrenManager (void);
+
+ /** Return the number of currently visible accessible children.
+ @return
+ If there are no children a 0 is returned.
+ */
+ long GetChildCount (void) const throw ();
+
+ /** Return the requested accessible child or throw and
+ IndexOutOfBoundsException if the given index is invalid.
+ @param nIndex
+ Index of the requested child. Call getChildCount for obtaining
+ the number of children.
+ @return
+ In case of a valid index this method returns a reference to the
+ requested accessible child. This reference is empty if it has
+ not been possible to create the accessible object of the
+ corresponding shape.
+ @raises
+ Throws an IndexOutOfBoundsException if the index is not valid.
+ */
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>
+ GetChild (long nIndex)
+ throw (::com::sun::star::uno::RuntimeException,
+ ::com::sun::star::lang::IndexOutOfBoundsException);
+
+ /** Update the child manager. Take care of a modified set of children
+ and modified visible area. This method can optimize the update
+ process with respect seperate updates of a modified children list
+ and visible area.
+ @param bCreateNewObjectsOnDemand
+ If </true> then accessible objects associated with the visible
+ shapes are created only when asked for. No event is sent on
+ creation. If </false> then the accessible objects are created
+ before this method returns and events are sent to inform the
+ listeners of the new object.
+ */
+ void Update (bool bCreateNewObjectsOnDemand = true);
+
+ /** Replace the list of UNO shapes by the specified list.
+ @param xShapeList
+ The new list of shapes.
+ */
+ void SetShapeList (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShapes>& xShapeList);
+
+ /** Add an accessible shape. The difference to the UNO shapes in the
+ list passed to the constructor the specified object does not have to
+ be created by the shape factory. This gives the caller full control
+ over object creation.
+
+ @param pShape
+ This class <em>does</em> take ownership of the argument.
+ */
+ void AddAccessibleShape (std::auto_ptr<AccessibleShape> pShape);
+
+ /** Clear the list of accessible shapes which have been added by
+ previous calls to <member>AddAccessibleShape</member>.
+ */
+ void ClearAccessibleShapeList (void);
+
+ /** Take a new event shape tree info. Call this method to inform the
+ children manager of a change of the info bundle.
+ @param rShapeTreeInfo
+ The new info that replaces the current one.
+ */
+ void SetInfo (AccessibleShapeTreeInfo& rShapeTreeInfo);
+
+ /** Update the SELECTED and FOCUSED states of all visible children
+ according to the given selection. This includes setting
+ <em>and</em> resetting the states.
+ */
+ void UpdateSelection (void);
+
+ /** Return whether one of the shapes managed by this object has
+ currently the focus.
+ @return
+ Returns <true/> when there is a shape that has the focus and
+ <false/> when there is no such shape.
+ */
+ bool HasFocus (void);
+
+ /** When there is a shape that currently has the focus,
+ i.e. <member>HasFocus()</member> returns <true/> then remove the
+ focus from that shape. Otherwise nothing changes.
+ */
+ void RemoveFocus (void);
+
+ //===== IAccessibleViewForwarderListener ================================
+ virtual void ViewForwarderChanged (ChangeType aChangeType,
+ const IAccessibleViewForwarder* pViewForwarder);
+
+protected:
+ ChildrenManagerImpl* mpImpl;
+
+private:
+ // Don't use the copy constructor or the assignment operator. They are
+ // not implemented (and are not intended to be).
+ SVX_DLLPRIVATE ChildrenManager (const ChildrenManager&);
+ SVX_DLLPRIVATE ChildrenManager& operator= (const ChildrenManager&);
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/EnhancedCustomShapeFunctionParser.hxx b/svx/inc/svx/EnhancedCustomShapeFunctionParser.hxx
new file mode 100644
index 000000000000..fa529bca8494
--- /dev/null
+++ b/svx/inc/svx/EnhancedCustomShapeFunctionParser.hxx
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _ENHANCEDCUSTOMSHAPEFUNCTIONPARSER_HXX
+#define _ENHANCEDCUSTOMSHAPEFUNCTIONPARSER_HXX
+
+#include <sal/config.h>
+#include <boost/shared_ptr.hpp>
+#include "EnhancedCustomShapeFunctionParser.hxx"
+#include <com/sun/star/drawing/EnhancedCustomShapeParameter.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
+#include <vector>
+
+#include <svx/svxdllapi.h>
+
+struct EnhancedCustomShapeEquation
+{
+ sal_Int32 nOperation;
+ sal_Int32 nPara[ 3 ];
+
+ EnhancedCustomShapeEquation() :
+ nOperation ( 0 )
+ {
+ nPara[ 0 ] = nPara[ 1 ] = nPara[ 2 ] = 0;
+ }
+};
+
+class EnhancedCustomShape2d;
+
+namespace EnhancedCustomShape {
+
+enum ExpressionFunct
+{
+ FUNC_CONST,
+
+ ENUM_FUNC_PI,
+ ENUM_FUNC_LEFT,
+ ENUM_FUNC_TOP,
+ ENUM_FUNC_RIGHT,
+ ENUM_FUNC_BOTTOM,
+ ENUM_FUNC_XSTRETCH,
+ ENUM_FUNC_YSTRETCH,
+ ENUM_FUNC_HASSTROKE,
+ ENUM_FUNC_HASFILL,
+ ENUM_FUNC_WIDTH,
+ ENUM_FUNC_HEIGHT,
+ ENUM_FUNC_LOGWIDTH,
+ ENUM_FUNC_LOGHEIGHT,
+ ENUM_FUNC_ADJUSTMENT,
+ ENUM_FUNC_EQUATION,
+
+ UNARY_FUNC_ABS,
+ UNARY_FUNC_SQRT,
+ UNARY_FUNC_SIN,
+ UNARY_FUNC_COS,
+ UNARY_FUNC_TAN,
+ UNARY_FUNC_ATAN,
+ UNARY_FUNC_NEG,
+
+ BINARY_FUNC_PLUS,
+ BINARY_FUNC_MINUS,
+ BINARY_FUNC_MUL,
+ BINARY_FUNC_DIV,
+ BINARY_FUNC_MIN,
+ BINARY_FUNC_MAX,
+ BINARY_FUNC_ATAN2,
+
+ TERNARY_FUNC_IF
+};
+
+#define EXPRESSION_FLAG_SUMANGLE_MODE 1
+
+SVX_DLLPUBLIC void FillEquationParameter( const com::sun::star::drawing::EnhancedCustomShapeParameter&, const sal_Int32, EnhancedCustomShapeEquation& );
+
+class ExpressionNode
+{
+public:
+ virtual ~ExpressionNode();
+
+ /** Predicate whether this node is constant.
+
+ This predicate returns true, if this node is
+ neither time- nor ViewInfo dependent. This allows
+ for certain obtimizations, i.e. not the full
+ expression tree needs be represented by
+ ExpressionNodes.
+
+ @returns true, if the note is constant
+ */
+ virtual bool isConstant() const = 0;
+
+ /** Operator to calculate function value.
+
+ This method calculates the function value.
+ */
+ virtual double operator()() const = 0;
+
+ /** Operator to retrieve the type of expression node
+ */
+ virtual ExpressionFunct getType() const = 0;
+
+ /** Operator to retrieve the ms version of expression
+ */
+ virtual com::sun::star::drawing::EnhancedCustomShapeParameter fillNode(
+ std::vector< EnhancedCustomShapeEquation >& rEquations, ExpressionNode* pOptionalArg, sal_uInt32 nFlags ) = 0;
+};
+typedef ::boost::shared_ptr< ExpressionNode > ExpressionNodeSharedPtr;
+
+/** This exception is thrown, when the arithmetic expression
+ parser failed to parse a string.
+ */
+struct ParseError
+{
+ ParseError() {}
+ ParseError( const char* ) {}
+};
+
+class FunctionParser
+{
+public:
+
+ /** Parse a string
+
+ The following grammar is accepted by this method:
+ <code>
+
+ number_digit = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'
+
+ number = number number_digit | number_digit
+
+ identifier = 'pi'|'left'|'top'|'right'|'bottom'|'xstretch'|'ystretch'|
+ 'hasstroke'|'hasfill'|'width'|'height'|'logwidth'|'logheight'
+
+ unary_function = 'abs'|'sqrt'|'sin'|'cos'|'tan'|'atan'
+ binary_function = 'min'|'max'|'atan2'
+ ternary_function = 'if'
+
+ function_reference = '?' 'a-z,A-Z,0-9' ' '
+ modifier_reference = '$' '0-9' ' '
+
+ basic_expression =
+ number |
+ identifier |
+ function_reference |
+ unary_function '(' additive_expression ')' |
+ binary_function '(' additive_expression ',' additive_expression ')' |
+ ternary_function '(' additive_expression ',' additive_expression ',
+ ' additive_expression ')' | '(' additive_expression ')'
+
+ unary_expression = '-' basic_expression
+
+ multiplicative_expression =
+ basic_expression |
+ multiplicative_expression '*' basic_expression |
+ multiplicative_expression '/' basic_expression
+
+ additive_expression =
+ multiplicative_expression |
+ additive_expression '+' multiplicative_expression |
+ additive_expression '-' multiplicative_expression
+
+ </code>
+
+ @param rFunction
+ The string to parse
+
+ @param rCustoShape
+ The CustomShape is required for calculation of dynamic values such
+ "hasstroke", function references and or modifier references ...
+
+ @throws ParseError if an invalid expression is given.
+
+ @return the generated function object.
+ */
+
+ SVX_DLLPUBLIC static ExpressionNodeSharedPtr parseFunction( const ::rtl::OUString& rFunction, const EnhancedCustomShape2d& rCustoShape );
+
+private:
+ // disabled constructor/destructor, since this is
+ // supposed to be a singleton
+ FunctionParser();
+
+ // default: disabled copy/assignment
+ FunctionParser(const FunctionParser&);
+ FunctionParser& operator=( const FunctionParser& );
+};
+
+}
+
+#endif /* _ENHANCEDCUSTOMSHAPEFUNCTIONPARSER_HXX */
diff --git a/svx/inc/svx/IAccessibleParent.hxx b/svx/inc/svx/IAccessibleParent.hxx
new file mode 100644
index 000000000000..be97a49e982b
--- /dev/null
+++ b/svx/inc/svx/IAccessibleParent.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_IACCESSIBLE_PARENT_HXX
+#define _SVX_ACCESSIBILITY_IACCESSIBLE_PARENT_HXX
+
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <sal/types.h>
+
+namespace accessibility {
+
+class AccessibleShape;
+class AccessibleShapeTreeInfo;
+
+/** This interface contains methods missing from the
+ <type>XAccessibleContext</type> interface that allow the modification of
+ parent/child relationship.
+*/
+class IAccessibleParent
+{
+public:
+ /** Allow for a virtual destructor.
+ */
+ virtual ~IAccessibleParent (void){};
+
+ /** A call to this method requests the implementor to replace one child
+ with another and send the appropriate notifications. That are two
+ child events: One notifying the removal of the current child and one
+ about the existence of the new child. The index of the new child is
+ implementation dependent, i.e. it is not garanteed that the
+ replacement has the same index as the current child has.
+
+ <p>A default implementation can just use the ShapeTypeHandler::CreateAccessibleObject
+ to let a factory create the new instance with the parameters given, and then
+ place the new shape into the own structures.</p>
+
+ @param pCurrentChild
+ This child is about to be replaced.
+
+ @param _rxShape
+ The UNO shape which the old and new child represent
+
+ @param _nIndex
+ The IndexInParent of the old child. Note that the index in
+ parent of the replacement is not necessarily the same as
+ that of the current child.
+
+ @param _rShapeTreeInfo
+ The TreeInfo for the old child.
+
+ @return
+ If the replacement has taken place successfully <TRUE/> is
+ returned. If the replacement can not be carried out or an error
+ occurs that does not result in an exception then <FALSE/> is
+ returned.
+
+ @raises RuntimeException
+ in case something went heavily wrong
+ */
+ virtual sal_Bool ReplaceChild (
+ AccessibleShape* pCurrentChild,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& _rxShape,
+ const long _nIndex,
+ const AccessibleShapeTreeInfo& _rShapeTreeInfo
+ ) throw (::com::sun::star::uno::RuntimeException) = 0;
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/IAccessibleViewForwarder.hxx b/svx/inc/svx/IAccessibleViewForwarder.hxx
new file mode 100644
index 000000000000..e9d099edf4a9
--- /dev/null
+++ b/svx/inc/svx/IAccessibleViewForwarder.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_IACCESSIBLE_VIEW_FORWARDER_HXX
+#define _SVX_ACCESSIBILITY_IACCESSIBLE_VIEW_FORWARDER_HXX
+
+#include <sal/types.h>
+#include <tools/gen.hxx>
+
+
+namespace accessibility {
+
+
+
+/** <p>This interface provides the means to transform between internal
+ coordinates in 100th of mm and screen coordinates without giving direct
+ access to the underlying view. Each view forwarder represents a
+ specific real or virtual window. A call to
+ <method>GetVisibleArea</method> returns the visible rectangle that
+ corresponds to this window.</p>
+
+ <p>This interface is similar to the <type>SvxViewForwarder</type> but
+ differs in two important points: Firstly the <member>GetVisArea</member>
+ method returns a rectangle in internal coordinates and secondly the
+ transformation methods do not require explicit mapmodes. These have to
+ be provided implicitely by the classes that implement this
+ interface. A third, less important, difference are the additional
+ transfomation methods for sizes. The reasons for their existince are
+ convenience and improved performance.</p>
+
+ @attention
+ Note, that modifications of the underlying view that lead to
+ different transformations between internal and screen coordinates or
+ change the validity of the forwarder have to be signaled seperately.
+*/
+class IAccessibleViewForwarder
+{
+public:
+ virtual ~IAccessibleViewForwarder (void){};
+
+ /** This method informs you about the state of the forwarder. Do not
+ use it when the returned value is <false/>.
+
+ @return
+ Return <true/> if the view forwarder is valid and <false/> else.
+ */
+ virtual sal_Bool IsValid (void) const = 0;
+
+ /** Returns the area of the underlying document that is visible in the
+ * corresponding window.
+
+ @return
+ The rectangle of the visible part of the document. The values
+ are, contrary to the base class, in internal coordinates of
+ 100th of mm.
+ */
+ virtual Rectangle GetVisibleArea() const = 0;
+
+ /** Transform the specified point from internal coordinates in 100th of
+ mm to an absolute screen position.
+
+ @param rPoint
+ Point in internal coordinates (100th of mm).
+
+ @return
+ The same point but in screen coordinates relative to the upper
+ left corner of the (current) screen.
+ */
+ virtual Point LogicToPixel (const Point& rPoint) const = 0;
+
+ /** Transform the specified size from internal coordinates in 100th of
+ mm to a screen oriented pixel size.
+
+ @param rSize
+ Size in internal coordinates (100th of mm).
+
+ @return
+ The same size but in screen coordinates.
+ */
+ virtual Size LogicToPixel (const Size& rSize) const = 0;
+
+ /** Transform the specified point from absolute screen coordinates to
+ internal coordinates (100th of mm).
+
+ @param rPoint
+ Point in screen coordinates relative to the upper left corner of
+ the (current) screen.
+
+ @return
+ The same point but in internal coordinates (100th of mm).
+ */
+ virtual Point PixelToLogic (const Point& rPoint) const = 0;
+
+ /** Transform the specified size from screen coordinates to internal
+ coordinates (100th of mm).
+
+ @param rSize
+ Size in screen coordinates.
+
+ @return
+ The same size but in internal coordinates (100th of mm).
+ */
+ virtual Size PixelToLogic (const Size& rSize) const = 0;
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/IAccessibleViewForwarderListener.hxx b/svx/inc/svx/IAccessibleViewForwarderListener.hxx
new file mode 100644
index 000000000000..6c876a64bc70
--- /dev/null
+++ b/svx/inc/svx/IAccessibleViewForwarderListener.hxx
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_IACCESSIBLE_VIEW_FORWARDER_LISTENER_HXX
+#define _SVX_ACCESSIBILITY_IACCESSIBLE_VIEW_FORWARDER_LISTENER_HXX
+
+#include <sal/types.h>
+#include <tools/gen.hxx>
+
+
+namespace accessibility {
+
+class IAccessibleViewForwarder;
+
+/** <p>The purpose of this interface is to notify a user of an
+ IAccessibleViewForwarder when that view forwarder changes its
+ properties. Such a change may be one of the following:
+ <ul>
+ <li>Change of the coordinate transformation.</li>
+ <li>Change of the visible area (which in turn results in a change of the
+ coordinate transformation.</li>
+ <li>Change of the validity state of the view forwarder.</li>
+*/
+class IAccessibleViewForwarderListener
+{
+public:
+ /** Enumeration of the different change types.
+ */
+ enum ChangeType {TRANSFORMATION, VISIBLE_AREA, STATE};
+
+ /** This method is called to indicate a change of the specified view
+ forwarder.
+ @param aChangeType
+ The type of the change. TRANSFORMATION indicates a change of
+ the coordinate transformation with a constant visible area. If
+ the visible area changes, just use VISIBLE_AREA. This changes
+ the transformation implicitly. The value STATE indicates a
+ change of the validity state. Check the IsValid method of the
+ view forwarder before doing further calls.
+ @param pViewForwarder
+ The modified view forwarder. It is specified just in case that
+ there is more than one view forwarder in use at the same time.
+ */
+ virtual void ViewForwarderChanged (ChangeType aChangeType,
+ const IAccessibleViewForwarder* pViewForwarder) = 0;
+};
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/ShapeTypeHandler.hxx b/svx/inc/svx/ShapeTypeHandler.hxx
new file mode 100755
index 000000000000..1b8a7b6947c6
--- /dev/null
+++ b/svx/inc/svx/ShapeTypeHandler.hxx
@@ -0,0 +1,237 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_SHAPE_TYPE_HANDLER_HXX
+#define _SVX_ACCESSIBILITY_SHAPE_TYPE_HANDLER_HXX
+
+#include <svx/AccessibleShapeTreeInfo.hxx>
+#include <svx/AccessibleShapeInfo.hxx>
+#include <svx/AccessibleShape.hxx>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <comphelper/stl_types.hxx>
+#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include "svx/svxdllapi.h"
+
+#include <rtl/ustring.hxx>
+#include <vector>
+#include <hash_map>
+
+namespace accessibility {
+
+/** Use an integer to represent shape type ids. A ShapeTypeId is unique
+ inside one project but is not over the project boundaries.
+*/
+typedef int ShapeTypeId;
+
+/** Define the function type for creating accessible objects for given
+ service names.
+*/
+typedef AccessibleShape* (*tCreateFunction)
+ (const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo,
+ ShapeTypeId nId);
+
+/** Each shape type is described by listing its id, its service name and a
+ function which creates a new accessible object that can represent that
+ service. The id has to be unique with respect to the create function.
+*/
+struct ShapeTypeDescriptor
+{
+ ShapeTypeId mnShapeTypeId;
+ rtl::OUString msServiceName;
+ tCreateFunction maCreateFunction;
+ ShapeTypeDescriptor (
+ ShapeTypeId nId, const rtl::OUString& sName, tCreateFunction aFunction)
+ : mnShapeTypeId (nId),
+ msServiceName (sName),
+ maCreateFunction (aFunction)
+ {}
+ ShapeTypeDescriptor (void)
+ : mnShapeTypeId (-1),
+ msServiceName (),
+ maCreateFunction (NULL)
+ {}
+};
+
+/** @descr
+ This class is a singleton that has the purpose to transform between
+ service names of shapes and associated enum values and to create new
+ accessible objects for given shapes.
+*/
+class SVX_DLLPUBLIC ShapeTypeHandler
+{
+public:
+ enum { UNKNOWN_SHAPE_TYPE = 0 };
+
+ /** This function returns a reference to the only instance of this class.
+ Use this instance to retrieve a shape's type and service name.
+ @return
+ Returns a reference to a <type>ShapeTypeHandler</type> object.
+ */
+ static ShapeTypeHandler& Instance (void);
+
+ /** Determines the type id of a shape with the given service name.
+ @param aServiceName
+ Service name of the shape for which to return the type id.
+ @return
+ Returns the type id of the shape with the given service name or
+ -1 when the service name is not known.
+ */
+ ShapeTypeId GetTypeId (const ::rtl::OUString& aServiceName) const;
+
+ /** Determines the type id of the specified shape.
+ @param xShape
+ Reference to the shape for which to return the type id.
+ @return
+ Returns the type id of the specified shape or
+ -1 when the given reference is either not
+ set or the referenced object does not support the
+ <type>XShapeDescriptor</type> interface.
+ */
+ ShapeTypeId GetTypeId (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape>& rxShape) const;
+
+ /** Return the service name of a shape with the specified type.
+ @param aTypeId
+ Id of the shape type for which to retrieve the service name.
+ An unknown shape id results in an empty string.
+ @return
+ The returned string contains the service name, with which a
+ shape of the given type can be created.
+ */
+ const ::rtl::OUString& GetServiceName (ShapeTypeId aTypeId) const;
+
+ /** Create a new accessible object for the given shape.
+ @param rShapeInfo
+ Bundle of information passed to the new accessible shape.
+ @param rShapeTreeInfo
+ Bundle of information passed down the shape tree.
+ @return
+ Pointer to the implementation object that implements the
+ <code>XAccessible</code> interface. This pointer may be NULL
+ if the specified shape is of unknown type.
+ */
+ AccessibleShape*
+ CreateAccessibleObject (
+ const AccessibleShapeInfo& rShapeInfo,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo) const;
+
+ /** Compatibility function.
+ */
+ AccessibleShape*
+ CreateAccessibleObject (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape>& rxShape,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>& rxParent,
+ const AccessibleShapeTreeInfo& rShapeTreeInfo) const
+ {
+ AccessibleShapeInfo aShapeInfo(rxShape, rxParent);
+ return CreateAccessibleObject (aShapeInfo, rShapeTreeInfo);
+ }
+
+ /** Add new shape types to the internal tables. Each new shape type is
+ described by one shape type descriptor. See
+ <type>ShapeTypeDescriptor</type> for more details.
+
+ @param nDescriptorCount
+ Number of new shape types.
+ @param aDescriptorList
+ Array of new shape type descriptors.
+ @return
+ The returned flag indicates whether the specified shape
+ descriptors have been successfully added.
+ */
+ bool AddShapeTypeList (int nDescriptorCount,
+ ShapeTypeDescriptor aDescriptorList[]);
+
+ /// get the accessible base name for an object
+ static ::rtl::OUString CreateAccessibleBaseName (
+ const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& rxShape)
+ throw (::com::sun::star::uno::RuntimeException);
+
+protected:
+ // Declare default constructor, copy constructor, destructor, and
+ // assignment operation protected so that no one accidentally creates a
+ // second instance of this singleton class or deletes it.
+ ShapeTypeHandler (void);
+ ShapeTypeHandler (const ShapeTypeHandler& aHandler); // never implemented, this is a singleton class
+ ShapeTypeHandler& operator= (const ShapeTypeHandler& aHandler); // never implemented, this is a singleton class
+
+ /** This destructor is never called at the moment. But because this
+ class is a singleton this is not a problem.
+ */
+ virtual ~ShapeTypeHandler (void);
+
+private:
+ /// Pointer to the only instance of this class.
+ static ShapeTypeHandler* instance;
+
+ /** List of shape type descriptors. This list is normally build up in
+ several steps when libraries that implement shapes are loaded and
+ call the addShapeTypeList method. After that no modifications of
+ the list take place.
+ */
+ ::std::vector<ShapeTypeDescriptor> maShapeTypeDescriptorList;
+
+ /** This hash map allows the fast look up of a type descriptor for a
+ given service name.
+ */
+ typedef ::std::hash_map<
+ ::rtl::OUString,ShapeTypeId,
+ ::rtl::OUStringHash,
+ // ::comphelper::UStringHash,
+ ::comphelper::UStringEqual> tServiceNameToSlotId;
+ mutable tServiceNameToSlotId maServiceNameToSlotId;
+
+ /** Determine the slot id of the specified shape type. With this id
+ internal methods can access the associated type descriptor.
+ @param aServiceName
+ Service name of the shape for which to return the slot id.
+ @return
+ Returns the slot id of the shape with the given service name or
+ 0 when the service name is not known.
+ */
+ SVX_DLLPRIVATE long GetSlotId (const ::rtl::OUString& aServiceName) const;
+
+ /** Determine the slot id of the specified shape type. With this id
+ internal methods can access the associated type descriptor.
+ @param rxShape
+ Shape for which to return the slot id.
+ @return
+ Returns the slot id of the shape with the given service name or
+ 0 when the service name is not known.
+ */
+ SVX_DLLPRIVATE long GetSlotId (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XShape>& rxShape) const;
+};
+
+} // end of namespace accessible
+
+#endif
diff --git a/svx/inc/svx/SmartTagCtl.hxx b/svx/inc/svx/SmartTagCtl.hxx
new file mode 100644
index 000000000000..9498f03d6978
--- /dev/null
+++ b/svx/inc/svx/SmartTagCtl.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_SMARTTAGSCONTROL_HXX
+#define _SVX_SMARTTAGSCONTROL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <tools/link.hxx>
+#include <sfx2/mnuitem.hxx>
+#include "svx/svxdllapi.h"
+#include <com/sun/star/uno/Reference.hxx>
+
+#include <vector>
+
+class SfxBindings;
+class SvxSmartTagItem;
+class PopupMenu;
+
+namespace com { namespace sun { namespace star { namespace smarttags {
+ class XSmartTagAction;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace container {
+ class XStringKeyMap;
+} } } }
+
+// class SvxFontMenuControl ----------------------------------------------
+
+class SVX_DLLPUBLIC SvxSmartTagsControl : public SfxMenuControl
+{
+private:
+ PopupMenu* mpMenu;
+ Menu& mrParent;
+ const SvxSmartTagItem* mpSmartTagItem;
+
+ struct InvokeAction
+ {
+ com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > mxAction;
+ com::sun::star::uno::Reference< com::sun::star::container::XStringKeyMap > mxSmartTagProperties;
+ sal_uInt32 mnActionID;
+ InvokeAction( com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > xAction,
+ com::sun::star::uno::Reference< com::sun::star::container::XStringKeyMap > xSmartTagProperties,
+ sal_uInt32 nActionID ) : mxAction( xAction ), mxSmartTagProperties( xSmartTagProperties ), mnActionID( nActionID ) {}
+ };
+
+ std::vector< InvokeAction > maInvokeActions;
+
+ void FillMenu();
+ DECL_LINK( MenuSelect, PopupMenu * );
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+public:
+ SvxSmartTagsControl( USHORT nId, Menu&, SfxBindings& );
+ ~SvxSmartTagsControl();
+
+ virtual PopupMenu* GetPopup() const;
+ SFX_DECL_MENU_CONTROL();
+};
+
+#endif
diff --git a/svx/inc/svx/SmartTagItem.hxx b/svx/inc/svx/SmartTagItem.hxx
new file mode 100644
index 000000000000..ed69a25787dd
--- /dev/null
+++ b/svx/inc/svx/SmartTagItem.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_SMARTTAGITEM_HXX
+#define _SVX_SMARTTAGITEM_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svl/poolitem.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/smarttags/XSmartTagAction.hpp>
+#include "svx/svxdllapi.h"
+
+namespace com { namespace sun { namespace star { namespace container {
+ class XStringKeyMap;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace text {
+ class XTextRange;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace frame {
+ class XController;
+} } } }
+
+// class SvxSmartTagItem -----------------------------------------------------
+
+class SVX_DLLPUBLIC SvxSmartTagItem : public SfxPoolItem
+{
+ const com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > > > maActionComponentsSequence;
+ const com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< sal_Int32 > > maActionIndicesSequence;
+ const com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::container::XStringKeyMap > > maStringKeyMaps;
+ const com::sun::star::uno::Reference<com::sun::star::text::XTextRange> mxRange;
+ const com::sun::star::uno::Reference<com::sun::star::frame::XController> mxController;
+ const com::sun::star::lang::Locale maLocale;
+ const rtl::OUString maApplicationName;
+ const rtl::OUString maRangeText;
+
+public:
+ TYPEINFO();
+
+ SvxSmartTagItem( const USHORT nId,
+ const com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > > >& rActionComponentsSequence,
+ const com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< sal_Int32 > >& rActionIndicesSequence,
+ const com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::container::XStringKeyMap > >& rStringKeyMaps,
+ const com::sun::star::uno::Reference<com::sun::star::text::XTextRange> rRange,
+ const com::sun::star::uno::Reference<com::sun::star::frame::XController> rController,
+ const com::sun::star::lang::Locale rLocale,
+ const rtl::OUString& rApplicationName,
+ const rtl::OUString& rRangeText );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const; // leer
+ virtual SvStream& Store(SvStream &, USHORT nItemVersion) const; // leer
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const; // leer
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ); // leer
+
+ const com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > > >& GetActionComponentsSequence() const { return maActionComponentsSequence; }
+ const com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< sal_Int32 > >& GetActionIndicesSequence() const { return maActionIndicesSequence; }
+ const com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::container::XStringKeyMap > >& GetStringKeyMaps() const { return maStringKeyMaps; }
+ const com::sun::star::uno::Reference<com::sun::star::text::XTextRange>& GetTextRange() const { return mxRange; }
+ const com::sun::star::uno::Reference<com::sun::star::frame::XController>& GetController() const { return mxController; }
+ const com::sun::star::lang::Locale& GetLocale() const { return maLocale; }
+ const rtl::OUString GetApplicationName() const { return maApplicationName; }
+ const rtl::OUString GetRangeText() const { return maRangeText; }
+};
+
+#endif // #ifndef _SVX_SMARTTAGITEM_HXX
+
+
diff --git a/svx/inc/svx/SmartTagMgr.hxx b/svx/inc/svx/SmartTagMgr.hxx
new file mode 100644
index 000000000000..3dc7233bbc4e
--- /dev/null
+++ b/svx/inc/svx/SmartTagMgr.hxx
@@ -0,0 +1,234 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SMARTTAGMGR_HXX
+#define _SMARTTAGMGR_HXX
+
+#include <cppuhelper/implbase2.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <com/sun/star/util/XChangesListener.hpp>
+#include "svx/svxdllapi.h"
+
+#include <vector>
+#include <map>
+#include <set>
+
+namespace com { namespace sun { namespace star { namespace uno {
+ class XComponentContext;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace smarttags {
+ class XSmartTagRecognizer;
+ class XSmartTagAction;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace text {
+ class XTextMarkup;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace i18n {
+ class XBreakIterator;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace lang {
+ struct Locale;
+ struct EventObject;
+ struct ChangesEvent;
+ class XMultiServiceFactory;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace beans {
+ class XPropertySet;
+} } } }
+
+namespace com { namespace sun { namespace star { namespace frame {
+ class XController;
+} } } }
+
+/** A reference to a smart tag action
+
+ An action service can support various actions. Therefore an ActionReference
+ consists of a reference to the service and and index.
+ */
+struct ActionReference
+{
+ com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > mxSmartTagAction;
+ sal_Int32 mnSmartTagIndex;
+ ActionReference( com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > xSmartTagAction, sal_Int32 nSmartTagIndex )
+ : mxSmartTagAction( xSmartTagAction), mnSmartTagIndex( nSmartTagIndex ) {}
+};
+
+/** The smart tag manager maintains all installed action and recognizer services
+
+ This class organizes the available smarttag libraries and provides access functions
+ to these libraries. The smart tag manager is a singleton.
+*/
+class SVX_DLLPUBLIC SmartTagMgr : public cppu::WeakImplHelper2< ::com::sun::star::util::XModifyListener,
+ ::com::sun::star::util::XChangesListener >
+{
+private:
+
+ const rtl::OUString maApplicationName;
+ std::vector< com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagRecognizer > > maRecognizerList;
+ std::vector< com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > > maActionList;
+ std::set< rtl::OUString > maDisabledSmartTagTypes;
+ std::multimap < rtl::OUString, ActionReference > maSmartTagMap;
+ mutable com::sun::star::uno::Reference< com::sun::star::i18n::XBreakIterator > mxBreakIter;
+ com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext> mxContext;
+ com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxConfigurationSettings;
+ bool mbLabelTextWithSmartTags;
+
+ /** Checks for installed smart tag recognizers/actions and stores them in
+ maRecognizerList and maActionList.
+ */
+ void LoadLibraries();
+
+ /** Prepare configuration access.
+ */
+ void PrepareConfiguration( const rtl::OUString& rConfigurationGroupName );
+
+ /** Reads the configuration data.
+ */
+ void ReadConfiguration( bool bExcludedTypes, bool bRecognize );
+
+ /** Registeres the smart tag manager as listener at the package manager.
+ */
+ void RegisterListener();
+
+ /** Sets up a map that maps smart tag type names to actions references.
+ */
+ void AssociateActionsWithRecognizers();
+
+ void CreateBreakIterator() const;
+
+public:
+
+ SmartTagMgr( const rtl::OUString& rApplicationName );
+ virtual ~SmartTagMgr();
+
+ /** Triggeres configuration reading, library loading and listener registration
+ NOTE: MUST BE CALLED AFTER CONSTRUCTION!
+ */
+ void Init( const rtl::OUString& rConfigurationGroupName );
+
+ /** Dispatches the recognize call to all installed smart tag recognizers
+
+ @param rText
+ The string to be scanned by the recognizers.
+
+ @param xMarkup
+ The object allows the recognizers to store any found smart tags.
+
+ @param xController
+ The current controller of the document.
+
+ @param rLocale
+ The locale of rText.
+
+ @param nStart
+ The start offset of the text to be scanned in rText.
+
+ @param nLen
+ The length of the text to be scanned.
+
+ */
+ void Recognize( const rtl::OUString& rText,
+ const com::sun::star::uno::Reference< com::sun::star::text::XTextMarkup > xMarkup,
+ const com::sun::star::uno::Reference< com::sun::star::frame::XController > xController,
+ const com::sun::star::lang::Locale& rLocale,
+ sal_uInt32 nStart, sal_uInt32 nLen ) const;
+
+ /** Returns all action references associated with a given list of smart tag types
+
+ @param rSmartTagTypes
+ The list of types
+
+ @param rActionComponentsSequence
+ Output parameter
+
+ @param rActionIndicesSequence
+ Output parameter
+ */
+ void GetActionSequences( com::sun::star::uno::Sequence < rtl::OUString >& rSmartTagTypes,
+ com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagAction > > >& rActionComponentsSequence,
+ com::sun::star::uno::Sequence < com::sun::star::uno::Sequence< sal_Int32 > >& rActionIndicesSequence ) const;
+
+ /** Returns the caption for a smart tag type.
+
+ @param rSmartTagType
+ The given smart tag type.
+
+ @param rLocale
+ The locale.
+ */
+ rtl::OUString GetSmartTagCaption( const rtl::OUString& rSmartTagType, const com::sun::star::lang::Locale& rLocale ) const;
+
+ /** Returns true if the given smart tag type is enabled.
+ */
+ bool IsSmartTagTypeEnabled( const rtl::OUString& rSmartTagType ) const;
+
+ /** Enable or disable smart tags.
+ */
+ bool IsLabelTextWithSmartTags() const { return mbLabelTextWithSmartTags; }
+
+ /** Returns the number of registered recognizers.
+ */
+ sal_uInt32 NumberOfRecognizers() const { return maRecognizerList.size(); }
+
+ /** Returns a recognizer.
+ */
+ com::sun::star::uno::Reference< com::sun::star::smarttags::XSmartTagRecognizer >
+ GetRecognizer( sal_uInt32 i ) const { return maRecognizerList[i]; }
+
+ /** Is smart tag recognization active?
+ */
+ bool IsSmartTagsEnabled() const { return 0 != NumberOfRecognizers() &&
+ IsLabelTextWithSmartTags(); }
+
+ /** Writes configuration settings.
+ */
+ void WriteConfiguration( const bool* bLabelTextWithSmartTags,
+ const std::vector< rtl::OUString >* pDisabledTypes ) const;
+
+ /** Returns the name of the application this instance has been created by.
+ */
+ const rtl::OUString GetApplicationName() const { return maApplicationName; }
+
+ // ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ // ::com::sun::star::util::XModifyListener
+ virtual void SAL_CALL modified( const ::com::sun::star::lang::EventObject& aEvent ) throw(::com::sun::star::uno::RuntimeException);
+
+ // ::com::sun::star::util::XChangesListener
+ virtual void SAL_CALL changesOccurred( const ::com::sun::star::util::ChangesEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+#endif
diff --git a/svx/inc/svx/SpellDialogChildWindow.hxx b/svx/inc/svx/SpellDialogChildWindow.hxx
new file mode 100644
index 000000000000..3702b643e17e
--- /dev/null
+++ b/svx/inc/svx/SpellDialogChildWindow.hxx
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_SPELL_DIALOG_CHILD_WINDOW_HXX
+#define SVX_SPELL_DIALOG_CHILD_WINDOW_HXX
+
+#include <sfx2/childwin.hxx>
+#include <editeng/SpellPortions.hxx>
+#include "svx/svxdllapi.h"
+#include <vcl/image.hxx>
+
+class AbstractSpellDialog;
+
+namespace svx {
+
+/** The child window wrapper of the actual spellin dialog. To use the
+ spelling dialog in an application you have to do the ususal things:
+ <ol>
+ <li>Call this class' RegisterChildWindow() method with the module
+ as second argument that you want the dialog included in.</li>
+ <li>In the SFX_IMPL_INTERFACE implementation of the view shell
+ that wants to use the dialog call SFX_CHILDWINDOW_REGISTRATION()
+ with the id returned by this class' GetChildWindowId()
+ method.</li>
+ <li>Include the item associated with this child window to the SDI
+ description of the view shell.</li>
+ </ol>
+*/
+class SVX_DLLPUBLIC SpellDialogChildWindow
+ : public SfxChildWindow
+{
+ friend class SpellDialog;
+ AbstractSpellDialog* m_pAbstractSpellDialog;
+public:
+ SpellDialogChildWindow (
+ Window*pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo);
+ virtual ~SpellDialogChildWindow ();
+
+protected:
+ /** This abstract method has to be defined by a derived class. It
+ returns the next wrong sentence.
+ @return
+ returns an empty vector if no error could be found
+ */
+ virtual SpellPortions GetNextWrongSentence (bool bRecheck) = 0;
+
+ /** This abstract method applies the changes made in the spelling dialog
+ to the document.
+ The dialog always updates its settings when it gets the focus. The document
+ can rely on the fact that the methods ApplyChangedSentence() is called for the
+ position that the last GetNextWrongSentence() returned.
+ If 'bRecheck' is set to true then the same sentence should be rechecked once from
+ the start. This should be used too find errors that the user has introduced by
+ manual changes in the edit field, and in order to not miss the still following errors
+ in that sentence.
+ */
+ virtual void ApplyChangedSentence(const SpellPortions& rChanged, bool bRecheck ) = 0;
+ /** This methods determines whether the application supports AutoCorrection
+ */
+ virtual bool HasAutoCorrection();
+ /** This method adds a word pair to the AutoCorrection - if available
+ */
+ virtual void AddAutoCorrection(const String& rOld, const String& rNew, LanguageType eLanguage);
+ /** Return the sfx bindings for this child window. They are
+ retrieved from the dialog so they do not have to be stored in
+ this class as well. The bindings may be necessary to be used
+ by the abstract methods.
+ */
+ /** This method determines if grammar checking is supported
+ */
+ virtual bool HasGrammarChecking();
+ /** determines if grammar checking is switched on
+ */
+ virtual bool IsGrammarChecking();
+ /** switches grammar checking on/off
+ */
+ virtual void SetGrammarChecking(bool bOn);
+
+ SfxBindings& GetBindings (void) const;
+ /** Set the spell dialog into the 'resume' state. This method should be called
+ to notify the SpellDialog about changes in the document that invalidate the
+ current state which results in disabling most of the dialog controls and presenting
+ a "Resume" button that initiates a reinitialization.
+ */
+ void InvalidateSpellDialog();
+ /** Notifies the ChildWindow about the get focus event. The ChildWindow should no check if
+ the spelling dialog should be set to the 'Resume' state by calling InvalidateSpellDialog()
+ */
+ virtual void GetFocus() = 0;
+ /** Notifies the ChildWindow about the lose focus event. The ChildWindow should use it to save
+ the current selection/state.
+ */
+ virtual void LoseFocus() = 0;
+};
+
+} // end of namespace ::svx
+
+#endif
diff --git a/svx/inc/svx/SvxShapeTypes.hxx b/svx/inc/svx/SvxShapeTypes.hxx
new file mode 100644
index 000000000000..b4c76f19354b
--- /dev/null
+++ b/svx/inc/svx/SvxShapeTypes.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_ACCESSIBILITY_SVX_SHAPE_TYPES_HXX
+#define _SVX_ACCESSIBILITY_SVX_SHAPE_TYPES_HXX
+
+#ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_SHAPE_HXX
+#include <svx/ShapeTypeHandler.hxx>
+#endif
+#include <com/sun/star/accessibility/XAccessible.hpp>
+
+namespace accessibility {
+
+/** Register the SVX draw shape types with the ShapeTypeHandler singleton.
+ This method is usually called from the shape type handler constructor.
+*/
+void RegisterDrawShapeTypes (void);
+
+/** Enum describing all shape types known in the SVX project.
+*/
+enum SvxShapeTypes
+{
+ DRAWING_RECTANGLE = 1,
+ DRAWING_ELLIPSE,
+ DRAWING_CONTROL,
+ DRAWING_CONNECTOR,
+ DRAWING_MEASURE,
+ DRAWING_LINE,
+ DRAWING_POLY_POLYGON,
+ DRAWING_POLY_LINE,
+ DRAWING_OPEN_BEZIER,
+ DRAWING_CLOSED_BEZIER,
+ DRAWING_OPEN_FREEHAND,
+ DRAWING_CLOSED_FREEHAND,
+ DRAWING_POLY_POLYGON_PATH,
+ DRAWING_POLY_LINE_PATH,
+ DRAWING_GRAPHIC_OBJECT,
+ DRAWING_GROUP,
+ DRAWING_TEXT,
+ DRAWING_OLE,
+ DRAWING_PAGE,
+ DRAWING_CAPTION,
+ DRAWING_FRAME,
+ DRAWING_PLUGIN,
+ DRAWING_APPLET,
+ DRAWING_3D_SCENE,
+ DRAWING_3D_CUBE,
+ DRAWING_3D_SPHERE,
+ DRAWING_3D_LATHE,
+ DRAWING_3D_EXTRUDE,
+ DRAWING_CUSTOM,
+ DRAWING_TABLE, /* = 30 */
+ DRAWING_MEDIA, /* = 31 */
+ DRAWING_END = DRAWING_MEDIA
+};
+
+/** List of shape type descriptors corresponding to the
+ <type>SvxShapeTypes</type> enum.
+*/
+extern ShapeTypeDescriptor aSvxShapeTypeList[];
+
+} // end of namespace accessibility
+
+#endif
diff --git a/svx/inc/svx/algitem.hxx b/svx/inc/svx/algitem.hxx
new file mode 100644
index 000000000000..d12e646da9b2
--- /dev/null
+++ b/svx/inc/svx/algitem.hxx
@@ -0,0 +1,202 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_ALGITEM_HXX
+#define _SVX_ALGITEM_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svx/svxids.hrc>
+#include <svl/poolitem.hxx>
+#include <svl/eitem.hxx>
+#include <editeng/svxenum.hxx>
+#include "svx/svxdllapi.h"
+
+class SvStream;
+
+//------------------------------------------------------------------------
+
+
+
+class SVX_DLLPUBLIC SvxHorJustifyItem: public SfxEnumItem
+{
+public:
+ TYPEINFO();
+
+ SvxHorJustifyItem( const USHORT nId );
+
+ SvxHorJustifyItem(
+ const SvxCellHorJustify eJustify /*= SVX_HOR_JUSTIFY_STANDARD*/,
+ const USHORT nId );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual USHORT GetValueCount() const;
+ virtual String GetValueText( USHORT nVal ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+
+ inline SvxHorJustifyItem& operator=(const SvxHorJustifyItem& rHorJustify)
+ {
+ SetValue( rHorJustify.GetValue() );
+ return *this;
+ }
+};
+
+
+//------------------------------------------------------------------------
+
+
+class SVX_DLLPUBLIC SvxVerJustifyItem: public SfxEnumItem
+{
+public:
+ TYPEINFO();
+
+ SvxVerJustifyItem( const USHORT nId );
+
+ SvxVerJustifyItem(
+ const SvxCellVerJustify eJustify /*= SVX_VER_JUSTIFY_STANDARD*/,
+ const USHORT nId );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual USHORT GetValueCount() const;
+ virtual String GetValueText( USHORT nVal ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+
+ inline SvxVerJustifyItem& operator=(const SvxVerJustifyItem& rVerJustify)
+ {
+ SetValue( rVerJustify.GetValue() );
+ return *this;
+ }
+};
+
+
+//------------------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxOrientationItem: public SfxEnumItem
+{
+public:
+ TYPEINFO();
+
+ SvxOrientationItem(
+ const SvxCellOrientation eOrientation /*= SVX_ORIENTATION_STANDARD*/,
+ const USHORT nId );
+
+ SvxOrientationItem(
+ INT32 nRotation, BOOL bStacked,
+ const USHORT nId );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual USHORT GetValueCount() const;
+ virtual String GetValueText( USHORT nVal ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+
+ inline SvxOrientationItem& operator=(const SvxOrientationItem& rOrientation)
+ {
+ SetValue( rOrientation.GetValue() );
+ return *this;
+ }
+
+ /** Returns TRUE, if the item represents STACKED state. */
+ BOOL IsStacked() const;
+ /** Returns the rotation this item represents (returns nStdAngle for STANDARD and STACKED state). */
+ INT32 GetRotation( INT32 nStdAngle = 0 ) const;
+ /** Fills this item according to passed item values. */
+ void SetFromRotation( INT32 nRotation, BOOL bStacked );
+};
+
+//------------------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxMarginItem: public SfxPoolItem
+{
+ INT16 nLeftMargin;
+ INT16 nTopMargin;
+ INT16 nRightMargin;
+ INT16 nBottomMargin;
+public:
+ TYPEINFO();
+ SvxMarginItem( const USHORT nId );
+ SvxMarginItem( INT16 nLeft, INT16 nTop /*= 0*/,
+ INT16 nRight /*= 0*/, INT16 nBottom /*= 0*/,
+ const USHORT nId );
+ SvxMarginItem( const SvxMarginItem& );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream&, USHORT nItemVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ INT16 GetLeftMargin() const {return nLeftMargin; }
+ BOOL SetLeftMargin(INT16 nLeft);
+ INT16 GetTopMargin() const {return nTopMargin; }
+ BOOL SetTopMargin(INT16 nTop);
+ INT16 GetRightMargin() const {return nRightMargin; }
+ BOOL SetRightMargin(INT16 nRight);
+ INT16 GetBottomMargin() const {return nBottomMargin; }
+ BOOL SetBottomMargin(INT16 nBottom);
+
+ inline SvxMarginItem& operator=(const SvxMarginItem& rMargin)
+ {
+ nLeftMargin = rMargin.nLeftMargin;
+ nTopMargin = rMargin.nTopMargin;
+ nRightMargin = rMargin.nRightMargin;
+ nBottomMargin = rMargin.nBottomMargin;
+ return *this;
+ }
+};
+
+#endif
+
diff --git a/svx/inc/svx/bmpmask.hxx b/svx/inc/svx/bmpmask.hxx
new file mode 100644
index 000000000000..1387b17267c2
--- /dev/null
+++ b/svx/inc/svx/bmpmask.hxx
@@ -0,0 +1,200 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _BMPMASK_HXX_
+#define _BMPMASK_HXX_
+
+#include <sfx2/ctrlitem.hxx>
+#include <sfx2/dockwin.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/group.hxx>
+#include <vcl/graph.hxx>
+#include "svx/svxdllapi.h"
+
+#include <svx/dlgctrl.hxx>
+
+/*************************************************************************
+|*
+|* class SvxBmpMaskSelectItem
+|*
+\************************************************************************/
+class SvxBmpMask;
+
+class SvxBmpMaskSelectItem : public SfxControllerItem
+{
+private:
+ SvxBmpMask &rBmpMask;
+
+protected:
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+public:
+ SvxBmpMaskSelectItem( USHORT nId, SvxBmpMask& rMask,
+ SfxBindings& rBindings );
+};
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als 'Beh"alter' f"ur Float
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxBmpMaskChildWindow : public SfxChildWindow
+{
+ public:
+ SvxBmpMaskChildWindow( Window*,
+ USHORT, SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW(SvxBmpMaskChildWindow);
+};
+
+/*************************************************************************
+|*
+|* class SvxBmpMask
+|*
+\************************************************************************/
+
+class MaskData;
+class MaskSet;
+class ColorWindow;
+
+class SVX_DLLPUBLIC SvxBmpMask : public SfxDockingWindow
+{
+ friend class MaskData;
+ friend class MaskSet;
+
+ Window* pParentWin;
+ Size aLastSize;
+ ToolBox aTbxPipette;
+ ColorWindow* pCtlPipette;
+ PushButton aBtnExec;
+ FixedLine aGrpQ;
+
+ CheckBox aCbx1;
+ MaskSet* pQSet1;
+ MetricField aSp1;
+ ColorLB aLbColor1;
+
+ CheckBox aCbx2;
+ MaskSet* pQSet2;
+ MetricField aSp2;
+ ColorLB aLbColor2;
+
+ CheckBox aCbx3;
+ MaskSet* pQSet3;
+ MetricField aSp3;
+ ColorLB aLbColor3;
+
+ CheckBox aCbx4;
+ MaskSet* pQSet4;
+ MetricField aSp4;
+ ColorLB aLbColor4;
+
+ MaskData* pData;
+ CheckBox aCbxTrans;
+ ColorLB aLbColorTrans;
+ FixedText aFt1;
+ FixedText aFt2;
+ FixedText aFt3;
+ const XColorTable* pColTab;
+ Color aPipetteColor;
+ SvxBmpMaskSelectItem aSelItem;
+
+ Image maImgPipette;
+ Image maImgPipetteH;
+
+ virtual BOOL Close();
+
+#ifdef BMPMASK_PRIVATE
+
+ USHORT InitColorArrays( Color* pSrcCols, Color* pDstCols,
+ ULONG* pTols );
+
+ Bitmap ImpMask( const Bitmap& rBitmap );
+ BitmapEx ImpMask( const BitmapEx& rBitmapEx );
+ GDIMetaFile ImpMask( const GDIMetaFile& rMtf );
+ Animation ImpMask( const Animation& rAnimation );
+ BitmapEx ImpMaskTransparent( const BitmapEx& rBitmapEx,
+ const Color& rColor,
+ const long nTol );
+ BitmapEx ImpReplaceTransparency( const BitmapEx& rBmpEx,
+ const Color& rColor );
+ Animation ImpReplaceTransparency( const Animation& rAnim,
+ const Color& rColor );
+ GDIMetaFile ImpReplaceTransparency( const GDIMetaFile& rMtf,
+ const Color& rColor );
+
+#endif // BMPMASK_PRIVATE
+
+public:
+
+ SvxBmpMask( SfxBindings *pBindinx,
+ SfxChildWindow *pCW,
+ Window* pParent,
+ const ResId& rResId );
+ ~SvxBmpMask();
+
+ void SetColor( const Color& rColor );
+ void PipetteClicked();
+
+ BOOL NeedsColorTable() const;
+ void SetColorTable( const XColorTable* pColorTable );
+
+ void SetExecState( BOOL bEnable );
+
+ Graphic Mask( const Graphic& rGraphic );
+
+ BOOL IsEyedropping() const;
+
+ void onSelect( MaskSet* pSet );
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ void ApplyStyle();
+
+private:
+
+ /** Set names for accessible objects. This is necessary for objects
+ like the source color checkboxes which initially have no name and
+ for which the description would be read by AT.
+ */
+ SVX_DLLPRIVATE void SetAccessibleNames (void);
+};
+
+/*************************************************************************
+|*
+|* Defines
+|*
+\************************************************************************/
+
+#define SVXBMPMASK() ( (SvxBmpMask*) ( SfxViewFrame::Current()->GetChildWindow( \
+ SvxBmpMaskChildWindow::GetChildWindowId() )-> \
+ GetWindow() ) )
+
+#endif // _BMPMASK_HXX_
+
diff --git a/svx/inc/svx/camera3d.hxx b/svx/inc/svx/camera3d.hxx
new file mode 100644
index 000000000000..89c76c797622
--- /dev/null
+++ b/svx/inc/svx/camera3d.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _CAMERA3D_HXX
+#define _CAMERA3D_HXX
+
+#include <svx/viewpt3d.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Kamera-Ableitung
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC Camera3D : public Viewport3D
+{
+ protected:
+ basegfx::B3DPoint aResetPos;
+ basegfx::B3DPoint aResetLookAt;
+ double fResetFocalLength;
+ double fResetBankAngle;
+
+ basegfx::B3DPoint aPosition;
+ basegfx::B3DPoint aLookAt;
+ double fFocalLength;
+ double fBankAngle;
+
+ FASTBOOL bAutoAdjustProjection;
+
+ public:
+ Camera3D(const basegfx::B3DPoint& rPos, const basegfx::B3DPoint& rLookAt,
+ double fFocalLen = 35.0, double fBankAng = 0);
+ Camera3D();
+
+ // Anfangswerte wieder herstellen
+ void Reset();
+
+ void SetDefaults(const basegfx::B3DPoint& rPos, const basegfx::B3DPoint& rLookAt,
+ double fFocalLen = 35.0, double fBankAng = 0);
+
+ void SetViewWindow(double fX, double fY, double fW, double fH);
+
+ void SetPosition(const basegfx::B3DPoint& rNewPos);
+ const basegfx::B3DPoint& GetPosition() const { return aPosition; }
+ void SetLookAt(const basegfx::B3DPoint& rNewLookAt);
+ const basegfx::B3DPoint& GetLookAt() const { return aLookAt; }
+ void SetPosAndLookAt(const basegfx::B3DPoint& rNewPos, const basegfx::B3DPoint& rNewLookAt);
+
+ // Brennweite in mm
+ void SetFocalLength(double fLen);
+ void SetFocalLengthWithCorrect(double fLen);
+ double GetFocalLength() const { return fFocalLength; }
+
+ // Neigung links/rechts
+ void SetBankAngle(double fAngle);
+ double GetBankAngle() const { return fBankAngle; }
+
+ // Um die Kameraposition drehen, LookAt wird dabei veraendert
+ void Rotate(double fHAngle, double fVAngle);
+
+ // Um den Blickpunkt drehen, Position wird dabei veraendert
+ void RotateAroundLookAt(double fHAngle, double fVAngle);
+
+ void SetAutoAdjustProjection(FASTBOOL bAdjust = TRUE)
+ { bAutoAdjustProjection = bAdjust; }
+ FASTBOOL IsAutoAdjustProjection() const { return bAutoAdjustProjection; }
+};
+
+#endif // _CAMERA3D_HXX
diff --git a/svx/inc/svx/charmap.hxx b/svx/inc/svx/charmap.hxx
new file mode 100644
index 000000000000..5111462f6fc3
--- /dev/null
+++ b/svx/inc/svx/charmap.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_CHARMAP_HXX
+#define _SVX_CHARMAP_HXX
+
+// include ---------------------------------------------------------------
+
+#include <vcl/ctrl.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/scrbar.hxx>
+#include <map>
+#include <tools/shl.hxx> //add CHINA001
+#include <tools/debug.hxx> //add CHINA001
+#include "svx/svxdllapi.h"
+
+// define ----------------------------------------------------------------
+
+#define COLUMN_COUNT 16
+#define ROW_COUNT 8
+
+namespace svx
+{
+ struct SvxShowCharSetItem;
+ class SvxShowCharSetVirtualAcc;
+}
+
+// class SvxShowCharSet --------------------------------------------------
+
+class SVX_DLLPUBLIC SvxShowCharSet : public Control
+{
+public:
+ SvxShowCharSet( Window* pParent, const ResId& rResId );
+ ~SvxShowCharSet();
+
+ void SetFont( const Font& rFont );
+
+ void SelectCharacter( sal_uInt32 cNew, BOOL bFocus = FALSE );
+ sal_UCS4 GetSelectCharacter() const;
+
+ Link GetDoubleClickHdl() const { return aDoubleClkHdl; }
+ void SetDoubleClickHdl( const Link& rLink ) { aDoubleClkHdl = rLink; }
+ Link GetSelectHdl() const { return aSelectHdl; }
+ void SetSelectHdl( const Link& rHdl ) { aSelectHdl = rHdl; }
+ Link GetHighlightHdl() const { return aHighHdl; }
+ void SetHighlightHdl( const Link& rHdl ) { aHighHdl = rHdl; }
+ Link GetPreSelectHdl() const { return aHighHdl; }
+ void SetPreSelectHdl( const Link& rHdl ) { aPreSelectHdl = rHdl; }
+ static sal_uInt32& getSelectedChar();
+
+#ifdef _SVX_CHARMAP_CXX_
+ ::svx::SvxShowCharSetItem* ImplGetItem( int _nPos );
+ int FirstInView( void) const;
+ int LastInView( void) const;
+ int PixelToMapIndex( const Point&) const;
+ void SelectIndex( int index, BOOL bFocus = FALSE );
+ void DeSelect();
+ inline sal_Bool IsSelected(USHORT _nPos) const { return _nPos == nSelectedIndex; }
+ inline USHORT GetSelectIndexId() const { return sal::static_int_cast<USHORT>(nSelectedIndex); }
+ USHORT GetRowPos(USHORT _nPos) const;
+ USHORT GetColumnPos(USHORT _nPos) const;
+
+ void ImplFireAccessibleEvent( short nEventId,
+ const ::com::sun::star::uno::Any& rOldValue,
+ const ::com::sun::star::uno::Any& rNewValue );
+ ScrollBar* getScrollBar();
+ void ReleaseAccessible();
+ sal_Int32 getMaxCharCount() const;
+#endif // _SVX_CHARMAP_CXX_
+
+protected:
+ virtual void Paint( const Rectangle& );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+
+
+
+private:
+ typedef ::std::map<sal_Int32, ::svx::SvxShowCharSetItem*> ItemsMap;
+ ItemsMap m_aItems;
+ Link aDoubleClkHdl;
+ Link aSelectHdl;
+ Link aHighHdl;
+ Link aPreSelectHdl;
+ ::svx::SvxShowCharSetVirtualAcc* m_pAccessible;
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xAccessible;
+ long nX;
+ long nY;
+ BOOL bDrag;
+
+ sal_Int32 nSelectedIndex;
+
+ FontCharMap maFontCharMap;
+ ScrollBar aVscrollSB;
+ Size aOrigSize;
+ Point aOrigPos;
+
+private:
+ void DrawChars_Impl( int n1, int n2);
+ void InitSettings( BOOL bForeground, BOOL bBackground);
+ // abstraction layers are: Unicode<->MapIndex<->Pixel
+ Point MapIndexToPixel( int) const;
+ DECL_LINK( VscrollHdl, ScrollBar* );
+};
+
+#endif
+
diff --git a/svx/inc/svx/checklbx.hxx b/svx/inc/svx/checklbx.hxx
new file mode 100644
index 000000000000..b72b134e48d8
--- /dev/null
+++ b/svx/inc/svx/checklbx.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_CHECKLBX_HXX
+#define _SVX_CHECKLBX_HXX
+
+// include ---------------------------------------------------------------
+
+
+#include <svtools/svtreebx.hxx>
+#include <svtools/svlbitm.hxx>
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#include "svx/svxdllapi.h"
+
+// class SvxCheckListBox -------------------------------------------------
+
+class SVX_DLLPUBLIC SvxCheckListBox : public SvTreeListBox
+{
+ using Window::GetText;
+
+private:
+ SvLBoxButtonData* pCheckButton;
+
+#ifdef _SVX_CHECKLBX_CXX
+ SVX_DLLPRIVATE void Init_Impl();
+#endif
+
+ using SvTreeListBox::InsertEntry;
+ // Avoid ambiguity with new InsertEntry:
+ virtual SvLBoxEntry* InsertEntry( const XubString& rText, SvLBoxEntry* pParent,
+ BOOL bChildsOnDemand,
+ ULONG nPos, void* pUserData,
+ SvLBoxButtonKind eButtonKind );
+
+public:
+ SvxCheckListBox( Window* pParent, WinBits nWinStyle = 0 );
+ SvxCheckListBox( Window* pParent, const ResId& rResId );
+ SvxCheckListBox( Window* pParent, const ResId& rResId,
+ const Image& rNormalStaticImage,
+ const Image& rHighContrastStaticImage );
+ ~SvxCheckListBox();
+
+ void InsertEntry ( const String& rStr,
+ USHORT nPos = LISTBOX_APPEND,
+ void* pUserData = NULL,
+ SvLBoxButtonKind eButtonKind =
+ SvLBoxButtonKind_enabledCheckbox );
+ void RemoveEntry ( USHORT nPos );
+
+ void SelectEntryPos ( USHORT nPos, BOOL bSelect = TRUE );
+ USHORT GetSelectEntryPos () const;
+
+ String GetText ( USHORT nPos ) const;
+ USHORT GetCheckedEntryCount() const;
+ void CheckEntryPos ( USHORT nPos, BOOL bCheck = TRUE );
+ BOOL IsChecked ( USHORT nPos ) const;
+ void ToggleCheckButton ( SvLBoxEntry* pEntry );
+
+ void* SetEntryData ( USHORT nPos, void* pNewData );
+ void* GetEntryData ( USHORT nPos ) const;
+
+ virtual void MouseButtonDown ( const MouseEvent& rMEvt );
+ virtual void KeyInput ( const KeyEvent& rKEvt );
+};
+
+
+#endif
+
diff --git a/svx/inc/svx/colrctrl.hxx b/svx/inc/svx/colrctrl.hxx
new file mode 100644
index 000000000000..e6908d98c152
--- /dev/null
+++ b/svx/inc/svx/colrctrl.hxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_COLRCTRL_HXX
+#define _SVX_COLRCTRL_HXX
+
+#include <sfx2/dockwin.hxx>
+#include <sfx2/childwin.hxx>
+#include <svtools/valueset.hxx>
+#include <svtools/transfer.hxx>
+#include <svl/lstner.hxx>
+#include "svx/svxdllapi.h"
+
+class XColorTable;
+class SvData;
+
+/*************************************************************************
+|*
+|* SvxColorValueSet
+|*
+\************************************************************************/
+
+class SvxColorValueSet : public ValueSet, public DragSourceHelper
+{
+ using ValueSet::StartDrag;
+
+private:
+
+ BOOL bLeft;
+ Point aDragPosPixel;
+
+protected:
+
+ void DoDrag();
+
+ // ValueSet
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command(const CommandEvent& rCEvt );
+
+ // DragSourceHelper
+ virtual void StartDrag( sal_Int8 nAction, const Point& rPtPixel );
+
+ DECL_STATIC_LINK(SvxColorValueSet, ExecDragHdl, void*);
+
+public:
+ SvxColorValueSet( Window* pParent, WinBits nWinStyle = WB_ITEMBORDER );
+ SvxColorValueSet( Window* pParent, const ResId& rResId );
+
+ BOOL IsLeftButton() const { return bLeft; }
+};
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer Controller
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxColorChildWindow : public SfxChildWindow
+{
+ public:
+ SvxColorChildWindow( Window*, USHORT, SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW(SvxColorChildWindow);
+};
+
+/*************************************************************************
+|*
+|* SvxColorDockingWindow
+|*
+\************************************************************************/
+
+class SvxColorDockingWindow : public SfxDockingWindow, public SfxListener
+{
+ friend class SvxColorChildWindow;
+
+private:
+ XColorTable* pColorTable;
+ SvxColorValueSet aColorSet;
+ USHORT nLeftSlot;
+ USHORT nRightSlot;
+ USHORT nCols;
+ USHORT nLines;
+ long nCount;
+ Size aColorSize;
+ Size aItemSize;
+
+//#if 0 // _SOLAR__PRIVATE
+ void FillValueSet();
+ void SetSize();
+ DECL_LINK( SelectHdl, void * );
+
+ /** This function is called when the window gets the focus. It grabs
+ the focus to the color value set so that it can be controlled with
+ the keyboard.
+ */
+ virtual void GetFocus (void);
+//#endif
+
+protected:
+ virtual BOOL Close();
+ virtual void Resize();
+ virtual void Resizing( Size& rSize );
+
+public:
+ SvxColorDockingWindow( SfxBindings* pBindings,
+ SfxChildWindow *pCW,
+ Window* pParent,
+ const ResId& rResId );
+ ~SvxColorDockingWindow();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ void SetSlotIDs( USHORT nLeft, USHORT nRight )
+ { nLeftSlot = nLeft; nRightSlot = nRight; }
+
+ virtual long Notify( NotifyEvent& rNEvt );
+};
+
+#endif
+
diff --git a/svx/inc/svx/contdlg.hxx b/svx/inc/svx/contdlg.hxx
new file mode 100644
index 000000000000..034ec5485536
--- /dev/null
+++ b/svx/inc/svx/contdlg.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _CONTDLG_HXX_
+#define _CONTDLG_HXX_
+
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/ctrlitem.hxx>
+#include <sfx2/childwin.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer Float
+|*
+\************************************************************************/
+
+class Graphic;
+
+class SVX_DLLPUBLIC SvxContourDlgChildWindow : public SfxChildWindow
+{
+ public:
+
+ SvxContourDlgChildWindow( Window*, USHORT, SfxBindings*, SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW( SvxContourDlgChildWindow );
+
+ static void UpdateContourDlg( const Graphic& rGraphic, BOOL bGraphicLinked,
+ const PolyPolygon* pPolyPoly = NULL,
+ void* pEditingObj = NULL );
+};
+
+#ifndef _REDUCED_ContourDlg_HXX_
+#define _REDUCED_CONTDLG_HXX_
+
+class SvxSuperContourDlg;
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SvxContourDlgItem : public SfxControllerItem
+{
+ SvxSuperContourDlg& rDlg;
+
+protected:
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState );
+
+public:
+
+ SvxContourDlgItem( USHORT nId, SvxSuperContourDlg& rDlg, SfxBindings& rBindings );
+};
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxContourDlg : public SfxFloatingWindow
+{
+ using Window::Update;
+
+ SvxSuperContourDlg* pSuperClass;
+
+//#if 0 // _SOLAR__PRIVATE
+
+protected:
+
+ void SetSuperClass( SvxSuperContourDlg& rSuperClass ) { pSuperClass = &rSuperClass; }
+
+//#endif // __PRIVATE
+
+public:
+
+ SvxContourDlg( SfxBindings *pBindings, SfxChildWindow *pCW,
+ Window* pParent, const ResId& rResId );
+ ~SvxContourDlg();
+
+ void SetExecState( BOOL bEnable );
+
+ void SetGraphic( const Graphic& rGraphic );
+ void SetGraphicLinked( BOOL bLinked );
+ const Graphic& GetGraphic() const;
+ BOOL IsGraphicChanged() const;
+
+ void SetPolyPolygon( const PolyPolygon& rPolyPoly );
+ PolyPolygon GetPolyPolygon();
+
+ void SetEditingObject( void* pObj );
+ const void* GetEditingObject() const;
+
+ void Update( const Graphic& rGraphic, BOOL bGraphicLinked,
+ const PolyPolygon* pPolyPoly = NULL, void* pEditingObj = NULL );
+
+ static PolyPolygon CreateAutoContour( const Graphic& rGraphic,
+ const Rectangle* pRect = NULL,
+ const ULONG nFlags = 0L );
+ static void ScaleContour( PolyPolygon& rContour, const Graphic& rGraphic,
+ const MapUnit eUnit, const Size& rDisplaySize );
+};
+
+/*************************************************************************
+|*
+|* Defines
+|*
+\************************************************************************/
+
+#define SVXCONTOURDLG() ( (SvxContourDlg*) ( SfxViewFrame::Current()->GetChildWindow( \
+ SvxContourDlgChildWindow::GetChildWindowId() )-> \
+ GetWindow() ) )
+
+#endif // _REDUCED_CONTDLG_HXX_
+#endif // _CONTDLG_HXX_
+
diff --git a/svx/inc/svx/ctredlin.hxx b/svx/inc/svx/ctredlin.hxx
new file mode 100644
index 000000000000..abedd54f0c00
--- /dev/null
+++ b/svx/inc/svx/ctredlin.hxx
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_CTREDLIN_HXX
+#define _SVX_CTREDLIN_HXX
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#include <svtools/headbar.hxx>
+#include <svtools/svtabbx.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/tabpage.hxx>
+#include <vcl/field.hxx>
+#include <vcl/fixed.hxx>
+
+#ifndef _SVX_SIMPTABL
+#include <svx/simptabl.hxx>
+#endif
+#include <vcl/tabctrl.hxx>
+#include <tools/datetime.hxx>
+#include <svtools/txtcmp.hxx>
+#include "svx/svxdllapi.h"
+
+#define FLT_DATE_BEFORE 0
+#define FLT_DATE_SINCE 1
+#define FLT_DATE_EQUAL 2
+#define FLT_DATE_NOTEQUAL 3
+#define FLT_DATE_BETWEEN 4
+#define FLT_DATE_SAVE 5
+
+
+// Struct fuer Datums-Sortierung
+
+class SVX_DLLPUBLIC RedlinData
+{
+public:
+ RedlinData();
+ virtual ~RedlinData();
+ BOOL bDisabled;
+ DateTime aDateTime;
+ void* pData;
+};
+
+class SvxRedlinEntry : public SvLBoxEntry
+{
+public:
+ SvxRedlinEntry();
+ virtual ~SvxRedlinEntry();
+};
+
+// Klasse fuer die Darstellung von schriftabhaengigen Strings
+class SvLBoxColorString : public SvLBoxString
+{
+private:
+
+ Color aPrivColor;
+
+public:
+ SvLBoxColorString( SvLBoxEntry*,USHORT nFlags,const XubString& rStr,
+ const Color& rCol);
+ SvLBoxColorString();
+ ~SvLBoxColorString();
+
+ void Paint( const Point&, SvLBox& rDev, USHORT nFlags,SvLBoxEntry* );
+ SvLBoxItem* Create() const;
+};
+
+class SVX_DLLPUBLIC SvxRedlinTable : public SvxSimpleTable
+{
+ using SvTabListBox::InsertEntry;
+
+private:
+
+ BOOL bIsCalc;
+ USHORT nDatePos;
+ BOOL bAuthor;
+ BOOL bDate;
+ BOOL bComment;
+ USHORT nDaTiMode;
+ DateTime aDaTiFirst;
+ DateTime aDaTiLast;
+ DateTime aDaTiFilterFirst;
+ DateTime aDaTiFilterLast;
+ String aAuthor;
+ Color aEntryColor;
+ String aCurEntry;
+ utl::TextSearch* pCommentSearcher;
+ Link aColCompareLink;
+
+protected:
+
+ virtual StringCompare ColCompare(SvLBoxEntry*,SvLBoxEntry*);
+ virtual void InitEntry(SvLBoxEntry*,const XubString&,const Image&,const Image&,SvLBoxButtonKind);
+
+
+
+public:
+
+ SvxRedlinTable( Window* pParent,WinBits nBits );
+ SvxRedlinTable( Window* pParent,const ResId& rResId);
+ ~SvxRedlinTable();
+
+ // For FilterPage only {
+ void SetFilterDate(BOOL bFlag=TRUE);
+ void SetDateTimeMode(USHORT nMode);
+ void SetFirstDate(const Date&);
+ void SetLastDate(const Date&);
+ void SetFirstTime(const Time&);
+ void SetLastTime(const Time&);
+ void SetFilterAuthor(BOOL bFlag=TRUE);
+ void SetAuthor(const String &);
+ void SetFilterComment(BOOL bFlag=TRUE);
+ void SetCommentParams( const utl::SearchParam* pSearchPara );
+
+ void UpdateFilterTest();
+ // } For FilterPage only
+
+ void SetCalcView(BOOL bFlag=TRUE);
+ BOOL IsValidCalcEntry(const String& ,RedlinData *pUserData);
+ BOOL IsValidWriterEntry(const String& ,RedlinData *pUserData);
+
+ // keine NULL-Ptr. ueberpruefung {
+ BOOL IsValidEntry(const String* pAuthor,const DateTime *pDateTime,const String* pComment);
+ BOOL IsValidEntry(const String* pAuthor,const DateTime *pDateTime);
+ BOOL IsValidComment(const String* pComment);
+ // }
+
+ SvLBoxEntry* InsertEntry(const String& ,RedlinData *pUserData,
+ SvLBoxEntry* pParent=NULL,ULONG nPos=LIST_APPEND);
+
+ SvLBoxEntry* InsertEntry(const String& ,RedlinData *pUserData,const Color&,
+ SvLBoxEntry* pParent=NULL,ULONG nPos=LIST_APPEND);
+
+
+ virtual SvLBoxEntry* CreateEntry() const;
+
+ void SetColCompareHdl(const Link& rLink ) { aColCompareLink = rLink; }
+ const Link& GetColCompareHdl() const { return aColCompareLink; }
+
+
+};
+
+//==================================================================
+// Filter- Tabpage
+//==================================================================
+class SVX_DLLPUBLIC SvxTPFilter: public TabPage
+{
+private:
+
+ Link aReadyLink;
+ Link aModifyLink;
+ Link aModifyDateLink;
+ Link aModifyAuthorLink;
+ Link aModifyRefLink;
+ Link aRefLink;
+ Link aModifyComLink;
+
+ SvxRedlinTable* pRedlinTable;
+ CheckBox aCbDate;
+ ListBox aLbDate;
+ DateField aDfDate;
+ TimeField aTfDate;
+ ImageButton aIbClock;
+ FixedText aFtDate2;
+ DateField aDfDate2;
+ TimeField aTfDate2;
+ ImageButton aIbClock2;
+ CheckBox aCbAuthor;
+ ListBox aLbAuthor;
+ CheckBox aCbRange;
+ Edit aEdRange;
+ PushButton aBtnRange;
+ ListBox aLbAction;
+ CheckBox aCbComment;
+ Edit aEdComment;
+ String aActionStr;
+ String aRangeStr;
+ String aStrMyName;
+ BOOL bModified;
+
+ DECL_LINK( SelDateHdl, ListBox* );
+ DECL_LINK( RowEnableHdl, CheckBox* );
+ DECL_LINK( TimeHdl, ImageButton* );
+ DECL_LINK( ModifyHdl, void* );
+ DECL_LINK( ModifyDate, void* );
+ DECL_LINK( RefHandle, PushButton* );
+
+
+protected:
+
+ void ShowDateFields(USHORT nKind);
+ void EnableDateLine1(BOOL bFlag);
+ void EnableDateLine2(BOOL bFlag);
+
+public:
+ SvxTPFilter( Window * pParent);
+
+ virtual void DeactivatePage();
+ void SetRedlinTable(SvxRedlinTable*);
+
+ String GetMyName() const;
+ Date GetFirstDate() const;
+ void SetFirstDate(const Date &aDate);
+ Time GetFirstTime() const;
+ void SetFirstTime(const Time &aTime);
+
+ Date GetLastDate() const;
+ void SetLastDate(const Date &aDate);
+ Time GetLastTime() const;
+ void SetLastTime(const Time &aTime);
+
+ void SetDateMode(USHORT nMode);
+ USHORT GetDateMode();
+
+ void ClearAuthors();
+ void InsertAuthor( const String& rString, USHORT nPos = LISTBOX_APPEND );
+ USHORT GetSelectedAuthorPos();
+ String GetSelectedAuthor()const;
+ void SelectedAuthorPos(USHORT nPos);
+ USHORT SelectAuthor(const String& aString);
+ void SetComment(const String &rComment);
+ String GetComment()const;
+
+
+ // Methoden fuer Calc {
+ void SetRange(const String& rString);
+ String GetRange() const;
+ void HideRange(BOOL bHide=TRUE);
+ void DisableRange(BOOL bFlag=TRUE);
+ void SetFocusToRange();
+ // } Methoden fuer Calc
+
+ void HideClocks(BOOL bHide=TRUE);
+ void DisableRef(BOOL bFlag);
+
+ BOOL IsDate();
+ BOOL IsAuthor();
+ BOOL IsRange();
+ BOOL IsAction();
+ BOOL IsComment();
+
+ void ShowAction(BOOL bShow=TRUE);
+
+ void CheckDate(BOOL bFlag=TRUE);
+ void CheckAuthor(BOOL bFlag=TRUE);
+ void CheckRange(BOOL bFlag=TRUE);
+ void CheckAction(BOOL bFlag=TRUE);
+ void CheckComment(BOOL bFlag=TRUE);
+
+ ListBox* GetLbAction();
+
+ void SetReadyHdl( const Link& rLink ) { aReadyLink= rLink; }
+ const Link& GetReadyHdl() const { return aReadyLink; }
+
+ void SetModifyHdl( const Link& rLink ) { aModifyLink = rLink; }
+ const Link& GetModifyHdl() const { return aModifyLink; }
+
+ void SetModifyDateHdl( const Link& rLink ) { aModifyDateLink = rLink; }
+ const Link& GetModifyDateHdl() const { return aModifyDateLink; }
+
+ void SetModifyAuthorHdl( const Link& rLink ) { aModifyAuthorLink = rLink; }
+ const Link& GetModifyAuthorHdl() const { return aModifyAuthorLink; }
+
+ void SetModifyCommentHdl(const Link& rLink ) { aModifyComLink = rLink; }
+ const Link& GetModifyCommentHdl() const { return aModifyComLink; }
+
+
+ // Methoden fuer Calc {
+ void SetModifyRangeHdl( const Link& rLink ) { aModifyRefLink = rLink; }
+ const Link& GetModifyRangeHdl() const { return aModifyRefLink; }
+
+ void SetRefHdl( const Link& rLink ) { aRefLink = rLink; }
+ const Link& GetRefHdl() const { return aRefLink; }
+
+ void Enable( bool bEnable = true, bool bChild = true );
+ void Disable( bool bChild = true );
+
+ // } Methoden fuer Calc
+};
+
+
+//==================================================================
+// View- Tabpage
+//==================================================================
+
+class SVX_DLLPUBLIC SvxTPView: public TabPage
+{
+private:
+
+ Link AcceptClickLk;
+ Link AcceptAllClickLk;
+ Link RejectClickLk;
+ Link RejectAllClickLk;
+ Link UndoClickLk;
+
+ SvxRedlinTable aViewData;
+ PushButton PbAccept;
+ PushButton PbReject;
+ PushButton PbAcceptAll;
+ PushButton PbRejectAll;
+ PushButton PbUndo;
+ String aTitle1;
+ String aTitle2;
+ String aTitle3;
+ String aTitle4;
+ String aTitle5;
+ String aStrMyName;
+ long nDistance;
+ Size aMinSize;
+
+ DECL_LINK( PbClickHdl, PushButton* );
+
+
+protected:
+
+ void Resize();
+
+public:
+ SvxTPView( Window * pParent);
+
+ String GetMyName() const;
+
+ void InsertWriterHeader();
+ void InsertCalcHeader();
+ SvxRedlinTable* GetTableControl();
+
+ void EnableAccept(BOOL nFlag=TRUE);
+ void EnableAcceptAll(BOOL nFlag=TRUE);
+ void EnableReject(BOOL nFlag=TRUE);
+ void EnableRejectAll(BOOL nFlag=TRUE);
+ void EnableUndo(BOOL nFlag=TRUE);
+
+ void DisableAccept() {EnableAccept(FALSE);}
+ void DisableAcceptAll() {EnableAcceptAll(FALSE);}
+ void DisableReject() {EnableReject(FALSE);}
+ void DisableRejectAll() {EnableRejectAll(FALSE);}
+ void DisableUndo() {EnableUndo(FALSE);}
+
+ void ShowUndo(BOOL nFlag=TRUE);
+ void HideUndo() {ShowUndo(FALSE);}
+ BOOL IsUndoVisible();
+
+ Size GetMinSizePixel();
+
+ void SetAcceptClickHdl( const Link& rLink ) { AcceptClickLk = rLink; }
+ const Link& GetAcceptClickHdl() const { return AcceptClickLk; }
+
+ void SetAcceptAllClickHdl( const Link& rLink ) { AcceptAllClickLk = rLink; }
+ const Link& GetAcceptAllClickHdl() const { return AcceptAllClickLk; }
+
+ void SetRejectClickHdl( const Link& rLink ) { RejectClickLk = rLink; }
+ const Link& GetRejectClickHdl() const { return RejectClickLk; }
+
+ void SetRejectAllClickHdl( const Link& rLink ) { RejectAllClickLk = rLink; }
+ const Link& GetRejectAllClickHdl() const { return RejectAllClickLk; }
+
+ void SetUndoClickHdl( const Link& rLink ) { UndoClickLk = rLink; }
+ const Link& GetUndoAllClickHdl() const { return UndoClickLk; }
+};
+
+//==================================================================
+// Redlining - Control (Accept- Changes)
+//==================================================================
+
+class SVX_DLLPUBLIC SvxAcceptChgCtr : public Control
+{
+private:
+
+ Link aMinSizeLink;
+ TabControl aTCAccept;
+ SvxTPFilter* pTPFilter;
+ SvxTPView* pTPView;
+ Size aMinSize;
+
+protected:
+
+ virtual void Resize();
+
+public:
+ SvxAcceptChgCtr( Window* pParent, WinBits nWinStyle = 0 );
+ SvxAcceptChgCtr( Window* pParent, const ResId& rResId );
+
+ ~SvxAcceptChgCtr();
+
+ Size GetMinSizePixel() const;
+
+ void ShowFilterPage();
+ void ShowViewPage();
+
+ BOOL IsFilterPageVisible();
+ BOOL IsViewPageVisible();
+
+ SvxTPFilter* GetFilterPage();
+ SvxTPView* GetViewPage();
+ SvxRedlinTable* GetViewTable();
+
+ void SetMinSizeHdl( const Link& rLink ) { aMinSizeLink= rLink; }
+ const Link& GetMinSizeHdl() const { return aMinSizeLink; }
+};
+
+
+#endif // _SVX_CTREDLIN_HXX
+
diff --git a/svx/inc/svx/cube3d.hxx b/svx/inc/svx/cube3d.hxx
new file mode 100644
index 000000000000..00da40a852e9
--- /dev/null
+++ b/svx/inc/svx/cube3d.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_CUBE3D_HXX
+#define _E3D_CUBE3D_HXX
+
+#include <svx/obj3d.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* |
+|* 3D-Quader erzeugen; aPos: Zentrum oder links, unten, hinten |__
+|* (abhaengig von bPosIsCenter) /
+|* Mit nSideFlags kann angegeben werden, ob nur ein Teil der
+|* Quaderflaechen erzeugt werden kann; die entsprechenden Bits
+|* sind in dem enum definiert. Das Flag bDblSided legt fest,
+|* ob die erzeugten Flaechen doppelseitig sind (nur sinnvoll,
+|* wenn nicht alle Flaechen erzeugt wurden).
+|*
+\************************************************************************/
+
+enum { CUBE_BOTTOM = 0x0001, CUBE_BACK = 0x0002, CUBE_LEFT = 0x0004,
+ CUBE_TOP = 0x0008, CUBE_RIGHT = 0x0010, CUBE_FRONT = 0x0020,
+ CUBE_FULL = 0x003F, CUBE_OPEN_TB = 0x0036, CUBE_OPEN_LR = 0x002B,
+ CUBE_OPEN_FB = 0x001D };
+
+class SVX_DLLPUBLIC E3dCubeObj : public E3dCompoundObject
+{
+private:
+ // Parameter
+ basegfx::B3DPoint aCubePos;
+ basegfx::B3DVector aCubeSize;
+ UINT16 nSideFlags;
+
+ // BOOLeans
+ unsigned bPosIsCenter : 1;
+
+protected:
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+public:
+ TYPEINFO();
+ E3dCubeObj(E3dDefaultAttributes& rDefault, basegfx::B3DPoint aPos, const basegfx::B3DVector& r3DSize);
+ E3dCubeObj();
+
+ virtual UINT16 GetObjIdentifier() const;
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual void operator=(const SdrObject&);
+
+ // Lokale Parameter setzen mit Geometrieneuerzeugung
+ void SetCubePos(const basegfx::B3DPoint& rNew);
+ const basegfx::B3DPoint& GetCubePos() { return aCubePos; }
+
+ void SetCubeSize(const basegfx::B3DVector& rNew);
+ const basegfx::B3DVector& GetCubeSize() { return aCubeSize; }
+
+ void SetPosIsCenter(BOOL bNew);
+ BOOL GetPosIsCenter() { return (BOOL)bPosIsCenter; }
+
+ void SetSideFlags(UINT16 nNew);
+ UINT16 GetSideFlags() { return nSideFlags; }
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+};
+
+#endif // _E3D_CUBE3D_HXX
diff --git a/svx/inc/svx/dataaccessdescriptor.hxx b/svx/inc/svx/dataaccessdescriptor.hxx
new file mode 100644
index 000000000000..f765b1fce2b9
--- /dev/null
+++ b/svx/inc/svx/dataaccessdescriptor.hxx
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_DATACCESSDESCRIPTOR_HXX_
+#define _SVX_DATACCESSDESCRIPTOR_HXX_
+
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include "svx/svxdllapi.h"
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ class ODADescriptorImpl;
+
+ //====================================================================
+ //= DataAccessDescriptorProperty
+ //====================================================================
+ enum DataAccessDescriptorProperty
+ {
+ daDataSource, /// data source name (string)
+ daDatabaseLocation, /// database file URL (string)
+ daConnectionResource, /// database driver URL (string)
+ daConnection, /// connection (XConnection)
+
+ daCommand, /// command (string)
+ daCommandType, /// command type (long)
+ daEscapeProcessing, /// escape processing (boolean)
+ daFilter, /// additional filter (string)
+ daCursor, /// the cursor (XResultSet)
+
+ daColumnName, /// column name (string)
+ daColumnObject, /// column object (XPropertySet)
+
+ daSelection, /// selection (sequence< any >)
+ daBookmarkSelection, /// selection are bookmarks? (boolean)
+
+ daComponent /// component name (XContent)
+ };
+
+ //====================================================================
+ //= ODataAccessDescriptor
+ //====================================================================
+ /** class encapsulating the <type scope="com::sun::star::sdb">DataAccessDescriptor</type> service.
+ */
+ class SVX_DLLPUBLIC ODataAccessDescriptor
+ {
+ protected:
+ ODADescriptorImpl* m_pImpl;
+
+ public:
+ ODataAccessDescriptor();
+ ODataAccessDescriptor( const ODataAccessDescriptor& _rSource );
+ ODataAccessDescriptor( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rValues );
+ ODataAccessDescriptor( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rValues );
+
+ // allows to construct a descriptor from an Any containing either an XPropertySet or a property value sequence
+ ODataAccessDescriptor( const ::com::sun::star::uno::Any& _rValues );
+
+ const ODataAccessDescriptor& operator=(const ODataAccessDescriptor& _rSource);
+
+ ~ODataAccessDescriptor();
+
+ /** returns the descriptor as property set
+ <p>If you call this method more than once, without writing any values between both calls, the same object
+ is returned. If you wrote values, a new object is returned.</p>
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
+ createPropertySet();
+ /** returns the descriptor as property value sequence
+ <p>If you call this method more than once, without writing any values between both calls, the same object
+ is returned. If you wrote values, a new object is returned.</p>
+ */
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
+ createPropertyValueSequence();
+
+ /** returns the descriptor as Any sequence
+ <p>If you call this method more than once, without writing any values between both calls, the same object
+ is returned. If you wrote values, a new object is returned.</p>
+ */
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
+ createAnySequence();
+
+ /** initialized the descriptor from the property set given
+ <p>If <arg>_bClear</arg> is <TRUE/>, the descriptor will clear all it's current settings before
+ initializing with the new ones.</p>
+ */
+ void initializeFrom(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxValues,
+ sal_Bool _bClear = sal_True);
+
+ /** initialized the descriptor from the property values given
+ <p>If <arg>_bClear</arg> is <TRUE/>, the descriptor will clear all it's current settings before
+ initializing with the new ones.</p>
+ */
+ void initializeFrom(
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rValues,
+ sal_Bool _bClear = sal_True);
+
+ /// checks whether or not a given property is present in the descriptor
+ sal_Bool has(DataAccessDescriptorProperty _eWhich) const;
+
+ /** erases the given property from the descriptor
+ */
+ void erase(DataAccessDescriptorProperty _eWhich);
+
+ /** empties the descriptor
+ */
+ void clear();
+
+ /// return the value of a given property
+ const ::com::sun::star::uno::Any& operator [] ( DataAccessDescriptorProperty _eWhich ) const;
+
+ /** return the (modifiable) value of a given property
+ <p>This operator is not allowed to be called if the descriptor is readonly.</p>
+ */
+ ::com::sun::star::uno::Any& operator [] ( DataAccessDescriptorProperty _eWhich );
+
+
+ /** returns either the data source name if given or the database location
+ */
+ ::rtl::OUString getDataSource() const;
+
+
+ /** set the data source name, if it is not file URL
+ @param _sDataSourceNameOrLocation
+ the data source name or database location
+ */
+ void setDataSource(const ::rtl::OUString& _sDataSourceNameOrLocation);
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // _SVX_DATACCESSDESCRIPTOR_HXX_
+
+
diff --git a/svx/inc/svx/databaselocationinput.hxx b/svx/inc/svx/databaselocationinput.hxx
new file mode 100644
index 000000000000..694a679bb7a9
--- /dev/null
+++ b/svx/inc/svx/databaselocationinput.hxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_DATABASELOCATIONINPUT_HXX
+#define SVX_DATABASELOCATIONINPUT_HXX
+
+#include "svx/svxdllapi.h"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+class PushButton;
+class String;
+namespace svt { class OFileURLControl; }
+namespace comphelper { class ComponentContext; }
+
+#include <memory>
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ //====================================================================
+ //= DatabaseLocationInputController
+ //====================================================================
+ class DatabaseLocationInputController_Impl;
+ /** helper class to control controls needed to input a database location
+
+ If you allow, in your dialog, to save a database document, then you usually
+ have a OFileURLControl for inputting the actual location, and a push button
+ to browse for a location.
+
+ This helper class controls such two UI elements.
+ */
+ class SVX_DLLPUBLIC DatabaseLocationInputController
+ {
+ public:
+ DatabaseLocationInputController(
+ const ::comphelper::ComponentContext& _rContext,
+ ::svt::OFileURLControl& _rLocationInput,
+ PushButton& _rBrowseButton
+ );
+ ~DatabaseLocationInputController();
+
+ /** sets the given URL at the input control, after translating it into a system path
+ */
+ void setURL( const String& _rURL );
+
+ /** returns the current database location, in form of an URL (not a system path)
+ */
+ String getURL() const;
+
+ /** prepares committing the database location entered in the input field
+
+ Effectively, this method checks whether the file in the location already
+ exists, and if so, it asks the user whether to overwrite it.
+
+ If the method is called multiple times, this check only happens when the location
+ changed since the last call.
+ */
+ bool prepareCommit();
+
+ private:
+ ::std::auto_ptr< DatabaseLocationInputController_Impl >
+ m_pImpl;
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SVX_DATABASELOCATIONINPUT_HXX
diff --git a/svx/inc/svx/dbaexchange.hxx b/svx/inc/svx/dbaexchange.hxx
new file mode 100644
index 000000000000..a5a178f68389
--- /dev/null
+++ b/svx/inc/svx/dbaexchange.hxx
@@ -0,0 +1,299 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_DBAEXCHANGE_HXX_
+#define _SVX_DBAEXCHANGE_HXX_
+
+#include <svtools/transfer.hxx>
+#include <comphelper/stl_types.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <svx/dataaccessdescriptor.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include "svx/svxdllapi.h"
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+// column transfer formats
+#define CTF_FIELD_DESCRIPTOR 0x0001 // the field descriptor format
+#define CTF_CONTROL_EXCHANGE 0x0002 // the control exchange format
+#define CTF_COLUMN_DESCRIPTOR 0x0004 // data access descriptor for a column
+
+ //====================================================================
+ //= OColumnTransferable
+ //====================================================================
+ class SVX_DLLPUBLIC OColumnTransferable : public TransferableHelper
+ {
+ protected:
+ ODataAccessDescriptor m_aDescriptor;
+ ::rtl::OUString m_sCompatibleFormat;
+ sal_Int32 m_nFormatFlags;
+
+ public:
+ /** construct the transferable
+ */
+ OColumnTransferable(
+ const ::rtl::OUString& _rDatasource
+ ,const ::rtl::OUString& _rConnectionResource
+ ,const sal_Int32 _nCommandType
+ ,const ::rtl::OUString& _rCommand
+ ,const ::rtl::OUString& _rFieldName
+ ,sal_Int32 _nFormats
+ );
+
+ /** construct the transferable from a data access descriptor
+
+ Note that some of the aspects, in particular all which cannot be represented
+ as string, can only be transported via the CTF_COLUMN_DESCRIPTOR format.
+
+ @param _rDescriptor
+ The descriptor for the column. It must contain at least
+ <ul><li>information sufficient to create a connection, that is, either one of DataSource, DatabaseLocation,
+ ConnectionResource, and daConnection</li>
+ <li>a Command</li>
+ <li>a CommandType</li>
+ <li>a ColumnName or ColumnObject</li>
+ </ul>
+ */
+ OColumnTransferable(
+ const ODataAccessDescriptor& _rDescriptor,
+ sal_Int32 _nFormats
+ );
+
+ /** construct the transferable from a DatabaseForm component and a field name
+
+ @param _rxForm
+ the form which is bound to the data source which's field is to be dragged
+
+ @param _rFieldName
+ the name of the field to be dragged
+
+ @param _rxColumn
+ the column object. Won't be used if <arg>_nFormats</arg> does not include the CTF_COLUMN_DESCRIPTOR
+ flag.<br/>
+ May be <NULL/>.
+
+ @param _rxConnection
+ the connection the column belongs to. Won't be used if <arg>_nFormats</arg> does not include the CTF_COLUMN_DESCRIPTOR
+ flag.<br/>
+ May be <NULL/>.
+
+ @param _nFormats
+ supported formats. Must be a combination of the CTF_XXX flags
+ */
+ OColumnTransferable(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxForm,
+ const ::rtl::OUString& _rFieldName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColumn,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
+ sal_Int32 _nFormats
+ );
+
+ /** checks whether or not a column descriptor can be extracted from the data flavor vector given
+ @param _rFlavors
+ available flavors
+ @param _nFormats
+ formats to accept
+ */
+ static sal_Bool canExtractColumnDescriptor(const DataFlavorExVector& _rFlavors, sal_Int32 _nFormats);
+
+ /** extracts a column descriptor from the transferable given
+ */
+ static sal_Bool extractColumnDescriptor(
+ const TransferableDataHelper& _rData
+ ,::rtl::OUString& _rDatasource
+ ,::rtl::OUString& _rDatabaseLocation
+ ,::rtl::OUString& _rConnectionResource
+ ,sal_Int32& _nCommandType
+ ,::rtl::OUString& _rCommand
+ ,::rtl::OUString& _rFieldName
+ );
+
+ /** extracts a column descriptor from the transferable given
+ */
+ static ODataAccessDescriptor
+ extractColumnDescriptor(const TransferableDataHelper& _rData);
+
+ /** adds the data contained in the object to the given data container
+ <p>This method helps you treating this class as simple container class:<br/>
+ At the moment, it is a data container and a transferable.
+ Using <method>addDataToContainer</method>, you can treat the class as dumb data container,
+ doing the Drag'n'Drop with a <type>TransferDataContainer</type> instance (which may contain
+ additional formats)</p>
+ @TODO
+ split this class into a two separate classes: one for the data container aspect, one for
+ the transfer aspect
+ */
+ void addDataToContainer( TransferDataContainer* _pContainer );
+
+ protected:
+ // TransferableHelper overridables
+ virtual void AddSupportedFormats();
+ virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+
+ static sal_uInt32 getDescriptorFormatId();
+
+ private:
+ SVX_DLLPRIVATE void implConstruct(
+ const ::rtl::OUString& _rDatasource
+ ,const ::rtl::OUString& _rConnectionResource
+ ,const sal_Int32 _nCommandType
+ ,const ::rtl::OUString& _rCommand
+ ,const ::rtl::OUString& _rFieldName
+ );
+ };
+
+ //====================================================================
+ //= ODataAccessObjectTransferable
+ //====================================================================
+ /** class for transfering data access objects (tables, queries, statements ...)
+ */
+ class SVX_DLLPUBLIC ODataAccessObjectTransferable : public TransferableHelper
+ {
+ ODataAccessDescriptor m_aDescriptor;
+ ::rtl::OUString m_sCompatibleObjectDescription;
+ // needed to provide a SOT_FORMATSTR_ID_SBA_DATAEXCHANGE format
+
+ public:
+ /** should be used copying and the connection is needed.
+ @param _rDatasource
+ The data source name.
+ @param _nCommandType
+ The kind of command. @see com.sun.star.sdbc.CommandType
+ @param _rCommand
+ The command, either a name of a table or query or a SQL statement.
+ */
+ ODataAccessObjectTransferable(
+ const ::rtl::OUString& _rDatasourceOrLocation
+ ,const ::rtl::OUString& _rConnectionResource
+ ,const sal_Int32 _nCommandType
+ ,const ::rtl::OUString& _rCommand
+ ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection
+ );
+
+ /** should be used when copying a query object and no connection is available.
+ @param _rDatasource
+ The data source name.
+ @param _nCommandType
+ The kind of command. @see com.sun.star.sdbc.CommandType
+ @param _rCommand
+ The command, either a name of a table or query or a SQL statement.
+ */
+ ODataAccessObjectTransferable(
+ const ::rtl::OUString& _rDatasourceOrLocation
+ ,const ::rtl::OUString& _rConnectionResource
+ ,const sal_Int32 _nCommandType
+ ,const ::rtl::OUString& _rCommand
+ );
+
+ /** with this ctor, only the object descriptor format will be provided
+ */
+ ODataAccessObjectTransferable(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxLivingForm
+ );
+
+ /** checks whether or not an object descriptor can be extracted from the data flavor vector given
+ @param _rFlavors
+ available flavors
+ @param _nFormats
+ formats to accept
+ */
+ static sal_Bool canExtractObjectDescriptor(const DataFlavorExVector& _rFlavors);
+
+ /** extracts a object descriptor from the transferable given
+ */
+ static ODataAccessDescriptor
+ extractObjectDescriptor(const TransferableDataHelper& _rData);
+
+ protected:
+ virtual void AddSupportedFormats();
+ virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ virtual void ObjectReleased();
+
+ protected:
+ const ODataAccessDescriptor& getDescriptor() const { return m_aDescriptor; }
+ ODataAccessDescriptor& getDescriptor() { return m_aDescriptor; }
+ protected:
+ void addCompatibleSelectionDescription(
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& _rSelRows
+ );
+ // normally, a derived class could simply access getDescriptor[daSelection] and place the sequence therein
+ // but unfortunately, we have this damned compatible format, and this can't be accessed in
+ // derived classes (our class is the only one which should be contaminated with this)
+
+ private:
+ SVX_DLLPRIVATE void construct( const ::rtl::OUString& _rDatasourceOrLocation
+ ,const ::rtl::OUString& _rConnectionResource
+ ,const sal_Int32 _nCommandType
+ ,const ::rtl::OUString& _rCommand
+ ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection
+ ,sal_Bool _bAddCommand
+ ,const ::rtl::OUString& _sActiveCommand);
+ };
+
+ //====================================================================
+ //= OMultiColumnTransferable
+ //====================================================================
+ /** class for transfering multiple columns
+ */
+ class SVX_DLLPUBLIC OMultiColumnTransferable : public TransferableHelper
+ {
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > m_aDescriptors;
+
+ public:
+ OMultiColumnTransferable(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _aDescriptors);
+
+ void push_back(ODataAccessDescriptor& _aDescriptor);
+
+ /** checks whether or not an object descriptor can be extracted from the data flavor vector given
+ @param _rFlavors
+ available flavors
+ @param _nFormats
+ formats to accept
+ */
+ static sal_Bool canExtractDescriptor(const DataFlavorExVector& _rFlavors);
+
+ /** extracts a object descriptor from the transferable given
+ */
+ static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > extractDescriptor(const TransferableDataHelper& _rData);
+
+ protected:
+ virtual void AddSupportedFormats();
+ virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ virtual void ObjectReleased();
+ static sal_uInt32 getDescriptorFormatId();
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // _SVX_DBAEXCHANGE_HXX_
+
diff --git a/svx/inc/svx/dbaobjectex.hxx b/svx/inc/svx/dbaobjectex.hxx
new file mode 100644
index 000000000000..a1c7867e0a5d
--- /dev/null
+++ b/svx/inc/svx/dbaobjectex.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_DBAOBJECTEX_HXX
+#define SVX_DBAOBJECTEX_HXX
+
+#include <svtools/transfer.hxx>
+#include <comphelper/stl_types.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <com/sun/star/ucb/XContent.hpp>
+#include <svx/dataaccessdescriptor.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include "svx/svxdllapi.h"
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ //====================================================================
+ //= OComponentTransferable
+ //====================================================================
+ class SVX_DLLPUBLIC OComponentTransferable : public TransferableHelper
+ {
+ protected:
+ ODataAccessDescriptor m_aDescriptor;
+
+ public:
+ /** construct the transferable
+ */
+ OComponentTransferable(
+ const ::rtl::OUString& _rDatasourceOrLocation
+ ,const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>& _xContent
+ );
+
+ /** checks whether or not a component descriptor can be extracted from the data flavor vector given
+ @param _rFlavors
+ available flavors
+ */
+ static sal_Bool canExtractComponentDescriptor(const DataFlavorExVector& _rFlavors,sal_Bool _bForm );
+
+ /** extracts a component descriptor from the transferable given
+ */
+ static sal_Bool extractComponentDescriptor(
+ const TransferableDataHelper& _rData
+ ,sal_Bool _bExtractForm
+ ,::rtl::OUString& _rDatasourceOrLocation
+ ,::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>& _xContent
+ );
+
+ /** extracts a component descriptor from the transferable given
+ */
+ static ODataAccessDescriptor
+ extractComponentDescriptor(const TransferableDataHelper& _rData);
+
+ protected:
+ // TransferableHelper overridables
+ virtual void AddSupportedFormats();
+ virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+
+ static sal_uInt32 getDescriptorFormatId(sal_Bool _bExtractForm);
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SVX_DBAOBJECTEX_HXX
+
diff --git a/svx/inc/svx/dbcharsethelper.hxx b/svx/inc/svx/dbcharsethelper.hxx
new file mode 100755
index 000000000000..40ec31c37d85
--- /dev/null
+++ b/svx/inc/svx/dbcharsethelper.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_DBCHARSETHELPER_HXX
+#define SVX_DBCHARSETHELPER_HXX
+#include "svx/svxdllapi.h"
+#include "svx/dbtoolsclient.hxx"
+
+//........................................................................
+namespace svxform
+{
+//........................................................................
+
+ //====================================================================
+ //= ODataAccessCharsetHelper
+ //====================================================================
+ class SVX_DLLPUBLIC ODataAccessCharsetHelper : public ODbtoolsClient
+ {
+ protected:
+ mutable ::rtl::Reference< ::connectivity::simple::IDataAccessCharSet > m_xCharsetHelper;
+
+ protected:
+ virtual bool ensureLoaded() const;
+
+ public:
+ ODataAccessCharsetHelper( );
+
+ inline sal_Int32 getSupportedTextEncodings( ::std::vector< rtl_TextEncoding >& _rEncs ) const
+ {
+ if ( ensureLoaded() )
+ return m_xCharsetHelper->getSupportedTextEncodings( _rEncs );
+ return 0;
+ }
+ };
+
+//........................................................................
+} // namespace svxform
+//........................................................................
+
+#endif // SVX_DBCHARSETCLIENT_HXX
+
+
diff --git a/svx/inc/svx/dbtoolsclient.hxx b/svx/inc/svx/dbtoolsclient.hxx
new file mode 100755
index 000000000000..0894540d1972
--- /dev/null
+++ b/svx/inc/svx/dbtoolsclient.hxx
@@ -0,0 +1,235 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_DBTOOLSCLIENT_HXX
+#define SVX_DBTOOLSCLIENT_HXX
+
+#include <connectivity/virtualdbtools.hxx>
+#include <osl/mutex.hxx>
+#include <osl/module.h>
+#include <tools/solar.h>
+#include <unotools/sharedunocomponent.hxx>
+#include "svx/svxdllapi.h"
+
+//........................................................................
+namespace svxform
+{
+//........................................................................
+
+ typedef ::utl::SharedUNOComponent< ::com::sun::star::sdbc::XConnection > SharedConnection;
+
+ //====================================================================
+ //= ODbtoolsClient
+ //====================================================================
+ /** base class for classes which want to use dbtools features with load-on-call
+ of the dbtools lib.
+ */
+ class SVX_DLLPUBLIC ODbtoolsClient
+ {
+ private:
+ static ::osl::Mutex s_aMutex;
+ static sal_Int32 s_nClients;
+ static oslModule s_hDbtoolsModule;
+ static ::connectivity::simple::createDataAccessToolsFactoryFunction
+ s_pFactoryCreationFunc;
+ //add by BerryJia for fixing Bug97420 Time:2002-9-12-11:00(PRC time)
+ mutable BOOL m_bCreateAlready;
+
+ private:
+ mutable ::rtl::Reference< ::connectivity::simple::IDataAccessToolsFactory > m_xDataAccessFactory;
+
+ protected:
+ ODbtoolsClient();
+ virtual ~ODbtoolsClient();
+
+ virtual bool ensureLoaded() const;
+
+ protected:
+ const ::rtl::Reference< ::connectivity::simple::IDataAccessToolsFactory >&
+ getFactory() const { return m_xDataAccessFactory; }
+
+ private:
+ static void registerClient();
+ static void revokeClient();
+ };
+
+ //====================================================================
+ //= OStaticDataAccessTools
+ //====================================================================
+ class SVX_DLLPUBLIC OStaticDataAccessTools : public ODbtoolsClient
+ {
+ protected:
+ mutable ::rtl::Reference< ::connectivity::simple::IDataAccessTools > m_xDataAccessTools;
+
+ protected:
+ virtual bool ensureLoaded() const;
+
+ public:
+ OStaticDataAccessTools();
+
+ const ::rtl::Reference< ::connectivity::simple::IDataAccessTools >& getDataAccessTools() const { return m_xDataAccessTools; }
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier> getNumberFormats(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _rxConn,
+ sal_Bool _bAllowDefault
+ ) const;
+
+ // ------------------------------------------------
+ sal_Int32 getDefaultNumberFormat(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xColumn,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatTypes >& _xTypes,
+ const ::com::sun::star::lang::Locale& _rLocale );
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> getConnection_withFeedback(
+ const ::rtl::OUString& _rDataSourceName,
+ const ::rtl::OUString& _rUser,
+ const ::rtl::OUString& _rPwd,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory
+ ) const SAL_THROW ( (::com::sun::star::sdbc::SQLException) );
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> connectRowset(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& _rxRowSet,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory,
+ sal_Bool _bSetAsActiveConnection
+ ) const SAL_THROW ( ( ::com::sun::star::sdbc::SQLException
+ , ::com::sun::star::lang::WrappedTargetException
+ , ::com::sun::star::uno::RuntimeException) );
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> getRowSetConnection(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& _rxRowSet)
+ const SAL_THROW ( (::com::sun::star::uno::RuntimeException) );
+
+ // ------------------------------------------------
+ void TransferFormComponentProperties(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxOld,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxNew,
+ const ::com::sun::star::lang::Locale& _rLocale
+ ) const;
+
+ // ------------------------------------------------
+ ::rtl::OUString quoteName(
+ const ::rtl::OUString& _rQuote,
+ const ::rtl::OUString& _rName
+ ) const;
+
+ // ------------------------------------------------
+ ::rtl::OUString composeTableNameForSelect(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xTable
+ ) const;
+
+ // ------------------------------------------------
+ ::com::sun::star::sdb::SQLContext prependContextInfo(
+ ::com::sun::star::sdbc::SQLException& _rException,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext,
+ const ::rtl::OUString& _rContextDescription,
+ const ::rtl::OUString& _rContextDetails
+ ) const;
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource > getDataSource(
+ const ::rtl::OUString& _rsRegisteredName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory
+ ) const;
+
+ // ------------------------------------------------
+ /** check if the property "Privileges" supports ::com::sun::star::sdbcx::Privilege::INSERT
+ @param _rxCursorSet the property set
+ */
+ sal_Bool canInsert(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxCursorSet) const;
+
+ // ------------------------------------------------
+ /** check if the property "Privileges" supports ::com::sun::star::sdbcx::Privilege::UPDATE
+ @param _rxCursorSet the property set
+ */
+ sal_Bool canUpdate(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxCursorSet) const;
+
+ // ------------------------------------------------
+ /** check if the property "Privileges" supports ::com::sun::star::sdbcx::Privilege::DELETE
+ @param _rxCursorSet the property set
+ */
+ sal_Bool canDelete(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxCursorSet) const;
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
+ getFieldsByCommandDescriptor(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
+ const sal_Int32 _nCommandType,
+ const ::rtl::OUString& _rCommand,
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _rxKeepFieldsAlive,
+ ::dbtools::SQLExceptionInfo* _pErrorInfo = NULL
+ ) SAL_THROW( ( ) );
+
+ // ------------------------------------------------
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >
+ getFieldNamesByCommandDescriptor(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
+ const sal_Int32 _nCommandType,
+ const ::rtl::OUString& _rCommand,
+ ::dbtools::SQLExceptionInfo* _pErrorInfo = NULL
+ ) SAL_THROW( ( ) );
+
+ // ------------------------------------------------
+ bool isEmbeddedInDatabase(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent,
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxActualConnection
+ );
+
+ // ------------------------------------------------
+ bool isEmbeddedInDatabase(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent
+ );
+ };
+
+ //====================================================================
+ //= DBToolsObjectFactory
+ //====================================================================
+ class SVX_DLLPUBLIC DBToolsObjectFactory : public ODbtoolsClient
+ {
+ public:
+ DBToolsObjectFactory();
+ ~DBToolsObjectFactory();
+
+ // ------------------------------------------------
+ ::std::auto_ptr< ::dbtools::FormattedColumnValue > createFormattedColumnValue(
+ const ::comphelper::ComponentContext& _rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& _rxRowSet,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColumn
+ );
+ };
+
+//........................................................................
+} // namespace svxform
+//........................................................................
+
+#endif // SVX_DBTOOLSCLIENT_HXX
+
+
diff --git a/svx/inc/svx/def3d.hxx b/svx/inc/svx/def3d.hxx
new file mode 100644
index 000000000000..57f68cd7805b
--- /dev/null
+++ b/svx/inc/svx/def3d.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_DEF3D_HXX
+#define _SVX_DEF3D_HXX
+
+#ifndef _INC_MATH
+#include <math.h>
+#endif
+#include <tools/solar.h>
+
+const double fPiDiv180 = 0.01745329251994;
+const double EPSILON = 1e-06;
+
+#define DEG2RAD(fAngle) (fPiDiv180 * (fAngle))
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+//+++ 3D-Hilfsfunktionen +++++++++++++++++++++++++++++++++++++++++++++++++
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+enum E3dDragConstraint { E3DDRAG_CONSTR_X = 0x0001,
+ E3DDRAG_CONSTR_Y = 0x0002,
+ E3DDRAG_CONSTR_Z = 0x0004,
+ E3DDRAG_CONSTR_XY = 0x0003,
+ E3DDRAG_CONSTR_XZ = 0x0005,
+ E3DDRAG_CONSTR_YZ = 0x0006,
+ E3DDRAG_CONSTR_XYZ = 0x0007
+};
+
+#endif
diff --git a/svx/inc/svx/deflt3d.hxx b/svx/inc/svx/deflt3d.hxx
new file mode 100644
index 000000000000..cfd05a652fe0
--- /dev/null
+++ b/svx/inc/svx/deflt3d.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_DEFLT3D_HXX
+#define _E3D_DEFLT3D_HXX
+
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include "svx/svxdllapi.h"
+#include <tools/color.hxx>
+
+/*************************************************************************
+|*
+|* Klasse zum verwalten der 3D-Default Attribute
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dDefaultAttributes
+{
+private:
+ // Compound-Objekt
+ Color aDefaultAmbientColor;
+ BOOL bDefaultCreateNormals;
+ BOOL bDefaultCreateTexture;
+
+ // Cube-Objekt
+ basegfx::B3DPoint aDefaultCubePos;
+ basegfx::B3DVector aDefaultCubeSize;
+ UINT16 nDefaultCubeSideFlags;
+ BOOL bDefaultCubePosIsCenter;
+
+ // Sphere-Objekt
+ basegfx::B3DPoint aDefaultSphereCenter;
+ basegfx::B3DVector aDefaultSphereSize;
+
+ // Lathe-Objekt
+ long nDefaultLatheEndAngle;
+ BOOL bDefaultLatheSmoothed;
+ BOOL bDefaultLatheSmoothFrontBack;
+ BOOL bDefaultLatheCharacterMode;
+ BOOL bDefaultLatheCloseFront;
+ BOOL bDefaultLatheCloseBack;
+
+ // Extrude-Objekt
+ BOOL bDefaultExtrudeSmoothed;
+ BOOL bDefaultExtrudeSmoothFrontBack;
+ BOOL bDefaultExtrudeCharacterMode;
+ BOOL bDefaultExtrudeCloseFront;
+ BOOL bDefaultExtrudeCloseBack;
+
+public:
+ // Konstruktor
+ E3dDefaultAttributes();
+
+ // Defaults zuruecksetzen
+ void Reset();
+
+ // Getter/Setter fuer Default-Werte aller 3D-Objekte
+ // Compound-Objekt
+ const Color& GetDefaultAmbientColor() { return aDefaultAmbientColor; }
+ void SetDefaultAmbientColor(const Color& rNew) { aDefaultAmbientColor = rNew; }
+
+ BOOL GetDefaultCreateNormals() const { return bDefaultCreateNormals; }
+ void SetDefaultCreateNormals(const BOOL bNew) { bDefaultCreateNormals = bNew; }
+ BOOL GetDefaultCreateTexture() const { return bDefaultCreateTexture; }
+ void SetDefaultCreateTexture(const BOOL bNew) { bDefaultCreateTexture = bNew; }
+
+ // Cube-Objekt
+ const basegfx::B3DPoint& GetDefaultCubePos() { return aDefaultCubePos; }
+ void SetDefaultCubePos(const basegfx::B3DPoint& rNew) { aDefaultCubePos = rNew; }
+ const basegfx::B3DVector& GetDefaultCubeSize() { return aDefaultCubeSize; }
+ void SetDefaultCubeSize(const basegfx::B3DVector& rNew) { aDefaultCubeSize = rNew; }
+ UINT16 GetDefaultCubeSideFlags() const { return nDefaultCubeSideFlags; }
+ void SetDefaultCubeSideFlags(const UINT16 nNew) { nDefaultCubeSideFlags = nNew; }
+ BOOL GetDefaultCubePosIsCenter() const { return bDefaultCubePosIsCenter; }
+ void SetDefaultCubePosIsCenter(const BOOL bNew) { bDefaultCubePosIsCenter = bNew; }
+
+ // Sphere-Objekt
+ const basegfx::B3DPoint& GetDefaultSphereCenter() { return aDefaultSphereCenter; }
+ void SetDefaultSphereCenter(const basegfx::B3DPoint& rNew) { aDefaultSphereCenter = rNew; }
+ const basegfx::B3DVector& GetDefaultSphereSize() { return aDefaultSphereSize; }
+ void SetDefaultSphereSize(const basegfx::B3DPoint& rNew) { aDefaultSphereSize = rNew; }
+
+ // Lathe-Objekt
+ long GetDefaultLatheEndAngle() const { return nDefaultLatheEndAngle; }
+ void SetDefaultLatheEndAngle(const long nNew) { nDefaultLatheEndAngle = nNew; }
+ BOOL GetDefaultLatheSmoothed() const { return bDefaultLatheSmoothed; }
+ void SetDefaultLatheSmoothed(const BOOL bNew) { bDefaultLatheSmoothed = bNew; }
+ BOOL GetDefaultLatheSmoothFrontBack() const { return bDefaultLatheSmoothFrontBack; }
+ void SetDefaultLatheSmoothFrontBack(const BOOL bNew) { bDefaultLatheSmoothFrontBack = bNew; }
+ BOOL GetDefaultLatheCharacterMode() const { return bDefaultLatheCharacterMode; }
+ void SetDefaultLatheCharacterMode(const BOOL bNew) { bDefaultLatheCharacterMode = bNew; }
+ BOOL GetDefaultLatheCloseFront() const { return bDefaultLatheCloseFront; }
+ void SetDefaultLatheCloseFront(const BOOL bNew) { bDefaultLatheCloseFront = bNew; }
+ BOOL GetDefaultLatheCloseBack() const { return bDefaultLatheCloseBack; }
+ void SetDefaultLatheCloseBack(const BOOL bNew) { bDefaultLatheCloseBack = bNew; }
+
+ // Extrude-Objekt
+ BOOL GetDefaultExtrudeSmoothed() const { return bDefaultExtrudeSmoothed; }
+ void SetDefaultExtrudeSmoothed(const BOOL bNew) { bDefaultExtrudeSmoothed = bNew; }
+ BOOL GetDefaultExtrudeSmoothFrontBack() const { return bDefaultExtrudeSmoothFrontBack; }
+ void SetDefaultExtrudeSmoothFrontBack(const BOOL bNew) { bDefaultExtrudeSmoothFrontBack = bNew; }
+ BOOL GetDefaultExtrudeCharacterMode() const { return bDefaultExtrudeCharacterMode; }
+ void SetDefaultExtrudeCharacterMode(const BOOL bNew) { bDefaultExtrudeCharacterMode = bNew; }
+ BOOL GetDefaultExtrudeCloseFront() const { return bDefaultExtrudeCloseFront; }
+ void SetDefaultExtrudeCloseFront(const BOOL bNew) { bDefaultExtrudeCloseFront = bNew; }
+ BOOL GetDefaultExtrudeCloseBack() const { return bDefaultExtrudeCloseBack; }
+ void SetDefaultExtrudeCloseBack(const BOOL bNew) { bDefaultExtrudeCloseBack = bNew; }
+};
+
+#endif // _E3D_DEFLT3D_HXX
diff --git a/svx/inc/svx/dialmgr.hxx b/svx/inc/svx/dialmgr.hxx
new file mode 100644
index 000000000000..8c29edc04620
--- /dev/null
+++ b/svx/inc/svx/dialmgr.hxx
@@ -0,0 +1,49 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_DIALMGR_HXX
+#define _SVX_DIALMGR_HXX
+
+// include ---------------------------------------------------------------
+
+#include <tools/resid.hxx>
+#include "svx/svxdllapi.h"
+
+// forward ---------------------------------------------------------------
+
+class ResMgr;
+struct SVX_DLLPUBLIC DialogsResMgr
+{
+ static ResMgr* GetResMgr();
+};
+
+#define DIALOG_MGR() (*DialogsResMgr::GetResMgr())
+#define SVX_RES(i) ResId(i,DIALOG_MGR())
+#define SVX_RESSTR(i) UniString(ResId(i,DIALOG_MGR()))
+#define SVX_RESSSTR(i) String(ResId(i,DIALOG_MGR()))
+
+#endif
+
diff --git a/svx/inc/svx/dialogs.hrc b/svx/inc/svx/dialogs.hrc
new file mode 100755
index 000000000000..d193652b57fc
--- /dev/null
+++ b/svx/inc/svx/dialogs.hrc
@@ -0,0 +1,1055 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_DIALOGS_HRC
+#define _SVX_DIALOGS_HRC
+
+// include ------------------------------------------------------------------
+
+#include <svx/svxids.hrc>
+#include <sfx2/dialogs.hrc>
+
+// Resource-Id's ------------------------------------------------------------
+
+// Bitte FIRSTFREE pflegen!!! (gilt nicht f"ur Strings)
+#define RID_SVX_FIRSTFREE 305
+
+// some strings also used in CUI
+#define RID_SVXERRCTX (RID_SVX_START + 351)
+#define RID_SVXSTR_COLOR (RID_SVX_START + 179)
+#define RID_SVXSTR_TRANSPARENT (RID_SVX_START + 190)
+#define RID_SVXSTR_AUTOMATIC (RID_SVX_START + 841)
+#define RID_SVXSTR_INVISIBLE (RID_SVX_START + 178)
+#define RID_SVXSTR_NONE (RID_SVX_START + 183)
+#define RID_SVXSTR_SOLID (RID_SVX_START + 160)
+#define RID_SVXSTR_LINEEND (RID_SVX_START + 237)
+#define RID_SVXSTR_GRADIENT (RID_SVX_START + 161)
+#define RID_SVXSTR_HATCH (RID_SVX_START + 180)
+#define RID_SVXSTR_BITMAP (RID_SVX_START + 167)
+#define RID_SVXSTR_LINESTYLE (RID_SVX_START + 173)
+#define RID_SVXSTR_FIELDUNIT_TABLE (RID_SVX_START + 311)
+#define RID_SVXSTR_COLOR_USER (RID_SVX_START + 250)
+
+// factory IDs of tabpages implemented in CUI
+#define RID_SVXPAGE_CHAR_TWOLINES (RID_SVX_START + 242)
+#define RID_SVXPAGE_EXT_PARAGRAPH (RID_SVX_START + 7)
+#define RID_SVXPAGE_GRFCROP (RID_SVX_START + 238)
+#define RID_SVXPAGE_CHAR_NAME (RID_SVX_START + 239)
+#define RID_SVXPAGE_CHAR_EFFECTS (RID_SVX_START + 240)
+#define RID_SVXPAGE_CHAR_POSITION (RID_SVX_START + 241)
+#define RID_SVXPAGE_STD_PARAGRAPH (RID_SVX_START + 6)
+#define RID_SVXPAGE_ALIGN_PARAGRAPH (RID_SVX_START + 187)
+#define RID_SVXPAGE_PARA_ASIAN (RID_SVX_START + 245)
+#define RID_SVXPAGE_TABULATOR (RID_SVX_START + 2)
+#define RID_SFXPAGE_DBREGISTER (RID_OFA_START + 123)
+#define RID_SVXPAGE_NUMBERFORMAT (RID_SVX_START + 41)
+#define RID_SVXPAGE_ALIGNMENT (RID_SVX_START + 90)
+#define RID_SVXPAGE_BORDER (RID_SVX_START + 5)
+#define RID_SVXPAGE_BACKGROUND (RID_SVX_START + 1)
+#define RID_SVXPAGE_PAGE (RID_SVX_START + 25)
+#define RID_SVXPAGE_LINE (RID_SVX_START + 51)
+#define RID_SVXPAGE_AREA (RID_SVX_START + 56)
+#define RID_SVXPAGE_SHADOW (RID_SVX_START + 61)
+#define RID_SVXPAGE_TRANSPARENCE (RID_SVX_START + 54)
+#define RID_SVXPAGE_TEXTATTR (RID_SVX_START + 153)
+#define RID_SVXPAGE_TEXTANIMATION (RID_SVX_START + 184)
+#define RID_SVXPAGE_MEASURE (RID_SVX_START + 161)
+#define RID_SVXPAGE_CONNECTION (RID_SVX_START + 191)
+#define RID_SVXPAGE_LINE_DEF (RID_SVX_START + 52)
+#define RID_SVXPAGE_LINEEND_DEF (RID_SVX_START + 53)
+#define RID_SVXPAGE_NUM_OPTIONS (RID_SVX_START + 219)
+#define RID_SVXPAGE_NUM_POSITION (RID_SVX_START + 220)
+#define RID_SVXPAGE_PICK_SINGLE_NUM (RID_SVX_START + 215)
+#define RID_SVXPAGE_PICK_BULLET (RID_SVX_START + 216)
+#define RID_SVXPAGE_PICK_NUM (RID_SVX_START + 217)
+#define RID_SVXPAGE_PICK_BMP (RID_SVX_START + 218)
+#define RID_SVXPAGE_CAPTION (RID_SVX_START + 150)
+#define RID_SVXPAGE_SWPOSSIZE (RID_SVX_START + 288)
+#define RID_SVXPAGE_POSITION_SIZE (RID_SVX_START + 87)
+#define RID_SVXPAGE_EVENTASSIGN (RID_SVX_START + 303)
+#define RID_SVXPAGE_HATCH (RID_SVX_START + 57)
+#define RID_SVXPAGE_BITMAP (RID_SVX_START + 58)
+#define RID_SVXPAGE_GRADIENT (RID_SVX_START + 59)
+#define RID_SVXPAGE_ANGLE (RID_SVX_START + 48)
+#define RID_SVXPAGE_SLANT (RID_SVX_START + 49)
+#define RID_SVXPAGE_DISTRIBUTE (RID_SVX_START + 236)
+#define RID_SVXPAGE_IMPROVEMENT (RID_SVX_START + 302)
+#define RID_SVXPAGE_MACROASSIGN (RID_SVX_START + 296)
+
+
+// why extra defines for pages that already exist?
+#define RID_SCH_TransformTabDLG_SVXPAGE_ANGLE (RID_SVX_START + 998)
+#define RID_SCH_TransformTabDLG_SVXPAGE_SLANT (RID_SVX_START + 999)
+
+// ID of tabpages implemented in SVX, but used in CUI
+#define RID_SVXPAGE_GRID (RID_SVX_START + 152)
+
+// factory IDs of dialogs implemented in CUI
+#define RID_SVX_GRFFILTER_DLG_SEPIA (RID_SVX_START + 334)
+#define RID_SVX_GRFFILTER_DLG_POSTER (RID_SVX_START + 335)
+#define RID_SVX_GRFFILTER_DLG_MOSAIC (RID_SVX_START + 332)
+#define RID_SVX_GRFFILTER_DLG_SOLARIZE (RID_SVX_START + 333)
+#define RID_SVX_GRFFILTER_DLG_EMBOSS (RID_SVX_START + 336)
+#define RID_SVXDLG_SEARCHFORMAT (RID_SVX_START + 21)
+#define RID_SVXDLG_CHARMAP ( RID_SVX_START + 10 )
+#define RID_SVXDLG_POSTIT ( RID_SVX_START + 8 )
+
+// only needed for layout:
+#define RID_SVXDLG_ZOOM ( RID_SVX_START + 0 )
+
+// IDs of options pages of applications
+#define RID_SW_TP_MAILCONFIG (RID_OFA_START + 102)
+#define RID_SW_TP_STD_FONT_CJK (RID_OFA_START + 247)
+#define RID_SW_TP_STD_FONT_CTL (RID_OFA_START + 251)
+#define RID_SW_TP_OPTLOAD_PAGE (RID_OFA_START + 214)
+#define RID_SW_TP_CONTENT_OPT (RID_OFA_START + 206)
+#define RID_SW_TP_OPTSHDWCRSR (RID_OFA_START + 211)
+#define RID_SW_TP_STD_FONT (RID_OFA_START + 208)
+#define RID_SW_TP_OPTPRINT_PAGE (RID_OFA_START + 209)
+#define RID_SW_TP_OPTTABLE_PAGE (RID_OFA_START + 210)
+#define RID_SW_TP_REDLINE_OPT (RID_OFA_START + 212)
+#define RID_SW_TP_OPTCOMPATIBILITY_PAGE (RID_OFA_START + 255)
+#define RID_SW_TP_HTML_CONTENT_OPT (RID_OFA_START + 240)
+#define RID_SW_TP_HTML_OPTPRINT_PAGE (RID_OFA_START + 242)
+#define RID_SW_TP_HTML_OPTTABLE_PAGE (RID_OFA_START + 243)
+#define RID_SW_TP_HTML_OPTGRID_PAGE (RID_OFA_START + 244)
+#define RID_SW_TP_HTML_OPTSHDWCRSR (RID_OFA_START + 246)
+#define RID_SW_TP_BACKGROUND (RID_OFA_START + 217)
+#define RID_SW_TP_OPTCAPTION_PAGE (RID_OFA_START + 256)
+#define SID_SC_TP_LAYOUT (RID_OFA_START + 218)
+#define SID_SC_TP_CONTENT (RID_OFA_START + 219)
+#define SID_SC_TP_INPUT (RID_OFA_START + 220)
+#define SID_SC_TP_GRID (RID_OFA_START + 221)
+#define SID_SC_TP_USERLISTS (RID_OFA_START + 222)
+#define SID_SC_TP_CALC (RID_OFA_START + 223)
+#define SID_SC_TP_CHANGES (RID_OFA_START + 224)
+#define RID_SC_TP_PRINT (RID_OFA_START + 248)
+#define SID_SI_TP_PRINT (RID_OFA_START + 236)
+#define SID_SI_TP_CONTENTS (RID_OFA_START + 232)
+#define SID_SI_TP_SNAP (RID_OFA_START + 234)
+#define SID_SI_TP_MISC (RID_OFA_START + 237)
+#define SID_SD_TP_PRINT (RID_OFA_START + 220)
+#define SID_SD_TP_CONTENTS (RID_OFA_START + 225)
+#define SID_SD_TP_SNAP (RID_OFA_START + 227)
+#define SID_SD_TP_MISC (RID_OFA_START + 231)
+#define RID_OFA_TP_INTERNATIONAL_SD (RID_OFA_START + 253)
+#define RID_OFA_TP_INTERNATIONAL_IMPR (RID_OFA_START + 254)
+#define RID_OFA_TP_INTERNATIONAL (RID_OFA_START + 252) // calc
+
+//---------------------------------------------------------------------
+// ResId's fuer die Zeichen-TabPages
+#define RID_SVXPAGE_CHAR_STD (RID_SVX_START + 3)
+#define RID_SVXPAGE_CHAR_EXT (RID_SVX_START + 4)
+
+// moved ids +8 ... +17 to "ModalDialog" resource ids
+
+// ResId fuer den Suchen/Ersetzen-Dialog
+#define RID_SVXDLG_SEARCH (RID_SVX_START + 20)
+
+// ResId fuer die PageDialog
+#define RID_SVXPAGE_FOOTER (RID_SVX_START + 26)
+#define RID_SVXPAGE_HEADER (RID_SVX_START + 27)
+#define RID_SVXQBX_DELETE_HEADFOOT (RID_SVX_START + 28)
+
+// ResId's fuer Dialoge aus StarDraw
+#define RID_SVXPAGE_POSITION (RID_SVX_START + 46)
+#define RID_SVXPAGE_SIZE (RID_SVX_START + 47)
+#define RID_SVXSW_FRAMEPOSITIONS (RID_SVX_START + 289)
+
+#define RID_SVXIL_FRAME (RID_SVX_START + 65)
+#define RID_SVXIL_FRAME_HC (RID_SVX_START + 66)
+
+#define RID_SVXDLG_3D (RID_SVX_START + 70)
+#define RID_SVXPAGE_LIGHT3D (RID_SVX_START + 71)
+#define RID_SVXPAGE_3DATTR (RID_SVX_START + 72)
+#define RID_SVXFLOAT_3D (RID_SVX_START + 209)
+
+#define RID_SVXIMAGE_LIGHT_ON (RID_SVX_START + 210)
+#define RID_SVXIMAGE_LIGHT_OFF (RID_SVX_START + 211)
+#define RID_SVXIMAGE_LIGHT_ON_H (RID_SVX_START + 212)
+#define RID_SVXIMAGE_LIGHT_OFF_H (RID_SVX_START + 213)
+#define RID_SVXIMAGE_COLORDLG (RID_SVX_START + 214)
+#define RID_SVXIMAGE_COLORDLG_H (RID_SVX_START + 215)
+
+#define RID_SVXFLOAT3D_FAVORITE (RID_SVX_START + 73)
+#define RID_SVXFLOAT3D_FIX_X (RID_SVX_START + 74)
+#define RID_SVXFLOAT3D_FIX_Y (RID_SVX_START + 75)
+#define RID_SVXFLOAT3D_FIX_Z (RID_SVX_START + 76)
+#define RID_SVXFLOAT3D_FIX_R (RID_SVX_START + 77)
+#define RID_SVXFLOAT3D_FIX_G (RID_SVX_START + 78)
+#define RID_SVXFLOAT3D_FIX_B (RID_SVX_START + 84)
+
+// Ids fuer FrameBitmaps durch ImageList ersetzt
+// 67 bis 72 frei
+
+// ResId fuer den Gitter- und Raster-Dialog
+#define RID_SVXDLG_GRID (RID_SVX_START + 79)
+
+// ResId's fuer FontMenu-Controls
+#define RID_MN_FONTSIZE (RID_SVX_START + 80)
+
+// ResId's fuer Undo-TbxControls
+#define RID_SVXTBX_UNDO (RID_SVX_START + 81)
+
+// ResId fuer Zoom-Popup-Menue
+#define RID_SVXMNU_ZOOM (RID_SVX_START + 82)
+
+// ResId fuer Funktions-Popup-Menue
+#define RID_SVXMNU_PSZ_FUNC (RID_SVX_START + 83)
+#define RID_SVXMNU_XMLSECSTATBAR (RID_SVX_START + 84)
+
+// ResId fuer Position- und Size-Bitmap
+#define RID_SVXBMP_POSITION (RID_SVX_START + 85)
+#define RID_SVXBMP_SIZE (RID_SVX_START + 86)
+
+#define RID_SVXBMP_SIGNET (RID_SVX_START + 87)
+#define RID_SVXBMP_SIGNET_H (RID_SVX_START + 88)
+#define RID_SVXBMP_SIGNET_BROKEN (RID_SVX_START + 89)
+#define RID_SVXBMP_SIGNET_BROKEN_H (RID_SVX_START + 90)
+#define RID_SVXBMP_SIGNET_NOTVALIDATED (RID_SVX_START + 91)
+#define RID_SVXBMP_SIGNET_NOTVALIDATED_H (RID_SVX_START + 92)
+
+#define RID_SVXBMP_SLIDERBUTTON (RID_SVX_START + 67)
+#define RID_SVXBMP_SLIDERDECREASE (RID_SVX_START + 68)
+#define RID_SVXBMP_SLIDERINCREASE (RID_SVX_START + 69)
+#define RID_SVXBMP_SLIDERBUTTON_HC (RID_SVX_START + 70)
+#define RID_SVXBMP_SLIDERDECREASE_HC (RID_SVX_START + 71)
+#define RID_SVXBMP_SLIDERINCREASE_HC (RID_SVX_START + 72)
+
+// Resource mit Bitmaps fuer die CheckListBox
+#define RID_CHECKLISTBOX_BITMAPS (RID_SVX_START + 91)
+
+// Menu fuers Lineal
+#define RID_SVXMN_RULER (RID_SVX_START + 92)
+
+// FontWork-Dialog
+#define RID_SVXDLG_FONTWORK (RID_SVX_START + 93)
+
+// FontWork-ValueSet-Bitmaps
+#define RID_SVXBMP_FONTWORK_FORM1 (RID_SVX_START + 94)
+#define RID_SVXBMP_FONTWORK_FORM2 (RID_SVX_START + 95)
+#define RID_SVXBMP_FONTWORK_FORM3 (RID_SVX_START + 96)
+#define RID_SVXBMP_FONTWORK_FORM4 (RID_SVX_START + 97)
+#define RID_SVXBMP_FONTWORK_FORM5 (RID_SVX_START + 98)
+#define RID_SVXBMP_FONTWORK_FORM6 (RID_SVX_START + 99)
+#define RID_SVXBMP_FONTWORK_FORM7 (RID_SVX_START + 100)
+#define RID_SVXBMP_FONTWORK_FORM8 (RID_SVX_START + 101)
+#define RID_SVXBMP_FONTWORK_FORM9 (RID_SVX_START + 102)
+#define RID_SVXBMP_FONTWORK_FORM10 (RID_SVX_START + 103)
+#define RID_SVXBMP_FONTWORK_FORM11 (RID_SVX_START + 104)
+#define RID_SVXBMP_FONTWORK_FORM12 (RID_SVX_START + 105)
+
+#define RID_SVXBMP_SHADOW_XDIST (RID_SVX_START + 110)
+#define RID_SVXBMP_SHADOW_YDIST (RID_SVX_START + 111)
+#define RID_SVXBMP_SHADOW_ANGLE (RID_SVX_START + 112)
+#define RID_SVXBMP_SHADOW_SIZE (RID_SVX_START + 113)
+
+#define RID_SVXCTRL_COLOR (RID_SVX_START + 117)
+
+// fuer ToolboxControl-Style
+#define RID_SVXTBX_STYLE (RID_SVX_START + 120)
+
+#define RID_SVXDLG_HYPERLINK (RID_SVX_START + 140)
+#define RID_SVXDLG_PASSWORD (RID_SVX_START + 141)
+
+// ResId fuer InternetPage
+#define RID_SVXPAGE_INTERNET (RID_SVX_START + 154)
+
+//InetDlg
+#define RID_SVXPAGE_INET_CACHE (RID_SVX_START + 158)
+#define RID_SVXPAGE_INET_TYPE (RID_SVX_START + 159)
+
+#define RID_SVXPAGE_BROWSER_OTHER (RID_SVX_START + 202)
+#define RID_CACHE_EXTRA_DLG (RID_SVX_START + 203)
+
+// OnlineRegistration
+#define RID_SVXDLG_REGISTER (RID_SVX_START + 193)
+#define RID_SVXPAGE_REGISTER_1 (RID_SVX_START + 194)
+#define RID_SVXPAGE_REGISTER_2 (RID_SVX_START + 195)
+#define RID_SVXPAGE_REGISTER_3 (RID_SVX_START + 196)
+#define RID_SVXPAGE_REGISTER_4 (RID_SVX_START + 197)
+#define RID_SVXPAGE_REGISTER_5 (RID_SVX_START + 198)
+#define RID_SVXPAGE_REGISTER_6 (RID_SVX_START + 199)
+
+// 3D-Entfernung/Perspektive Bitmaps
+#define RID_SVXBMP_3D_DISTANCE_01 (RID_SVX_START + 162)
+#define RID_SVXBMP_3D_DISTANCE_02 (RID_SVX_START + 163)
+#define RID_SVXBMP_3D_DISTANCE_03 (RID_SVX_START + 164)
+#define RID_SVXBMP_3D_DISTANCE_04 (RID_SVX_START + 165)
+#define RID_SVXBMP_3D_DISTANCE_05 (RID_SVX_START + 166)
+#define RID_SVXBMP_3D_DISTANCE_06 (RID_SVX_START + 167)
+#define RID_SVXBMP_3D_DISTANCE_07 (RID_SVX_START + 168)
+#define RID_SVXBMP_3D_DISTANCE_08 (RID_SVX_START + 169)
+#define RID_SVXBMP_3D_DISTANCE_09 (RID_SVX_START + 170)
+#define RID_SVXBMP_3D_DISTANCE_10 (RID_SVX_START + 171)
+
+#define RID_SVXBMP_3D_FOCAL_LENGTH_01 (RID_SVX_START + 172)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_02 (RID_SVX_START + 173)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_03 (RID_SVX_START + 174)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_04 (RID_SVX_START + 175)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_05 (RID_SVX_START + 176)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_06 (RID_SVX_START + 177)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_07 (RID_SVX_START + 178)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_08 (RID_SVX_START + 179)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_09 (RID_SVX_START + 180)
+#define RID_SVXBMP_3D_FOCAL_LENGTH_10 (RID_SVX_START + 181)
+
+// fuer ToolboxControls Alignment und Drawobjekte
+#define RID_SVXTBX_DRAW (RID_SVX_START + 189)
+#define RID_SVXTBX_ALIGNMENT (RID_SVX_START + 190)
+
+// Ids fuer Autokorrektur
+#define RID_SVX_AUTOCORR (RID_SVX_START + 192)
+
+// Auswahl ext. Linguitik
+#define RID_SVX_OPT_EXT_LINGU (RID_SVX_START + 193)
+
+// TabPage und Dialog f"ur LDAP-Server
+#define RID_SVXPAGE_LDAP (RID_SVX_START + 204)
+#define RID_SVXDLG_LDAP (RID_SVX_START + 205)
+
+// Dialog fuer Funktionen
+#define RID_SVXDLG_CALCFUNC (RID_SVX_START + 206)
+
+// QueryBox for Exit Recovery Wizard
+#define RID_SVXQB_EXIT_RECOVERY (RID_SVX_START + 215)
+
+// ResId fuer den ImportGraphic-Dialog
+#define RID_SVXRES_IMPORTGRAPHIC (RID_SVX_START + 499)
+
+
+#define RID_SVXCTRL_RECTBTNS (RID_SVX_START + 226)
+
+// ResId's f???r Hyperlink-Dialog-Tabpages
+
+// ResId's for Starone impl. bitmaps
+#define RID_UNODRAW_OBJECTS (RID_SVX_START + 233)
+#define RID_UNODRAW_OLE2 (RID_SVX_START + 234)
+#define RID_UNODRAW_GRAPHICS (RID_SVX_START + 235)
+
+#define RID_SVXIMG_NOTCHECKED (RID_SVX_START + 243)
+#define RID_SVXIMG_CHECKED (RID_SVX_START + 244)
+
+#define RID_SVXDLG_RUBY (RID_SVX_START + 247)
+
+#define RID_SVXBMP_FONTWORK_FORM1_H (RID_SVX_START + 260)
+#define RID_SVXBMP_FONTWORK_FORM2_H (RID_SVX_START + 261)
+#define RID_SVXBMP_FONTWORK_FORM3_H (RID_SVX_START + 262)
+#define RID_SVXBMP_FONTWORK_FORM4_H (RID_SVX_START + 263)
+#define RID_SVXBMP_FONTWORK_FORM5_H (RID_SVX_START + 264)
+#define RID_SVXBMP_FONTWORK_FORM6_H (RID_SVX_START + 265)
+#define RID_SVXBMP_FONTWORK_FORM7_H (RID_SVX_START + 266)
+#define RID_SVXBMP_FONTWORK_FORM8_H (RID_SVX_START + 267)
+#define RID_SVXBMP_FONTWORK_FORM9_H (RID_SVX_START + 268)
+#define RID_SVXBMP_FONTWORK_FORM10_H (RID_SVX_START + 269)
+#define RID_SVXBMP_FONTWORK_FORM11_H (RID_SVX_START + 270)
+#define RID_SVXBMP_FONTWORK_FORM12_H (RID_SVX_START + 271)
+#define RID_SVXIMG_GRAF_RED_H (RID_SVX_START + 276)
+#define RID_SVXIMG_GRAF_GREEN_H (RID_SVX_START + 277)
+#define RID_SVXIMG_GRAF_BLUE_H (RID_SVX_START + 278)
+#define RID_SVXIMG_GRAF_LUMINANCE_H (RID_SVX_START + 279)
+#define RID_SVXIMG_GRAF_CONTRAST_H (RID_SVX_START + 280)
+#define RID_SVXIMG_GRAF_GAMMA_H (RID_SVX_START + 281)
+#define RID_SVXIMG_GRAF_TRANSPARENCE_H (RID_SVX_START + 282)
+#define RID_SVXIMG_CHECKED_H (RID_SVX_START + 285)
+
+#define RID_SVXDLG_TEXTCONTROL_CHARATTR (RID_SVX_START + 286)
+#define RID_SVXDLG_TEXTCONTROL_PARAATTR (RID_SVX_START + 287)
+
+// !!! please update RID_SVX_FIRSTFREE !!! see line 46
+
+// Strings ------------------------------------------------------------------
+
+
+// Strings fuer die Sprachen (HM-Abhaengig)
+#define RID_SVXSTR_LANGUAGE_BEGIN (RID_SVX_START + 0)
+#define RID_SVXSTR_LANGUAGE_ALL (RID_SVX_START + 15)
+
+// Messages im DBMgr-Bereich
+#define RID_SVXSTR_DBINI (RID_SVX_START + 60)
+#define RID_SVXSTR_DBDRV (RID_SVX_START + 61)
+#define RID_SVXSTR_NODBDRV (RID_SVX_START + 62)
+#define RID_SVXSTR_DBCANTOPEN (RID_SVX_START + 63)
+#define RID_SVXSTR_DBINACTIVE (RID_SVX_START + 64)
+#define RID_SVXSTR_SELECT (RID_SVX_START + 65)
+#define RID_SVXSTR_DESELECT (RID_SVX_START + 66)
+#define RID_SVXSTR_MERGE (RID_SVX_START + 67)
+#define RID_SVXSTR_INSERT (RID_SVX_START + 68)
+#define RID_SVXSTR_NOSELECT (RID_SVX_START + 69)
+#define RID_SVXSTR_CANT_OPEN_DB (RID_SVX_START + 70)
+#define RID_SVXSTR_INVALID_RECORD (RID_SVX_START + 71)
+#define RID_SVXSTR_NOSET_MATCHING (RID_SVX_START + 72)
+
+// Strings aus dem Suchen-Dialog
+#define RID_SVXSTR_SEARCH_STYLES (RID_SVX_START + 80)
+#define RID_SVXSTR_SEARCH (RID_SVX_START + 81)
+#define RID_SVXSTR_REPLACE (RID_SVX_START + 82)
+
+#define RID_SVXSTR_FULLSIZE (RID_SVX_START + 144)
+
+// ResIds fuer die verschiedenen Strings des PageDlgs
+#define RID_SVXSTR_CALC_PAGE (RID_SVX_START + 146)
+#define RID_SVXSTR_DRAW_PAGE (RID_SVX_START + 147)
+
+// Strings der ToolBox-Controls aus tbcontrl.cxx
+#define RID_SVXSTR_FILLPATTERN (RID_SVX_START + 191)
+#define RID_SVXSTR_FRAME (RID_SVX_START + 192)
+#define RID_SVXSTR_FRAME_COLOR (RID_SVX_START + 194)
+#define RID_SVXSTR_FRAME_STYLE (RID_SVX_START + 195)
+#define RID_SVXSTR_EXTRAS_CHARBACKGROUND (RID_SVX_START + 196)
+#define RID_SVXSTR_CLEARFORM (RID_SVX_START + 197)
+#define RID_SVXSTR_MORE (RID_SVX_START + 198)
+
+
+// Strings der UndoTbxControls
+#define RID_SVXSTR_UNDO (RID_SVX_START + 200)
+#define RID_SVXSTR_REDO (RID_SVX_START + 201)
+#define RID_SVXSTR_ACTION (RID_SVX_START + 202)
+#define RID_SVXSTR_ACTIONS (RID_SVX_START + 203)
+
+// Strings fuer Insert/Overwrite
+#define RID_SVXSTR_INSERT_TEXT (RID_SVX_START + 210)
+#define RID_SVXSTR_OVERWRITE_TEXT (RID_SVX_START + 211)
+
+// Strings fuer Selection Mode
+#define RID_SVXSTR_SELMODE_STD (RID_SVX_START + 212)
+#define RID_SVXSTR_SELMODE_ER (RID_SVX_START + 213)
+#define RID_SVXSTR_SELMODE_ERG (RID_SVX_START + 214)
+
+#define RID_SVXSTR_XMLSEC_SIG_OK (RID_SVX_START + 222)
+#define RID_SVXSTR_XMLSEC_SIG_OK_NO_VERIFY (RID_SVX_START + 223)
+#define RID_SVXSTR_XMLSEC_SIG_NOT_OK (RID_SVX_START + 224)
+#define RID_SVXSTR_XMLSEC_NO_SIG (RID_SVX_START + 225)
+#define RID_SVXSTR_XMLSEC_SIG_CERT_OK_PARTIAL_SIG (RID_SVX_START + 226)
+
+// weitere ID bei 219
+
+// String-ResId fuer den ImportGraphic-Dialog
+#define RID_SVXSTR_ALL_FILES (RID_SVX_START + 241)
+
+// Strings des Lineals
+#define RID_SVXSTR_RULER_START (RID_SVX_START + 245)
+#define RID_SVXSTR_RULER_TAB_LEFT (RID_SVX_START + 245)
+#define RID_SVXSTR_RULER_TAB_RIGHT (RID_SVX_START + 246)
+#define RID_SVXSTR_RULER_TAB_DECIMAL (RID_SVX_START + 247)
+#define RID_SVXSTR_RULER_TAB_CENTER (RID_SVX_START + 248)
+
+// Schlie"ssen (im TabDialog Line/Area)
+#define RID_SVXSTR_CLOSE (RID_SVX_START + 260)
+
+// FontWork-ValueSet-Strings
+#define RID_SVXSTR_FONTWORK_FORM1 (RID_SVX_START + 261)
+#define RID_SVXSTR_FONTWORK_FORM2 (RID_SVX_START + 262)
+#define RID_SVXSTR_FONTWORK_FORM3 (RID_SVX_START + 263)
+#define RID_SVXSTR_FONTWORK_FORM4 (RID_SVX_START + 264)
+#define RID_SVXSTR_FONTWORK_FORM5 (RID_SVX_START + 265)
+#define RID_SVXSTR_FONTWORK_FORM6 (RID_SVX_START + 266)
+#define RID_SVXSTR_FONTWORK_FORM7 (RID_SVX_START + 267)
+#define RID_SVXSTR_FONTWORK_FORM8 (RID_SVX_START + 268)
+#define RID_SVXSTR_FONTWORK_FORM9 (RID_SVX_START + 269)
+#define RID_SVXSTR_FONTWORK_FORM10 (RID_SVX_START + 270)
+#define RID_SVXSTR_FONTWORK_FORM11 (RID_SVX_START + 271)
+#define RID_SVXSTR_FONTWORK_FORM12 (RID_SVX_START + 272)
+#define RID_SVXSTR_FONTWORK_UNDOCREATE (RID_SVX_START + 273)
+
+// Farben-Strings
+#define RID_SVXSTR_BLACK (RID_SVX_START + 275)
+#define RID_SVXSTR_BLUE (RID_SVX_START + 276)
+#define RID_SVXSTR_GREEN (RID_SVX_START + 277)
+#define RID_SVXSTR_CYAN (RID_SVX_START + 278)
+#define RID_SVXSTR_RED (RID_SVX_START + 279)
+#define RID_SVXSTR_MAGENTA (RID_SVX_START + 280)
+#define RID_SVXSTR_BROWN (RID_SVX_START + 281)
+#define RID_SVXSTR_GREY (RID_SVX_START + 282)
+#define RID_SVXSTR_LIGHTGREY (RID_SVX_START + 283)
+#define RID_SVXSTR_LIGHTBLUE (RID_SVX_START + 284)
+#define RID_SVXSTR_LIGHTGREEN (RID_SVX_START + 285)
+#define RID_SVXSTR_LIGHTCYAN (RID_SVX_START + 286)
+#define RID_SVXSTR_LIGHTRED (RID_SVX_START + 287)
+#define RID_SVXSTR_LIGHTMAGENTA (RID_SVX_START + 288)
+#define RID_SVXSTR_YELLOW (RID_SVX_START + 289)
+#define RID_SVXSTR_WHITE (RID_SVX_START + 290)
+#define RID_SVXSTR_BLUEGREY (RID_SVX_START + 291)
+#define RID_SVXSTR_ORANGE (RID_SVX_START + 292)
+
+// Linienenden-Strings
+#define RID_SVXSTR_ARROW (RID_SVX_START + 300)
+#define RID_SVXSTR_SQUARE (RID_SVX_START + 301)
+#define RID_SVXSTR_CIRCLE (RID_SVX_START + 302)
+
+#define RID_SVXSTR_TRANSPARENCE (RID_SVX_START + 305)
+#define RID_SVXSTR_CENTERED (RID_SVX_START + 306)
+#define RID_SVXSTR_NOTCENTERED (RID_SVX_START + 307)
+
+// String-Arrays
+#define RID_SVXSTR_TEXTENCODING_TABLE (RID_SVX_START + 312)
+
+// Hyperlink-Dlg
+#define RID_SVXMN_HYPERLINK (RID_SVX_START + 321)
+// Hyperlink-QueryBoxen
+#define RID_SVXQB_NOCONNECT (RID_SVX_START + 322)
+#define RID_SVXQB_DONTEXIST (RID_SVX_START + 323)
+//color configuration
+
+// Graphic filter
+#define RID_SVX_GRFFILTER_START (RID_SVX_START + 330)
+#define RID_SVXTBX_GRFFILTER (RID_SVX_START + 331)
+
+#define RID_SVXERRCODE (RID_SVX_START + 350)
+
+// gallery
+#define RID_SVX_GALLERY_START (RID_SVX_START + 360)
+#define RID_SVX_GALLERY_END (RID_SVX_START + 410)
+
+#define RID_SVXSTR_MEM_ERROR (RID_SVX_START + 415)
+#define RID_SVXSTR_DLG_TITLE_INFO (RID_SVX_START + 416)
+
+// Define - Bereich fuer BmpMaskierung
+// !!! aus diesem Bereich keine Defines benutzen !!!
+#define RID_SVX_BMPMASK_START (RID_SVX_START + 420)
+#define RID_SVX_BMPMASK_END (RID_SVX_START + 440)
+
+// Define - Bereich fuer IMAP-Editor
+// !!! aus diesem Bereich keine Defines benutzen !!!
+#define RID_SVX_IMAP_START (RID_SVX_START + 450)
+#define RID_SVX_IMAP_END (RID_SVX_START + 460)
+
+// Define - Bereich fuer Contour-Editor
+// !!! aus diesem Bereich keine Defines benutzen !!!
+#define RID_SVX_CONTOUR_START (RID_SVX_START + 461)
+#define RID_SVX_CONTOUR_END (RID_SVX_START + 471)
+
+#define RID_SVXIMG_GRAF_RED (RID_SVX_START + 472)
+#define RID_SVXIMG_GRAF_GREEN (RID_SVX_START + 473)
+#define RID_SVXIMG_GRAF_BLUE (RID_SVX_START + 474)
+#define RID_SVXIMG_GRAF_LUMINANCE (RID_SVX_START + 475)
+#define RID_SVXIMG_GRAF_CONTRAST (RID_SVX_START + 476)
+#define RID_SVXIMG_GRAF_GAMMA (RID_SVX_START + 477)
+#define RID_SVXIMG_GRAF_TRANSPARENCE (RID_SVX_START + 478)
+
+#define RID_SVX_RELOAD_NORMAL (RID_SVX_START + 480)
+#define RID_SVX_RELOAD_SPECIAL (RID_SVX_START + 481)
+
+// Defines fuer die 3D-Engine
+#define RID_SVX_3D_UNDO_EXCHANGE_PASTE (RID_SVX_START + 489)
+#define RID_SVX_3D_CREATE_LATHE (RID_SVX_START + 490)
+#define RID_SVX_3D_UNDO_SEGMENTS (RID_SVX_START + 491)
+#define RID_SVX_3D_UNDO_DEEPTH (RID_SVX_START + 492)
+#define RID_SVX_3D_UNDO_FOCAL (RID_SVX_START + 493)
+#define RID_SVX_3D_UNDO_CAMPOS (RID_SVX_START + 494)
+#define RID_SVX_3D_UNDO_ROTATE (RID_SVX_START + 495)
+#define RID_SVX_3D_UNDO_EXTRUDE (RID_SVX_START + 496)
+#define RID_SVX_3D_UNDO_LATHE (RID_SVX_START + 497)
+#define RID_SVX_3D_UNDO_BREAK_LATHE (RID_SVX_START + 498)
+#define RID_SVX_3D_UNDO_ATTRIBUTES (RID_SVX_START + 499)
+
+#define RID_STR_FULLNUMS_START (RID_SVX_START + 500)//?
+#define RID_STR_FULLNUMS_1 (RID_STR_FULLNUMS_START )//?
+#define RID_STR_FULLNUMS_2 (RID_STR_FULLNUMS_START + 1)//?
+#define RID_STR_FULLNUMS_3 (RID_STR_FULLNUMS_START + 2)//?
+#define RID_STR_FULLNUMS_4 (RID_STR_FULLNUMS_START + 3)//?
+#define RID_STR_FULLNUMS_5 (RID_STR_FULLNUMS_START + 4)//?
+#define RID_STR_FULLNUMS_6 (RID_STR_FULLNUMS_START + 5)//?
+#define RID_STR_FULLNUMS_7 (RID_STR_FULLNUMS_START + 6)//?
+#define RID_STR_FULLNUMS_8 (RID_STR_FULLNUMS_START + 7)//?
+#define RID_STR_FULLNUMS_7_HTML (RID_SVX_START + 510)//?
+
+// RID_SVX_END == (RID_SVX_START + 499) !!!
+// am besten ab 520 frei (RB)
+// seit der Erfindung eigener Resourcen fuer jedes Projekt kann es hier keine
+// Obergrenze geben (abgesehen von USHRT_MAX) (os)
+#define RID_STR_BULLET_THEME (RID_SVX_START + 508)
+
+
+// ResIds for graphics drawmode
+#define RID_SVXSTR_GRAFMODE_STANDARD (RID_SVX_START + 520)
+#define RID_SVXSTR_GRAFMODE_GREYS (RID_SVX_START + 521)
+#define RID_SVXSTR_GRAFMODE_MONO (RID_SVX_START + 522)
+#define RID_SVXSTR_GRAFMODE_WATERMARK (RID_SVX_START + 523)
+
+
+// Strings for Plugin-Filedialog
+#define STR_INSERT_VIDEO_EXTFILTER_IVF (RID_SVX_START + 524)
+#define STR_INSERT_VIDEO_EXTFILTER_AVI (RID_SVX_START + 525)
+#define STR_INSERT_VIDEO_EXTFILTER_MOV (RID_SVX_START + 526)
+#define STR_INSERT_VIDEO_EXTFILTER_MPEG (RID_SVX_START + 527)
+#define STR_EXTFILTER_ALL (RID_SVX_START + 528)
+#define STR_INSERT_SOUND_TITLE (RID_SVX_START + 529)
+#define STR_INSERT_VIDEO_TITLE (RID_SVX_START + 530)
+
+#define RID_SVXSTR_BACKGROUND (RID_SVX_START + 531)
+
+// BM: some additional standard colors
+#define RID_SVXSTR_VIOLET (RID_SVX_START + 540)
+#define RID_SVXSTR_BORDEAUX (RID_SVX_START + 541)
+#define RID_SVXSTR_PALE_YELLOW (RID_SVX_START + 542)
+#define RID_SVXSTR_PALE_GREEN (RID_SVX_START + 543)
+#define RID_SVXSTR_DKVIOLET (RID_SVX_START + 544)
+#define RID_SVXSTR_SALMON (RID_SVX_START + 545)
+#define RID_SVXSTR_SEABLUE (RID_SVX_START + 546)
+#define RID_SVXSTR_COLOR_SUN (RID_SVX_START + 547)
+
+// JP: string resource ids for table-autoformat-names, used in SW/SC
+// !!! Urgent: the order of Ids is persistent. New Ids have to append !!!
+#define RID_SVXSTR_TBLAFMT_BEGIN (RID_SVX_START + 560)
+#define RID_SVXSTR_TBLAFMT_3D RID_SVXSTR_TBLAFMT_BEGIN
+#define RID_SVXSTR_TBLAFMT_BLACK1 (RID_SVX_START + 561)
+#define RID_SVXSTR_TBLAFMT_BLACK2 (RID_SVX_START + 562)
+#define RID_SVXSTR_TBLAFMT_BLUE (RID_SVX_START + 563)
+#define RID_SVXSTR_TBLAFMT_BROWN (RID_SVX_START + 564)
+#define RID_SVXSTR_TBLAFMT_CURRENCY (RID_SVX_START + 565)
+#define RID_SVXSTR_TBLAFMT_CURRENCY_3D (RID_SVX_START + 566)
+#define RID_SVXSTR_TBLAFMT_CURRENCY_GRAY (RID_SVX_START + 567)
+#define RID_SVXSTR_TBLAFMT_CURRENCY_LAVENDER (RID_SVX_START + 568)
+#define RID_SVXSTR_TBLAFMT_CURRENCY_TURQUOISE (RID_SVX_START + 569)
+#define RID_SVXSTR_TBLAFMT_GRAY (RID_SVX_START + 570)
+#define RID_SVXSTR_TBLAFMT_GREEN (RID_SVX_START + 571)
+#define RID_SVXSTR_TBLAFMT_LAVENDER (RID_SVX_START + 572)
+#define RID_SVXSTR_TBLAFMT_RED (RID_SVX_START + 573)
+#define RID_SVXSTR_TBLAFMT_TURQUOISE (RID_SVX_START + 574)
+#define RID_SVXSTR_TBLAFMT_YELLOW (RID_SVX_START + 575)
+#define RID_SVXSTR_TBLAFMT_END (RID_SVX_START + 576)
+
+// string resources for XLineJoint item
+#define RID_SVXSTR_LINEJOINT_NONE RID_SVXSTR_NONE
+#define RID_SVXSTR_LINEJOINT_MIDDLE (RID_SVX_START + 589 )
+#define RID_SVXSTR_LINEJOINT_BEVEL (RID_SVX_START + 590 )
+#define RID_SVXSTR_LINEJOINT_MITER (RID_SVX_START + 591 )
+#define RID_SVXSTR_LINEJOINT_ROUND (RID_SVX_START + 592 )
+
+// Default-Color-Names
+#define RID_SVXSTR_BLACK_DEF (RID_SVX_START + 595)
+#define RID_SVXSTR_BLUE_DEF (RID_SVX_START + 596)
+#define RID_SVXSTR_GREEN_DEF (RID_SVX_START + 597)
+#define RID_SVXSTR_CYAN_DEF (RID_SVX_START + 598)
+#define RID_SVXSTR_RED_DEF (RID_SVX_START + 599)
+#define RID_SVXSTR_MAGENTA_DEF (RID_SVX_START + 600)
+#define RID_SVXSTR_BROWN_DEF (RID_SVX_START + 601)
+#define RID_SVXSTR_GREY_DEF (RID_SVX_START + 602)
+#define RID_SVXSTR_LIGHTGREY_DEF (RID_SVX_START + 603)
+#define RID_SVXSTR_LIGHTBLUE_DEF (RID_SVX_START + 604)
+#define RID_SVXSTR_LIGHTGREEN_DEF (RID_SVX_START + 605)
+#define RID_SVXSTR_LIGHTCYAN_DEF (RID_SVX_START + 606)
+#define RID_SVXSTR_LIGHTRED_DEF (RID_SVX_START + 607)
+#define RID_SVXSTR_LIGHTMAGENTA_DEF (RID_SVX_START + 608)
+#define RID_SVXSTR_YELLOW_DEF (RID_SVX_START + 609)
+#define RID_SVXSTR_WHITE_DEF (RID_SVX_START + 610)
+#define RID_SVXSTR_BLUEGREY_DEF (RID_SVX_START + 611)
+#define RID_SVXSTR_ORANGE_DEF (RID_SVX_START + 612)
+#define RID_SVXSTR_VIOLET_DEF (RID_SVX_START + 613)
+#define RID_SVXSTR_BORDEAUX_DEF (RID_SVX_START + 614)
+#define RID_SVXSTR_PALE_YELLOW_DEF (RID_SVX_START + 615)
+#define RID_SVXSTR_PALE_GREEN_DEF (RID_SVX_START + 616)
+#define RID_SVXSTR_DKVIOLET_DEF (RID_SVX_START + 617)
+#define RID_SVXSTR_SALMON_DEF (RID_SVX_START + 618)
+#define RID_SVXSTR_SEABLUE_DEF (RID_SVX_START + 619)
+#define RID_SVXSTR_COLOR_SUN_DEF (RID_SVX_START + 620)
+#define RID_SVXSTR_COLOR_CHART (RID_SVX_START + 621)
+#define RID_SVXSTR_COLOR_CHART_DEF (RID_SVX_START + 622)
+
+// Default-Gradient-Names
+#define RID_SVXSTR_GRDT0_DEF (RID_SVX_START + 631)
+#define RID_SVXSTR_GRDT1_DEF (RID_SVX_START + 632)
+#define RID_SVXSTR_GRDT2_DEF (RID_SVX_START + 633)
+#define RID_SVXSTR_GRDT3_DEF (RID_SVX_START + 634)
+#define RID_SVXSTR_GRDT4_DEF (RID_SVX_START + 635)
+#define RID_SVXSTR_GRDT5_DEF (RID_SVX_START + 636)
+#define RID_SVXSTR_GRDT6_DEF (RID_SVX_START + 637)
+#define RID_SVXSTR_GRDT7_DEF (RID_SVX_START + 638)
+#define RID_SVXSTR_GRDT8_DEF (RID_SVX_START + 639)
+#define RID_SVXSTR_GRDT9_DEF (RID_SVX_START + 640)
+#define RID_SVXSTR_GRDT0 (RID_SVX_START + 641)
+#define RID_SVXSTR_GRDT1 (RID_SVX_START + 642)
+#define RID_SVXSTR_GRDT2 (RID_SVX_START + 643)
+#define RID_SVXSTR_GRDT3 (RID_SVX_START + 644)
+#define RID_SVXSTR_GRDT4 (RID_SVX_START + 645)
+#define RID_SVXSTR_GRDT5 (RID_SVX_START + 646)
+#define RID_SVXSTR_GRDT6 (RID_SVX_START + 647)
+#define RID_SVXSTR_GRDT7 (RID_SVX_START + 648)
+#define RID_SVXSTR_GRDT8 (RID_SVX_START + 649)
+#define RID_SVXSTR_GRDT9 (RID_SVX_START + 650)
+#define RID_SVXSTR_GRDT_DEF_START RID_SVXSTR_GRDT0_DEF
+#define RID_SVXSTR_GRDT_DEF_END RID_SVXSTR_GRDT9_DEF
+#define RID_SVXSTR_GRDT_START RID_SVXSTR_GRDT0
+#define RID_SVXSTR_GRDT_END RID_SVXSTR_GRDT9
+
+// Default-Hatch-Names
+#define RID_SVXSTR_HATCH0_DEF (RID_SVX_START + 661)
+#define RID_SVXSTR_HATCH1_DEF (RID_SVX_START + 662)
+#define RID_SVXSTR_HATCH2_DEF (RID_SVX_START + 663)
+#define RID_SVXSTR_HATCH3_DEF (RID_SVX_START + 664)
+#define RID_SVXSTR_HATCH4_DEF (RID_SVX_START + 665)
+#define RID_SVXSTR_HATCH5_DEF (RID_SVX_START + 666)
+#define RID_SVXSTR_HATCH6_DEF (RID_SVX_START + 667)
+#define RID_SVXSTR_HATCH7_DEF (RID_SVX_START + 668)
+#define RID_SVXSTR_HATCH8_DEF (RID_SVX_START + 669)
+#define RID_SVXSTR_HATCH9_DEF (RID_SVX_START + 670)
+#define RID_SVXSTR_HATCH10_DEF (RID_SVX_START + 671)
+#define RID_SVXSTR_HATCH0 (RID_SVX_START + 672)
+#define RID_SVXSTR_HATCH1 (RID_SVX_START + 673)
+#define RID_SVXSTR_HATCH2 (RID_SVX_START + 674)
+#define RID_SVXSTR_HATCH3 (RID_SVX_START + 675)
+#define RID_SVXSTR_HATCH4 (RID_SVX_START + 676)
+#define RID_SVXSTR_HATCH5 (RID_SVX_START + 677)
+#define RID_SVXSTR_HATCH6 (RID_SVX_START + 678)
+#define RID_SVXSTR_HATCH7 (RID_SVX_START + 679)
+#define RID_SVXSTR_HATCH8 (RID_SVX_START + 680)
+#define RID_SVXSTR_HATCH9 (RID_SVX_START + 681)
+#define RID_SVXSTR_HATCH10 (RID_SVX_START + 682)
+#define RID_SVXSTR_HATCH_DEF_START RID_SVXSTR_HATCH0_DEF
+#define RID_SVXSTR_HATCH_DEF_END RID_SVXSTR_HATCH10_DEF
+#define RID_SVXSTR_HATCH_START RID_SVXSTR_HATCH0
+#define RID_SVXSTR_HATCH_END RID_SVXSTR_HATCH10
+
+// Default-Bitmap-Names
+#define RID_SVXSTR_BMP0_DEF (RID_SVX_START + 691)
+#define RID_SVXSTR_BMP1_DEF (RID_SVX_START + 692)
+#define RID_SVXSTR_BMP2_DEF (RID_SVX_START + 693)
+#define RID_SVXSTR_BMP3_DEF (RID_SVX_START + 694)
+#define RID_SVXSTR_BMP4_DEF (RID_SVX_START + 695)
+#define RID_SVXSTR_BMP5_DEF (RID_SVX_START + 696)
+#define RID_SVXSTR_BMP6_DEF (RID_SVX_START + 697)
+#define RID_SVXSTR_BMP7_DEF (RID_SVX_START + 698)
+#define RID_SVXSTR_BMP8_DEF (RID_SVX_START + 699)
+#define RID_SVXSTR_BMP9_DEF (RID_SVX_START + 700)
+#define RID_SVXSTR_BMP10_DEF (RID_SVX_START + 701)
+#define RID_SVXSTR_BMP11_DEF (RID_SVX_START + 702)
+#define RID_SVXSTR_BMP12_DEF (RID_SVX_START + 703)
+#define RID_SVXSTR_BMP13_DEF (RID_SVX_START + 704)
+#define RID_SVXSTR_BMP14_DEF (RID_SVX_START + 705)
+#define RID_SVXSTR_BMP15_DEF (RID_SVX_START + 706)
+#define RID_SVXSTR_BMP16_DEF (RID_SVX_START + 707)
+#define RID_SVXSTR_BMP17_DEF (RID_SVX_START + 708)
+#define RID_SVXSTR_BMP18_DEF (RID_SVX_START + 709)
+#define RID_SVXSTR_BMP19_DEF (RID_SVX_START + 710)
+#define RID_SVXSTR_BMP20_DEF (RID_SVX_START + 711)
+#define RID_SVXSTR_BMP21_DEF (RID_SVX_START + 712)
+#define RID_SVXSTR_BMP0 (RID_SVX_START + 713)
+#define RID_SVXSTR_BMP1 (RID_SVX_START + 714)
+#define RID_SVXSTR_BMP2 (RID_SVX_START + 715)
+#define RID_SVXSTR_BMP3 (RID_SVX_START + 716)
+#define RID_SVXSTR_BMP4 (RID_SVX_START + 717)
+#define RID_SVXSTR_BMP5 (RID_SVX_START + 718)
+#define RID_SVXSTR_BMP6 (RID_SVX_START + 719)
+#define RID_SVXSTR_BMP7 (RID_SVX_START + 720)
+#define RID_SVXSTR_BMP8 (RID_SVX_START + 721)
+#define RID_SVXSTR_BMP9 (RID_SVX_START + 722)
+#define RID_SVXSTR_BMP10 (RID_SVX_START + 723)
+#define RID_SVXSTR_BMP11 (RID_SVX_START + 724)
+#define RID_SVXSTR_BMP12 (RID_SVX_START + 725)
+#define RID_SVXSTR_BMP13 (RID_SVX_START + 726)
+#define RID_SVXSTR_BMP14 (RID_SVX_START + 727)
+#define RID_SVXSTR_BMP15 (RID_SVX_START + 728)
+#define RID_SVXSTR_BMP16 (RID_SVX_START + 729)
+#define RID_SVXSTR_BMP17 (RID_SVX_START + 730)
+#define RID_SVXSTR_BMP18 (RID_SVX_START + 731)
+#define RID_SVXSTR_BMP19 (RID_SVX_START + 732)
+#define RID_SVXSTR_BMP20 (RID_SVX_START + 733)
+#define RID_SVXSTR_BMP21 (RID_SVX_START + 734)
+#define RID_SVXSTR_BMP_DEF_START RID_SVXSTR_BMP0_DEF
+#define RID_SVXSTR_BMP_DEF_END RID_SVXSTR_BMP21_DEF
+#define RID_SVXSTR_BMP_START RID_SVXSTR_BMP0
+#define RID_SVXSTR_BMP_END RID_SVXSTR_BMP21
+
+// Default-Linestyle-Names
+#define RID_SVXSTR_DASH0_DEF (RID_SVX_START + 740)
+#define RID_SVXSTR_DASH1_DEF (RID_SVX_START + 741)
+#define RID_SVXSTR_DASH2_DEF (RID_SVX_START + 742)
+#define RID_SVXSTR_DASH3_DEF (RID_SVX_START + 743)
+#define RID_SVXSTR_DASH4_DEF (RID_SVX_START + 744)
+#define RID_SVXSTR_DASH5_DEF (RID_SVX_START + 745)
+#define RID_SVXSTR_DASH6_DEF (RID_SVX_START + 746)
+#define RID_SVXSTR_DASH7_DEF (RID_SVX_START + 747)
+#define RID_SVXSTR_DASH8_DEF (RID_SVX_START + 748)
+#define RID_SVXSTR_DASH9_DEF (RID_SVX_START + 749)
+#define RID_SVXSTR_DASH10_DEF (RID_SVX_START + 750)
+#define RID_SVXSTR_DASH11_DEF (RID_SVX_START + 751)
+#define RID_SVXSTR_DASH0 (RID_SVX_START + 752)
+#define RID_SVXSTR_DASH1 (RID_SVX_START + 753)
+#define RID_SVXSTR_DASH2 (RID_SVX_START + 754)
+#define RID_SVXSTR_DASH3 (RID_SVX_START + 755)
+#define RID_SVXSTR_DASH4 (RID_SVX_START + 756)
+#define RID_SVXSTR_DASH5 (RID_SVX_START + 757)
+#define RID_SVXSTR_DASH6 (RID_SVX_START + 758)
+#define RID_SVXSTR_DASH7 (RID_SVX_START + 759)
+#define RID_SVXSTR_DASH8 (RID_SVX_START + 760)
+#define RID_SVXSTR_DASH9 (RID_SVX_START + 761)
+#define RID_SVXSTR_DASH10 (RID_SVX_START + 762)
+#define RID_SVXSTR_DASH11 (RID_SVX_START + 763)
+#define RID_SVXSTR_DASH_DEF_START RID_SVXSTR_DASH0_DEF
+#define RID_SVXSTR_DASH_DEF_END RID_SVXSTR_DASH11_DEF
+#define RID_SVXSTR_DASH_START RID_SVXSTR_DASH0
+#define RID_SVXSTR_DASH_END RID_SVXSTR_DASH11
+
+// Default-Line-End-Names
+#define RID_SVXSTR_LEND0_DEF (RID_SVX_START + 770)
+#define RID_SVXSTR_LEND1_DEF (RID_SVX_START + 771)
+#define RID_SVXSTR_LEND2_DEF (RID_SVX_START + 772)
+#define RID_SVXSTR_LEND3_DEF (RID_SVX_START + 773)
+#define RID_SVXSTR_LEND4_DEF (RID_SVX_START + 774)
+#define RID_SVXSTR_LEND5_DEF (RID_SVX_START + 775)
+#define RID_SVXSTR_LEND6_DEF (RID_SVX_START + 776)
+#define RID_SVXSTR_LEND7_DEF (RID_SVX_START + 777)
+#define RID_SVXSTR_LEND8_DEF (RID_SVX_START + 778)
+#define RID_SVXSTR_LEND9_DEF (RID_SVX_START + 779)
+#define RID_SVXSTR_LEND10_DEF (RID_SVX_START + 780)
+#define RID_SVXSTR_LEND11_DEF (RID_SVX_START + 781)
+#define RID_SVXSTR_LEND0 (RID_SVX_START + 782)
+#define RID_SVXSTR_LEND1 (RID_SVX_START + 783)
+#define RID_SVXSTR_LEND2 (RID_SVX_START + 784)
+#define RID_SVXSTR_LEND3 (RID_SVX_START + 785)
+#define RID_SVXSTR_LEND4 (RID_SVX_START + 786)
+#define RID_SVXSTR_LEND5 (RID_SVX_START + 787)
+#define RID_SVXSTR_LEND6 (RID_SVX_START + 788)
+#define RID_SVXSTR_LEND7 (RID_SVX_START + 789)
+#define RID_SVXSTR_LEND8 (RID_SVX_START + 790)
+#define RID_SVXSTR_LEND9 (RID_SVX_START + 791)
+#define RID_SVXSTR_LEND10 (RID_SVX_START + 792)
+#define RID_SVXSTR_LEND11 (RID_SVX_START + 793)
+#define RID_SVXSTR_LEND_DEF_START RID_SVXSTR_LEND0_DEF
+#define RID_SVXSTR_LEND_DEF_END RID_SVXSTR_LEND11_DEF
+#define RID_SVXSTR_LEND_START RID_SVXSTR_LEND0
+#define RID_SVXSTR_LEND_END RID_SVXSTR_LEND11
+
+#define RID_SVXSTR_QRY_PRINT_TITLE (RID_SVX_START + 802)
+#define RID_SVXSTR_QRY_PRINT_MSG (RID_SVX_START + 803)
+#define RID_SVXSTR_QRY_PRINT_ALL (RID_SVX_START + 804)
+#define RID_SVXSTR_QRY_PRINT_SELECTION (RID_SVX_START + 805)
+
+// strings for graphic attributes/undo
+#define RID_SVXSTR_GRAFCROP (RID_SVX_START + 820)
+#define RID_SVXSTR_UNDO_GRAFMODE (RID_SVX_START + 821)
+#define RID_SVXSTR_UNDO_GRAFRED (RID_SVX_START + 822)
+#define RID_SVXSTR_UNDO_GRAFGREEN (RID_SVX_START + 823)
+#define RID_SVXSTR_UNDO_GRAFBLUE (RID_SVX_START + 824)
+#define RID_SVXSTR_UNDO_GRAFLUMINANCE (RID_SVX_START + 825)
+#define RID_SVXSTR_UNDO_GRAFCONTRAST (RID_SVX_START + 826)
+#define RID_SVXSTR_UNDO_GRAFGAMMA (RID_SVX_START + 827)
+#define RID_SVXSTR_UNDO_GRAFTRANSPARENCY (RID_SVX_START + 828)
+#define RID_SVXSTR_UNDO_GRAFCROP (RID_SVXSTR_GRAFCROP)
+
+// listbox control for UNDO and REDO
+#define RID_SVXTBX_UNDO_REDO_CTRL (RID_SVX_START + 845)
+#define RID_SVXSTR_NUM_UNDO_ACTIONS (RID_SVX_START + 846)
+#define RID_SVXSTR_NUM_REDO_ACTIONS (RID_SVX_START + 847)
+#define RID_SVXSTR_NUM_UNDO_ACTION (RID_SVX_START + 848)
+#define RID_SVXSTR_NUM_REDO_ACTION (RID_SVX_START + 849)
+
+// Default-transparence-gradient-names
+#define RID_SVXSTR_TRASNGR0_DEF (RID_SVX_START + 850)
+#define RID_SVXSTR_TRASNGR0 (RID_SVX_START + 851)
+#define RID_SVXSTR_TRASNGR_DEF_START RID_SVXSTR_TRASNGR0_DEF
+#define RID_SVXSTR_TRASNGR_DEF_END RID_SVXSTR_TRASNGR0_DEF
+#define RID_SVXSTR_TRASNGR_START RID_SVXSTR_TRASNGR0
+#define RID_SVXSTR_TRASNGR_END RID_SVXSTR_TRASNGR0
+
+#define RID_SVXSTR_BORDER_CONTROL (RID_SVX_START + 852)
+
+// Accessibility strings. The actual string ids are defined in
+// svx/inc/accessibility.hrc, the strings are defined in
+// svx/source/accessibility/accessibility.src
+#define RID_SVXSTR_ACCESSIBILITY_START (RID_SVX_START + 860)
+#define RID_SVXSTR_ACCESSIBILITY_END (RID_SVX_START + 950)
+
+// 984: free
+#define RID_SVXFLOAT_EXTRUSION_DIRECTION (RID_SVX_START + 985)
+
+#define RID_SVX_EXTRUSION_BAR (RID_SVX_START + 986)
+#define RID_SVX_FONTWORK_BAR (RID_SVX_START + 987)
+
+#define RID_SVXFLOAT_EXTRUSION_DEPTH (RID_SVX_START + 988)
+#define RID_SVXFLOAT_EXTRUSION_LIGHTING (RID_SVX_START + 989)
+#define RID_SVXFLOAT_EXTRUSION_SURFACE (RID_SVX_START + 990)
+#define RID_SVXSTR_EXTRUSION_COLOR (RID_SVX_START + 991)
+
+#define RID_SVXSTR_DEPTH_0 (RID_SVX_START + 992)
+#define RID_SVXSTR_DEPTH_1 (RID_SVX_START + 993)
+#define RID_SVXSTR_DEPTH_2 (RID_SVX_START + 994)
+#define RID_SVXSTR_DEPTH_3 (RID_SVX_START + 995)
+#define RID_SVXSTR_DEPTH_4 (RID_SVX_START + 996)
+
+#define RID_SVXSTR_DEPTH_0_INCH (RID_SVX_START + 997)
+#define RID_SVXSTR_DEPTH_1_INCH (RID_SVX_START + 998)
+#define RID_SVXSTR_DEPTH_2_INCH (RID_SVX_START + 999)
+#define RID_SVXSTR_DEPTH_3_INCH (RID_SVX_START + 1000)
+#define RID_SVXSTR_DEPTH_4_INCH (RID_SVX_START + 1001)
+
+#define RID_SVXFLOAT_FONTWORK_ALIGNMENT (RID_SVX_START + 1002)
+#define RID_SVXFLOAT_FONTWORK_CHARSPACING (RID_SVX_START + 1003)
+
+/* #i35426# DR 2004-10-19: (RID_SVX_START+1002) and (RID_SVX_START+1003) are
+ already used for RID_SVXFLOAT_FONTWORK_ALIGNMENT and
+ RID_SVXFLOAT_FONTWORK_CHARSPACING above. But these IDs describe floating
+ windows, and the following IDs are for strings, so this is no conflict. */
+#define RID_SVXSTR_PAGES (RID_SVX_START + 1002)
+
+#define RID_SVXSTR_UNDO_APPLY_FONTWORK_SHAPE (RID_SVX_START + 1118)
+#define RID_SVXSTR_UNDO_APPLY_FONTWORK_SAME_LETTER_HEIGHT (RID_SVX_START + 1119)
+#define RID_SVXSTR_UNDO_APPLY_FONTWORK_ALIGNMENT (RID_SVX_START + 1120)
+#define RID_SVXSTR_UNDO_APPLY_FONTWORK_KERN_CHARACTER_PAIRS (RID_SVX_START + 1121)
+#define RID_SVXSTR_UNDO_APPLY_FONTWORK_CHARACTER_SPACING (RID_SVX_START + 1122)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ON_OFF (RID_SVX_START + 1123)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ROTATE_DOWN (RID_SVX_START + 1124)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ROTATE_UP (RID_SVX_START + 1125)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ROTATE_LEFT (RID_SVX_START + 1126)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ROTATE_RIGHT (RID_SVX_START + 1127)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_DEPTH (RID_SVX_START + 1128)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_ORIENTATION (RID_SVX_START + 1129)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_PROJECTION (RID_SVX_START + 1130)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_LIGHTING (RID_SVX_START + 1131)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_BRIGHTNESS (RID_SVX_START + 1132)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_SURFACE (RID_SVX_START + 1133)
+#define RID_SVXSTR_UNDO_APPLY_EXTRUSION_COLOR (RID_SVX_START + 1134)
+
+#define RID_SVXSTR_SELMODE_BLK (RID_SVX_START + 1167)
+#define RID_SVXSTR_STYLEFAMILY_TABLEDESIGN (RID_SVX_START + 1168)
+ // if you add here, remember to adjust RID_SVXSTR_NEXTFREE
+
+#define RID_SVXSTR_BULLET_DESCRIPTIONS (RID_SVX_START + 1138)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTIONS (RID_SVX_START + 1146)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTIONS (RID_SVX_START + 1154)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_0 (RID_SVXSTR_BULLET_DESCRIPTIONS + 0)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_1 (RID_SVXSTR_BULLET_DESCRIPTIONS + 1)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_2 (RID_SVXSTR_BULLET_DESCRIPTIONS + 2)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_3 (RID_SVXSTR_BULLET_DESCRIPTIONS + 3)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_4 (RID_SVXSTR_BULLET_DESCRIPTIONS + 4)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_5 (RID_SVXSTR_BULLET_DESCRIPTIONS + 5)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_6 (RID_SVXSTR_BULLET_DESCRIPTIONS + 6)//?
+#define RID_SVXSTR_BULLET_DESCRIPTION_7 (RID_SVXSTR_BULLET_DESCRIPTIONS + 7)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_0 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 0)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_1 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 1)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_2 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 2)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_3 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 3)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_4 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 4)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_5 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 5)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_6 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 6)//?
+#define RID_SVXSTR_SINGLENUM_DESCRIPTION_7 (RID_SVXSTR_SINGLENUM_DESCRIPTIONS + 7)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_0 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 0)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_1 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 1)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_2 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 2)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_3 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 3)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_4 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 4)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_5 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 5)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_6 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 6)//?
+#define RID_SVXSTR_OUTLINENUM_DESCRIPTION_7 (RID_SVXSTR_OUTLINENUM_DESCRIPTIONS + 7)//?
+
+#define RID_SVXSTR_NEXTFREE (RID_SVX_START + 1190)
+
+// ----------------------------------------------------------------------------
+// if we have _a_lot_ time, we should group the resource ids by type, instead
+// of grouping them by semantics. The reason is that resource ids have to be
+// unique relative to a fixed type (you can't have two dialogs with the same
+// resource id), but they do not need to be unique gloablly (means you can have
+// a dialog and a string, both with the same id)
+// I suggest sticking to per-type ids instead of per-semantic ids, this is
+// better maintainable (IMO), and does not waste that much ids
+// fs@openoffice.org
+
+// ----------------------------------------------------------------------------
+// "Window" resource ids
+
+
+// ----------------------------------------------------------------------------
+// "ModalDialog" resource ids
+
+#define RID_SVX_MDLG_FONTWORK_GALLERY ( RID_SVX_START + 2 )
+#define RID_SVX_MDLG_EXTRUSION_DEPTH ( RID_SVX_START + 3 )
+
+// ----------------------------------------------------------------------------
+// "Menu" resource ids
+#define RID_SVX_MDLG_SCRIPTORG_NEWLIB ( RID_SVX_START + 7 )
+#define RID_SVX_MDLG_FONTWORK_CHARSPACING ( RID_SVX_START + 19 )
+
+// ResId fuer den ImportClipboard-Dialog
+// depricated
+//#define RID_SVXDLG_CLIPBOARD ( RID_SVX_START + 9 )
+
+// ResId fuer den Sonderzeichen-Dialog
+
+// allgemeine DBMgr-Dialoge
+// depricated
+//#define RID_SVX_DBSELDLG ( RID_SVX_START + 11 )
+//#define RID_SVX_DBEDDLG ( RID_SVX_START + 12 )
+//#define RID_SVX_DBLOGON ( RID_SVX_START + 13 )
+//#define RID_SVX_RECDLG ( RID_SVX_START + 14 )
+//#define RID_SVX_BRSEEKDLG ( RID_SVX_START + 15 )
+//#define RID_SVX_BRCFGDLG ( RID_SVX_START + 16 )
+//#define RID_SVX_BRSORTDLG ( RID_SVX_START + 17 )
+
+// document recovery and error report
+// recycling ids from DBMgr
+#define RID_SVX_MDLG_DOCRECOVERY_PROGR ( RID_SVX_START + 11 )
+#define RID_SVX_MDLG_DOCRECOVERY_BROKEN ( RID_SVX_START + 12 )
+#define RID_SVX_MDLG_ERR_REP_OPTIONS ( RID_SVX_START + 13 )
+#define RID_SVX_MDLG_ERR_REP_PREVIEW ( RID_SVX_START + 14 )
+
+#define RID_SVX_TABDLG_DOCRECOVERY ( RID_SVX_START + 0 )
+
+#define RID_SVXPAGE_DOCRECOVERY_SAVE ( RID_SVX_START + 8 )
+#define RID_SVXPAGE_DOCRECOVERY_RECOVER ( RID_SVX_START + 9 )
+#define RID_SVXPAGE_ERR_REP_WELCOME ( RID_SVX_START + 10 )
+#define RID_SVXPAGE_ERR_REP_SEND ( RID_SVX_START + 11 )
+
+// ----------------------------------------------------------------------------
+
+// !!!! double defined ID's (see below) !!!
+#define RID_OFA_AUTOCORR_DLG (RID_OFA_START + 101)
+
+#define RID_OFA_GENERAL_OPTIONS_DLG (RID_OFA_START + 105)
+#define RID_OFADLG_INTERNET (RID_OFA_START + 106)
+#define RID_OFA_TABNEW_DLG (RID_OFA_START + 107)
+#define RID_OFADLG_BROWSER (RID_OFA_START + 108)
+#define RID_OFA_FORMNEW_DLG (RID_OFA_START + 112)
+#define RID_OFA_TABPROPERTIES (RID_OFA_START + 113)
+#define RID_OFADLG_REGISTRATION (RID_OFA_START + 114)
+#define RID_OFADLG_AWCP_VALUES (RID_OFA_START + 117)
+
+// TabPages --------------------------------------------------------------
+
+// !!!! double defined ID's (see above) !!!
+
+#define OFA_TP_APPEARANCE (RID_OFA_START + 203)
+#define OFA_TP_TABPROPERTIES_GENERAL (RID_OFA_START + 204)
+
+//die RID_??_TP_* stehen nochmal im offids.hrc
+
+#define RID_SW_TP_LAYOUT_OPT (RID_OFA_START + 207)
+#define RID_SW_TP_OPTINSERT_PAGE (RID_OFA_START + 213)
+#define RID_SW_TP_OPTTEST_PAGE (RID_OFA_START + 215)
+#define RID_SW_TP_OPTSRCVIEW (RID_OFA_START + 216)
+#define RID_SW_TP_OPTINSERT_HTML_PAGE (RID_OFA_START + 238)
+#define RID_SW_TP_HTML_LAYOUT_OPT (RID_OFA_START + 241)
+#define SID_SD_TP_LAYOUT (RID_OFA_START + 226)
+#define SID_SD_TP_SCALE (RID_OFA_START + 228)
+#define SID_SD_TP_GRID (RID_OFA_START + 229)
+#define SID_SI_TP_LAYOUT (RID_OFA_START + 233)
+#define SID_SI_TP_GRID (RID_OFA_START + 235)
+#define SID_SC_TP_MISC (RID_OFA_START + 239)
+#define OFA_TP_TABPROPERTIES_TEXT (RID_OFA_START + 245)
+#define OFA_TP_HELPERPROG (RID_OFA_START + 249)
+
+#endif
+
diff --git a/svx/inc/svx/dlgctl3d.hxx b/svx/inc/svx/dlgctl3d.hxx
new file mode 100644
index 000000000000..aa85b4e6a391
--- /dev/null
+++ b/svx/inc/svx/dlgctl3d.hxx
@@ -0,0 +1,215 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_DLGCTL3D_HXX
+#define _SVX_DLGCTL3D_HXX
+
+#include <vcl/ctrl.hxx>
+#include <vcl/scrbar.hxx>
+#include <vcl/button.hxx>
+#include <svl/itemset.hxx>
+#include "svx/svxdllapi.h"
+#include <basegfx/vector/b3dvector.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+class FmFormModel;
+class FmFormPage;
+class E3dView;
+class E3dPolyScene;
+class E3dObject;
+
+//////////////////////////////////////////////////////////////////////////////
+
+#define PREVIEW_OBJECTTYPE_SPHERE 0x0000
+#define PREVIEW_OBJECTTYPE_CUBE 0x0001
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC Svx3DPreviewControl : public Control
+{
+protected:
+ FmFormModel* mpModel;
+ FmFormPage* mpFmPage;
+ E3dView* mp3DView;
+ E3dPolyScene* mpScene;
+ E3dObject* mp3DObj;
+ sal_uInt16 mnObjectType;
+
+ void Construct();
+
+public:
+ Svx3DPreviewControl(Window* pParent, const ResId& rResId);
+ Svx3DPreviewControl(Window* pParent, WinBits nStyle = 0);
+ ~Svx3DPreviewControl();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Resize();
+
+ void Reset();
+ virtual void SetObjectType(sal_uInt16 nType);
+ sal_uInt16 GetObjectType() const { return( mnObjectType ); }
+ SfxItemSet Get3DAttributes() const;
+ virtual void Set3DAttributes(const SfxItemSet& rAttr);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC Svx3DLightControl : public Svx3DPreviewControl
+{
+ // Callback for interactive changes
+ Link maUserInteractiveChangeCallback;
+ Link maUserSelectionChangeCallback;
+ Link maChangeCallback;
+ Link maSelectionChangeCallback;
+
+ // lights
+ sal_uInt32 maSelectedLight;
+
+ // extra objects for light control
+ E3dObject* mpExpansionObject;
+ E3dObject* mpLampBottomObject;
+ E3dObject* mpLampShaftObject;
+ std::vector< E3dObject* > maLightObjects;
+
+ // 3d rotations of object
+ double mfRotateX;
+ double mfRotateY;
+ double mfRotateZ;
+
+ // interaction parameters
+ Point maActionStartPoint;
+ sal_Int32 mnInteractionStartDistance;
+ double mfSaveActionStartHor;
+ double mfSaveActionStartVer;
+ double mfSaveActionStartRotZ;
+
+ // bitfield
+ unsigned mbMouseMoved : 1;
+ unsigned mbGeometrySelected : 1;
+
+ void Construct2();
+ void ConstructLightObjects();
+ void AdaptToSelectedLight();
+ void TrySelection(Point aPosPixel);
+
+public:
+ Svx3DLightControl(Window* pParent, const ResId& rResId);
+ Svx3DLightControl(Window* pParent, WinBits nStyle = 0);
+ ~Svx3DLightControl();
+
+ virtual void Paint(const Rectangle& rRect);
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void Resize();
+
+ virtual void SetObjectType(sal_uInt16 nType);
+
+ // User Callback eintragen
+ void SetUserInteractiveChangeCallback(Link aNew) { maUserInteractiveChangeCallback = aNew; }
+ void SetUserSelectionChangeCallback(Link aNew) { maUserSelectionChangeCallback = aNew; }
+ void SetChangeCallback(Link aNew) { maChangeCallback = aNew; }
+ void SetSelectionChangeCallback(Link aNew) { maSelectionChangeCallback = aNew; }
+
+ // selection checks
+ bool IsSelectionValid();
+ bool IsGeometrySelected() { return mbGeometrySelected; }
+
+ // get/set position of selected lamp in polar coordinates, Hor:[0..360.0[ and Ver:[-90..90] degrees
+ void GetPosition(double& rHor, double& rVer);
+ void SetPosition(double fHor, double fVer);
+
+ // get/set rotation of 3D object
+ void SetRotation(double fRotX, double fRotY, double fRotZ);
+ void GetRotation(double& rRotX, double& rRotY, double& rRotZ);
+
+ void SelectLight(sal_uInt32 nLightNumber);
+ virtual void Set3DAttributes(const SfxItemSet& rAttr);
+ sal_uInt32 GetSelectedLight() { return maSelectedLight; }
+
+ // light data access
+ bool GetLightOnOff(sal_uInt32 nNum) const;
+ Color GetLightColor(sal_uInt32 nNum) const;
+ basegfx::B3DVector GetLightDirection(sal_uInt32 nNum) const;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SvxLightCtl3D : public Control
+{
+private:
+ // local controls
+ Svx3DLightControl maLightControl;
+ ScrollBar maHorScroller;
+ ScrollBar maVerScroller;
+ PushButton maSwitcher;
+
+ // Callback bei interaktiven Aenderungen
+ Link maUserInteractiveChangeCallback;
+ Link maUserSelectionChangeCallback;
+
+public:
+ SvxLightCtl3D( Window* pParent, const ResId& rResId);
+ SvxLightCtl3D( Window* pParent, WinBits nStyle = 0);
+ ~SvxLightCtl3D();
+
+ // Reagiere auf Groessenaenderungen
+ virtual void Resize();
+ void NewLayout();
+
+ // Selektion auf Gueltigkeit pruefen
+ void CheckSelection();
+
+ // Um weitere Einstellungen nach Aussen zu bringen...
+ Svx3DLightControl& GetSvx3DLightControl() { return maLightControl; }
+
+ // User Callback eintragen
+ void SetUserInteractiveChangeCallback(Link aNew) { maUserInteractiveChangeCallback = aNew; }
+ void SetUserSelectionChangeCallback(Link aNew) { maUserSelectionChangeCallback = aNew; }
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+protected:
+
+ DECL_LINK( InternalInteractiveChange, void*);
+ DECL_LINK( InternalSelectionChange, void*);
+ DECL_LINK( ScrollBarMove, void*);
+ DECL_LINK( ButtonPress, void*);
+
+ // Lokale Parameter Initialisieren
+ void Init();
+
+ void move( double fDeltaHor, double fDeltaVer );
+};
+
+#endif // _SCH_DLGCTL3D_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/inc/svx/dlgctrl.hxx b/svx/inc/svx/dlgctrl.hxx
new file mode 100644
index 000000000000..28b1bf1b9b6f
--- /dev/null
+++ b/svx/inc/svx/dlgctrl.hxx
@@ -0,0 +1,539 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_DLG_CTRL_HXX
+#define _SVX_DLG_CTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svtools/ctrlbox.hxx>
+#include <sfx2/tabdlg.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/rectenum.hxx>
+#include <vcl/graph.hxx>
+#ifndef _XTABLE_HXX
+class XBitmapEntry;
+class XBitmapList;
+class XColorEntry;
+class XColorTable;
+class XDash;
+class XDashEntry;
+class XDashList;
+class XGradient;
+class XGradientEntry;
+class XGradientList;
+class XHatch;
+class XHatchEntry;
+class XHatchList;
+class XLineEndEntry;
+class XLineEndList;
+class XFillAttrSetItem;
+#endif
+
+class XOBitmap;
+class XOutdevItemPool;
+
+namespace com { namespace sun { namespace star { namespace awt {
+ struct Point;
+} } } }
+
+/*************************************************************************
+|*
+|* Von SfxTabPage abgeleitet, um vom Control ueber virtuelle Methode
+|* benachrichtigt werden zu koennen.
+|*
+\************************************************************************/
+class SvxTabPage : public SfxTabPage
+{
+
+public:
+ SvxTabPage( Window* pParent, ResId Id, const SfxItemSet& rInAttrs ) :
+ SfxTabPage( pParent, Id, rInAttrs ) {}
+
+ virtual void PointChanged( Window* pWindow, RECT_POINT eRP ) = 0;
+};
+
+/*************************************************************************
+|*
+|* Control zur Darstellung und Auswahl der Eckpunkte (und Mittelpunkt)
+|* eines Objekts
+|*
+\************************************************************************/
+typedef UINT16 CTL_STATE;
+#define CS_NOHORZ 1 // no horizontal input information is used
+#define CS_NOVERT 2 // no vertikal input information is used
+
+class SvxRectCtlAccessibleContext;
+
+class SVX_DLLPUBLIC SvxRectCtl : public Control
+{
+private:
+ SVX_DLLPRIVATE void InitSettings( BOOL bForeground, BOOL bBackground );
+ SVX_DLLPRIVATE void InitRectBitmap( void );
+ SVX_DLLPRIVATE Bitmap& GetRectBitmap( void );
+ SVX_DLLPRIVATE void Resize_Impl();
+
+protected:
+ SvxRectCtlAccessibleContext* pAccContext;
+ USHORT nBorderWidth;
+ USHORT nRadius;
+ Size aSize;
+ Point aPtLT, aPtMT, aPtRT;
+ Point aPtLM, aPtMM, aPtRM;
+ Point aPtLB, aPtMB, aPtRB;
+ Point aPtNew;
+ RECT_POINT eRP, eDefRP;
+ CTL_STYLE eCS;
+ Bitmap* pBitmap;
+ CTL_STATE m_nState;
+
+ // #103516# Added a possibility to completely disable this control
+ sal_Bool mbCompleteDisable;
+
+ RECT_POINT GetRPFromPoint( Point ) const;
+ Point GetPointFromRP( RECT_POINT ) const;
+ void SetFocusRect( const Rectangle* pRect = NULL ); // pRect == NULL -> calculate rectangle in method
+ Point SetActualRPWithoutInvalidate( RECT_POINT eNewRP ); // returns the last point
+
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+ Point GetApproxLogPtFromPixPt( const Point& rRoughPixelPoint ) const;
+public:
+ SvxRectCtl( Window* pParent, const ResId& rResId, RECT_POINT eRpt = RP_MM,
+ USHORT nBorder = 200, USHORT nCircle = 80, CTL_STYLE eStyle = CS_RECT );
+ virtual ~SvxRectCtl();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual void Resize();
+
+ void Reset();
+ RECT_POINT GetActualRP() const;
+ void SetActualRP( RECT_POINT eNewRP );
+
+ void SetState( CTL_STATE nState );
+
+ UINT8 GetNumOfChilds( void ) const; // returns number of usable radio buttons
+
+ Rectangle CalculateFocusRectangle( void ) const;
+ Rectangle CalculateFocusRectangle( RECT_POINT eRectPoint ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+
+ RECT_POINT GetApproxRPFromPixPt( const ::com::sun::star::awt::Point& rPixelPoint ) const;
+
+ // #103516# Added a possibility to completely disable this control
+ sal_Bool IsCompletelyDisabled() const { return mbCompleteDisable; }
+ void DoCompletelyDisable(sal_Bool bNew);
+};
+
+/*************************************************************************
+|*
+|* Control zur Darstellung und Auswahl des Winkels der Eckpunkte
+|* eines Objekts
+|*
+\************************************************************************/
+class SvxAngleCtl : public SvxRectCtl
+{
+private:
+ void Initialize();
+
+protected:
+ Font aFont;
+ Size aFontSize;
+ BOOL bPositive;
+
+public:
+ SvxAngleCtl( Window* pParent, const ResId& rResId );
+ SvxAngleCtl( Window* pParent, const ResId& rResId, Size aSize );
+
+ void ChangeMetric()
+ { bPositive = !bPositive; }
+ virtual void Paint( const Rectangle& rRect );
+};
+
+/*************************************************************************
+|*
+|* Preview-Control zur Darstellung von Bitmaps
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxBitmapCtl
+{
+protected:
+ Size aSize;
+ USHORT nLines;
+ Color aPixelColor, aBackgroundColor;
+ const USHORT* pBmpArray;
+
+public:
+ SvxBitmapCtl( Window* pParent, const Size& rSize );
+ ~SvxBitmapCtl();
+
+ XOBitmap GetXBitmap();
+
+ void SetBmpArray( const USHORT* pPixel ) { pBmpArray = pPixel; }
+ void SetLines( USHORT nLns ) { nLines = nLns; }
+ void SetPixelColor( Color aColor ) { aPixelColor = aColor; }
+ void SetBackgroundColor( Color aColor ) { aBackgroundColor = aColor; }
+};
+
+/*************************************************************************
+|*
+|* Control zum Editieren von Bitmaps
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC SvxPixelCtl : public Control
+{
+private:
+ using OutputDevice::SetLineColor;
+
+protected:
+ USHORT nLines, nSquares;
+ Color aPixelColor;
+ Color aBackgroundColor;
+ Color aLineColor;
+ Size aRectSize;
+ USHORT* pPixel;
+ BOOL bPaintable;
+
+ void ChangePixel( USHORT nPixel );
+
+public:
+ SvxPixelCtl( Window* pParent, const ResId& rResId,
+ USHORT nNumber = 8 );
+ ~SvxPixelCtl();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+ void SetXBitmap( const XOBitmap& rXOBitmap );
+
+ void SetPixelColor( const Color& rCol ) { aPixelColor = rCol; }
+ void SetBackgroundColor( const Color& rCol ) { aBackgroundColor = rCol; }
+ void SetLineColor( const Color& rCol ) { aLineColor = rCol; }
+
+ USHORT GetLineCount() const { return nLines; }
+ Color GetPixelColor() const { return aPixelColor; }
+ Color GetBackgroundColor() const { return aBackgroundColor; }
+
+ USHORT GetBitmapPixel( const USHORT nPixelNumber );
+ USHORT* GetBitmapPixelPtr() { return pPixel; }
+
+ void SetPaintable( BOOL bTmp ) { bPaintable = bTmp; }
+ void Reset();
+};
+
+/*************************************************************************
+|*
+|* ColorLB kann mit Farben und Namen gefuellt werden
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC ColorLB : public ColorListBox
+{
+
+public:
+ ColorLB( Window* pParent, ResId Id ) : ColorListBox( pParent, Id ) {}
+ ColorLB( Window* pParent, WinBits aWB ) : ColorListBox( pParent, aWB ) {}
+
+ virtual void Fill( const XColorTable* pTab );
+
+ void Append( XColorEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XColorEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+};
+
+/*************************************************************************
+|*
+|* HatchingLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC HatchingLB : public ListBox
+{
+
+public:
+ HatchingLB( Window* pParent, ResId Id, BOOL bUserDraw = TRUE );
+ HatchingLB( Window* pParent, WinBits aWB, BOOL bUserDraw = TRUE );
+
+ virtual void Fill( const XHatchList* pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XHatchEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XHatchEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XHatchList* pList, const String& rStr,
+ const XHatch& rXHatch, USHORT nDist = 0 );
+
+private:
+ XHatchList* mpList;
+ BOOL mbUserDraw;
+};
+
+/*************************************************************************
+|*
+|* GradientLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC GradientLB : public ListBox
+{
+public:
+ GradientLB( Window* pParent, ResId Id, BOOL bUserDraw = TRUE );
+ GradientLB( Window* pParent, WinBits aWB, BOOL bUserDraw = TRUE );
+
+ virtual void Fill( const XGradientList* pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XGradientEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XGradientEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XGradientList* pList, const String& rStr,
+ const XGradient& rXGradient, USHORT nDist = 0 );
+
+private:
+ XGradientList* mpList;
+ BOOL mbUserDraw;
+};
+
+/*************************************************************************
+|*
+|* BitmapLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC BitmapLB : public ListBox
+{
+public:
+ BitmapLB( Window* pParent, ResId Id, BOOL bUserDraw = TRUE );
+
+ virtual void Fill( const XBitmapList* pList );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ void Append( XBitmapEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XBitmapEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XBitmapList* pList, const String& rStr,
+ const Bitmap& rBmp);
+
+private:
+ VirtualDevice aVD;
+ Bitmap aBitmap;
+
+ XBitmapList* mpList;
+ BOOL mbUserDraw;
+
+ SVX_DLLPRIVATE void SetVirtualDevice();
+};
+
+/*************************************************************************
+|*
+|* FillAttrLB vereint alle Fuellattribute in einer ListBox
+|*
+\************************************************************************/
+class FillAttrLB : public ColorListBox
+{
+private:
+ VirtualDevice aVD;
+ Bitmap aBitmap;
+
+ void SetVirtualDevice();
+
+public:
+ FillAttrLB( Window* pParent, ResId Id );
+ FillAttrLB( Window* pParent, WinBits aWB );
+
+ virtual void Fill( const XColorTable* pTab );
+ virtual void Fill( const XHatchList* pList );
+ virtual void Fill( const XGradientList* pList );
+ virtual void Fill( const XBitmapList* pList );
+
+ void SelectEntryByList( const XBitmapList* pList, const String& rStr,
+ const Bitmap& rBmp);
+};
+
+/*************************************************************************
+|*
+|* FillTypeLB
+|*
+\************************************************************************/
+class FillTypeLB : public ListBox
+{
+
+public:
+ FillTypeLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ FillTypeLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill();
+};
+
+/*************************************************************************
+|*
+|* LineLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC LineLB : public ListBox
+{
+
+public:
+ LineLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ LineLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill( const XDashList* pList );
+
+ void Append( XDashEntry* pEntry, Bitmap* pBmp = NULL );
+ void Modify( XDashEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL );
+ void SelectEntryByList( const XDashList* pList, const String& rStr,
+ const XDash& rDash, USHORT nDist = 0 );
+ void FillStyles();
+};
+
+/*************************************************************************
+|*
+|* LineEndsLB
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC LineEndLB : public ListBox
+{
+
+public:
+ LineEndLB( Window* pParent, ResId Id ) : ListBox( pParent, Id ) {}
+ LineEndLB( Window* pParent, WinBits aWB ) : ListBox( pParent, aWB ) {}
+
+ virtual void Fill( const XLineEndList* pList, BOOL bStart = TRUE );
+
+ void Append( XLineEndEntry* pEntry, Bitmap* pBmp = NULL,
+ BOOL bStart = TRUE );
+ void Modify( XLineEndEntry* pEntry, USHORT nPos, Bitmap* pBmp = NULL,
+ BOOL bStart = TRUE );
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SdrObject;
+class SdrModel;
+
+class SvxPreviewBase : public Control
+{
+private:
+ SdrModel* mpModel;
+ VirtualDevice* mpBufferDevice;
+
+protected:
+ void InitSettings(bool bForeground, bool bBackground);
+
+ // prepare buffered paint
+ void LocalPrePaint();
+
+ // end and output buffered paint
+ void LocalPostPaint();
+
+public:
+ SvxPreviewBase( Window* pParent, const ResId& rResId );
+ virtual ~SvxPreviewBase();
+
+ // change support
+ virtual void StateChanged(StateChangedType nStateChange);
+ virtual void DataChanged(const DataChangedEvent& rDCEvt);
+
+ // dada read access
+ SdrModel& getModel() const { return *mpModel; }
+ OutputDevice& getBufferDevice() const { return *mpBufferDevice; }
+};
+
+/*************************************************************************
+|*
+|* SvxLinePreview
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxXLinePreview : public SvxPreviewBase
+{
+private:
+ SdrObject* mpLineObjA;
+ SdrObject* mpLineObjB;
+ SdrObject* mpLineObjC;
+
+ //#58425# Symbole auf einer Linie (z.B. StarChart)
+ Graphic* mpGraphic;
+ sal_Bool mbWithSymbol;
+ Size maSymbolSize;
+
+public:
+ SvxXLinePreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXLinePreview();
+
+ void SetLineAttributes(const SfxItemSet& rItemSet);
+
+ void ShowSymbol( BOOL b ) { mbWithSymbol = b; };
+ void SetSymbol( Graphic* p, const Size& s );
+ void ResizeSymbol( const Size& s );
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+/*************************************************************************
+|*
+|* SvxXRectPreview
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxXRectPreview : public SvxPreviewBase
+{
+private:
+ SdrObject* mpRectangleObject;
+
+public:
+ SvxXRectPreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXRectPreview();
+
+ void SetAttributes(const SfxItemSet& rItemSet);
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+/*************************************************************************
+|*
+|* SvxXShadowPreview
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxXShadowPreview : public SvxPreviewBase
+{
+private:
+ SdrObject* mpRectangleObject;
+ SdrObject* mpRectangleShadow;
+
+public:
+ SvxXShadowPreview( Window* pParent, const ResId& rResId );
+ virtual ~SvxXShadowPreview();
+
+ void SetRectangleAttributes(const SfxItemSet& rItemSet);
+ void SetShadowAttributes(const SfxItemSet& rItemSet);
+ void SetShadowPosition(const Point& rPos);
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+#endif // _SVX_DLG_CTRL_HXX
+
diff --git a/svx/inc/svx/dstribut_enum.hxx b/svx/inc/svx/dstribut_enum.hxx
new file mode 100644
index 000000000000..23001f888e70
--- /dev/null
+++ b/svx/inc/svx/dstribut_enum.hxx
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_DSTRIBUT_ENUM_HXX
+#define _SVX_DSTRIBUT_ENUM_HXX
+
+/*************************************************************************
+|*
+\************************************************************************/
+
+enum SvxDistributeHorizontal
+{
+ SvxDistributeHorizontalNone = 0,
+ SvxDistributeHorizontalLeft,
+ SvxDistributeHorizontalCenter,
+ SvxDistributeHorizontalDistance,
+ SvxDistributeHorizontalRight
+};
+
+enum SvxDistributeVertical
+{
+ SvxDistributeVerticalNone = 0,
+ SvxDistributeVerticalTop,
+ SvxDistributeVerticalCenter,
+ SvxDistributeVerticalDistance,
+ SvxDistributeVerticalBottom
+};
+
+#endif // _SVX_DSTRIBUT_ENUM_HXX
+
diff --git a/svx/inc/svx/e3ditem.hxx b/svx/inc/svx/e3ditem.hxx
new file mode 100644
index 000000000000..b8aea314372b
--- /dev/null
+++ b/svx/inc/svx/e3ditem.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVXE3DITEM_HXX
+#define _SVXE3DITEM_HXX
+
+#include <svl/poolitem.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include "svx/svxdllapi.h"
+
+#ifndef _SVXVECT3DITEM_HXX
+#define _SVXVECT3DITEM_HXX
+
+class SvStream;
+
+class SVX_DLLPUBLIC SvxB3DVectorItem : public SfxPoolItem
+{
+ basegfx::B3DVector aVal;
+
+public:
+ TYPEINFO();
+ SvxB3DVectorItem();
+ SvxB3DVectorItem( USHORT nWhich, const basegfx::B3DVector& rVal );
+ SvxB3DVectorItem( USHORT nWhich, SvStream & );
+ SvxB3DVectorItem( const SvxB3DVectorItem& );
+ ~SvxB3DVectorItem();
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVersion) const;
+ virtual SvStream& Store(SvStream &, USHORT nItemVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ const basegfx::B3DVector& GetValue() const { return aVal; }
+ void SetValue( const basegfx::B3DVector& rNewVal ) {
+ DBG_ASSERT( GetRefCount() == 0, "SetValue() with pooled item" );
+ aVal = rNewVal;
+ }
+
+ virtual USHORT GetVersion (USHORT nFileFormatVersion) const;
+};
+
+#endif
+
+#endif
+
+
diff --git a/svx/inc/svx/e3dsceneupdater.hxx b/svx/inc/svx/e3dsceneupdater.hxx
new file mode 100644
index 000000000000..ad38491945d5
--- /dev/null
+++ b/svx/inc/svx/e3dsceneupdater.hxx
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_SCENEUPDATER_HXX
+#define _E3D_SCENEUPDATER_HXX
+
+#include <svx/svxdllapi.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrObject;
+class E3dScene;
+namespace drawinglayer { namespace geometry {
+ class ViewInformation3D;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+// This class is a helper to encapsulate 3D object changes which shall change the
+// scene's 2D geometry. E.g. when moving one 3D object in a scene, the visualisation
+// would not change since the scene's 2D attributes are defined by it's 2D object
+// transformation and the changed content would be projected to the same 2D bounds
+// as before. To reflect the fact that the 2D positions may 'change' for the user's
+// imagination, it is necessary to calculate a new 2D object transformation of the scene
+// (the SnapRect) using the old 3D transformation stack and the eventually changed
+// 3D content and tu use it. This is only wanted if changes to the scene's
+// content are intended to change the scene's 2D geometry attributes
+
+class SVX_DLLPUBLIC E3DModifySceneSnapRectUpdater
+{
+ // the scene which may be changed. This gets set to the outmost scene
+ // of the to-be-changed 3D object when the scene has a 3d transformation
+ // stack at construction time. In all other cases it's set to zero and
+ // no action needs to be taken
+ E3dScene* mpScene;
+
+ // the 3d transformation stack at the time of construction, valid when
+ // mpScene is not zero
+ drawinglayer::geometry::ViewInformation3D* mpViewInformation3D;
+
+public:
+ // the constructor evaluates and sets the members at construction time
+ E3DModifySceneSnapRectUpdater(const SdrObject* pObject);
+
+ // the destructor will take action if mpScene is not zero and modify the
+ // 2D geomeztry of the target scene
+ ~E3DModifySceneSnapRectUpdater();
+};
+
+#endif // _E3D_SCENEUPDATER_HXX
diff --git a/svx/inc/svx/e3dundo.hxx b/svx/inc/svx/e3dundo.hxx
new file mode 100644
index 000000000000..f5081eeccfa0
--- /dev/null
+++ b/svx/inc/svx/e3dundo.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_UNDO_HXX
+#define _E3D_UNDO_HXX
+
+#include <svx/svdundo.hxx>
+class E3DObject;
+#include <svx/scene3d.hxx>
+#include "svx/svxdllapi.h"
+
+class E3dView;
+
+/************************************************************************\
+|*
+|* Basisklasse fuer alle 3D-Undo-Aktionen.
+|*
+\************************************************************************/
+class E3dUndoAction : public SdrUndoAction
+{
+
+ protected :
+ E3dObject *pMy3DObj;
+
+ public:
+ TYPEINFO();
+ E3dUndoAction (SdrModel *pModel,
+ E3dObject *p3DObj) :
+ SdrUndoAction (*pModel),
+ pMy3DObj (p3DObj)
+ {
+ }
+
+ virtual ~E3dUndoAction ();
+
+ virtual BOOL CanRepeat(SfxRepeatTarget&) const;
+};
+
+/************************************************************************\
+|*
+|* Undo fuer 3D-Rotation ueber die Rotationsmatrizen (ob das wohl klappt ?)
+|*
+\************************************************************************/
+class E3dRotateUndoAction : public E3dUndoAction
+{
+ basegfx::B3DHomMatrix aMyOldRotation;
+ basegfx::B3DHomMatrix aMyNewRotation;
+
+ public:
+ TYPEINFO();
+ E3dRotateUndoAction (SdrModel *pModel,
+ E3dObject *p3DObj,
+ const basegfx::B3DHomMatrix &aOldRotation,
+ const basegfx::B3DHomMatrix &aNewRotation) :
+ E3dUndoAction (pModel, p3DObj),
+ aMyOldRotation (aOldRotation),
+ aMyNewRotation (aNewRotation)
+ {
+ }
+
+ virtual ~E3dRotateUndoAction ();
+
+ virtual void Undo();
+ virtual void Redo();
+
+};
+
+/************************************************************************\
+|*
+|* Undo fuer 3D-Attribute (Implementiert ueber Set3DAttributes())
+|*
+\************************************************************************/
+class SVX_DLLPUBLIC E3dAttributesUndoAction : public SdrUndoAction
+{
+ using SdrUndoAction::Repeat;
+
+ SdrObject* pObject;
+ E3dView* pView;
+ BOOL bUseSubObjects;
+
+ const SfxItemSet aNewSet;
+ const SfxItemSet aOldSet;
+
+ public:
+ TYPEINFO();
+ E3dAttributesUndoAction( SdrModel &rModel, E3dView* pView,
+ E3dObject* pInObject,
+ const SfxItemSet& rNewSet,
+ const SfxItemSet& rOldSet,
+ BOOL bUseSubObj);
+
+ virtual ~E3dAttributesUndoAction();
+
+ virtual BOOL CanRepeat(SfxRepeatTarget& rView) const;
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat();
+};
+
+#endif // _E3D_CUBE3D_HXX
diff --git a/svx/inc/svx/exthelpid.hrc b/svx/inc/svx/exthelpid.hrc
new file mode 100644
index 000000000000..68cd1b224650
--- /dev/null
+++ b/svx/inc/svx/exthelpid.hrc
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_EXTHELPID_HRC
+#define _SVX_EXTHELPID_HRC
+// include ---------------------------------------------------------------
+
+#include <svl/solar.hrc>
+
+// these HIDs are used in SVX and also in other modules, mainly CUI
+// the reason is that different controls have the same help texts assigned
+// but are implemented in different libraries
+// to avoid "exporting" the whole HID list only those few ones that are shared
+// are moved to this exported (delivered) hrc file
+
+// Help-Ids --------------------------------------------------------------
+#define HID_GALLERY_ACTUALIZE (HID_SVX_EXT0_START + 0)
+#define HID_GALLERY_TITLE (HID_SVX_EXT0_START + 1)
+
+// please adjust ACT_SVX_EXT_HID_END2 below if you add entries here!
+
+// -----------------------------------------------------------------------
+// Overrun check ---------------------------------------------------------
+// -----------------------------------------------------------------------
+
+#define ACT_SVX_EXT_HID_END (HID_SVX_EXT0_START + 1)
+#if ACT_SVX_EXT_HID_END > HID_SVX_EXT0_END
+#error Resource-Ueberlauf in #line, #file
+#endif
+
+#endif
+
diff --git a/svx/inc/svx/extrud3d.hxx b/svx/inc/svx/extrud3d.hxx
new file mode 100644
index 000000000000..f429742be448
--- /dev/null
+++ b/svx/inc/svx/extrud3d.hxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_EXTRUD3D_HXX
+#define _E3D_EXTRUD3D_HXX
+
+#include <svx/obj3d.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* 3D-Extrusionsobjekt aus uebergebenem 2D-Polygon erzeugen
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dExtrudeObj : public E3dCompoundObject
+{
+private:
+ // to allow sdr::properties::E3dExtrudeProperties access to SetGeometryValid()
+ friend class sdr::properties::E3dExtrudeProperties;
+
+ // Geometrie, die dieses Objekt bestimmt
+ basegfx::B2DPolyPolygon maExtrudePolygon;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+
+public:
+ TYPEINFO();
+
+ E3dExtrudeObj(E3dDefaultAttributes& rDefault, const basegfx::B2DPolyPolygon& rPP, double fDepth);
+ E3dExtrudeObj();
+
+ // PercentDiagonal: 0..100, before 0.0..0.5
+ sal_uInt16 GetPercentDiagonal() const
+ { return ((const Svx3DPercentDiagonalItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_PERCENT_DIAGONAL)).GetValue(); }
+
+ // BackScale: 0..100, before 0.0..1.0
+ sal_uInt16 GetPercentBackScale() const
+ { return ((const Svx3DBackscaleItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_BACKSCALE)).GetValue(); }
+
+ // BackScale: 0..100, before 0.0..1.0
+ sal_uInt32 GetExtrudeDepth() const
+ { return ((const Svx3DDepthItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_DEPTH)).GetValue(); }
+
+ // #107245# GetSmoothNormals() for bExtrudeSmoothed
+ sal_Bool GetSmoothNormals() const
+ { return ((const Svx3DSmoothNormalsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_SMOOTH_NORMALS)).GetValue(); }
+
+ // #107245# GetSmoothLids() for bExtrudeSmoothFrontBack
+ sal_Bool GetSmoothLids() const
+ { return ((const Svx3DSmoothLidsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_SMOOTH_LIDS)).GetValue(); }
+
+ // #107245# GetCharacterMode() for bExtrudeCharacterMode
+ sal_Bool GetCharacterMode() const
+ { return ((const Svx3DCharacterModeItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_CHARACTER_MODE)).GetValue(); }
+
+ // #107245# GetCloseFront() for bExtrudeCloseFront
+ sal_Bool GetCloseFront() const
+ { return ((const Svx3DCloseFrontItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_CLOSE_FRONT)).GetValue(); }
+
+ // #107245# GetCloseBack() for bExtrudeCloseBack
+ sal_Bool GetCloseBack() const
+ { return ((const Svx3DCloseBackItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_CLOSE_BACK)).GetValue(); }
+
+ virtual UINT16 GetObjIdentifier() const;
+
+ virtual void operator=(const SdrObject&);
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ // Lokale Parameter setzen/lesen mit Geometrieneuerzeugung
+ void SetExtrudePolygon(const basegfx::B2DPolyPolygon &rNew);
+ const basegfx::B2DPolyPolygon &GetExtrudePolygon() { return maExtrudePolygon; }
+
+ // Aufbrechen
+ virtual BOOL IsBreakObjPossible();
+ virtual SdrAttrObj* GetBreakObj();
+};
+
+#endif // _E3D_EXTRUD3D_HXX
+
diff --git a/svx/inc/svx/extrusionbar.hxx b/svx/inc/svx/extrusionbar.hxx
new file mode 100644
index 000000000000..44a2c5e2f917
--- /dev/null
+++ b/svx/inc/svx/extrusionbar.hxx
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_EXTRUSION_BAR_HXX
+#define _SVX_EXTRUSION_BAR_HXX
+
+#include <sfx2/shell.hxx>
+#include <sfx2/module.hxx>
+#include <svx/ifaceids.hxx>
+#include "svx/svxdllapi.h"
+
+class SfxViewShell;
+class SdrView;
+
+/************************************************************************/
+
+namespace svx
+{
+
+SVX_DLLPUBLIC bool checkForSelectedCustomShapes( SdrView* pSdrView, bool bOnlyExtruded );
+
+class SVX_DLLPUBLIC ExtrusionBar : public SfxShell
+{
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SVX_INTERFACE_EXTRUSION_BAR)
+
+ ExtrusionBar(SfxViewShell* pViewShell );
+ ~ExtrusionBar();
+
+ static void execute( SdrView* pSdrView, SfxRequest& rReq, SfxBindings& rBindings );
+ static void getState( SdrView* pSdrView, SfxItemSet& rSet );
+};
+
+}
+
+#endif // _SVX_EXTRUSION_BAR_HXX
diff --git a/svx/inc/svx/extrusioncolorcontrol.hxx b/svx/inc/svx/extrusioncolorcontrol.hxx
new file mode 100644
index 000000000000..ff4a53e65a41
--- /dev/null
+++ b/svx/inc/svx/extrusioncolorcontrol.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_EXTRUSIONCOLORCONTROL_HXX
+#define _SVX_EXTRUSIONCOLORCONTROL_HXX
+
+#include <sfx2/tbxctrl.hxx>
+#include "svx/svxdllapi.h"
+#include "svx/tbxcolorupdate.hxx"
+
+namespace svx {
+
+class SVX_DLLPUBLIC ExtrusionColorControl : public SfxToolBoxControl
+{
+private:
+ ToolboxButtonColorUpdater* mpBtnUpdater;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ ExtrusionColorControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~ExtrusionColorControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
+}
+
+#endif // _SVX_EXTRUSIONCOLORCONTROL_HXX
+
diff --git a/svx/inc/svx/f3dchild.hxx b/svx/inc/svx/f3dchild.hxx
new file mode 100644
index 000000000000..853280d16f28
--- /dev/null
+++ b/svx/inc/svx/f3dchild.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#ifndef _SVX_F3DCHILD_HXX
+#define _SVX_F3DCHILD_HXX
+
+
+#include <sfx2/childwin.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer 3D Window
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC Svx3DChildWindow : public SfxChildWindow
+{
+ public:
+ Svx3DChildWindow( Window*, USHORT, SfxBindings*, SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW(Svx3DChildWindow);
+};
+
+#endif // _SVX_F3DCHILD_HXX
+
diff --git a/svx/inc/svx/fillctrl.hxx b/svx/inc/svx/fillctrl.hxx
new file mode 100644
index 000000000000..51ee743ca093
--- /dev/null
+++ b/svx/inc/svx/fillctrl.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _FILLCTRL_HXX
+#define _FILLCTRL_HXX
+
+#include <svl/lstner.hxx>
+#include <sfx2/tbxctrl.hxx>
+#include "svx/svxdllapi.h"
+
+class XFillStyleItem;
+class XFillColorItem;
+class XFillGradientItem;
+class XFillHatchItem;
+class XFillBitmapItem;
+class FillControl;
+class SvxFillTypeBox;
+class SvxFillAttrBox;
+class ListBox;
+
+/*************************************************************************
+|*
+|* Klassen fuer Flaechenattribute (Controls und Controller)
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxFillToolBoxControl: public SfxToolBoxControl
+{
+private:
+ XFillStyleItem* pStyleItem;
+ XFillColorItem* pColorItem;
+ XFillGradientItem* pGradientItem;
+ XFillHatchItem* pHatchItem;
+ XFillBitmapItem* pBitmapItem;
+
+ FillControl* pFillControl;
+ SvxFillTypeBox* pFillTypeLB;
+ SvxFillAttrBox* pFillAttrLB;
+
+ BOOL bUpdate;
+ BOOL bIgnoreStatusUpdate;
+ USHORT eLastXFS;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFillToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxFillToolBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ void Update( const SfxPoolItem* pState );
+ virtual Window* CreateItemWindow( Window *pParent );
+ void IgnoreStatusUpdate( sal_Bool bSet );
+};
+
+//========================================================================
+
+class FillControl : public Window
+{
+private:
+ friend class SvxFillToolBoxControl;
+
+ SvxFillTypeBox* pLbFillType;
+ SvxFillAttrBox* pLbFillAttr;
+ Size aLogicalFillSize;
+ Size aLogicalAttrSize;
+ Timer aDelayTimer;
+
+//#if 0 // _SOLAR__PRIVATE
+ DECL_LINK( DelayHdl, Timer * );
+ DECL_LINK( SelectFillTypeHdl, ListBox * );
+ DECL_LINK( SelectFillAttrHdl, ListBox * );
+//#endif
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+public:
+ FillControl( Window* pParent, WinBits nStyle = 0 );
+ ~FillControl();
+
+ virtual void Resize();
+};
+
+#endif // _FILLCTRL_HXX
+
diff --git a/svx/inc/svx/float3d.hxx b/svx/inc/svx/float3d.hxx
new file mode 100644
index 000000000000..432d78b211ad
--- /dev/null
+++ b/svx/inc/svx/float3d.hxx
@@ -0,0 +1,313 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FLOAT3D_HXX
+#define _SVX_FLOAT3D_HXX
+
+#include <sfx2/ctrlitem.hxx>
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#include <sfx2/dockwin.hxx>
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#include <svtools/valueset.hxx>
+#include <svtools/stdctrl.hxx>
+#include "svx/svxdllapi.h"
+
+#include <svx/f3dchild.hxx>
+#include <svx/dlgctl3d.hxx>
+#include <svx/dlgctrl.hxx>
+#include <svx/svdmodel.hxx>
+
+enum ViewType3D
+{
+ VIEWTYPE_GEO = 1,
+ VIEWTYPE_REPRESENTATION,
+ VIEWTYPE_LIGHT,
+ VIEWTYPE_TEXTURE,
+ VIEWTYPE_MATERIAL
+};
+
+class SdrModel;
+class FmFormModel;
+class FmFormPage;
+class VirtualDevice;
+class E3dView;
+class SdrPageView;
+class Svx3DCtrlItem;
+class SvxConvertTo3DItem;
+
+//------------------------------------------------------------------------
+struct Svx3DWinImpl;
+
+class SVX_DLLPUBLIC Svx3DWin : public SfxDockingWindow
+{
+ friend class Svx3DChildWindow;
+ friend class Svx3DCtrlItem;
+ using Window::Update;
+
+private:
+ ImageButton aBtnGeo;
+ ImageButton aBtnRepresentation;
+ ImageButton aBtnLight;
+ ImageButton aBtnTexture;
+ ImageButton aBtnMaterial;
+ ImageButton aBtnUpdate;
+ ImageButton aBtnAssign;
+
+// Geometrie
+ FixedText aFtPercentDiagonal;
+ MetricField aMtrPercentDiagonal;
+ FixedText aFtBackscale;
+ MetricField aMtrBackscale;
+ FixedText aFtEndAngle;
+ MetricField aMtrEndAngle;
+ FixedText aFtDepth;
+ MetricField aMtrDepth;
+ FixedLine aFLGeometrie;
+
+ FixedText aFtHorizontal;
+ NumericField aNumHorizontal;
+ FixedText aFtVertical;
+ NumericField aNumVertical;
+ FixedLine aFLSegments;
+
+ ImageButton aBtnNormalsObj;
+ ImageButton aBtnNormalsFlat;
+ ImageButton aBtnNormalsSphere;
+ ImageButton aBtnNormalsInvert;
+ ImageButton aBtnTwoSidedLighting;
+ FixedLine aFLNormals;
+
+ ImageButton aBtnDoubleSided;
+
+// Darstellung
+ FixedText aFtShademode;
+ ListBox aLbShademode;
+ ImageButton aBtnShadow3d;
+ FixedText aFtSlant;
+ MetricField aMtrSlant;
+ FixedLine aFLShadow;
+ FixedText aFtDistance;
+ MetricField aMtrDistance;
+ FixedText aFtFocalLeng;
+ MetricField aMtrFocalLength;
+ FixedLine aFLCamera;
+ FixedLine aFLRepresentation;
+
+// Beleuchtung
+ ImageButton aBtnLight1;
+ ImageButton aBtnLight2;
+ ImageButton aBtnLight3;
+ ImageButton aBtnLight4;
+ ImageButton aBtnLight5;
+ ImageButton aBtnLight6;
+ ImageButton aBtnLight7;
+ ImageButton aBtnLight8;
+ ColorLB aLbLight1;
+ ColorLB aLbLight2;
+ ColorLB aLbLight3;
+ ColorLB aLbLight4;
+ ColorLB aLbLight5;
+ ColorLB aLbLight6;
+ ColorLB aLbLight7;
+ ColorLB aLbLight8;
+
+ ImageButton aBtnLightColor;
+ FixedText aFTLightsource;
+
+ // #99694# Keyboard shortcuts activate the next control, so the
+ // order needed to be changed here
+ FixedText aFTAmbientlight; // Text label
+ ColorLB aLbAmbientlight; // ListBox
+ ImageButton aBtnAmbientColor; // color button
+
+ FixedLine aFLLight;
+
+// Texturen
+ FixedText aFtTexKind;
+ ImageButton aBtnTexLuminance;
+ ImageButton aBtnTexColor;
+ FixedText aFtTexMode;
+ ImageButton aBtnTexReplace;
+ ImageButton aBtnTexModulate;
+ ImageButton aBtnTexBlend;
+ FixedText aFtTexProjectionX;
+ ImageButton aBtnTexObjectX;
+ ImageButton aBtnTexParallelX;
+ ImageButton aBtnTexCircleX;
+ FixedText aFtTexProjectionY;
+ ImageButton aBtnTexObjectY;
+ ImageButton aBtnTexParallelY;
+ ImageButton aBtnTexCircleY;
+ FixedText aFtTexFilter;
+ ImageButton aBtnTexFilter;
+ FixedLine aFLTexture;
+
+// Material
+// Materialeditor
+ FixedText aFtMatFavorites;
+ ListBox aLbMatFavorites;
+ FixedText aFtMatColor;
+ ColorLB aLbMatColor;
+ ImageButton aBtnMatColor;
+ FixedText aFtMatEmission;
+ ColorLB aLbMatEmission;
+ ImageButton aBtnEmissionColor;
+ FixedText aFtMatSpecular;
+ ColorLB aLbMatSpecular;
+ ImageButton aBtnSpecularColor;
+ FixedText aFtMatSpecularIntensity;
+ MetricField aMtrMatSpecularIntensity;
+ FixedLine aFLMatSpecular;
+ FixedLine aFLMaterial;
+
+// Unterer Teil
+ ImageButton aBtnConvertTo3D;
+ ImageButton aBtnLatheObject;
+ ImageButton aBtnPerspective;
+ Svx3DPreviewControl aCtlPreview;
+ SvxLightCtl3D aCtlLightPreview;
+
+// der Rest ...
+ Image aImgLightOn;
+ Image aImgLightOff;
+ BOOL bUpdate;
+ ViewType3D eViewType;
+ Size aSize;
+
+ // Model, Page, View etc. fuer Favoriten
+ FmFormModel* pModel;
+ FmFormPage* pFmPage;
+ VirtualDevice* pVDev;
+ E3dView* p3DView;
+ List* pFavorSetList;
+ List* pMatFavSetList;
+
+ SfxBindings* pBindings;
+ Svx3DCtrlItem* pControllerItem;
+
+ SvxConvertTo3DItem* pConvertTo3DItem;
+ SvxConvertTo3DItem* pConvertTo3DLatheItem;
+
+ Svx3DWinImpl* mpImpl;
+ SfxMapUnit ePoolUnit;
+ FieldUnit eFUnit;
+
+ // ItemSet used to remember set 2d attributes
+ SfxItemSet* mpRemember2DAttributes;
+
+ BOOL bOnly3DChanged;
+
+ //------------------------------------
+
+ DECL_LINK( ClickViewTypeHdl, void * );
+ DECL_LINK( ClickUpdateHdl, void * );
+ DECL_LINK( ClickAssignHdl, void * );
+ DECL_LINK( ClickHdl, PushButton * );
+ DECL_LINK( ClickColorHdl, PushButton * );
+ DECL_LINK( SelectHdl, void * );
+ DECL_LINK( ModifyHdl, void * );
+ DECL_LINK( ClickLightHdl, PushButton * );
+
+ DECL_LINK( DoubleClickHdl, void * );
+
+ DECL_LINK( ChangeLightCallbackHdl, void * );
+ DECL_LINK( ChangeSelectionCallbackHdl, void * );
+
+ SVX_DLLPRIVATE void Construct();
+ SVX_DLLPRIVATE void Reset();
+
+ SVX_DLLPRIVATE BOOL LBSelectColor( ColorLB* pLb, const Color& rColor );
+ SVX_DLLPRIVATE USHORT GetLightSource( const PushButton* pBtn = NULL );
+ SVX_DLLPRIVATE ColorLB* GetLbByButton( const PushButton* pBtn = NULL );
+
+ SVX_DLLPRIVATE bool GetUILightState( ImageButton& aBtn ) const;
+ SVX_DLLPRIVATE void SetUILightState( ImageButton& aBtn, bool bState );
+
+protected:
+ virtual void Resize();
+
+public:
+ Svx3DWin( SfxBindings* pBindings, SfxChildWindow *pCW,
+ Window* pParent );
+ ~Svx3DWin();
+
+ void InitColorLB( const SdrModel* pDoc );
+ BOOL IsUpdateMode() const { return bUpdate; }
+
+ void Update( SfxItemSet& rSet );
+ void GetAttr( SfxItemSet& rSet );
+
+ void UpdatePreview(); // nach oben (private)
+ void DocumentReload(); // #83951#
+};
+
+/*************************************************************************
+|*
+|* ControllerItem fuer 3D-Window (Floating/Docking)
+|*
+\************************************************************************/
+
+class Svx3DCtrlItem : public SfxControllerItem
+{
+ Svx3DWin* p3DWin;
+
+ protected:
+ virtual void StateChanged( USHORT nSId, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+ public:
+ Svx3DCtrlItem( USHORT, Svx3DWin*, SfxBindings* );
+};
+
+/*************************************************************************
+|*
+|* ControllerItem fuer Status eines Slots
+|* (SID_CONVERT_TO_3D, SID_CONVERT_TO_3D_LATHE_FAST)
+|*
+\************************************************************************/
+
+class SvxConvertTo3DItem : public SfxControllerItem
+{
+ BOOL bState;
+
+protected:
+ virtual void StateChanged(UINT16 nSId, SfxItemState eState, const SfxPoolItem* pState);
+
+public:
+ SvxConvertTo3DItem(UINT16 nId, SfxBindings* pBindings);
+ BOOL GetState() const { return bState; }
+};
+
+#endif // _SVX_FLOAT3D_HXX
+
diff --git a/svx/inc/svx/fmdmod.hxx b/svx/inc/svx/fmdmod.hxx
new file mode 100644
index 000000000000..26af5971be03
--- /dev/null
+++ b/svx/inc/svx/fmdmod.hxx
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FMDMOD_HXX
+#define _SVX_FMDMOD_HXX
+
+#include <svx/unomod.hxx>
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC SvxFmMSFactory : public SvxUnoDrawMSFactory
+{
+
+public:
+ SvxFmMSFactory() {};
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance(const ::rtl::OUString& ServiceSpecifier) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments(const ::rtl::OUString& ServiceSpecifier, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments) throw( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+#endif // _SVX_FMDMOD_HXX
+
diff --git a/svx/inc/svx/fmdpage.hxx b/svx/inc/svx/fmdpage.hxx
new file mode 100644
index 000000000000..70fe7eb74eaf
--- /dev/null
+++ b/svx/inc/svx/fmdpage.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FMDPAGE_HXX
+#define _SVX_FMDPAGE_HXX
+
+#include <com/sun/star/form/XFormsSupplier2.hpp>
+#include <svx/unopage.hxx>
+#include <comphelper/uno3.hxx>
+#include "svx/svxdllapi.h"
+
+//==================================================================
+// SvxFmDrawPage
+//==================================================================
+class SVX_DLLPUBLIC SvxFmDrawPage :public SvxDrawPage
+ ,public ::com::sun::star::form::XFormsSupplier2
+{
+protected:
+
+ // Erzeugen eines SdrObjects anhand einer Description. Kann von
+ // abgeleiteten Klassen dazu benutzt werden, eigene ::com::sun::star::drawing::Shapes zu
+ // unterstuetzen (z.B. Controls)
+ virtual SdrObject *_CreateSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & xShape )throw ();
+
+ // Die folgende Methode wird gerufen, wenn ein SvxShape-Objekt angelegt
+ // werden soll. abgeleitete Klassen koennen hier eine Ableitung oder
+ // ein ein SvxShape aggregierendes Objekt anlegen.
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > _CreateShape( SdrObject *pObj ) const throw ();
+
+public:
+ SvxFmDrawPage( SdrPage* pPage );
+ virtual ~SvxFmDrawPage() throw ();
+
+ // UNO Anbindung
+ DECLARE_UNO3_AGG_DEFAULTS(SvxFmDrawPage, SvxDrawPage);
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XFormsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > SAL_CALL getForms(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ // XFormsSupplier2
+ virtual sal_Bool SAL_CALL hasForms(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::lang::XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+#endif // _SVX_FMDPAGE_HXX
+
diff --git a/svx/inc/svx/fmglob.hxx b/svx/inc/svx/fmglob.hxx
new file mode 100644
index 000000000000..c361e13a759a
--- /dev/null
+++ b/svx/inc/svx/fmglob.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FMGLOB_HXX
+#define _SVX_FMGLOB_HXX
+
+#include <tools/solar.h>
+#include <svx/svdobj.hxx>
+#include <com/sun/star/form/FormComponentType.hpp>
+
+const sal_uInt32 FmFormInventor = sal_uInt32('F')*0x00000001+
+ sal_uInt32('M')*0x00000100+
+ sal_uInt32('0')*0x00010000+
+ sal_uInt32('1')*0x01000000;
+
+const sal_uInt16 OBJ_FM_CONTROL = ::com::sun::star::form::FormComponentType::CONTROL;
+ // fuer FormularKomponenten
+const sal_uInt16 OBJ_FM_EDIT = ::com::sun::star::form::FormComponentType::TEXTFIELD;
+const sal_uInt16 OBJ_FM_BUTTON = ::com::sun::star::form::FormComponentType::COMMANDBUTTON;
+const sal_uInt16 OBJ_FM_FIXEDTEXT = ::com::sun::star::form::FormComponentType::FIXEDTEXT;
+const sal_uInt16 OBJ_FM_LISTBOX = ::com::sun::star::form::FormComponentType::LISTBOX;
+const sal_uInt16 OBJ_FM_CHECKBOX = ::com::sun::star::form::FormComponentType::CHECKBOX;
+const sal_uInt16 OBJ_FM_COMBOBOX = ::com::sun::star::form::FormComponentType::COMBOBOX;
+const sal_uInt16 OBJ_FM_RADIOBUTTON = ::com::sun::star::form::FormComponentType::RADIOBUTTON;
+const sal_uInt16 OBJ_FM_GROUPBOX = ::com::sun::star::form::FormComponentType::GROUPBOX;
+const sal_uInt16 OBJ_FM_GRID = ::com::sun::star::form::FormComponentType::GRIDCONTROL;
+const sal_uInt16 OBJ_FM_IMAGEBUTTON = ::com::sun::star::form::FormComponentType::IMAGEBUTTON;
+const sal_uInt16 OBJ_FM_FILECONTROL = ::com::sun::star::form::FormComponentType::FILECONTROL;
+const sal_uInt16 OBJ_FM_DATEFIELD = ::com::sun::star::form::FormComponentType::DATEFIELD;
+const sal_uInt16 OBJ_FM_TIMEFIELD = ::com::sun::star::form::FormComponentType::TIMEFIELD;
+const sal_uInt16 OBJ_FM_NUMERICFIELD = ::com::sun::star::form::FormComponentType::NUMERICFIELD;
+const sal_uInt16 OBJ_FM_CURRENCYFIELD = ::com::sun::star::form::FormComponentType::CURRENCYFIELD;
+const sal_uInt16 OBJ_FM_PATTERNFIELD = ::com::sun::star::form::FormComponentType::PATTERNFIELD;
+const sal_uInt16 OBJ_FM_HIDDEN = ::com::sun::star::form::FormComponentType::HIDDENCONTROL;
+const sal_uInt16 OBJ_FM_IMAGECONTROL = ::com::sun::star::form::FormComponentType::IMAGECONTROL;
+const sal_uInt16 OBJ_FM_FORMATTEDFIELD = ::com::sun::star::form::FormComponentType::PATTERNFIELD + 1;
+const sal_uInt16 OBJ_FM_SCROLLBAR = ::com::sun::star::form::FormComponentType::PATTERNFIELD + 2;
+const sal_uInt16 OBJ_FM_SPINBUTTON = ::com::sun::star::form::FormComponentType::PATTERNFIELD + 3;
+const sal_uInt16 OBJ_FM_NAVIGATIONBAR = ::com::sun::star::form::FormComponentType::PATTERNFIELD + 4;
+
+#endif // _FM_FMGLOB_HXX
+
diff --git a/svx/inc/svx/fmgridcl.hxx b/svx/inc/svx/fmgridcl.hxx
new file mode 100644
index 000000000000..c0e9e7e34d78
--- /dev/null
+++ b/svx/inc/svx/fmgridcl.hxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FMGRIDCL_HXX
+#define _SVX_FMGRIDCL_HXX
+
+#include <com/sun/star/container/XIndexContainer.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+
+#include <svx/gridctrl.hxx>
+#include <svtools/transfer.hxx>
+#include "svx/svxdllapi.h"
+
+//==================================================================
+// FmGridHeader
+//==================================================================
+struct FmGridHeaderData;
+class SVX_DLLPUBLIC FmGridHeader
+ :public ::svt::EditBrowserHeader
+ ,public DropTargetHelper
+{
+protected:
+ FmGridHeaderData* m_pImpl;
+
+ // trigger context menu execution
+ void triggerColumnContextMenu( const ::Point& _rPreferredPos );
+
+public:
+ FmGridHeader( BrowseBox* pParent, WinBits nWinBits = WB_STDHEADERBAR | WB_DRAG );
+ ~FmGridHeader();
+
+public:
+ struct AccessControl { friend class FmGridControl; private: AccessControl() { } };
+
+ inline void triggerColumnContextMenu( const ::Point& _rPreferredPos, const AccessControl& )
+ {
+ triggerColumnContextMenu( _rPreferredPos );
+ }
+
+protected:
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+ virtual void Select();
+
+ /** the value returned by GetItemPos is meaningless for the grid model if there are hidden columns,
+ so use GetModelColumnPos instead
+ */
+ sal_uInt16 GetModelColumnPos(sal_uInt16 nId) const;
+
+ /** This is called before executing a context menu for a column. rMenu contains the initial entries
+ handled by this base class' method (which always has to be called).
+ Derived classes may alter the menu in any way and handle any additional entries in
+ PostExecuteColumnContextMenu.
+ All disabled entries will be removed before executing the menu, so be careful with separators
+ near entries you probably wish to disable ...
+ */
+ virtual void PreExecuteColumnContextMenu(sal_uInt16 nColId, PopupMenu& rMenu);
+ /** After executing the context menu for a column this method is called.
+ */
+ virtual void PostExecuteColumnContextMenu(sal_uInt16 nColId, const PopupMenu& rMenu, sal_uInt16 nExecutionResult);
+
+ // DropTargetHelper
+ virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt );
+ virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt );
+
+ /** selects the column at the selection supplier.
+ @param nColumnId
+ The column id.
+ */
+ void notifyColumnSelect(sal_uInt16 nColumnId);
+private:
+ DECL_LINK( OnAsyncExecuteDrop, void* );
+};
+
+//==================================================================
+// FmGridControl
+//==================================================================
+class FmXGridPeer;
+class SVX_DLLPUBLIC FmGridControl : public DbGridControl
+
+{
+ friend class FmGridHeader;
+ friend class FmXGridPeer;
+
+ FmXGridPeer* m_pPeer;
+ sal_Int32 m_nCurrentSelectedColumn; // this is the column model (not the view) posisition ...
+ sal_uInt16 m_nMarkedColumnId;
+ sal_Bool m_bSelecting;
+ sal_Bool m_bInColumnMove : 1;
+
+public:
+ FmGridControl(
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >,
+ Window* pParent,
+ FmXGridPeer* _pPeer,
+ WinBits nBits);
+
+ // Window
+ virtual void KeyInput( const KeyEvent& rKEvt );
+
+ // ::com::sun::star::beans::XPropertyChangeListener
+ void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+ // ::com::sun::star::form::XPositioningListener
+ void positioned(const ::com::sun::star::lang::EventObject& rEvent);
+
+ // XBound
+ sal_Bool commit();
+
+ // ::com::sun::star::form::XInsertListener
+ void inserted(const ::com::sun::star::lang::EventObject& rEvent);
+
+ // ::com::sun::star::form::XRestoreListener
+ void restored(const ::com::sun::star::lang::EventObject& rEvent);
+
+ void markColumn(sal_uInt16 nId);
+ sal_Bool isColumnMarked(sal_uInt16 nId) const;
+
+ sal_Int32 GetSelectedColumn() const;
+
+ /** return the name of the specified object.
+ @param eObjType
+ The type to ask for
+ @param _nPosition
+ The position of a tablecell (index position), header bar colum/row cell
+ @return
+ The name of the specified object.
+ */
+ virtual ::rtl::OUString GetAccessibleObjectName( ::svt::AccessibleBrowseBoxObjType eObjType,sal_Int32 _nPosition = -1) const;
+
+ /** return the description of the specified object.
+ @param eObjType
+ The type to ask for
+ @param _nPosition
+ The position of a tablecell (index position), header bar colum/row cell
+ @return
+ The description of the specified object.
+ */
+ virtual ::rtl::OUString GetAccessibleObjectDescription( ::svt::AccessibleBrowseBoxObjType eObjType,sal_Int32 _nPosition = -1) const;
+
+protected:
+ virtual void Command(const CommandEvent& rEvt);
+
+ virtual BrowserHeader* imp_CreateHeaderBar(BrowseBox* pParent);
+ virtual long QueryMinimumRowHeight();
+ virtual void RowHeightChanged();
+ virtual void ColumnResized(sal_uInt16 nId);
+ virtual void ColumnMoved(sal_uInt16 nId);
+ virtual void DeleteSelectedRows();
+ virtual void SetDesignMode(sal_Bool bMode);
+ virtual void CellModified();
+ virtual void HideColumn(sal_uInt16 nId);
+ virtual void ShowColumn(sal_uInt16 nId);
+
+ sal_Bool IsInColumnMove() const {return m_bInColumnMove;}
+
+ virtual void BeginCursorAction();
+ virtual void EndCursorAction();
+ virtual void Select();
+
+ // Initialisieren der Spalten
+ // a.) nur ueber Spaltenbeschreibung
+ virtual void InitColumnsByModels(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer >& xColumns);
+ // b.) im alivemode ueber Datenbankfelder
+ virtual void InitColumnsByFields(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& xFields);
+
+ // some kind of impl version (for one single column) of our version of InitColumnsByFields
+ void InitColumnByField(
+ DbGridColumn* _pColumn,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColumnModel,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxFieldsByNames,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& _rxFieldsByIndex
+ );
+
+ FmXGridPeer* GetPeer() const {return m_pPeer;}
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>
+ getSelectionBookmarks();
+ sal_Bool selectBookmarks(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& _rBookmarks);
+
+ /** returns if a column is selected
+ @param nColumnId
+ The column id.
+ @param _pColumn
+ The column to compare with.
+ @return
+ <TRUE/> if the column is selected, otherwise <FALSE/>
+ */
+ sal_Bool isColumnSelected(sal_uInt16 nColumnId,DbGridColumn* _pColumn);
+};
+
+#endif // _SVX_FMGRIDCL_HXX
+
diff --git a/svx/inc/svx/fmmodel.hxx b/svx/inc/svx/fmmodel.hxx
new file mode 100644
index 000000000000..9d8ad2ca9e64
--- /dev/null
+++ b/svx/inc/svx/fmmodel.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FMMODEL_HXX
+#define _SVX_FMMODEL_HXX
+
+#include <svx/svdmodel.hxx>
+#include "svx/svxdllapi.h"
+
+class SfxObjectShell;
+class SfxItemPool;
+class VCItemPool;
+class FmXUndoEnvironment;
+class SfxObjectShell;
+class SbxObject;
+class SbxArray;
+class SbxValue;
+
+struct FmFormModelImplData;
+class SVX_DLLPUBLIC FmFormModel :
+ public SdrModel
+{
+private:
+ FmFormModelImplData* m_pImpl;
+ SfxObjectShell* m_pObjShell;
+
+ sal_Bool m_bOpenInDesignMode : 1;
+ sal_Bool m_bAutoControlFocus : 1;
+
+ SVX_DLLPRIVATE FmFormModel( const FmFormModel& ); // never implemented
+ SVX_DLLPRIVATE void operator=(const FmFormModel& rSrcModel); // never implemented
+
+public:
+ TYPEINFO();
+
+ FmFormModel(SfxItemPool* pPool=NULL, SfxObjectShell* pPers=NULL );
+ FmFormModel(const XubString& rPath, SfxItemPool* pPool=NULL,
+ SfxObjectShell* pPers=NULL );
+ FmFormModel(SfxItemPool* pPool, SfxObjectShell* pPers, FASTBOOL bUseExtColorTable);
+ FmFormModel(const XubString& rPath, SfxItemPool* pPool, SfxObjectShell* pPers,
+ FASTBOOL bUseExtColorTable);
+
+ virtual ~FmFormModel();
+
+ virtual SdrPage* AllocPage(FASTBOOL bMasterPage);
+ virtual void InsertPage(SdrPage* pPage, sal_uInt16 nPos=0xFFFF);
+ virtual SdrPage* RemovePage(sal_uInt16 nPgNum);
+ virtual void MovePage(USHORT nPgNum, USHORT nNewPos);
+ virtual void InsertMasterPage(SdrPage* pPage, sal_uInt16 nPos=0xFFFF);
+ virtual SdrPage* RemoveMasterPage(sal_uInt16 nPgNum);
+
+ virtual SdrLayerID GetControlExportLayerId( const SdrObject& rObj ) const;
+ SfxObjectShell* GetObjectShell() const { return m_pObjShell; }
+ void SetObjectShell( SfxObjectShell* pShell );
+
+ sal_Bool GetOpenInDesignMode() const { return m_bOpenInDesignMode; }
+ void SetOpenInDesignMode( sal_Bool _bOpenDesignMode );
+
+ sal_Bool GetAutoControlFocus() const { return m_bAutoControlFocus; }
+ void SetAutoControlFocus( sal_Bool _bAutoControlFocus );
+
+ /** check whether the OpenInDesignMode has been set explicitly or been loaded (<FALSE/>)
+ or if it still has the default value from construction (<TRUE/>)
+ */
+ sal_Bool OpenInDesignModeIsDefaulted();
+
+ /** determines whether form controls should use the SdrModel's reference device for text rendering
+ */
+ sal_Bool ControlsUseRefDevice() const;
+
+ FmXUndoEnvironment& GetUndoEnv();
+
+private:
+ void implSetOpenInDesignMode( sal_Bool _bOpenDesignMode, sal_Bool _bForce );
+};
+
+#endif // _FM_FMMODEL_HXX
+
diff --git a/svx/inc/svx/fmpage.hxx b/svx/inc/svx/fmpage.hxx
new file mode 100644
index 000000000000..4195f776f3c2
--- /dev/null
+++ b/svx/inc/svx/fmpage.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FMPAGE_HXX
+#define _SVX_FMPAGE_HXX
+
+#include <svx/svdpage.hxx>
+#include <comphelper/uno3.hxx>
+#include "svx/svxdllapi.h"
+
+class StarBASIC;
+class FmFormModel;
+class FmFormPageImpl; // haelt die Liste aller Forms
+
+FORWARD_DECLARE_INTERFACE(container,XNameContainer)
+
+class SdrView;
+class SfxJSArray;
+class HelpEvent;
+
+class SVX_DLLPUBLIC FmFormPage : public SdrPage
+{
+ friend class FmFormObj;
+ FmFormPageImpl* m_pImpl;
+ String m_sPageName;
+ StarBASIC* m_pBasic;
+
+public:
+ TYPEINFO();
+
+ FmFormPage(FmFormModel& rModel,StarBASIC*, FASTBOOL bMasterPage=sal_False);
+ FmFormPage(const FmFormPage& rPage);
+ ~FmFormPage();
+
+ virtual void SetModel(SdrModel* pNewModel);
+
+ virtual SdrPage* Clone() const;
+ using SdrPage::Clone;
+
+ virtual void InsertObject(SdrObject* pObj, ULONG nPos = CONTAINER_APPEND,
+ const SdrInsertReason* pReason=NULL);
+
+ virtual SdrObject* RemoveObject(ULONG nObjNum);
+
+ // Zugriff auf alle Formulare
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer>& GetForms( bool _bForceCreate = true ) const;
+
+#ifndef SVX_LIGHT
+ FmFormPageImpl& GetImpl() const { return *m_pImpl; }
+#endif // SVX_LIGHT
+
+public:
+ const String& GetName() const { return m_sPageName; }
+ void SetName( const String& rName ) { m_sPageName = rName; }
+ StarBASIC* GetBasic() const { return m_pBasic; }
+ sal_Bool RequestHelp(
+ Window* pWin,
+ SdrView* pView,
+ const HelpEvent& rEvt );
+};
+
+#endif // _SVX_FMPAGE_HXX
+
diff --git a/svx/inc/svx/fmsearch.hxx b/svx/inc/svx/fmsearch.hxx
new file mode 100644
index 000000000000..b2722c7016b9
--- /dev/null
+++ b/svx/inc/svx/fmsearch.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _FMSEARCH_HXX
+#define _FMSEARCH_HXX
+
+#include <com/sun/star/sdbc/XResultSet.hpp>
+
+#define _SVSTDARR_STRINGSDTOR
+#include <svl/svstdarr.hxx>
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#include <vcl/combobox.hxx>
+#include <vcl/lstbox.hxx>
+#include <tools/link.hxx>
+#include <comphelper/uno3.hxx>
+#include <comphelper/stl_types.hxx>
+#include <tools/string.hxx>
+#include "svx/svxdllapi.h"
+
+FORWARD_DECLARE_INTERFACE(util,XNumberFormatsSupplier)
+
+// ===================================================================================================
+// Hilfsmethoden
+
+SVX_DLLPUBLIC sal_Bool IsSearchableControl( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _xControl,
+ ::rtl::OUString* pCurrentText = NULL);
+ // check if the control has one of the interfaces we can use for searching
+ // *pCurrentText will be filled with the current text of the control (as used when searching this control)
+
+// ===================================================================================================
+// Hilfsstrukturen
+
+struct FmFoundRecordInformation
+{
+ ::com::sun::star::uno::Any aPosition; // Bookmark des Datensatzes, in dem der Text gefunden wurde
+ sal_Int16 nFieldPos; // dito : die relative Position der Spalte (im Stringnamen in Feldliste im Constructor)
+ sal_Int16 nContext; // Kontext, in dem gesucht und gefunden wurde (falls die aktuelle Suche verschiedene solche kennt)
+};
+
+// ===================================================================================================
+// = struct FmSearchContext - Informationen fuer Suche in verschiedenen Kontexten
+// ===================================================================================================
+
+struct FmSearchContext
+{
+ // [in]
+ sal_Int16 nContext; // die Nummer des Kontextes
+ // [out]
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> xCursor; // der Iterator fuer diesen Kontext
+ String strUsedFields; // eine Liste von durch ';' getrennten Feldnamen
+ ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >
+ arrFields; // die korrespondierenden Text-Interfaces fuer die Felder in strUsedFields
+ String sFieldDisplayNames; // if not empty : names to be displayed for the searchable fields (must have the same token count as strUsedFields !)
+};
+
+#endif // _FMSEARCH_HXX
diff --git a/svx/inc/svx/fmshell.hxx b/svx/inc/svx/fmshell.hxx
new file mode 100644
index 000000000000..f37eeab8c5e6
--- /dev/null
+++ b/svx/inc/svx/fmshell.hxx
@@ -0,0 +1,191 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FMSHELL_HXX
+#define _SVX_FMSHELL_HXX
+
+// ***************************************************************************************************
+// ***************************************************************************************************
+// ***************************************************************************************************
+
+#include <sfx2/shell.hxx>
+#include <sfx2/module.hxx>
+#include <vcl/event.hxx>
+
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include <svx/fmview.hxx>
+#include "svx/svxdllapi.h"
+
+#include <svx/ifaceids.hxx>
+
+//========================================================================
+class FmFormModel;
+class FmFormPage;
+class SvxFmTabWin;
+class FmXFormShell;
+class FmFormView;
+class SdrView;
+class SdrPage;
+class SdrUnoObj;
+
+namespace com { namespace sun { namespace star { namespace form {
+ class XForm;
+ namespace runtime {
+ class XFormController;
+ }
+} } } }
+
+namespace svx
+{
+ class ISdrObjectFilter;
+}
+
+//========================================================================
+class SVX_DLLPUBLIC FmDesignModeChangedHint : public SfxHint
+{
+ sal_Bool m_bDesignMode;
+
+public:
+ TYPEINFO();
+ FmDesignModeChangedHint( sal_Bool bDesMode );
+ virtual ~FmDesignModeChangedHint();
+
+ sal_Bool GetDesignMode() const { return m_bDesignMode; }
+};
+
+//========================================================================
+class SVX_DLLPUBLIC FmFormShell : public SfxShell
+{
+ friend class FmFormView;
+ friend class FmXFormShell;
+
+ FmXFormShell* m_pImpl;
+ FmFormView* m_pFormView;
+ FmFormModel* m_pFormModel;
+ SfxViewShell* m_pParentShell;
+
+ sal_uInt16 m_nLastSlot;
+ sal_Bool m_bDesignMode : 1;
+ sal_Bool m_bHasForms : 1; // Flag welches festhaelt, ob Formulare auf einer Seite
+ // vorhanden sind, nur für den DesignMode, siehe UIFeatureChanged!
+
+ // die Markierungen einer FormView haben sich geaendert ...
+ void NotifyMarkListChanged(FmFormView*);
+ // (die FormView selber ist kein Broadcaster, deshalb kann sie den Formular-Explorer, den dieses
+ // Ereignis interesiert, nicht sauber verstaendigen (sie koennte sich lediglich von der Application
+ // das Navigator-Fenster geben lassen, aber das wollen wir ja nicht, ge ? ...))
+
+ class FormShellWaitObject
+ {
+ Window* m_pWindow;
+ public:
+ FormShellWaitObject(const FmFormShell* _pShell);
+ ~FormShellWaitObject();
+ };
+ friend class FormShellWaitObject;
+
+ const OutputDevice* GetCurrentViewDevice() const { return m_pFormView ? m_pFormView->GetActualOutDev() : NULL; }
+
+public:
+ SFX_DECL_INTERFACE(SVX_INTERFACE_FORM_SH)
+ TYPEINFO();
+
+ FmFormShell(SfxViewShell* pParent, FmFormView* pView = NULL);
+ virtual ~FmFormShell();
+
+ virtual void Execute( SfxRequest& );
+ virtual void GetState( SfxItemSet& );
+ virtual sal_Bool HasUIFeature( sal_uInt32 nFeature );
+
+ void ExecuteTextAttribute( SfxRequest& );
+ void GetTextAttributeState( SfxItemSet& );
+
+ sal_Bool GetY2KState(sal_uInt16& nReturn);
+ void SetY2KState(sal_uInt16 n);
+
+ void SetView(FmFormView* pView);
+
+ FmFormView* GetFormView() const { return m_pFormView; }
+ FmFormModel* GetFormModel() const { return m_pFormModel; }
+ FmFormPage* GetCurPage() const;
+ FmXFormShell* GetImpl() const {return m_pImpl;};
+
+ sal_uInt16 PrepareClose(sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False);
+
+ bool IsActiveControl() const;
+ void ForgetActiveControl();
+ void SetControlActivationHandler( const Link& _rHdl );
+
+ virtual void Activate(sal_Bool bMDI);
+ virtual void Deactivate(sal_Bool bMDI);
+
+ // helper methods for implementing XFormLayerAccess
+ SdrUnoObj* GetFormControl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& _rxModel,
+ const SdrView& _rView,
+ const OutputDevice& _rDevice,
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& _out_rxControl
+ ) const;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > GetFormController(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm,
+ const SdrView& _rView,
+ const OutputDevice& _rDevice
+ ) const;
+
+ /** puts the focus into the document window, if current a form control has the focus. Otherwise, moves the focus
+ to the control belonging to the given SdrUnoObj.
+ */
+ void ToggleControlFocus(
+ const SdrUnoObj& i_rNextCandidate,
+ const SdrView& i_rView,
+ OutputDevice& i_rDevice
+ ) const;
+
+ ::std::auto_ptr< ::svx::ISdrObjectFilter >
+ CreateFocusableControlFilter(
+ const SdrView& i_rView,
+ const OutputDevice& i_rDevice
+ ) const;
+
+ sal_Bool IsDesignMode() const { return m_bDesignMode; }
+ void SetDesignMode( sal_Bool _bDesignMode );
+
+protected:
+ void GetFormState(SfxItemSet &rSet, sal_uInt16 nWhich);
+
+ // gibt es ein Formular auf der aktuellen Seite?
+ void DetermineForms(sal_Bool bInvalidate);
+ void impl_setDesignMode( sal_Bool bDesign);
+};
+
+// ***************************************************************************************************
+// ***************************************************************************************************
+// ***************************************************************************************************
+
+#endif // _SVX_FMSHELL_HXX
diff --git a/svx/inc/svx/fmtools.hxx b/svx/inc/svx/fmtools.hxx
new file mode 100644
index 000000000000..b39f46e85d14
--- /dev/null
+++ b/svx/inc/svx/fmtools.hxx
@@ -0,0 +1,234 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FMTOOLS_HXX
+#define _SVX_FMTOOLS_HXX
+
+#include "svx/svxdllapi.h"
+
+#include <com/sun/star/sdb/SQLContext.hpp>
+#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
+#include <com/sun/star/sdbcx/Privilege.hpp>
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
+#include <com/sun/star/sdbc/XRowSet.hpp>
+#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
+#include <com/sun/star/sdb/XColumn.hpp>
+#include <com/sun/star/sdb/XColumnUpdate.hpp>
+#include <com/sun/star/sdb/SQLErrorEvent.hpp>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
+#include <com/sun/star/sdbcx/XRowLocate.hpp>
+#include <com/sun/star/sdbc/XDataSource.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/frame/XDispatchProviderInterception.hpp>
+#include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
+#include <com/sun/star/container/XIndexContainer.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XStatusListener.hpp>
+#include <com/sun/star/frame/FeatureStateEvent.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XEnumeration.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/FontUnderline.hpp>
+#include <com/sun/star/awt/FontStrikeout.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <com/sun/star/io/XObjectInputStream.hpp>
+#include <com/sun/star/io/XObjectOutputStream.hpp>
+#include <com/sun/star/io/XPersistObject.hpp>
+#include <com/sun/star/util/XNumberFormatter.hpp>
+#include <com/sun/star/util/XNumberFormats.hpp>
+
+#include <vcl/wintypes.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <comphelper/uno3.hxx>
+#include <comphelper/stl_types.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <svl/svstdarr.hxx>
+
+#include <set>
+
+class Window;
+
+//==================================================================
+// allgemeine Typen
+//==================================================================
+// displaying a database exception for the user
+// display info about a simple ::com::sun::star::sdbc::SQLException
+void displayException(const ::com::sun::star::sdbc::SQLException&, Window* _pParent = NULL);
+void displayException(const ::com::sun::star::sdbc::SQLWarning&, Window* _pParent = NULL);
+SVX_DLLPUBLIC void displayException(const ::com::sun::star::sdb::SQLContext&, Window* _pParent = NULL);
+void displayException(const ::com::sun::star::sdb::SQLErrorEvent&, Window* _pParent = NULL);
+void displayException(const ::com::sun::star::uno::Any&, Window* _pParent = NULL);
+
+sal_Int32 getElementPos(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& xCont, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xElement);
+
+SVX_DLLPUBLIC ::rtl::OUString getLabelName(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xControlModel);
+
+// ===================================================================================================
+// = class CursorWrapper - eine Hilfsklasse, die parallel mit je einem ::com::sun::star::uno::Reference<XDatabaseUpdateCursor>,
+// XDatabaseBookmarkCursor und XDatabaseDirectCursor arbeitet
+// ===================================================================================================
+
+class CursorWrapper
+{
+private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> m_xGeneric;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xMoveOperations;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate> m_xBookmarkOperations;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier> m_xColumnsSupplier;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> m_xPropertyAccess;
+
+public:
+ // Construction/Destruction
+ CursorWrapper() { }
+ CursorWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& _rxCursor, sal_Bool bUseCloned = sal_False);
+ SVX_DLLPUBLIC CursorWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _rxCursor, sal_Bool bUseCloned = sal_False);
+ // bei bUseCloned == sal_True wird der Cursor ueber das XCloneable-Interface (dass er besitzen muss) gedoubled und
+ // erst dann benutzt
+
+ friend bool operator==(const CursorWrapper& lhs, const CursorWrapper& rhs)
+ {
+ return lhs.m_xGeneric.get() == rhs.m_xGeneric.get();
+ }
+
+ sal_Bool is() const { return m_xMoveOperations.is(); }
+ sal_Bool Is() const { return m_xMoveOperations.is(); }
+
+ CursorWrapper* operator ->() { return this; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& () const{ return m_xGeneric; }
+
+ // 'Konvertierungen'
+ const CursorWrapper& operator=(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& xCursor);
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& () const { return m_xMoveOperations; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate>& () const { return m_xBookmarkOperations; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier>& () const { return m_xColumnsSupplier; }
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& getPropertySet() const { return m_xPropertyAccess; }
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& getResultSet() const { return m_xMoveOperations; }
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate >& getRowLocate() const { return m_xBookmarkOperations; }
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier >& getColumnsSupplier() const { return m_xColumnsSupplier; }
+
+ // das normale queryInterface
+ ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException )
+ { return m_xMoveOperations->queryInterface(type); }
+
+ // ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate>
+ ::com::sun::star::uno::Any getBookmark(void)
+ throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+ { return m_xBookmarkOperations->getBookmark(); }
+ sal_Bool moveToBookmark(const ::com::sun::star::uno::Any& bookmark) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->moveToBookmark(bookmark); }
+ sal_Bool moveRelativeToBookmark(const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->moveRelativeToBookmark(bookmark, rows); }
+ sal_Int32 compareBookmarks(const ::com::sun::star::uno::Any& lhs, const ::com::sun::star::uno::Any& rhs) const throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->compareBookmarks(lhs, rhs); }
+ sal_Int32 hasOrderedBookmarks(void) const throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->hasOrderedBookmarks(); }
+ sal_Int32 hashBookmark(const ::com::sun::star::uno::Any& bookmark) const throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->hashBookmark(bookmark); }
+
+ // ::com::sun::star::sdbc::XResultSet
+ sal_Bool isBeforeFirst() const { return m_xMoveOperations->isBeforeFirst(); }
+ sal_Bool isAfterLast() const { return m_xMoveOperations->isAfterLast(); }
+ sal_Bool isFirst() const { return m_xMoveOperations->isFirst(); }
+ sal_Bool isLast() const { return m_xMoveOperations->isLast(); }
+ void beforeFirst() { m_xMoveOperations->beforeFirst(); }
+ sal_Bool first() { return m_xMoveOperations->first(); }
+ sal_Bool last() { return m_xMoveOperations->last(); }
+ sal_Int32 getRow() const { return m_xMoveOperations->getRow(); }
+ sal_Bool absolute(sal_Int32 nPosition) { return m_xMoveOperations->absolute(nPosition); }
+ sal_Bool relative(sal_Int32 nCount) { return m_xMoveOperations->relative(nCount); }
+ sal_Bool previous() { return m_xMoveOperations->previous(); }
+ sal_Bool next() { return m_xMoveOperations->next(); }
+ void refreshRow() { m_xMoveOperations->refreshRow(); }
+ sal_Bool rowUpdated() { return m_xMoveOperations->rowUpdated(); }
+ sal_Bool rowInserted() { return m_xMoveOperations->rowInserted(); }
+ sal_Bool rowDeleted() { return m_xMoveOperations->rowDeleted(); }
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> getStatement() { return m_xMoveOperations->getStatement(); }
+ // ::com::sun::star::sdbcx::XColumnsSupplier
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> getColumns() const throw( ::com::sun::star::uno::RuntimeException ) { return m_xColumnsSupplier->getColumns(); }
+private:
+ void ImplConstruct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _rxCursor, sal_Bool bUseCloned);
+};
+
+
+class FmXDisposeMultiplexer;
+class FmXDisposeListener
+{
+ friend class FmXDisposeMultiplexer;
+
+ FmXDisposeMultiplexer* m_pAdapter;
+ ::osl::Mutex& m_rMutex;
+
+public:
+ FmXDisposeListener(::osl::Mutex& _rMutex) : m_pAdapter(NULL), m_rMutex(_rMutex) { }
+ virtual ~FmXDisposeListener();
+
+ virtual void disposing(const ::com::sun::star::lang::EventObject& _rEvent, sal_Int16 _nId) throw( ::com::sun::star::uno::RuntimeException ) = 0;
+
+protected:
+ void setAdapter(FmXDisposeMultiplexer* pAdapter);
+};
+
+//==============================================================================
+
+class FmXDisposeMultiplexer :public ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener>
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent> m_xObject;
+ FmXDisposeListener* m_pListener;
+ sal_Int16 m_nId;
+
+ virtual ~FmXDisposeMultiplexer();
+public:
+ FmXDisposeMultiplexer(FmXDisposeListener* _pListener, const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent>& _rxObject, sal_Int16 _nId = -1);
+
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ void dispose();
+};
+
+// ==================================================================
+
+sal_Int16 getControlTypeByObject(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XServiceInfo>& _rxObject);
+ // get the object type (OBJ_FM_...) from the services the object supports
+
+//==================================================================
+sal_Bool isRowSetAlive(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rxRowSet);
+ // checks if the ::com::sun::star::sdbcx::XColumnsSupplier provided by _rxRowSet supllies any columns
+
+//==================================================================
+typedef ::std::set < ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
+ , ::comphelper::OInterfaceCompare< ::com::sun::star::uno::XInterface >
+ > InterfaceBag;
+
+#endif // _SVX_FMTOOLS_HXX
+
diff --git a/svx/inc/svx/fmview.hxx b/svx/inc/svx/fmview.hxx
new file mode 100644
index 000000000000..34f0ea62a8bf
--- /dev/null
+++ b/svx/inc/svx/fmview.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FMVIEW_HXX
+#define _SVX_FMVIEW_HXX
+
+#include <svx/view3d.hxx>
+#include <comphelper/uno3.hxx>
+#include "svx/svxdllapi.h"
+
+FORWARD_DECLARE_INTERFACE(util,XNumberFormats)
+FORWARD_DECLARE_INTERFACE(beans,XPropertySet)
+
+class OutputDevice;
+class FmFormModel;
+class FmPageViewWinRec;
+class FmFormObj;
+class FmFormPage;
+class FmFormShell;
+class FmXFormView;
+
+namespace svx {
+ class ODataAccessDescriptor;
+ struct OXFormsDescriptor;
+}
+
+class SdrUnoObj;
+namespace com { namespace sun { namespace star { namespace form {
+ class XForm;
+ namespace runtime {
+ class XFormController;
+ }
+} } } }
+
+class SVX_DLLPUBLIC FmFormView : public E3dView
+{
+ FmXFormView* pImpl;
+ FmFormShell* pFormShell;
+
+ void Init();
+
+public:
+ TYPEINFO();
+
+ FmFormView(FmFormModel* pModel, OutputDevice* pOut = 0L);
+ virtual ~FmFormView();
+
+ /** create a control pair (label/bound control) for the database field description given.
+ @param rFieldDesc
+ description of the field. see clipboard format SBA-FIELDFORMAT
+ @deprecated
+ This method is deprecated. Use the version with a ODataAccessDescriptor instead.
+ */
+ SdrObject* CreateFieldControl(const UniString& rFieldDesc) const;
+
+ /** create a control pair (label/bound control) for the database field description given.
+ */
+ SdrObject* CreateFieldControl( const ::svx::ODataAccessDescriptor& _rColumnDescriptor );
+
+ /** create a control pair (label/bound control) for the xforms description given.
+ */
+ SdrObject* CreateXFormsControl( const ::svx::OXFormsDescriptor &_rDesc );
+
+ virtual void MarkListHasChanged();
+ virtual void AddWindowToPaintView(OutputDevice* pNewWin);
+ virtual void DeleteWindowFromPaintView(OutputDevice* pOldWin);
+
+ static void createControlLabelPair(
+ OutputDevice* _pOutDev,
+ sal_Int32 _nXOffsetMM,
+ sal_Int32 _nYOffsetMM,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxField,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormats >& _rxNumberFormats,
+ sal_uInt16 _nControlObjectID,
+ const ::rtl::OUString& _rFieldPostfix,
+ UINT32 _nInventor,
+ UINT16 _nLabelObjectID,
+ SdrPage* _pLabelPage,
+ SdrPage* _pControlPage,
+ SdrModel* _pModel,
+ SdrUnoObj*& _rpLabel,
+ SdrUnoObj*& _rpControl
+ );
+
+ virtual SdrPageView* ShowSdrPage(SdrPage* pPage);
+ virtual void HideSdrPage();
+
+ // for copying complete form structures, not only control models
+ virtual SdrModel* GetMarkedObjModel() const;
+ using E3dView::Paste;
+ virtual sal_Bool Paste(const SdrModel& rMod, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0);
+
+ virtual BOOL MouseButtonDown( const MouseEvent& _rMEvt, Window* _pWin );
+
+ /** grab the focus to the first form control on the view
+ @param _bForceSync
+ <TRUE/> if the handling should be done synchronously.
+ */
+ SVX_DLLPRIVATE void GrabFirstControlFocus( sal_Bool _bForceSync = sal_False );
+
+ /** returns the form controller for a given form and a given device
+ */
+ SVX_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController >
+ GetFormController( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm, const OutputDevice& _rDevice ) const;
+
+ // SdrView
+ BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
+
+ /// shortcut to "GetSdrPageView() ? PTR_CAST( FmFormPage, GetSdrPageView() ) : NULL"
+ FmFormPage* GetCurPage();
+
+ SVX_DLLPRIVATE void ActivateControls(SdrPageView*);
+ SVX_DLLPRIVATE void DeactivateControls(SdrPageView*);
+
+ SVX_DLLPRIVATE void ChangeDesignMode(sal_Bool bDesign);
+
+ SVX_DLLPRIVATE FmXFormView* GetImpl() const { return pImpl; }
+ SVX_DLLPRIVATE FmFormShell* GetFormShell() const { return pFormShell; }
+
+ struct FormShellAccess { friend class FmFormShell; private: FormShellAccess() { } };
+ void SetFormShell( FmFormShell* pShell, FormShellAccess ) { pFormShell = pShell; }
+
+ struct ImplAccess { friend class FmXFormView; private: ImplAccess() { } };
+ void SetMoveOutside( bool _bMoveOutside, ImplAccess ) { E3dView::SetMoveOutside( _bMoveOutside ); }
+ virtual void InsertControlContainer(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& xCC);
+ virtual void RemoveControlContainer(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& xCC);
+
+ virtual SdrPaintWindow* BeginCompleteRedraw(OutputDevice* pOut);
+ virtual void EndCompleteRedraw(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer);
+
+ SVX_DLLPRIVATE const OutputDevice* GetActualOutDev() const {return pActualOutDev;}
+ SVX_DLLPRIVATE sal_Bool checkUnMarkAll(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xSource);
+
+private:
+ SVX_DLLPRIVATE void AdjustMarks(const SdrMarkList& rMarkList);
+ SVX_DLLPRIVATE FmFormObj* getMarkedGrid() const;
+ protected:
+ using E3dView::SetMoveOutside;
+};
+
+#endif // _FML_FMVIEW_HXX
+
diff --git a/svx/inc/svx/fntctl.hxx b/svx/inc/svx/fntctl.hxx
new file mode 100644
index 000000000000..f28e158df1df
--- /dev/null
+++ b/svx/inc/svx/fntctl.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FNTCTL_HXX
+#define _SVX_FNTCTL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <sfx2/mnuitem.hxx>
+#include <svl/lstner.hxx>
+#include "svx/svxdllapi.h"
+
+
+
+class FontNameMenu;
+class SfxBindings;
+
+// class SvxFontMenuControl ----------------------------------------------
+
+class SVX_DLLPUBLIC SvxFontMenuControl : public SfxMenuControl, public SfxListener
+{
+private:
+ FontNameMenu* pMenu;
+ Menu& rParent;
+
+//#if 0 // _SOLAR__PRIVATE
+ SVX_DLLPRIVATE void FillMenu();
+ DECL_LINK( MenuSelect, FontNameMenu * );
+ SVX_DLLPRIVATE virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ SVX_DLLPRIVATE virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+//#endif
+
+public:
+ SvxFontMenuControl( USHORT nId, Menu&, SfxBindings& );
+ ~SvxFontMenuControl();
+
+ virtual PopupMenu* GetPopup() const;
+
+ SFX_DECL_MENU_CONTROL();
+};
+
+
+
+#endif
+
diff --git a/svx/inc/svx/fntctrl.hxx b/svx/inc/svx/fntctrl.hxx
new file mode 100644
index 000000000000..2b49e413e7be
--- /dev/null
+++ b/svx/inc/svx/fntctrl.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FNTCTRL_HXX
+#define _SVX_FNTCTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <vcl/window.hxx>
+#include <editeng/svxfont.hxx>
+#include "svx/svxdllapi.h"
+
+#ifndef _RTL_USTRING_HXX_
+#include <rtl/ustring.hxx>
+#endif
+
+// forward ---------------------------------------------------------------
+
+class FontPrevWin_Impl;
+
+// class SvxFontPrevWindow -----------------------------------------------
+
+class SVX_DLLPUBLIC SvxFontPrevWindow : public Window
+{
+ using OutputDevice::SetFont;
+private:
+ FontPrevWin_Impl* pImpl;
+
+ SVX_DLLPRIVATE void InitSettings( BOOL bForeground, BOOL bBackground );
+
+public:
+ SvxFontPrevWindow( Window* pParent, const ResId& rId );
+ virtual ~SvxFontPrevWindow();
+
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ // Aus Effizienz-gr"unden nicht const
+ SvxFont& GetFont();
+ const SvxFont& GetFont() const;
+ void SetFont( const SvxFont& rFont );
+ void SetFont( const SvxFont& rNormalFont, const SvxFont& rCJKFont, const SvxFont& rCTLFont );
+ void SetCJKFont( const SvxFont& rFont );
+ void SetCTLFont( const SvxFont& rFont );
+ SvxFont& GetCJKFont();
+ SvxFont& GetCTLFont();
+ void SetColor( const Color& rColor );
+ void ResetColor();
+ void SetBackColor( const Color& rColor );
+ void UseResourceText( BOOL bUse = TRUE );
+ void Paint( const Rectangle& );
+
+ BOOL IsTwoLines() const;
+ void SetTwoLines(BOOL bSet);
+
+ void SetBrackets(sal_Unicode cStart, sal_Unicode cEnd);
+
+ void SetFontWidthScale( UINT16 nScaleInPercent );
+
+ void AutoCorrectFontColor( void );
+
+ void SetPreviewText( const ::rtl::OUString& rString );
+ void SetFontNameAsPreviewText();
+};
+
+#endif // #ifndef _SVX_FNTCTRL_HXX
+
diff --git a/svx/inc/svx/fntszctl.hxx b/svx/inc/svx/fntszctl.hxx
new file mode 100644
index 000000000000..dfeec808e602
--- /dev/null
+++ b/svx/inc/svx/fntszctl.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FNTSZCTL_HXX
+#define _SVX_FNTSZCTL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <sfx2/mnuitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+
+class SfxBindings;
+class FontSizeMenu;
+
+// class SvxFontSizeMenuControl ------------------------------------------
+
+class SVX_DLLPUBLIC SvxFontSizeMenuControl : public SfxMenuControl
+{
+private:
+ FontSizeMenu* pMenu;
+ Menu& rParent;
+ SfxStatusForwarder aFontNameForwarder;
+
+//#if 0 // _SOLAR__PRIVATE
+ DECL_LINK( MenuSelect, FontSizeMenu * );
+//#endif
+
+protected:
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+public:
+ SvxFontSizeMenuControl( USHORT nId, Menu&, SfxBindings& );
+ ~SvxFontSizeMenuControl();
+
+ virtual PopupMenu* GetPopup() const;
+
+ SFX_DECL_MENU_CONTROL();
+};
+
+
+
+#endif
+
diff --git a/svx/inc/svx/fontwork.hxx b/svx/inc/svx/fontwork.hxx
new file mode 100644
index 000000000000..73f0ac5dd712
--- /dev/null
+++ b/svx/inc/svx/fontwork.hxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_FONTWORK_HXX
+#define _SVX_FONTWORK_HXX
+
+// include ---------------------------------------------------------------
+
+#ifndef _TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#include <svtools/valueset.hxx>
+#include <sfx2/dockwin.hxx>
+#include <sfx2/ctrlitem.hxx>
+#include <svx/xenum.hxx>
+#include <svx/dlgctrl.hxx>
+#include "svx/svxdllapi.h"
+
+// forward ---------------------------------------------------------------
+
+class SdrView;
+class SdrPageView;
+class SdrObject;
+
+class XFormTextAdjustItem;
+class XFormTextDistanceItem;
+class XFormTextStartItem;
+class XFormTextMirrorItem;
+class XFormTextStdFormItem;
+class XFormTextHideFormItem;
+class XFormTextOutlineItem;
+class XFormTextShadowItem;
+class XFormTextShadowColorItem;
+class XFormTextShadowXValItem;
+class XFormTextShadowYValItem;
+
+/*************************************************************************
+|*
+|* ControllerItem fuer Fontwork
+|*
+\************************************************************************/
+
+class SvxFontWorkDialog;
+
+class SvxFontWorkControllerItem : public SfxControllerItem
+{
+ SvxFontWorkDialog &rFontWorkDlg;
+
+protected:
+ virtual void StateChanged(USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState);
+
+public:
+ SvxFontWorkControllerItem(USHORT nId, SvxFontWorkDialog&, SfxBindings&);
+};
+
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer Fontwork-Dialog
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxFontWorkChildWindow : public SfxChildWindow
+{
+ public:
+ SvxFontWorkChildWindow(Window*, USHORT, SfxBindings*, SfxChildWinInfo*);
+ SFX_DECL_CHILDWINDOW(SvxFontWorkChildWindow);
+};
+
+/*************************************************************************
+|*
+|* Floating Window zur Attributierung von Texteffekten
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC SvxFontWorkDialog : public SfxDockingWindow
+{
+ #define CONTROLLER_COUNT 12
+
+ SvxFontWorkControllerItem* pCtrlItems[CONTROLLER_COUNT];
+
+ ValueSet aFormSet;
+
+ ToolBox aTbxStyle;
+ ToolBox aTbxAdjust;
+
+ FixedImage aFbDistance;
+ MetricField aMtrFldDistance;
+ FixedImage aFbTextStart;
+ MetricField aMtrFldTextStart;
+
+ ToolBox aTbxShadow;
+
+ FixedImage aFbShadowX;
+ MetricField aMtrFldShadowX;
+ FixedImage aFbShadowY;
+ MetricField aMtrFldShadowY;
+
+ ColorLB aShadowColorLB;
+
+ SfxBindings& rBindings;
+ Timer aInputTimer;
+ BOOL bUserZoomedIn;
+
+ USHORT nLastStyleTbxId;
+ USHORT nLastAdjustTbxId;
+ USHORT nLastShadowTbxId;
+ long nSaveShadowX;
+ long nSaveShadowY;
+ long nSaveShadowAngle;
+ long nSaveShadowSize;
+
+ ImageList maImageList;
+ ImageList maImageListH;
+
+ const XColorTable* pColorTable;
+
+#ifdef _SVX_FONTWORK_CXX
+ friend class SvxFontWorkChildWindow;
+ friend class SvxFontWorkControllerItem;
+
+ DECL_LINK( SelectStyleHdl_Impl, void * );
+ DECL_LINK( SelectAdjustHdl_Impl, void * );
+ DECL_LINK( SelectShadowHdl_Impl, void * );
+
+ DECL_LINK( ModifyInputHdl_Impl, void * );
+ DECL_LINK( InputTimoutHdl_Impl, void * );
+
+ DECL_LINK( FormSelectHdl_Impl, void * );
+ DECL_LINK( ColorSelectHdl_Impl, void * );
+
+ void SetStyle_Impl(const XFormTextStyleItem*);
+ void SetAdjust_Impl(const XFormTextAdjustItem*);
+ void SetDistance_Impl(const XFormTextDistanceItem*);
+ void SetStart_Impl(const XFormTextStartItem*);
+ void SetMirror_Impl(const XFormTextMirrorItem*);
+ void SetStdForm_Impl(const XFormTextStdFormItem*);
+ void SetShowForm_Impl(const XFormTextHideFormItem*);
+ void SetOutline_Impl(const XFormTextOutlineItem*);
+ void SetShadow_Impl(const XFormTextShadowItem*,
+ BOOL bRestoreValues = FALSE);
+ void SetShadowColor_Impl(const XFormTextShadowColorItem*);
+ void SetShadowXVal_Impl(const XFormTextShadowXValItem*);
+ void SetShadowYVal_Impl(const XFormTextShadowYValItem*);
+#endif
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ void ApplyImageList();
+
+ protected:
+ virtual void Zoom();
+ virtual SfxChildAlignment CheckAlignment( SfxChildAlignment eActAlign,
+ SfxChildAlignment eAlign );
+
+ public:
+ SvxFontWorkDialog( SfxBindings *pBindinx,
+ SfxChildWindow *pCW,
+ Window* pParent,
+ const ResId& rResId );
+ ~SvxFontWorkDialog();
+
+ void SetColorTable(const XColorTable* pTable);
+ void SetActive(BOOL bActivate = TRUE);
+
+ void CreateStdFormObj(SdrView& rView, SdrPageView& rPV,
+ const SfxItemSet& rAttr, SdrObject& rOldObj,
+ XFormTextStdForm eForm);
+};
+
+#endif // _SVX_FONTWORK_HXX
+
diff --git a/svx/inc/svx/fontworkbar.hxx b/svx/inc/svx/fontworkbar.hxx
new file mode 100644
index 000000000000..95d5135075bb
--- /dev/null
+++ b/svx/inc/svx/fontworkbar.hxx
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FONTWORK_BAR_HXX
+#define _SVX_FONTWORK_BAR_HXX
+
+#include <sfx2/shell.hxx>
+#include <sfx2/module.hxx>
+#include <svx/ifaceids.hxx>
+#include "svx/svxdllapi.h"
+
+class SfxViewShell;
+class SdrView;
+
+/************************************************************************/
+
+namespace svx
+{
+
+bool SVX_DLLPUBLIC checkForSelectedFontWork( SdrView* pSdrView, sal_uInt32& nCheckStatus );
+
+class SVX_DLLPUBLIC FontworkBar : public SfxShell
+{
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SVX_INTERFACE_FONTWORK_BAR)
+
+ FontworkBar(SfxViewShell* pViewShell );
+ ~FontworkBar();
+
+ static void execute( SdrView* pSdrView, SfxRequest& rReq, SfxBindings& rBindings );
+ static void getState( SdrView* pSdrView, SfxItemSet& rSet );
+};
+
+}
+
+#endif // _SVX_FONTWORK_BAR_HXX
diff --git a/svx/inc/svx/framebordertype.hxx b/svx/inc/svx/framebordertype.hxx
new file mode 100644
index 000000000000..f720c215fffc
--- /dev/null
+++ b/svx/inc/svx/framebordertype.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_FRAMEBORDERTYPE_HXX
+#define SVX_FRAMEBORDERTYPE_HXX
+
+#include "svx/svxdllapi.h"
+
+namespace svx {
+
+// ============================================================================
+
+/** Enumerates all borders a frame selection control can contain. */
+enum FrameBorderType
+{
+ FRAMEBORDER_NONE, /// No border (special state).
+ FRAMEBORDER_LEFT, /// Left frame border.
+ FRAMEBORDER_RIGHT, /// Right frame border.
+ FRAMEBORDER_TOP, /// Top frame border.
+ FRAMEBORDER_BOTTOM, /// Bottom frame border.
+ FRAMEBORDER_HOR, /// Inner horizontal frame border.
+ FRAMEBORDER_VER, /// Inner vertical frame border.
+ FRAMEBORDER_TLBR, /// Top-left to bottom-right frame border.
+ FRAMEBORDER_BLTR /// Bottom-left to top-right frame border.
+};
+
+/** The number of valid frame border types (excluding FRAMEBORDER_NONE). */
+const int FRAMEBORDERTYPE_COUNT = 8;
+
+/** Returns the frame border type from a 0-based integer index. */
+SVX_DLLPUBLIC FrameBorderType GetFrameBorderTypeFromIndex( size_t nIndex );
+
+/** Returns the zero-based index of a valid frame border type. */
+size_t GetIndexFromFrameBorderType( FrameBorderType eBorder );
+
+// ============================================================================
+
+} // namespace svx
+
+#endif
+
diff --git a/svx/inc/svx/framelink.hxx b/svx/inc/svx/framelink.hxx
new file mode 100644
index 000000000000..9d5e2cd3b1c6
--- /dev/null
+++ b/svx/inc/svx/framelink.hxx
@@ -0,0 +1,727 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_FRAMELINK_HXX
+#define SVX_FRAMELINK_HXX
+
+#include <algorithm>
+#include <sal/types.h>
+#include <tools/gen.hxx>
+#include <tools/color.hxx>
+#include "svx/svxdllapi.h"
+
+class OutputDevice;
+class SvxBorderLine;
+
+namespace svx {
+namespace frame {
+
+// ============================================================================
+// Enums
+// ============================================================================
+
+/** Specifies how the reference points for frame borders are used.
+ */
+enum RefMode
+{
+ /** Frame borders are drawn centered to the reference points. */
+ REFMODE_CENTERED,
+
+ /** The reference points specify the begin of the frame border width.
+
+ The result is that horizontal lines are drawn below, and vertical lines
+ are drawn right of the reference points.
+ */
+ REFMODE_BEGIN,
+
+ /** The reference points specify the end of the frame border width.
+
+ The result is that horizontal lines are drawn above, and vertical lines
+ are drawn left of the reference points.
+ */
+ REFMODE_END
+};
+
+// ============================================================================
+// Classes
+// ============================================================================
+
+/** Contains the widths of primary and secondary line of a frame style.
+
+ In the following, "frame style" is a complete style of one frame border,
+ i.e. the double line at the left side of the frame. A "line" is always a
+ trivial single line, i.e. the first line of a double frame style.
+
+ The following states of the members of this struct are valid:
+
+ mnPrim mnDist mnSecn frame style
+ -------------------------------------------------
+ 0 0 0 invisible
+ >0 0 0 single
+ >0 >0 >0 double
+
+ The behaviour of the member functions for other states is not defined.
+
+ Per definition the primary line in double frame styles is:
+ - The top line for horizontal frame borders.
+ - The left line for vertical frame borders.
+ - The bottom-left line for top-left to bottom-right diagonal frame borders.
+ - The top-left line for bottom-left to top-right diagonal frame borders.
+
+ The following picture shows the upper end of a vertical double frame
+ border.
+
+ |<---------------- GetWidth() ----------------->|
+ | |
+ |<----- mnPrim ----->||<- mnDist ->||<- mnSecn >|
+ | || || |
+ ###################### #############
+ ###################### #############
+ ###################### #############
+ ###################### #############
+ ###################### | #############
+ ###################### | #############
+ |
+ |<- middle of the frame border
+ */
+class SVX_DLLPUBLIC Style
+{
+public:
+ /** Constructs an invisible frame style. */
+ inline explicit Style() : meRefMode( REFMODE_CENTERED ), mnPrim( 0 ), mnDist( 0 ), mnSecn( 0 ), mbDotted( false ) {}
+ /** Constructs a frame style with passed line widths. */
+ inline explicit Style( sal_uInt16 nP, sal_uInt16 nD, sal_uInt16 nS ) :
+ meRefMode( REFMODE_CENTERED ), mbDotted( false )
+ { Set( nP, nD, nS ); }
+ /** Constructs a frame style with passed color and line widths. */
+ inline explicit Style( const Color& rColor, sal_uInt16 nP, sal_uInt16 nD, sal_uInt16 nS ) :
+ meRefMode( REFMODE_CENTERED ), mbDotted( false )
+ { Set( rColor, nP, nD, nS ); }
+ /** Constructs a frame style from the passed SvxBorderLine struct. */
+ inline explicit Style( const SvxBorderLine& rBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16, bool /*bUseDots*/ = false ) :
+ meRefMode( REFMODE_CENTERED ) { Set( rBorder, fScale, nMaxWidth ); }
+ /** Constructs a frame style from the passed SvxBorderLine struct. Clears the style, if pBorder is 0. */
+ inline explicit Style( const SvxBorderLine* pBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16, bool /*bUseDots*/ = false ) :
+ meRefMode( REFMODE_CENTERED ) { Set( pBorder, fScale, nMaxWidth ); }
+
+ inline RefMode GetRefMode() const { return meRefMode; }
+ inline const Color& GetColor() const { return maColor; }
+ inline sal_uInt16 Prim() const { return mnPrim; }
+ inline sal_uInt16 Dist() const { return mnDist; }
+ inline sal_uInt16 Secn() const { return mnSecn; }
+ inline bool Dotted() const { return mbDotted; }
+
+ /** Returns the total width of this frame style. */
+ inline sal_uInt16 GetWidth() const { return mnPrim + mnDist + mnSecn; }
+
+
+ /** Sets the frame style to invisible state. */
+ void Clear();
+ /** Sets the frame style to the passed line widths. */
+ void Set( sal_uInt16 nP, sal_uInt16 nD, sal_uInt16 nS );
+ /** Sets the frame style to the passed line widths. */
+ void Set( const Color& rColor, sal_uInt16 nP, sal_uInt16 nD, sal_uInt16 nS );
+ /** Sets the frame style to the passed SvxBorderLine struct. */
+ void Set( const SvxBorderLine& rBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16, bool /*bUseDots*/ = false );
+ /** Sets the frame style to the passed SvxBorderLine struct. Clears the style, if pBorder is 0. */
+ void Set( const SvxBorderLine* pBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16, bool /*bUseDots*/ = false );
+
+ /** Sets a new reference point handling mode, does not modify other settings. */
+ inline void SetRefMode( RefMode eRefMode ) { meRefMode = eRefMode; }
+ /** Sets a new color, does not modify other settings. */
+ inline void SetColor( const Color& rColor ) { maColor = rColor; }
+ /** Sets whether to use dotted style for single hair lines. */
+ inline void SetDotted( bool bDotted ) { mbDotted = bDotted; }
+
+ /** Scales the style by the specified scaling factor. Ensures that visible lines keep visible. */
+ Style& ScaleSelf( double fScale, sal_uInt16 nMaxWidth = SAL_MAX_UINT16 );
+ /** Returns this style scaled by the specified scaling factor. Ensures that visible lines keep visible. */
+ Style Scale( double fScale, sal_uInt16 nMaxWidth = SAL_MAX_UINT16 ) const;
+
+ /** Mirrors this style (exchanges primary and secondary), if it is a double frame style. */
+ Style& MirrorSelf();
+ /** Returns this style mirrored, if it is a double frame style, otherwise a simple copy. */
+ Style Mirror() const;
+
+private:
+ Color maColor; /// The color of the line(s) of this frame border.
+ RefMode meRefMode; /// Reference point handling for this frame border.
+ sal_uInt16 mnPrim; /// Width of primary (single, left, or top) line.
+ sal_uInt16 mnDist; /// Distance between primary and secondary line.
+ sal_uInt16 mnSecn; /// Width of secondary (right or bottom) line.
+ bool mbDotted; /// true = Draw dotted lines; false = Draw solid lines.
+};
+
+bool operator==( const Style& rL, const Style& rR );
+SVX_DLLPUBLIC bool operator<( const Style& rL, const Style& rR );
+
+inline bool operator!=( const Style& rL, const Style& rR ) { return !(rL == rR); }
+inline bool operator>( const Style& rL, const Style& rR ) { return rR < rL; }
+inline bool operator<=( const Style& rL, const Style& rR ) { return !(rR < rL); }
+inline bool operator>=( const Style& rL, const Style& rR ) { return !(rL < rR); }
+
+// ----------------------------------------------------------------------------
+
+/** Extends the Style struct with an angle for diagonal frame borders.
+
+ The angle is specified in radian (a full circle is equivalent to 2*PI).
+ It is dependent on the context, how the value is interpreted, i.e. it may
+ specify the angle to a horizontal or vertical frame border.
+ */
+class DiagStyle : public Style
+{
+public:
+ /** Constructs an invisible diagonal frame style. */
+ inline explicit DiagStyle() : mfAngle( 0.0 ) {}
+ /** Constructs a diagonal frame style passed style and angle. */
+ inline explicit DiagStyle( const Style& rStyle, double fAngle ) :
+ Style( rStyle ), mfAngle( fAngle ) {}
+
+ inline double GetAngle() const { return mfAngle; }
+
+ /** Returns this style mirrored, if it is a double frame style, otherwise a simple copy. */
+ inline DiagStyle Mirror() const { return DiagStyle( Style::Mirror(), mfAngle ); }
+
+private:
+ double mfAngle; /// Angle between this and hor. or vert. border.
+};
+
+// ============================================================================
+// Various helper functions
+// ============================================================================
+
+/** Returns the angle between horizontal border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ horizontal borders, and is therefore in the range [0,PI/2] (inclusive). The
+ passed sizes may be negative, calculation is done with absolute values.
+ */
+SVX_DLLPUBLIC double GetHorDiagAngle( long nWidth, long nHeight );
+
+/** Returns the angle between horizontal border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ horizontal borders, and is therefore in the range [0,PI/2] (inclusive). The
+ passed rectangle positions may be unordered, they are adjusted internally.
+ */
+inline double GetHorDiagAngle( long nX1, long nX2, long nY1, long nY2 )
+{ return GetHorDiagAngle( nX2 - nX1, nY2 - nY1 ); }
+
+/** Returns the angle between horizontal border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ horizontal borders, and is therefore in the range [0,PI/2] (inclusive). The
+ passed rectangle edges may be unordered, they are adjusted internally.
+ */
+inline double GetHorDiagAngle( const Point& rP1, const Point& rP2 )
+{ return GetHorDiagAngle( rP2.X() - rP1.X(), rP2.Y() - rP1.Y() ); }
+
+/** Returns the angle between horizontal border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ horizontal borders, and is therefore in the range [0,PI/2] (inclusive).
+ */
+inline double GetHorDiagAngle( const Rectangle& rRect )
+{ return GetHorDiagAngle( rRect.GetWidth(), rRect.GetHeight() ); }
+
+// ----------------------------------------------------------------------------
+
+/** Returns the angle between vertical border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ vertical borders, and is therefore in the range [0,PI/2] (inclusive). The
+ passed sizes may be negative, calculation is done with absolute values.
+ */
+inline double GetVerDiagAngle( long nWidth, long nHeight )
+{ return GetHorDiagAngle( nHeight, nWidth ); }
+
+/** Returns the angle between vertical border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ vertical borders, and is therefore in the range [0,PI/2] (inclusive). The
+ passed rectangle positions may be unordered, they are adjusted internally.
+ */
+inline double GetVerDiagAngle( long nX1, long nX2, long nY1, long nY2 )
+{ return GetVerDiagAngle( nX2 - nX1, nY2 - nY1 ); }
+
+/** Returns the angle between vertical border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ vertical borders, and is therefore in the range [0,PI/2] (inclusive). The
+ passed rectangle edges may be unordered, they are adjusted internally.
+ */
+inline double GetVerDiagAngle( const Point& rP1, const Point& rP2 )
+{ return GetVerDiagAngle( rP2.X() - rP1.X(), rP2.Y() - rP1.Y() ); }
+
+/** Returns the angle between vertical border of a rectangle and its diagonal.
+
+ The returned values represents the inner angle between the diagonals and
+ vertical borders, and is therefore in the range [0,PI/2] (inclusive).
+ */
+inline double GetVerDiagAngle( const Rectangle& rRect )
+{ return GetVerDiagAngle( rRect.GetWidth(), rRect.GetHeight() ); }
+
+// ============================================================================
+
+/** Returns an X coordinate for a diagonal frame border in the specified height.
+
+ This function is for usage with the top-left end of a top-left to
+ bottom-right diagonal frame border, connected to the left end of a
+ horizontal frame border.
+
+ The function returns the relative X position (i.e. for a polygon) of the
+ diagonal frame border according to the specified relative Y position. The
+ mentioned positions are relative to the reference point of both frame
+ borders.
+
+ +----------------------------------------------------------
+ | The horizontal frame border.
+ | |
+ - - - - - - | --+-- <---- Reference point for horizontal and diagonal frame borders.
+ ^ | \ | \
+ nVerOffs | \ \ <--- The diagonal frame border.
+ v +---\ \------------------------------------------------
+ - - - - - - - - -\- - -X <----- The function calculates the X position of i.e.
+ \ \ this point (relative from X of reference point).
+ \ \
+ Primary -->\ \<-- Secondary
+
+ @param nVerOffs
+ The vertical position of the point to be calculated, relative to the Y
+ coordinate of the reference point.
+ @param nDiagOffs
+ The width offset across the diagonal frame border (0 = middle),
+ regardless of the gradient of the diagonal frame border (always
+ vertical to the direction of the diagonal frame border). This value is
+ not related in any way to the reference point. For details about
+ relative width offsets, see description of class Style.
+ @param fAngle
+ Inner (right) angle between diagonal and horizontal frame border.
+ */
+SVX_DLLPUBLIC long GetTLDiagOffset( long nVerOffs, long nDiagOffs, double fAngle );
+
+/** Returns an X coordinate for a diagonal frame border in the specified height.
+
+ This function is for usage with the bottom-left end of a bottom-left to
+ top-right diagonal frame border, connected to the left end of a horizontal
+ frame border.
+
+ The function returns the relative X position (i.e. for a polygon) of the
+ diagonal frame border according to the specified relative Y position. The
+ mentioned positions are relative to the reference point of both frame
+ borders.
+
+ Primary -->/ /<--- Secondary
+ / /
+ / / The function calculates the X position of i.e.
+ - - - - - - - - -/- - -X <----- this point (relative from X of reference point).
+ ^ +---/ /------------------------------------------------
+ nVerOffs | / / <--- The diagonal frame border.
+ v | / | /
+ - - - - - - | --+-- <---- Reference point for horizontal and diagonal frame borders.
+ | |
+ | The horizontal frame border.
+ +----------------------------------------------------------
+
+ @param nVerOffs
+ The vertical position of the point to be calculated, relative to the Y
+ coordinate of the reference point.
+ @param nDiagOffs
+ The width offset across the diagonal frame border (0 = middle),
+ regardless of the gradient of the diagonal frame border (always
+ vertical to the direction of the diagonal frame border). This value is
+ not related in any way to the reference point. For details about
+ relative width offsets, see description of class Style.
+ @param fAngle
+ Inner (right) angle between diagonal and horizontal frame border.
+ */
+long GetBLDiagOffset( long nVerOffs, long nDiagOffs, double fAngle );
+
+/** Returns an X coordinate for a diagonal frame border in the specified height.
+
+ This function is for usage with the bottom-right end of a top-left to
+ bottom-right diagonal frame border, connected to the right end of a
+ horizontal frame border.
+
+ @param nVerOffs
+ The vertical position of the point to be calculated, relative to the Y
+ coordinate of the reference point.
+ @param nDiagOffs
+ The width offset across the diagonal frame border (0 = middle),
+ regardless of the gradient of the diagonal frame border (always
+ vertical to the direction of the diagonal frame border). This value is
+ not related in any way to the reference point. For details about
+ relative width offsets, see description of class Style.
+ @param fAngle
+ Inner (left) angle between diagonal and horizontal frame border.
+ */
+long GetBRDiagOffset( long nVerOffs, long nDiagOffs, double fAngle );
+
+/** Returns an X coordinate for a diagonal frame border in the specified height.
+
+ This function is for usage with the top-right end of a bottom-left to
+ top-right diagonal frame border, connected to the right end of a horizontal
+ frame border.
+
+ @param nVerOffs
+ The vertical position of the point to be calculated, relative to the Y
+ coordinate of the reference point.
+ @param nDiagOffs
+ The width offset across the diagonal frame border (0 = middle),
+ regardless of the gradient of the diagonal frame border (always
+ vertical to the direction of the diagonal frame border). This value is
+ not related in any way to the reference point. For details about
+ relative width offsets, see description of class Style.
+ @param fAngle
+ Inner (left) angle between diagonal and horizontal frame border.
+ */
+long GetTRDiagOffset( long nVerOffs, long nDiagOffs, double fAngle );
+
+// ============================================================================
+
+/** Checks whether two horizontal frame borders are "connectable".
+
+ Two borders are "connectable" in terms of this function, if both can be
+ drawn with only one call of a border drawing function. This means, the two
+ frame borders must have equal style and color, and none of the other
+ vertical and diagonal frame borders break the lines of the two borders in
+ any way (i.e. two vertical double frame borders would break the horizonal
+ frame borders). Of course this function can be used for vertical frame
+ borders as well.
+
+ The follong picture shows the meaning of all passed parameters:
+
+ \ rTFromT /
+ \ | /
+ rTFromTL | rTFromTR
+ \ | /
+ \ | /
+ ======== rLBorder ========= ========== rRBorder =======
+ / | \
+ / | \
+ rBFromBL | rBFromBR
+ / | \
+ / rBFromB \
+
+ @return
+ True, if rLBorder and rRBorder can be drawn in one step without
+ interruption at their connection point.
+ */
+SVX_DLLPUBLIC bool CheckFrameBorderConnectable(
+ const Style& rLBorder, /// Style of the left frame border to connect.
+ const Style& rRBorder, /// Style of the right frame border to connect.
+
+ const Style& rTFromTL, /// Diagonal frame border from top-left to connection point.
+ const Style& rTFromT, /// Vertical frame border from top to connection point.
+ const Style& rTFromTR, /// Horizontal frame border from top-right to connection point.
+
+ const Style& rBFromBL, /// Diagonal frame border from bottom-left to connection point.
+ const Style& rBFromB, /// Vertical frame border from bottom to connection point.
+ const Style& rBFromBR /// Horizontal frame border from bottom-right to connection point.
+);
+
+// ============================================================================
+// Drawing functions
+// ============================================================================
+
+/** Draws a horizontal frame border, regards all connected frame styles.
+
+ The frame style to draw is passed as parameter rBorder. The function
+ calculates the adjustment in X direction for left and right end of primary
+ and secondary line of the frame border (the style may present a double
+ line). The line ends may differ according to the connected frame styles
+ coming from top, bottom, left, right, and/or diagonal.
+
+ Thick frame styles are always drawn centered (in width) to the passed
+ reference points. The Y coordinates of both reference points must be equal
+ (the line cannot be drawn slanted).
+
+ The function preserves all settings of the passed output device.
+
+ All parameters starting with "rL" refer to the left end of the processed
+ frame border, all parameters starting with "rR" refer to the right end.
+ The following part of the parameter name starting with "From" specifies
+ where the frame border comes from. Example: "rLFromTR" means the frame
+ border coming from top-right, connected to the left end of rBorder (and
+ therefore a diagonal frame border).
+
+ The follong picture shows the meaning of all passed parameters:
+
+ rLFromT / \ rRFromT
+ | / \ |
+ | rLFromTR rRFromTL |
+ | / \ |
+ | / \ |
+ --- rLFromL --- ============== rBorder ============== --- rRFromR ---
+ | \ / |
+ | \ / |
+ | rLFromBR rRFromBL |
+ | \ / |
+ rLFromB \ / rRFromB
+ */
+SVX_DLLPUBLIC void DrawHorFrameBorder(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+
+ const Point& rLPos, /// Reference point for left end of the processed frame border.
+ const Point& rRPos, /// Reference point for right end of the processed frame border.
+ const Style& rBorder, /// Style of the processed frame border.
+
+ const DiagStyle& rLFromTR, /// Diagonal frame border from top-right to left end of rBorder.
+ const Style& rLFromT, /// Vertical frame border from top to left end of rBorder.
+ const Style& rLFromL, /// Horizontal frame border from left to left end of rBorder.
+ const Style& rLFromB, /// Vertical frame border from bottom to left end of rBorder.
+ const DiagStyle& rLFromBR, /// Diagonal frame border from bottom-right to left end of rBorder.
+
+ const DiagStyle& rRFromTL, /// Diagonal frame border from top-left to right end of rBorder.
+ const Style& rRFromT, /// Vertical frame border from top to right end of rBorder.
+ const Style& rRFromR, /// Horizontal frame border from right to right end of rBorder.
+ const Style& rRFromB, /// Vertical frame border from bottom to right end of rBorder.
+ const DiagStyle& rRFromBL, /// Diagonal frame border from bottom-left to right end of rBorder.
+
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ----------------------------------------------------------------------------
+
+/** Draws a horizontal frame border, regards all connected frame styles.
+
+ This is a simplified version of the DrawHorFrameBorder() function described
+ above. It does not support diagonal connected frame borders. See description
+ above for additional details about the parameters.
+
+ The function preserves all settings of the passed output device.
+ */
+void SVX_DLLPUBLIC DrawHorFrameBorder(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+
+ const Point& rLPos, /// Reference point for left end of the processed frame border.
+ const Point& rRPos, /// Reference point for right end of the processed frame border.
+ const Style& rBorder, /// Style of the processed frame border.
+
+ const Style& rLFromT, /// Vertical frame border from top to left end of rBorder.
+ const Style& rLFromL, /// Horizontal frame border from left to left end of rBorder.
+ const Style& rLFromB, /// Vertical frame border from bottom to left end of rBorder.
+
+ const Style& rRFromT, /// Vertical frame border from top to right end of rBorder.
+ const Style& rRFromR, /// Horizontal frame border from right to right end of rBorder.
+ const Style& rRFromB, /// Vertical frame border from bottom to right end of rBorder.
+
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ----------------------------------------------------------------------------
+
+/** Draws a horizontal frame border without connected frame styles.
+
+ This is the most simplified version of the DrawHorFrameBorder() function
+ described above. See description above for additional details about the
+ parameters.
+
+ The function preserves all settings of the passed output device.
+ */
+void SVX_DLLPUBLIC DrawHorFrameBorder(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+ const Point& rLPos, /// Reference point for left end of the processed frame border.
+ const Point& rRPos, /// Reference point for right end of the processed frame border.
+ const Style& rBorder, /// Style of the frame border to draw.
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ============================================================================
+
+/** Draws a vertical frame border, regards all connected frame styles.
+
+ The frame style to draw is passed as parameter rBorder. The function
+ calculates the adjustment in Y direction for top and bottom end of primary
+ and secondary line of the frame border (the style may present a double
+ line). The line ends may differ according to the connected frame styles
+ coming from left, right, top, bottom, and/or diagonal.
+
+ Thick frame styles are always drawn centered (in width) to the passed
+ reference points. The X coordinates of both reference points must be equal
+ (the line cannot be drawn slanted).
+
+ The function preserves all settings of the passed output device.
+
+ All parameters starting with "rT" refer to the top end of the processed
+ frame border, all parameters starting with "rB" refer to the bottom end.
+ The following part of the parameter name starting with "From" specifies
+ where the frame border comes from. Example: "rTFromBL" means the frame
+ border coming from bottom-left, connected to the top end of rBorder (and
+ therefore a diagonal frame border).
+
+ The follong picture shows the meaning of all passed parameters:
+
+ |
+ rTFromT
+ |
+ |
+ --- rTFromL --- --- rTFromR ---
+ / # \
+ / # \
+ rTFromBL # rTFromBR
+ / # \
+ / # \
+ #
+ rBorder
+ #
+ \ # /
+ \ # /
+ rBFromTL # rBFromTR
+ \ # /
+ \ # /
+ --- rBFromL --- --- rBFromR ---
+ |
+ |
+ rBFromB
+ |
+ */
+SVX_DLLPUBLIC void DrawVerFrameBorder(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+
+ const Point& rTPos, /// Reference point for top end of the processed frame border.
+ const Point& rBPos, /// Reference point for bottom end of the processed frame border.
+ const Style& rBorder, /// Style of the processed frame border.
+
+ const DiagStyle& rTFromBL, /// Diagonal frame border from bottom-right to top end of rBorder.
+ const Style& rTFromL, /// Horizontal frame border from left to top end of rBorder.
+ const Style& rTFromT, /// Vertical frame border from top to top end of rBorder.
+ const Style& rTFromR, /// Horizontal frame border from right to top end of rBorder.
+ const DiagStyle& rTFromBR, /// Diagonal frame border from bottom-right to top end of rBorder.
+
+ const DiagStyle& rBFromTL, /// Diagonal frame border from top-left to bottom end of rBorder.
+ const Style& rBFromL, /// Horizontal frame border from left to bottom end of rBorder.
+ const Style& rBFromB, /// Vertical frame border from bottom to bottom end of rBorder.
+ const Style& rBFromR, /// Horizontal frame border from right to bottom end of rBorder.
+ const DiagStyle& rBFromTR, /// Diagonal frame border from top-right to bottom end of rBorder.
+
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ----------------------------------------------------------------------------
+
+/** Draws a vertical frame border, regards all connected frame styles.
+
+ This is a simplified version of the DrawVerFrameBorder() function described
+ above. It does not support diagonal connected frame borders. See description
+ above for additional details about the parameters.
+
+ The function preserves all settings of the passed output device.
+ */
+void SVX_DLLPUBLIC DrawVerFrameBorder(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+
+ const Point& rTPos, /// Reference point for top end of the processed frame border.
+ const Point& rBPos, /// Reference point for bottom end of the processed frame border.
+ const Style& rBorder, /// Style of the processed frame border.
+
+ const Style& rTFromL, /// Horizontal frame border from left to top end of rBorder.
+ const Style& rTFromT, /// Vertical frame border from top to top end of rBorder.
+ const Style& rTFromR, /// Horizontal frame border from right to top end of rBorder.
+
+ const Style& rBFromL, /// Horizontal frame border from left to bottom end of rBorder.
+ const Style& rBFromB, /// Vertical frame border from bottom to bottom end of rBorder.
+ const Style& rBFromR, /// Horizontal frame border from right to bottom end of rBorder.
+
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ----------------------------------------------------------------------------
+
+/** Draws a vertical frame border without connected frame styles.
+
+ This is the most simplified version of the DrawVerFrameBorder() function
+ described above. See description above for additional details about the
+ parameters.
+
+ The function preserves all settings of the passed output device.
+ */
+void SVX_DLLPUBLIC DrawVerFrameBorder(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+ const Point& rTPos, /// Reference point for top end of the processed frame border.
+ const Point& rBPos, /// Reference point for bottom end of the processed frame border.
+ const Style& rBorder, /// Style of the frame border to draw.
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ----------------------------------------------------------------------------
+
+/** Draws a vertical slanted frame border without connected frame styles.
+
+ This is an extended version of the simple DrawVerFrameBorder() function
+ described above. It accepts start and end reference points with different
+ X coordinates. See description above for additional details about the
+ parameters (except the restriction on the reference points).
+
+ The function preserves all settings of the passed output device.
+ */
+void SVX_DLLPUBLIC DrawVerFrameBorderSlanted(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+ const Point& rTPos, /// Reference point for top end of the processed frame border.
+ const Point& rBPos, /// Reference point for bottom end of the processed frame border.
+ const Style& rBorder, /// Style of the frame border to draw.
+ const Color* pForceColor = 0 /// If specified, overrides frame border color.
+);
+
+// ============================================================================
+
+/** Draws both diagonal frame borders, regards all connected frame styles.
+
+ One or both passed diagonal frame styles may be invisible.
+
+ The function preserves all settings of the passed output device.
+ */
+SVX_DLLPUBLIC void DrawDiagFrameBorders(
+ OutputDevice& rDev, /// The output device used to draw the frame border.
+
+ const Rectangle& rRect, /// Rectangle for both diagonal frame borders.
+ const Style& rTLBR, /// Style of the processed top-left to bottom-right diagonal frame border.
+ const Style& rBLTR, /// Style of the processed bottom-left to top-right diagonal frame border.
+
+ const Style& rTLFromB, /// Vertical frame border from bottom to top-left end of rTLBR.
+ const Style& rTLFromR, /// Horizontal frame border from right to top-left end of rTLBR.
+ const Style& rBRFromT, /// Vertical frame border from top to bottom-right end of rTLBR.
+ const Style& rBRFromL, /// Horizontal frame border from left to bottom-right end of rTLBR.
+
+ const Style& rBLFromT, /// Vertical frame border from top to bottom-left end of rBLTR.
+ const Style& rBLFromR, /// Horizontal frame border from right to bottom-left end of rBLTR.
+ const Style& rTRFromB, /// Vertical frame border from bottom to top-right end of rBLTR.
+ const Style& rTRFromL, /// Horizontal frame border from left to top-right end of rBLTR.
+
+ const Color* pForceColor = 0, /// If specified, overrides frame border color.
+ bool bDiagDblClip = false /// true = Use clipping for crossing double frame borders.
+);
+
+// ============================================================================
+
+} // namespace frame
+} // namespace svx
+
+/* Yes, I love ASCII art. :-) -DR- */
+
+#endif
+
diff --git a/svx/inc/svx/framelinkarray.hxx b/svx/inc/svx/framelinkarray.hxx
new file mode 100644
index 000000000000..cebb4e0395e4
--- /dev/null
+++ b/svx/inc/svx/framelinkarray.hxx
@@ -0,0 +1,537 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_FRAMELINKARRAY_HXX
+#define SVX_FRAMELINKARRAY_HXX
+
+#include <svx/framelink.hxx>
+
+#include <memory>
+
+#include <vector>
+#include "svx/svxdllapi.h"
+
+namespace svx {
+namespace frame {
+
+// ============================================================================
+
+
+struct Cell
+{
+ Style maLeft;
+ Style maRight;
+ Style maTop;
+ Style maBottom;
+ Style maTLBR;
+ Style maBLTR;
+ long mnAddLeft;
+ long mnAddRight;
+ long mnAddTop;
+ long mnAddBottom;
+ bool mbMergeOrig;
+ bool mbOverlapX;
+ bool mbOverlapY;
+
+ explicit Cell();
+
+ inline bool IsMerged() const { return mbMergeOrig || mbOverlapX || mbOverlapY; }
+ inline bool IsOverlapped() const { return mbOverlapX || mbOverlapY; }
+
+ void MirrorSelfX( bool bMirrorStyles, bool bSwapDiag );
+ void MirrorSelfY( bool bMirrorStyles, bool bSwapDiag );
+};
+
+typedef std::vector< long > LongVec;
+typedef std::vector< Cell > CellVec;
+
+struct ArrayImpl
+{
+ CellVec maCells;
+ LongVec maWidths;
+ LongVec maHeights;
+ mutable LongVec maXCoords;
+ mutable LongVec maYCoords;
+ size_t mnWidth;
+ size_t mnHeight;
+ size_t mnFirstClipCol;
+ size_t mnFirstClipRow;
+ size_t mnLastClipCol;
+ size_t mnLastClipRow;
+ mutable bool mbXCoordsDirty;
+ mutable bool mbYCoordsDirty;
+ bool mbDiagDblClip;
+
+ explicit ArrayImpl( size_t nWidth, size_t nHeight, bool bDiagDblClip );
+
+ inline bool IsValidPos( size_t nCol, size_t nRow ) const
+ { return (nCol < mnWidth) && (nRow < mnHeight); }
+ inline size_t GetIndex( size_t nCol, size_t nRow ) const
+ { return nRow * mnWidth + nCol; }
+
+ const Cell& GetCell( size_t nCol, size_t nRow ) const;
+ Cell& GetCellAcc( size_t nCol, size_t nRow );
+
+ size_t GetMergedFirstCol( size_t nCol, size_t nRow ) const;
+ size_t GetMergedFirstRow( size_t nCol, size_t nRow ) const;
+ size_t GetMergedLastCol( size_t nCol, size_t nRow ) const;
+ size_t GetMergedLastRow( size_t nCol, size_t nRow ) const;
+
+ const Cell& GetMergedOriginCell( size_t nCol, size_t nRow ) const;
+ Cell& GetMergedOriginCellAcc( size_t nCol, size_t nRow );
+
+ bool IsMergedOverlappedLeft( size_t nCol, size_t nRow ) const;
+ bool IsMergedOverlappedRight( size_t nCol, size_t nRow ) const;
+ bool IsMergedOverlappedTop( size_t nCol, size_t nRow ) const;
+ bool IsMergedOverlappedBottom( size_t nCol, size_t nRow ) const;
+
+ bool IsInClipRange( size_t nCol, size_t nRow ) const;
+ bool IsColInClipRange( size_t nCol ) const;
+ bool IsRowInClipRange( size_t nRow ) const;
+
+ inline size_t GetMirrorCol( size_t nCol ) const { return mnWidth - nCol - 1; }
+ inline size_t GetMirrorRow( size_t nRow ) const { return mnHeight - nRow - 1; }
+
+ long GetColPosition( size_t nCol ) const;
+ long GetRowPosition( size_t nRow ) const;
+
+ long GetColWidth( size_t nFirstCol, size_t nLastCol ) const;
+ long GetRowHeight( size_t nFirstRow, size_t nLastRow ) const;
+
+ double GetHorDiagAngle( size_t nCol, size_t nRow, bool bSimple = false ) const;
+ double GetVerDiagAngle( size_t nCol, size_t nRow, bool bSimple = false ) const;
+};
+
+/** Stores frame styles of an array of cells, supports merged ranges.
+
+ This class is able to store the frame styles of an array of cells and to
+ draw the entire array or parts of it to any output device.
+
+ Every cell contains the style of the left, right, top, bottom, top-left to
+ bottom-right, and bottom-left to top-right frame border.
+
+ On drawing, the thicker frame border of neighbored cells is selected
+ automatically. All borders are drawn "connected", that means, the correct
+ start and end coordinates of all lines of the borders are calculated,
+ especaially, if they are drawn together with diagonal frame borders.
+
+ This array fully supports merged cell ranges. In a merged range, the frame
+ borders of the top-left cell is extended to the entire range, and all other
+ cells in that range are overlapped. Again, all connected frame borders,
+ also diagonals and frame borders from adjacent merged ranges, are handled
+ automatically.
+
+ Additionally, a clipping range can be set. If such a range is used, all
+ frame borders outside this range are completely ignored, and are not used
+ in the connected border calculation anymore.
+
+ The array can be mirrored in both directions. It is possible to specify,
+ whether to mirror the double frame styles, and whether to swap diagonal
+ frame borders.
+ */
+class SVX_DLLPUBLIC Array
+{
+public:
+ /** Constructs an empty array. */
+ explicit Array();
+
+ /** Constructs an array with the specified width and height. */
+ explicit Array( size_t nWidth, size_t nHeight );
+
+ /** Destructs the array. */
+ ~Array();
+
+ // array size and column/row indexes --------------------------------------
+
+ /** Reinitializes the array with the specified size. Clears all styles. */
+ void Initialize( size_t nWidth, size_t nHeight );
+
+ /** Clears all line styles, column widths, row heights, merge data, and the clip range. */
+ void Clear();
+
+ /** Returns the number of columns in the array. */
+ size_t GetColCount() const;
+
+ /** Returns the number of rows in the array. */
+ size_t GetRowCount() const;
+
+ /** Returns the number of cells in the array. */
+ size_t GetCellCount() const;
+
+ /** Returns the column index of the specified cell index. */
+ size_t GetColFromIndex( size_t nCellIndex ) const;
+
+ /** Returns the row index of the specified cell index. */
+ size_t GetRowFromIndex( size_t nCellIndex ) const;
+
+ /** Returns the cell index from the cell address (nCol,nRow). */
+ size_t GetCellIndex( size_t nCol, size_t nRow, bool bRTL = false) const;
+
+ // cell border styles -----------------------------------------------------
+
+ /** Sets the left frame style of the cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleLeft( size_t nCol, size_t nRow, const Style& rStyle );
+
+ /** Sets the right frame style of the cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleRight( size_t nCol, size_t nRow, const Style& rStyle );
+
+ /** Sets the top frame style of the cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleTop( size_t nCol, size_t nRow, const Style& rStyle );
+
+ /** Sets the bottom frame style of the specified cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleBottom( size_t nCol, size_t nRow, const Style& rStyle );
+
+ /** Sets the top-left to bottom-right frame style of the cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleTLBR( size_t nCol, size_t nRow, const Style& rStyle );
+
+ /** Sets the bottom-left to top-right frame style of the cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleBLTR( size_t nCol, size_t nRow, const Style& rStyle );
+
+ /** Sets both diagonal frame styles of the specified cell (nCol,nRow). Ignores merged ranges. */
+ void SetCellStyleDiag( size_t nCol, size_t nRow, const Style& rTLBR, const Style& rBLTR );
+
+ /** Sets the left frame style of the specified column. Ignores merged ranges. */
+ void SetColumnStyleLeft( size_t nCol, const Style& rStyle );
+
+ /** Sets the right frame style of the specified column. Ignores merged ranges. */
+ void SetColumnStyleRight( size_t nCol, const Style& rStyle );
+
+ /** Sets the top frame style of the specified row. Ignores merged ranges. */
+ void SetRowStyleTop( size_t nRow, const Style& rStyle );
+
+ /** Sets the bottom frame style of the specified row. Ignores merged ranges. */
+ void SetRowStyleBottom( size_t nRow, const Style& rStyle );
+
+ /** Returns the left frame style of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges and neighbor cells;
+ false = Returns thicker of own left style or right style of the cell to the left.
+ Returns the style only if visible (i.e. at left border of a merged range).
+ @return
+ The left frame style or an invisible style for invalid cell addresses. */
+ const Style& GetCellStyleLeft( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the right frame style of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges and neighbor cells;
+ false = Returns thicker of own right style or left style of the cell to the right.
+ Returns the style only if visible (i.e. at right border of a merged range).
+ @return
+ The left frame style or an invisible style for invalid cell addresses. */
+ const Style& GetCellStyleRight( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the top frame style of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges and neighbor cells;
+ false = Returns thicker of own top style or bottom style of the cell above.
+ Returns the style only if visible (i.e. at top border of a merged range).
+ @return
+ The top frame style or an invisible style for invalid cell addresses. */
+ const Style& GetCellStyleTop( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the top frame style of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges and neighbor cells;
+ false = Returns thicker of own top style or bottom style of the cell above.
+ Returns the style only if visible (i.e. at top border of a merged range).
+ @return
+ The top frame style or an invisible style for invalid cell addresses. */
+ const Style& GetCellStyleBottom( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the top-left to bottom-right frame style of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns the visible style (i.e. from top-left corner of a merged range).
+ @return
+ The top-left to bottom-right frame style or an invisible style for invalid cell addresses. */
+ const Style& GetCellStyleTLBR( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the bottom-left to top-right frame style of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns the visible style (i.e. from top-left corner of a merged range).
+ @return
+ The bottom-left to top-right frame style or an invisible style for invalid cell addresses. */
+ const Style& GetCellStyleBLTR( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the top-left to bottom-right frame style of the cell (nCol,nRow).
+ @return
+ The top-left to bottom-right frame style, if the cell is not part of
+ a merged range, or if (nCol,nRow) is the top-left corner of a merged
+ range (useful to find connected frame styles).
+ An invisible style for invalid cell addresses. */
+ const Style& GetCellStyleTL( size_t nCol, size_t nRow ) const;
+
+ /** Returns the top-left to bottom-right frame style of the cell (nCol,nRow).
+ @return
+ The top-left to bottom-right frame style, if the cell is not part of
+ a merged range, or if (nCol,nRow) is the bottom-right corner of a
+ merged range (useful to find connected frame styles).
+ An invisible style for invalid cell addresses. */
+ const Style& GetCellStyleBR( size_t nCol, size_t nRow ) const;
+
+ /** Returns the bottom-left to top-right frame style of the cell (nCol,nRow).
+ @return
+ The bottom-left to top-right frame style, if the cell is not part of
+ a merged range, or if (nCol,nRow) is the bottom-left corner of a
+ merged range (useful to find connected frame styles).
+ An invisible style for invalid cell addresses. */
+ const Style& GetCellStyleBL( size_t nCol, size_t nRow ) const;
+
+ /** Returns the bottom-left to top-right frame style of the cell (nCol,nRow).
+ @return
+ The bottom-left to top-right frame style, if the cell is not part of
+ a merged range, or if (nCol,nRow) is the top-right corner of a
+ merged range (useful to find connected frame styles).
+ An invisible style for invalid cell addresses. */
+ const Style& GetCellStyleTR( size_t nCol, size_t nRow ) const;
+
+ // cell merging -----------------------------------------------------------
+
+ /** Inserts a new merged cell range.
+ @precond The range must not intersect other merged ranges. */
+ void SetMergedRange( size_t nFirstCol, size_t nFirstRow, size_t nLastCol, size_t nLastRow );
+
+ /** Removes the merged cell range that contains (nCol,nRow). */
+ void RemoveMergedRange( size_t nCol, size_t nRow );
+
+ /** Sets an additional left width for the merged range that contains (nCol,nRow).
+ @descr Useful to handle merged ranges that are not completely part of the array.
+ @precond The merged range must be at the left border of the array. */
+ void SetAddMergedLeftSize( size_t nCol, size_t nRow, long nAddSize );
+
+ /** Sets an additional right width for the merged range that contains (nCol,nRow).
+ @descr Useful to handle merged ranges that are not completely part of the array.
+ @precond The merged range must be at the right border of the array. */
+ void SetAddMergedRightSize( size_t nCol, size_t nRow, long nAddSize );
+
+ /** Sets an additional top height for the merged range that contains (nCol,nRow).
+ @descr Useful to handle merged ranges that are not completely part of the array.
+ @precond The merged range must be at the top border of the array. */
+ void SetAddMergedTopSize( size_t nCol, size_t nRow, long nAddSize );
+
+ /** Sets an additional bottom height for the merged range that contains (nCol,nRow).
+ @descr Useful to handle merged ranges that are not completely part of the array.
+ @precond The merged range must be at the bottom border of the array. */
+ void SetAddMergedBottomSize( size_t nCol, size_t nRow, long nAddSize );
+
+ /** Returns true, if the cell (nCol,nRow) is part of a merged range. */
+ bool IsMerged( size_t nCol, size_t nRow ) const;
+
+ /** Returns true, if the cell (nCol,nRow) is the top-left corner of a merged range. */
+ bool IsMergedOrigin( size_t nCol, size_t nRow ) const;
+
+ /** Returns true, if the cell (nCol,nRow) is overlapped by a merged range. */
+ bool IsMergedOverlapped( size_t nCol, size_t nRow ) const;
+
+ /** Returns true, if the left border of the cell (nCol,nRow) is overlapped by a merged range. */
+ bool IsMergedOverlappedLeft( size_t nCol, size_t nRow ) const;
+
+ /** Returns true, if the right border of the cell (nCol,nRow) is overlapped by a merged range. */
+ bool IsMergedOverlappedRight( size_t nCol, size_t nRow ) const;
+
+ /** Returns true, if the top border of the cell (nCol,nRow) is overlapped by a merged range. */
+ bool IsMergedOverlappedTop( size_t nCol, size_t nRow ) const;
+
+ /** Returns true, if the bottom border of the cell (nCol,nRow) is overlapped by a merged range. */
+ bool IsMergedOverlappedBottom( size_t nCol, size_t nRow ) const;
+
+ /** Returns the address of the top-left cell of the merged range that contains (nCol,nRow). */
+ void GetMergedOrigin( size_t& rnFirstCol, size_t& rnFirstRow, size_t nCol, size_t nRow ) const;
+
+ /** Returns the range size of the merged range thst contains (nCol,nRow). */
+ void GetMergedSize( size_t& rnWidth, size_t& rnHeight, size_t nCol, size_t nRow ) const;
+
+ /** Returns the top-left and bottom-right address of the merged range that contains (nCol,nRow). */
+ void GetMergedRange( size_t& rnFirstCol, size_t& rnFirstRow,
+ size_t& rnLastCol, size_t& rnLastRow, size_t nCol, size_t nRow ) const;
+
+ // clipping ---------------------------------------------------------------
+
+ /** Sets a clipping range.
+ @descr
+ No cell borders outside of this clipping range will be drawn. In
+ difference to simply using the DrawRange() function with the same
+ range, a clipping range causes the drawing functions to completely
+ ignore the frame styles connected from outside. This is used i.e.
+ in Calc to print single pages and to draw the print preview.
+ Partly visible diagonal frame borders in merged ranges are correctly
+ clipped too. This array can handle only one clip range at a time. */
+ void SetClipRange( size_t nFirstCol, size_t nFirstRow, size_t nLastCol, size_t nLastRow );
+
+ /** Removes the clipping range set with the SetClipRange() function. */
+ void RemoveClipRange();
+
+ /** Returns true, if the cell (bCol,nRow) is inside the current clip range. */
+ bool IsInClipRange( size_t nCol, size_t nRow ) const;
+
+ /** Returns the rectangle (output coordinates) of the current clipping range. */
+ Rectangle GetClipRangeRectangle() const;
+
+ // cell coordinates -------------------------------------------------------
+
+ /** Sets the X output coordinate of the left column. */
+ void SetXOffset( long nXOffset );
+
+ /** Sets the Y output coordinate of the top row. */
+ void SetYOffset( long nYOffset );
+
+ /** Sets the output width of the specified column. */
+ void SetColWidth( size_t nCol, long nWidth );
+
+ /** Sets the output height of the specified row. */
+ void SetRowHeight( size_t nRow, long nHeight );
+
+ /** Sets the same output width for all columns. */
+ void SetAllColWidths( long nWidth );
+
+ /** Sets the same output height for all rows. */
+ void SetAllRowHeights( long nHeight );
+
+ /** Returns the X output coordinate of the left border of the specified column.
+ @descr The column index <array-width> returns the X output coordinate
+ of the right array border. */
+ long GetColPosition( size_t nCol ) const;
+
+ /** Returns the Y output coordinate of the top border of the specified row.
+ @descr The row index <array-height> returns the Y output coordinate
+ of the bottom array border. */
+ long GetRowPosition( size_t nRow ) const;
+
+ /** Returns the output width of the specified column. */
+ long GetColWidth( size_t nCol ) const;
+
+ /** Returns the output width of the specified range of columns. */
+ long GetColWidth( size_t nFirstCol, size_t nLastCol ) const;
+
+ /** Returns the output height of the specified row. */
+ long GetRowHeight( size_t nRow ) const;
+
+ /** Returns the output height of the specified range of rows. */
+ long GetRowHeight( size_t nFirstRow, size_t nLastRow ) const;
+
+ /** Returns the output width of the entire array. */
+ long GetWidth() const;
+
+ /** Returns the output height of the entire array. */
+ long GetHeight() const;
+
+ /** Returns the top-left output position of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns output position of top-left corner of merged ranges. */
+ Point GetCellPosition( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the output size of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns total output size of merged ranges. */
+ Size GetCellSize( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the output rectangle of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns total output rectangle of merged ranges. */
+ Rectangle GetCellRect( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ // diagonal frame borders -------------------------------------------------
+
+ /** Returns the angle between horizontal and diagonal border of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns the horizontal angle of merged ranges. */
+ double GetHorDiagAngle( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Returns the angle between vertical and diagonal border of the cell (nCol,nRow).
+ @param bSimple
+ true = Ignores merged ranges;
+ false = Returns the vertical angle of merged ranges. */
+ double GetVerDiagAngle( size_t nCol, size_t nRow, bool bSimple = false ) const;
+
+ /** Specifies whether to use polygon clipping to draw diagonal frame borders.
+ @descr
+ If enabled, diagonal frame borders are drawn interrupted, if they are
+ crossed by a double frame border. Polygon clipping is very expensive
+ and should only be used for very small output devices (i.e. in the
+ Border tab page). Default after construction is OFF. */
+ void SetUseDiagDoubleClipping( bool bSet );
+
+ /** Returns true, if polygon clipping is used to draw diagonal frame borders. */
+ bool GetUseDiagDoubleClipping() const;
+
+ // mirroring --------------------------------------------------------------
+
+ /** Mirrors the entire array horizontally.
+ @param bMirrorStyles
+ true = Swap primary and secondary line of all vertical double frame borders.
+ @param bSwapDiag
+ true = Swap top-left to bottom-right and bottom-left to top-right frame borders. */
+ void MirrorSelfX( bool bMirrorStyles, bool bSwapDiag );
+
+ /** Mirrors the entire array vertically.
+ @param bMirrorStyles
+ true = Swap primary and secondary line of all horizontal double frame borders.
+ @param bSwapDiag
+ true = Swap top-left to bottom-right and bottom-left to top-right frame borders. */
+ void MirrorSelfY( bool bMirrorStyles, bool bSwapDiag );
+
+ // drawing ----------------------------------------------------------------
+
+ /** Draws the cell (nCol,nRow), if it is inside the clipping range.
+ @param pForceColor
+ If not NULL, only this color will be used to draw all frame borders. */
+ void DrawCell( OutputDevice& rDev, size_t nCol, size_t nRow,
+ const Color* pForceColor = 0 ) const;
+
+ /** Draws the part of the specified range, that is inside the clipping range.
+ @param pForceColor
+ If not NULL, only this color will be used to draw all frame borders. */
+ void DrawRange( OutputDevice& rDev,
+ size_t nFirstCol, size_t nFirstRow,
+ size_t nLastCol, size_t nLastRow,
+ const Color* pForceColor = 0 ) const;
+
+ /** Draws the part of the array, that is inside the clipping range.
+ @param pForceColor
+ If not NULL, only this color will be used to draw all frame borders. */
+ void DrawArray( OutputDevice& rDev, const Color* pForceColor = 0 ) const;
+
+ // ------------------------------------------------------------------------
+
+private:
+ typedef std::auto_ptr< ArrayImpl > ArrayImplPtr;
+
+ ArrayImplPtr mxImpl;
+};
+
+// ============================================================================
+
+} // namespace frame
+} // namespace svx
+
+#endif
+
diff --git a/svx/inc/svx/frmdirlbox.hxx b/svx/inc/svx/frmdirlbox.hxx
new file mode 100644
index 000000000000..24eb27362e45
--- /dev/null
+++ b/svx/inc/svx/frmdirlbox.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FRMDIRLBOX_HXX
+#define _SVX_FRMDIRLBOX_HXX
+
+#ifndef _LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+#include <sfx2/itemconnect.hxx>
+#include <editeng/frmdir.hxx>
+#include "svx/svxdllapi.h"
+
+class SvxFrameDirectionItem;
+
+namespace svx {
+
+// ============================================================================
+
+/** This listbox contains entries to select horizontal text direction.
+
+ The control works on the SvxFrameDirection enumeration (i.e. left-to-right,
+ right-to-left), used i.e. in conjunction with the SvxFrameDirectionItem.
+ */
+class SVX_DLLPUBLIC FrameDirectionListBox : public ListBox
+{
+public:
+ explicit FrameDirectionListBox( Window* pParent, WinBits nStyle = WB_BORDER );
+ explicit FrameDirectionListBox( Window* pParent, const ResId& rResId );
+ virtual ~FrameDirectionListBox();
+
+ /** Inserts a string with corresponding direction enum into the listbox. */
+ void InsertEntryValue(
+ const String& rString,
+ SvxFrameDirection eDirection,
+ sal_uInt16 nPos = LISTBOX_APPEND );
+ /** Removes the entry, that represents the specified frame direction. */
+ void RemoveEntryValue( SvxFrameDirection eDirection );
+
+ /** Selects the specified frame direction. */
+ void SelectEntryValue( SvxFrameDirection eDirection );
+ /** Returns the currently selected frame direction. */
+ SvxFrameDirection GetSelectEntryValue() const;
+
+ /** Saves the currently selected frame direction. */
+ inline void SaveValue() { meSaveValue = GetSelectEntryValue(); }
+ /** Returns the frame direction saved with SaveValue(). */
+ inline SvxFrameDirection GetSavedValue() const { return meSaveValue; }
+
+private:
+ SvxFrameDirection meSaveValue; /// Saved value for later comparison.
+};
+
+typedef FrameDirectionListBox FrameDirListBox;
+
+// ============================================================================
+
+/** Wrapper for usage of a FrameDirectionListBox in item connections. */
+class SVX_DLLPUBLIC FrameDirListBoxWrapper : public sfx::SingleControlWrapper< FrameDirListBox, SvxFrameDirection >
+{
+public:
+ explicit FrameDirListBoxWrapper( FrameDirListBox& rListBox );
+
+ virtual bool IsControlDontKnow() const;
+ virtual void SetControlDontKnow( bool bSet );
+
+ virtual SvxFrameDirection GetControlValue() const;
+ virtual void SetControlValue( SvxFrameDirection eValue );
+};
+
+/** Wrapper for usage of a SvxFrameDirectionItem in item connections. */
+typedef sfx::ValueItemWrapper< SvxFrameDirectionItem, SvxFrameDirection, sal_uInt16 > FrameDirItemWrapper;
+
+/** An item<->control connection for a FrameDirectionListBox. */
+typedef sfx::ItemControlConnection< FrameDirItemWrapper, FrameDirListBoxWrapper > FrameDirListBoxConnection;
+
+// ============================================================================
+
+} // namespace svx
+
+#endif
+
diff --git a/svx/inc/svx/frmsel.hxx b/svx/inc/svx/frmsel.hxx
new file mode 100644
index 000000000000..b342c58809bb
--- /dev/null
+++ b/svx/inc/svx/frmsel.hxx
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_FRMSEL_HXX
+#define SVX_FRMSEL_HXX
+
+#include <memory>
+#include <tools/color.hxx>
+#include <vcl/ctrl.hxx>
+#include <vcl/bitmap.hxx>
+#include <svx/framebordertype.hxx>
+#include "svx/svxdllapi.h"
+
+class SvxBorderLine;
+
+namespace svx {
+
+struct FrameSelectorImpl;
+
+// ============================================================================
+
+typedef int FrameSelFlags;
+
+const FrameSelFlags FRAMESEL_NONE = 0x0000;
+/** If set, the left frame border is enabled. */
+const FrameSelFlags FRAMESEL_LEFT = 0x0001;
+/** If set, the right frame border is enabled. */
+const FrameSelFlags FRAMESEL_RIGHT = 0x0002;
+/** If set, the top frame border is enabled. */
+const FrameSelFlags FRAMESEL_TOP = 0x0004;
+/** If set, the bottom frame border is enabled. */
+const FrameSelFlags FRAMESEL_BOTTOM = 0x0008;
+/** If set, the inner horizontal frame border is enabled. */
+const FrameSelFlags FRAMESEL_INNER_HOR = 0x0010;
+/** If set, the inner vertical frame border is enabled. */
+const FrameSelFlags FRAMESEL_INNER_VER = 0x0020;
+/** If set, the top-left to bottom-right diagonal frame border is enabled. */
+const FrameSelFlags FRAMESEL_DIAG_TLBR = 0x0040;
+/** If set, the bottom-left to top-right diagonal frame border is enabled. */
+const FrameSelFlags FRAMESEL_DIAG_BLTR = 0x0080;
+
+/** If set, all four outer frame borders are enabled. */
+const FrameSelFlags FRAMESEL_OUTER = FRAMESEL_LEFT|FRAMESEL_RIGHT|FRAMESEL_TOP|FRAMESEL_BOTTOM;
+/** If set, both inner frame borders are enabled. */
+const FrameSelFlags FRAMESEL_INNER = FRAMESEL_INNER_HOR|FRAMESEL_INNER_VER;
+/** If set, both diagonal frame borders are enabled. */
+const FrameSelFlags FRAMESEL_DIAGONAL = FRAMESEL_DIAG_TLBR|FRAMESEL_DIAG_BLTR;
+
+/** If set, all frame borders will support the don't care state. */
+const FrameSelFlags FRAMESEL_DONTCARE = 0x0100;
+
+// ----------------------------------------------------------------------------
+
+/** All possible states of a frame border. */
+enum FrameBorderState
+{
+ FRAMESTATE_SHOW, /// Frame border has a visible style.
+ FRAMESTATE_HIDE, /// Frame border is hidden (off).
+ FRAMESTATE_DONTCARE /// Frame border is in don't care state (if enabled).
+};
+
+// ============================================================================
+
+class SVX_DLLPUBLIC FrameSelector : public Control
+{
+public:
+ explicit FrameSelector( Window* pParent, const ResId& rResId );
+ virtual ~FrameSelector();
+
+ /** Initializes the control, enables/disables frame borders according to flags. */
+ void Initialize( FrameSelFlags nFlags );
+
+ // enabled frame borders --------------------------------------------------
+
+ /** Returns true, if the specified frame border is enabled. */
+ bool IsBorderEnabled( FrameBorderType eBorder ) const;
+ /** Returns the number of enabled frame borders. */
+ sal_Int32 GetEnabledBorderCount() const;
+ /** Returns the border type from the passed index (counts only enabled frame borders). */
+ FrameBorderType GetEnabledBorderType( sal_Int32 nIndex ) const;
+ /** Returns the index of a frame border (counts only enabled borders) from passed type. */
+ sal_Int32 GetEnabledBorderIndex( FrameBorderType eBorder ) const;
+
+ // frame border state and style -------------------------------------------
+
+ /** Returns true, if the control supports the "don't care" frame border state. */
+ bool SupportsDontCareState() const;
+
+ /** Returns the state (visible/hidden/don't care) of the specified frame border. */
+ FrameBorderState GetFrameBorderState( FrameBorderType eBorder ) const;
+ /** Returns the style of the specified frame border, if it is visible. */
+ const SvxBorderLine* GetFrameBorderStyle( FrameBorderType eBorder ) const;
+
+ /** Shows the specified frame border using the passed style, or hides it, if pStyle is 0. */
+ void ShowBorder( FrameBorderType eBorder, const SvxBorderLine* pStyle );
+ /** Sets the specified frame border to "don't care" state. */
+ void SetBorderDontCare( FrameBorderType eBorder );
+
+ /** Returns true, if any enabled frame border has a visible style (not "don't care"). */
+ bool IsAnyBorderVisible() const;
+ /** Hides all enabled frame borders. */
+ void HideAllBorders();
+
+ /** Returns true, if all visible frame borders have equal widths.
+ @descr Ignores hidden and "don't care" frame borders. On success,
+ returns the widths in the passed parameters. */
+ bool GetVisibleWidth( USHORT& rnPrim, USHORT& rnDist, USHORT& rnSec ) const;
+ /** Returns true, if all visible frame borders have equal color.
+ @descr Ignores hidden and "don't care" frame borders. On success,
+ returns the color in the passed parameter. */
+ bool GetVisibleColor( Color& rColor ) const;
+
+ // frame border selection -------------------------------------------------
+
+ /** Returns the current selection handler. */
+ const Link& GetSelectHdl() const;
+ /** Sets the passed handler that is called if the selection of the control changes. */
+ void SetSelectHdl( const Link& rHdl );
+
+ /** Returns true, if the specified frame border is selected. */
+ bool IsBorderSelected( FrameBorderType eBorder ) const;
+ /** Selects or deselects the specified frame border. */
+ void SelectBorder( FrameBorderType eBorder, bool bSelect = true );
+ /** Deselects the specified frame border. */
+ inline void DeselectBorder( FrameBorderType eBorder ) { SelectBorder( eBorder, false ); }
+
+ /** Returns true, if any of the enabled frame borders is selected. */
+ bool IsAnyBorderSelected() const;
+ /** Selects or deselects all frame borders. */
+ void SelectAllBorders( bool bSelect = true );
+ /** Deselects all frame borders. */
+ inline void DeselectAllBorders() { SelectAllBorders( false ); }
+
+ /** Selects or deselects all visible frame borders (ignores hidden and "don't care" borders). */
+ void SelectAllVisibleBorders( bool bSelect = true );
+
+ /** Sets the passed line widths to all selected frame borders (in twips). */
+ void SetStyleToSelection( USHORT nPrim, USHORT nDist, USHORT nSec );
+ /** Sets the passed color to all selected frame borders. */
+ void SetColorToSelection( const Color& rColor );
+
+ // accessibility ----------------------------------------------------------
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ CreateAccessible();
+
+ /** Returns the accessibility child object of the specified frame border (if enabled). */
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ GetChildAccessible( FrameBorderType eBorder );
+ /** Returns the accessibility child object with specified index (counts enabled frame borders only). */
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ GetChildAccessible( sal_Int32 nIndex );
+ /** Returns the accessibility child object at the specified position (relative to control). */
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
+ GetChildAccessible( const Point& rPos );
+
+ /** Returns true, if the passed point is inside the click area of any enabled frame border. */
+ bool ContainsClickPoint( const Point& rPos ) const;
+ /** Returns the bounding rectangle of the specified frame border (if enabled). */
+ Rectangle GetClickBoundRect( FrameBorderType eBorder ) const;
+
+ // ------------------------------------------------------------------------
+protected:
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+private:
+ std::auto_ptr< FrameSelectorImpl > mxImpl;
+};
+
+// ============================================================================
+
+} // namespace svx
+
+#endif
+
diff --git a/svx/inc/svx/gallery1.hxx b/svx/inc/svx/gallery1.hxx
new file mode 100644
index 000000000000..7b58456a8889
--- /dev/null
+++ b/svx/inc/svx/gallery1.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_GALLERY1_HXX_
+#define _SVX_GALLERY1_HXX_
+
+#include <tools/string.hxx>
+#include <tools/list.hxx>
+#include <tools/urlobj.hxx>
+#include <svl/brdcst.hxx>
+#include "svx/svxdllapi.h"
+//#include "gallery.hrc"
+
+#include <cstdio>
+#include <list>
+
+// ---------------------
+// - GalleryThemeEntry -
+// ---------------------
+
+class SvStream;
+
+class GalleryThemeEntry
+{
+private:
+
+ String aName;
+ INetURLObject aThmURL;
+ INetURLObject aSdgURL;
+ INetURLObject aSdvURL;
+ UINT32 nFileNumber;
+ UINT32 nId;
+ BOOL bReadOnly;
+ BOOL bImported;
+ BOOL bModified;
+ BOOL bThemeNameFromResource;
+
+ GalleryThemeEntry();
+ INetURLObject ImplGetURLIgnoreCase( const INetURLObject& rURL ) const;
+
+public:
+
+ GalleryThemeEntry( const INetURLObject& rBaseURL, const String& rName,
+ UINT32 nFileNumber, BOOL bReadOnly, BOOL bImported,
+ BOOL bNewFile, UINT32 nId, BOOL bThemeNameFromResource );
+ ~GalleryThemeEntry() {};
+
+ const String& GetThemeName() const { return aName; }
+ UINT32 GetFileNumber() const { return nFileNumber; }
+
+ const INetURLObject& GetThmURL() const { return aThmURL; }
+ const INetURLObject& GetSdgURL() const { return aSdgURL; }
+ const INetURLObject& GetSdvURL() const { return aSdvURL; }
+
+ BOOL IsImported() const { return bImported; }
+ BOOL IsReadOnly() const { return bReadOnly; }
+ BOOL IsDefault() const;
+
+ BOOL IsHidden() const { return aName.SearchAscii( "private://gallery/hidden/" ) == 0; }
+
+ BOOL IsModified() const { return bModified; }
+ void SetModified( BOOL bSet ) { bModified = ( bSet && !IsImported() && !IsReadOnly() ); }
+
+ void SetName( const String& rNewName );
+ BOOL IsNameFromResource() const { return bThemeNameFromResource; }
+
+ UINT32 GetId() const { return nId; }
+ void SetId( UINT32 nNewId, BOOL bResetThemeName );
+};
+
+DECLARE_LIST( GalleryThemeList, GalleryThemeEntry* )
+
+// ---------------------------
+// - GalleryImportThemeEntry -
+// ---------------------------
+
+struct GalleryImportThemeEntry
+{
+ String aThemeName;
+ String aUIName;
+ INetURLObject aURL;
+ String aImportName;
+};
+DECLARE_LIST( GalleryImportThemeList, GalleryImportThemeEntry* )
+
+// -----------------------------------------------------------------------------
+
+SvStream& operator<<( SvStream& rOut, const GalleryImportThemeEntry& rEntry );
+SvStream& operator>>( SvStream& rIn, GalleryImportThemeEntry& rEntry );
+
+// -----------
+// - Gallery -
+// -----------
+
+class SfxListener;
+class GalleryTheme;
+
+class Gallery : public SfxBroadcaster
+{
+ // only for gengal utility!
+ friend Gallery* createGallery( const rtl::OUString& );
+ friend void disposeGallery( Gallery* );
+
+private:
+
+ GalleryThemeList aThemeList;
+ GalleryImportThemeList aImportList;
+ List aThemeCache;
+ INetURLObject aRelURL;
+ INetURLObject aUserURL;
+ rtl_TextEncoding nReadTextEncoding;
+ ULONG nLastFileNumber;
+ BOOL bMultiPath;
+
+ void ImplLoad( const String& rMultiPath );
+ void ImplLoadSubDirs( const INetURLObject& rBaseURL, sal_Bool& rbIsReadOnly );
+ void ImplLoadImports();
+ void ImplWriteImportList();
+
+ SVX_DLLPUBLIC GalleryThemeEntry* ImplGetThemeEntry( const String& rThemeName );
+ GalleryThemeEntry* ImplGetThemeEntry( ULONG nThemeId );
+ GalleryImportThemeEntry* ImplGetImportThemeEntry( const String& rImportName );
+
+ GalleryTheme* ImplGetCachedTheme( const GalleryThemeEntry* pThemeEntry );
+ void ImplDeleteCachedTheme( GalleryTheme* pTheme );
+
+ SVX_DLLPUBLIC Gallery( const String& rMultiPath );
+ SVX_DLLPUBLIC ~Gallery();
+
+public:
+
+ SVX_DLLPUBLIC static Gallery* GetGalleryInstance();
+
+ ULONG GetThemeCount() const { return aThemeList.Count(); }
+ const GalleryThemeEntry* GetThemeInfo( ULONG nPos ) { return aThemeList.GetObject( nPos ); }
+ const GalleryThemeEntry* GetThemeInfo( const String& rThemeName ) { return ImplGetThemeEntry( rThemeName ); }
+
+ SVX_DLLPUBLIC BOOL HasTheme( const String& rThemeName );
+ String GetThemeName( ULONG nThemeId ) const;
+
+ SVX_DLLPUBLIC BOOL CreateTheme( const String& rThemeName, UINT32 nNumFrom = 0 );
+ BOOL CreateImportTheme( const INetURLObject& rURL, const String& rFileName );
+ BOOL RenameTheme( const String& rOldName, const String& rNewName );
+ SVX_DLLPUBLIC BOOL RemoveTheme( const String& rThemeName );
+
+ SVX_DLLPUBLIC GalleryTheme* AcquireTheme( const String& rThemeName, SfxListener& rListener );
+ SVX_DLLPUBLIC void ReleaseTheme( GalleryTheme* pTheme, SfxListener& rListener );
+
+public:
+
+ INetURLObject GetImportURL( const String& rThemeName );
+
+ const INetURLObject& GetUserURL() const { return aUserURL; }
+ const INetURLObject& GetRelativeURL() const { return aRelURL; }
+
+ BOOL IsMultiPath() const { return bMultiPath; }
+};
+
+#endif // _SVX_GALLERY1_HXX_
diff --git a/svx/inc/svx/galmisc.hxx b/svx/inc/svx/galmisc.hxx
new file mode 100644
index 000000000000..dd8b08fc8fad
--- /dev/null
+++ b/svx/inc/svx/galmisc.hxx
@@ -0,0 +1,262 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_GALMISC_HXX_
+#define _SVX_GALMISC_HXX_
+
+#include <sot/storage.hxx>
+#include <tools/urlobj.hxx>
+#include <svtools/imap.hxx>
+#include <svl/hint.hxx>
+#include <svtools/transfer.hxx>
+#include <svx/svdobj.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/awt/XProgressMonitor.hpp>
+#include "svx/svxdllapi.h"
+#include <tools/date.hxx>
+#include <tools/time.hxx>
+
+// ------------
+// - Forwards -
+// ------------
+
+class GalleryTheme;
+
+// ----------------
+// - ExchangeData -
+// ----------------
+
+struct ExchangeData
+{
+ GalleryTheme* pTheme;
+ String aEditedTitle;
+ Date aThemeChangeDate;
+ Time aThemeChangeTime;
+};
+
+enum SgaObjKind
+{
+ SGA_OBJ_NONE = 0, // Abstraktes Objekt
+ SGA_OBJ_BMP = 1, // Bitmap-Objekt
+ SGA_OBJ_SOUND = 2, // Sound-Objekt
+ SGA_OBJ_VIDEO = 3, // Video-Objekt
+ SGA_OBJ_ANIM = 4, // Animations-Objekt
+ SGA_OBJ_SVDRAW = 5, // Svdraw-Objekt
+ SGA_OBJ_INET = 6 // Grafik aus dem Internet
+};
+
+// -----------
+// - Defines -
+// -----------
+
+#define IV_IMAPINFO (UINT32('S')*0x00000001+UINT32('D')*0x00000100+UINT32('U')*0x00010000+UINT32('D')*0x01000000)
+#define ID_IMAPINFO 2
+
+#define USERDATA_HDL() (LINK(this,SgaUserDataFactory,MakeUserData))
+
+#define GAL_RESID( nId ) ResId( nId, *GetGalleryResMgr() )
+#define STREAMBUF_SIZE 16384L
+
+#define SGA_IMPORT_NONE 0x0000
+#define SGA_IMPORT_FILE 0x0001
+#define SGA_IMPORT_INET 0x0002
+
+#define GALLERY_PROGRESS_RANGE 10000
+
+#define GALLERY_FG_COLOR Application::GetSettings().GetStyleSettings().GetWindowTextColor()
+#define GALLERY_BG_COLOR Application::GetSettings().GetStyleSettings().GetWindowColor()
+#define GALLERY_DLG_COLOR Application::GetSettings().GetStyleSettings().GetDialogColor()
+
+// -------------
+// - Functions -
+// -------------
+
+class ResMgr;
+class String;
+class SvStream;
+class Graphic;
+class FmFormModel;
+class ImageMap;
+class Gallery;
+
+SVX_DLLPUBLIC ResMgr* GetGalleryResMgr();
+USHORT GalleryGraphicImport( const INetURLObject& rURL, Graphic& rGraphic, String& rFilterName, BOOL bShowProgress = FALSE );
+BOOL GallerySvDrawImport( SvStream& rIStm, SdrModel& rModel );
+BOOL CreateIMapGraphic( const FmFormModel& rModel, Graphic& rGraphic, ImageMap& rImageMap );
+SVX_DLLPUBLIC String GetReducedString( const INetURLObject& rURL, ULONG nMaxLen );
+String GetSvDrawStreamNameFromURL( const INetURLObject& rSvDrawObjURL );
+
+BOOL FileExists( const INetURLObject& rURL );
+BOOL CreateDir( const INetURLObject& rURL );
+BOOL CopyFile( const INetURLObject& rSrcURL, const INetURLObject& rDstURL );
+BOOL KillFile( const INetURLObject& rURL );
+BitmapEx GalleryResGetBitmapEx( sal_uInt32 nId );
+
+
+// ---------------
+// - SgaIMapInfo -
+// ---------------
+
+class SgaIMapInfo : public SdrObjUserData, public SfxListener
+{
+ ImageMap aImageMap;
+
+public:
+ SgaIMapInfo() : SdrObjUserData( IV_IMAPINFO, ID_IMAPINFO, 0 ) {};
+
+ SgaIMapInfo( const ImageMap& rImageMap) :
+ SdrObjUserData( IV_IMAPINFO, ID_IMAPINFO, 0 ),
+ aImageMap( rImageMap ) {};
+
+ virtual ~SgaIMapInfo() {};
+
+ virtual SdrObjUserData* Clone( SdrObject* ) const
+ {
+ SgaIMapInfo* pInfo = new SgaIMapInfo;
+ pInfo->aImageMap = aImageMap;
+ return pInfo;
+ }
+
+ const ImageMap& GetImageMap() const { return aImageMap; }
+};
+
+// ----------------------
+// - SgaUserDataFactory -
+// ----------------------
+
+class SgaUserDataFactory
+{
+public:
+ SgaUserDataFactory() { SdrObjFactory::InsertMakeUserDataHdl( USERDATA_HDL() ); }
+ ~SgaUserDataFactory() { SdrObjFactory::RemoveMakeUserDataHdl( USERDATA_HDL() ); }
+
+ DECL_LINK( MakeUserData, SdrObjFactory* );
+};
+
+// -------------------
+// - GalleryProgress -
+// -------------------
+
+class GraphicFilter;
+
+class SVX_DLLPUBLIC GalleryProgress
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XProgressBar > mxProgressBar;
+ GraphicFilter* mpFilter;
+
+ public:
+
+ GalleryProgress( GraphicFilter* pFilter = NULL );
+ ~GalleryProgress();
+
+ void Update( ULONG nVal, ULONG nMaxVal );
+};
+
+// -----------------------
+// - GalleryTransferable -
+// -----------------------
+
+class Gallery;
+class GalleryTheme;
+class GraphicObject;
+
+class GalleryTransferable : public TransferableHelper
+{
+friend class GalleryTheme;
+using TransferableHelper::CopyToClipboard;
+
+private:
+
+ GalleryTheme* mpTheme;
+ SgaObjKind meObjectKind;
+ sal_uInt32 mnObjectPos;
+ SotStorageStreamRef mxModelStream;
+ GraphicObject* mpGraphicObject;
+ ImageMap* mpImageMap;
+ INetURLObject* mpURL;
+
+protected:
+
+ GalleryTransferable( GalleryTheme* pTheme, ULONG nObjectPos, bool bLazy );
+ ~GalleryTransferable();
+
+ void InitData( bool bLazy );
+
+ // TransferableHelper
+ virtual void AddSupportedFormats();
+ virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ virtual sal_Bool WriteObject( SotStorageStreamRef& rxOStm, void* pUserObject, sal_uInt32 nUserObjectId, const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
+ virtual void DragFinished( sal_Int8 nDropAction );
+ virtual void ObjectReleased();
+
+ void CopyToClipboard( Window* pWindow );
+ void StartDrag( Window* pWindow, sal_Int8 nDragSourceActions,
+ sal_Int32 nDragPointer = DND_POINTER_NONE,
+ sal_Int32 nDragImage = DND_IMAGE_NONE );
+};
+
+// ---------------
+// - GalleryHint -
+// ---------------
+
+#define GALLERY_HINT_NONE 0x00000000
+#define GALLERY_HINT_CLOSE_THEME 0x00000001
+#define GALLERY_HINT_THEME_REMOVED 0x00000002
+#define GALLERY_HINT_THEME_RENAMED 0x00000004
+#define GALLERY_HINT_THEME_CREATED 0x00000008
+#define GALLERY_HINT_THEME_UPDATEVIEW 0x00000010
+#define GALLERY_HINT_CLOSE_OBJECT 0x00000020
+#define GALLERY_HINT_OBJECT_REMOVED 0x00000040
+
+// -----------------------------------------------------------------------------
+
+class GalleryHint : public SfxHint
+{
+private:
+
+ ULONG mnType;
+ String maThemeName;
+ String maStringData;
+ ULONG mnData1;
+ ULONG mnData2;
+
+public:
+
+ GalleryHint( ULONG nType, const String& rThemeName, ULONG nData1 = 0UL, ULONG nData2 = 0UL ) :
+ mnType( nType ), maThemeName( rThemeName ), mnData1( nData1 ), mnData2( nData2 ) {}
+
+ GalleryHint( ULONG nType, const String& rThemeName, const String& rStringData, ULONG nData1 = 0UL, ULONG nData2 = 0UL ) :
+ mnType( nType ), maThemeName( rThemeName ), maStringData( rStringData ), mnData1( nData1 ), mnData2( nData2 ) {}
+
+ ULONG GetType() const { return mnType; }
+ const String& GetThemeName() const { return maThemeName; }
+ const String& GetStringData() const { return maStringData; }
+ ULONG GetData1() const { return mnData1; }
+ ULONG GetData2() const { return mnData2; }
+};
+
+ #endif
diff --git a/svx/inc/svx/graphctl.hxx b/svx/inc/svx/graphctl.hxx
new file mode 100644
index 000000000000..f71f7fe6c43c
--- /dev/null
+++ b/svx/inc/svx/graphctl.hxx
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _GRAPHCTL_HXX
+#define _GRAPHCTL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <vcl/ctrl.hxx>
+#include <vcl/graph.hxx>
+#include "svx/svxdllapi.h"
+
+#include <svx/svdview.hxx>
+#include <svx/svdobj.hxx>
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class GraphCtrlUserCall;
+class SvxGraphCtrlAccessibleContext;
+
+#define WB_SDRMODE ((WinBits)0x0080)
+#define WB_ANIMATION ((WinBits)0x0100)
+
+class SVX_DLLPUBLIC GraphCtrl : public Control
+{
+ friend class GraphCtrlView;
+ friend class GraphCtrlUserCall;
+
+ Graphic aGraphic;
+ Timer aUpdateTimer;
+ Link aMousePosLink;
+ Link aGraphSizeLink;
+ Link aMarkObjLink;
+ Link aUpdateLink;
+ MapMode aMap100;
+ Size aGraphSize;
+ Point aMousePos;
+ GraphCtrlUserCall* pUserCall;
+ WinBits nWinStyle;
+ SdrObjKind eObjKind;
+ USHORT nPolyEdit;
+ BOOL bEditMode;
+ BOOL bSdrMode;
+ BOOL bAnim;
+
+ DECL_LINK( UpdateHdl, Timer* );
+
+ SvxGraphCtrlAccessibleContext* mpAccContext;
+
+protected:
+
+ SdrModel* pModel;
+ SdrView* pView;
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Resize();
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+ virtual void MouseButtonUp(const MouseEvent& rMEvt);
+ virtual void MouseMove(const MouseEvent& rMEvt);
+
+ virtual void InitSdrModel();
+
+ virtual void SdrObjCreated( const SdrObject& rObj );
+ virtual void SdrObjChanged( const SdrObject& rObj );
+ virtual void MarkListHasChanged();
+
+ SdrObjUserCall* GetSdrUserCall() { return (SdrObjUserCall*) pUserCall; }
+
+public:
+
+ GraphCtrl( Window* pParent, const WinBits nWinBits = 0 );
+ GraphCtrl( Window* pParent, const ResId& rResId );
+ ~GraphCtrl();
+
+ void SetWinStyle( WinBits nWinBits );
+ WinBits GetWinStyle() const { return nWinStyle; }
+
+ void SetGraphic( const Graphic& rGraphic, BOOL bNewModel = TRUE );
+ const Graphic& GetGraphic() const { return aGraphic; }
+ const Size& GetGraphicSize() const { return aGraphSize; }
+
+ const Point& GetMousePos() const { return aMousePos; }
+
+ void SetEditMode( const BOOL bEditMode );
+ BOOL IsEditMode() const { return bEditMode; }
+
+ void SetPolyEditMode( const USHORT nPolyEdit );
+ USHORT GetPolyEditMode() const { return nPolyEdit; }
+
+ void SetObjKind( const SdrObjKind eObjKind );
+ SdrObjKind GetObjKind() const { return eObjKind; }
+
+ SdrModel* GetSdrModel() const { return pModel; }
+ SdrView* GetSdrView() const { return pView; }
+ SdrObject* GetSelectedSdrObject() const;
+ BOOL IsChanged() const { return bSdrMode ? pModel->IsChanged() : FALSE; }
+
+ void SetMousePosLink( const Link& rLink ) { aMousePosLink = rLink; }
+ const Link& GetMousePosLink() const { return aMousePosLink; }
+
+ void SetGraphSizeLink( const Link& rLink ) { aGraphSizeLink = rLink; }
+ const Link& GetGraphSizeLink() const { return aGraphSizeLink; }
+
+ void SetMarkObjLink( const Link& rLink ) { aMarkObjLink = rLink; }
+ const Link& GetMarkObjLink() const { return aMarkObjLink; }
+
+ void SetUpdateLink( const Link& rLink ) { aUpdateLink = rLink; }
+ const Link& GetUpdateLink() const { return aUpdateLink; }
+
+ static String GetStringFromDouble( const double& rDouble );
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+};
+
+//#if 0 // _SOLAR__PRIVATE
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class GraphCtrlUserCall : public SdrObjUserCall
+{
+ GraphCtrl& rWin;
+
+public:
+
+ GraphCtrlUserCall( GraphCtrl& rGraphWin ) : rWin( rGraphWin ) {};
+ virtual ~GraphCtrlUserCall() {};
+
+ virtual void Changed( const SdrObject& rObj, SdrUserCallType eType, const Rectangle& rOldBoundRect );
+};
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class GraphCtrlView : public SdrView
+{
+ GraphCtrl& rGraphCtrl;
+
+protected:
+
+ virtual void MarkListHasChanged()
+ {
+ SdrView::MarkListHasChanged();
+ rGraphCtrl.MarkListHasChanged();
+ }
+
+public:
+
+ GraphCtrlView( SdrModel* pModel, GraphCtrl* pWindow) :
+ SdrView ( pModel, pWindow ),
+ rGraphCtrl ( *pWindow ) {};
+
+ virtual ~GraphCtrlView() {};
+};
+
+//#endif // __PRIVATE
+
+#endif // _GRAPHCTL_HXX
+
diff --git a/svx/inc/svx/grfcrop.hxx b/svx/inc/svx/grfcrop.hxx
new file mode 100644
index 000000000000..fd4ccc175135
--- /dev/null
+++ b/svx/inc/svx/grfcrop.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_GRFCROP_HXX
+#define _SVX_GRFCROP_HXX
+
+#include <svl/poolitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+#define GRFCROP_VERSION_SWDEFAULT 0
+#define GRFCROP_VERSION_MOVETOSVX 1
+
+class SVX_DLLPUBLIC SvxGrfCrop : public SfxPoolItem
+{
+ sal_Int32 nLeft, nRight, nTop, nBottom;
+public:
+ SvxGrfCrop( USHORT );
+ SvxGrfCrop( sal_Int32 nLeft, sal_Int32 nRight,
+ sal_Int32 nTop, sal_Int32 nBottom,
+ USHORT );
+ virtual ~SvxGrfCrop();
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
+ virtual SvStream& Store(SvStream &, USHORT nIVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const IntlWrapper* pIntl = 0 ) const;
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal,
+ BYTE nMemberId = 0 ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal,
+ BYTE nMemberId = 0 );
+
+ void SetLeft( sal_Int32 nVal ) { nLeft = nVal; }
+ void SetRight( sal_Int32 nVal ) { nRight = nVal; }
+ void SetTop( sal_Int32 nVal ) { nTop = nVal; }
+ void SetBottom( sal_Int32 nVal ) { nBottom = nVal; }
+
+ sal_Int32 GetLeft() const { return nLeft; }
+ sal_Int32 GetRight() const { return nRight; }
+ sal_Int32 GetTop() const { return nTop; }
+ sal_Int32 GetBottom() const { return nBottom; }
+
+ inline SvxGrfCrop& operator=( const SvxGrfCrop& rCrop )
+ {
+ nLeft = rCrop.GetLeft(); nTop = rCrop.GetTop();
+ nRight = rCrop.GetRight(); nBottom = rCrop.GetBottom();
+ return *this;
+ }
+};
+
+
+#endif // _GRFATR_HXX
diff --git a/svx/inc/svx/grfflt.hxx b/svx/inc/svx/grfflt.hxx
new file mode 100644
index 000000000000..88c31fe42d13
--- /dev/null
+++ b/svx/inc/svx/grfflt.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_GRFFLT_HXX
+#define _SVX_GRFFLT_HXX
+
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#ifndef _SV_BUTTON_HXX
+#include <vcl/button.hxx>
+#endif
+#include <vcl/timer.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/group.hxx>
+#include <vcl/salbtype.hxx>
+#include <svtools/grfmgr.hxx>
+#include <svx/graphctl.hxx>
+#include <svx/dlgctrl.hxx>
+#include <svx/rectenum.hxx>
+#include "svx/svxdllapi.h"
+
+// ---------------
+// - Error codes -
+// ---------------
+
+#define SVX_GRAPHICFILTER_ERRCODE_NONE 0x00000000
+#define SVX_GRAPHICFILTER_UNSUPPORTED_GRAPHICTYPE 0x00000001
+#define SVX_GRAPHICFILTER_UNSUPPORTED_SLOT 0x00000002
+
+// --------------------
+// - SvxGraphicFilter -
+// --------------------
+
+class SfxRequest;
+class SfxItemSet;
+
+class SVX_DLLPUBLIC SvxGraphicFilter
+{
+public:
+
+ static ULONG ExecuteGrfFilterSlot( SfxRequest& rReq, GraphicObject& rFilterObject );
+ static void DisableGraphicFilterSlots( SfxItemSet& rSet );
+};
+
+#endif
diff --git a/svx/inc/svx/gridctrl.hxx b/svx/inc/svx/gridctrl.hxx
new file mode 100644
index 000000000000..445d986b2c5e
--- /dev/null
+++ b/svx/inc/svx/gridctrl.hxx
@@ -0,0 +1,623 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_GRIDCTRL_HXX
+#define _SVX_GRIDCTRL_HXX
+
+#include <tools/list.hxx>
+#include <com/sun/star/sdbc/XRowSet.hpp>
+#include <com/sun/star/sdbc/XRowSetListener.hpp>
+#include <com/sun/star/sdb/XRowsChangeListener.hpp>
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#include <com/sun/star/util/XNumberFormatter.hpp>
+#include <com/sun/star/util/Date.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#include <tools/date.hxx>
+#include <tools/ref.hxx>
+#include <svtools/editbrowsebox.hxx>
+#include <vos/mutex.hxx>
+#include <comphelper/propmultiplex.hxx>
+#include <svtools/transfer.hxx>
+#include "svx/svxdllapi.h"
+
+class DbGridControl;
+class CursorWrapper;
+
+sal_Bool CompareBookmark(const ::com::sun::star::uno::Any& aLeft, const ::com::sun::star::uno::Any& aRight);
+
+namespace svxform
+{
+ class DataColumn;
+}
+DECLARE_LIST(DbDataColumns, ::svxform::DataColumn*)
+
+enum GridRowStatus
+{
+ GRS_CLEAN,
+ GRS_MODIFIED,
+ GRS_DELETED,
+ GRS_INVALID
+};
+
+//==================================================================
+// DbGridRow, Zeilenbeschreibung
+//==================================================================
+
+class DbGridRow : public SvRefBase
+{
+ ::com::sun::star::uno::Any m_aBookmark; // ::com::sun::star::text::Bookmark der Zeile, kann gesetzt sein
+ DbDataColumns m_aVariants;
+ GridRowStatus m_eStatus;
+ sal_Bool m_bIsNew;
+ // Zeile ist nicht mehr gueltig,
+ // wird bei der naechsten positionierung entfernt
+public:
+ DbGridRow():m_eStatus(GRS_CLEAN), m_bIsNew(sal_True) { }
+ DbGridRow(CursorWrapper* pCur, sal_Bool bPaintCursor);
+ void SetState(CursorWrapper* pCur, sal_Bool bPaintCursor);
+
+ ~DbGridRow();
+
+ // da GetField auf Geschwindigkeit getuned ist vorher immer noch hasField verwenden
+ sal_Bool HasField(sal_uInt32 nPos) const {return nPos < m_aVariants.Count();}
+ const ::svxform::DataColumn& GetField(sal_uInt32 nPos) const { return *m_aVariants.GetObject(nPos); }
+
+ void SetStatus(GridRowStatus _eStat) { m_eStatus = _eStat; }
+ GridRowStatus GetStatus() const { return m_eStatus; }
+ void SetNew(sal_Bool _bNew) { m_bIsNew = _bNew; }
+ sal_Bool IsNew() const { return m_bIsNew; }
+
+ const ::com::sun::star::uno::Any& GetBookmark() const { return m_aBookmark; }
+
+ sal_Bool IsValid() const { return m_eStatus == GRS_CLEAN || m_eStatus == GRS_MODIFIED; }
+ sal_Bool IsModified() const { return m_eStatus == GRS_MODIFIED; }
+};
+
+SV_DECL_REF(DbGridRow)
+
+//==================================================================
+// DbGridControl
+//==================================================================
+class DbGridColumn;
+DECLARE_LIST(DbGridColumns, DbGridColumn*)
+
+//==================================================================
+class FmGridListener
+{
+public:
+ virtual void selectionChanged() = 0;
+ virtual void columnChanged() = 0;
+};
+
+#define GRID_COLUMN_NOT_FOUND ((sal_uInt16)-1)
+
+//==================================================================
+// InitWindowFacet, describing which aspect of a column's Window to (re-)initialize
+//==================================================================
+enum InitWindowFacet
+{
+ InitFont = 0x01,
+ InitForeground = 0x02,
+ InitBackground = 0x04,
+ InitWritingMode = 0x08,
+ InitAll = 0xFF
+};
+
+//==================================================================
+class FmXGridSourcePropListener;
+class DisposeListenerGridBridge;
+typedef ::svt::EditBrowseBox DbGridControl_Base;
+class SVX_DLLPUBLIC DbGridControl : public DbGridControl_Base
+{
+ friend class FmXGridSourcePropListener;
+ friend class GridFieldValueListener;
+ friend class DisposeListenerGridBridge;
+
+public:
+ //==================================================================
+ // NavigationBar
+ //==================================================================
+ class NavigationBar: public Control
+ {
+ class AbsolutePos : public NumericField
+ {
+ public:
+ AbsolutePos(Window* pParent, WinBits nStyle = 0);
+
+ virtual void KeyInput(const KeyEvent& rEvt);
+ virtual void LoseFocus();
+ };
+
+ friend class NavigationBar::AbsolutePos;
+
+ // zusaetzliche Controls
+ FixedText m_aRecordText;
+ AbsolutePos m_aAbsolute; // AbsolutePositionierung
+ FixedText m_aRecordOf;
+ FixedText m_aRecordCount;
+
+ ImageButton m_aFirstBtn; // ImageButton fuer 'gehe zum ersten Datensatz'
+ ImageButton m_aPrevBtn; // ImageButton fuer 'gehe zum vorhergehenden Datensatz'
+ ImageButton m_aNextBtn; // ImageButton fuer 'gehe zum naechsten Datensatz'
+ ImageButton m_aLastBtn; // ImageButton fuer 'gehe zum letzten Datensatz'
+ ImageButton m_aNewBtn; // ImageButton fuer 'gehe zum neuen Datensatz'
+ sal_uInt16 m_nDefaultWidth;
+ sal_Int32 m_nCurrentPos;
+
+ sal_Bool m_bPositioning; // protect PositionDataSource against recursion
+
+ public:
+ // StatusIds fuer Controls der Bar
+ // wichtig fuers Invalidieren
+ enum State
+ {
+ RECORD_TEXT = 1,
+ RECORD_ABSOLUTE,
+ RECORD_OF,
+ RECORD_COUNT,
+ RECORD_FIRST,
+ RECORD_NEXT,
+ RECORD_PREV,
+ RECORD_LAST,
+ RECORD_NEW
+ };
+
+ NavigationBar(Window* pParent, WinBits nStyle = 0);
+
+ // Status Methoden fuer Controls
+ void InvalidateAll(sal_Int32 nCurrentPos = -1, sal_Bool bAll = sal_False);
+ void InvalidateState(sal_uInt16 nWhich) {SetState(nWhich);}
+ void SetState(sal_uInt16 nWhich);
+ sal_Bool GetState(sal_uInt16 nWhich) const;
+ sal_uInt16 GetDefaultWidth() const {return m_nDefaultWidth;}
+
+ protected:
+ virtual void Resize();
+ virtual void Paint(const Rectangle& rRect);
+ virtual void StateChanged( StateChangedType nType );
+
+ private:
+ DECL_LINK(OnClick, Button*);
+ sal_uInt16 ArrangeControls();
+
+ void PositionDataSource(sal_Int32 nRecord);
+ };
+
+ friend class DbGridControl::NavigationBar;
+
+public:
+ // diese Optionen werden verodert und geben an, welche der einzelnen feature
+ // freigegeben werden koennen, default ist readonly also 0
+ enum Option
+ {
+ OPT_READONLY = 0x00,
+ OPT_INSERT = 0x01,
+ OPT_UPDATE = 0x02,
+ OPT_DELETE = 0x04
+ };
+
+private:
+ Font m_aDefaultFont;
+ Link m_aMasterStateProvider;
+ Link m_aMasterSlotExecutor;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter;
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory;
+
+ DbGridColumns m_aColumns; // Spaltenbeschreibung
+ NavigationBar m_aBar;
+ DbGridRowRef m_xDataRow; // Zeile die modifiziert werden kann
+ // kommt vom DatenCursor
+ DbGridRowRef m_xSeekRow, // Zeile die von Iterator gesetzt wird
+ // kommt vom DatenCursor
+
+ m_xEmptyRow; // Datensatz zum einfuegen
+
+ sal_uInt32 m_nAsynAdjustEvent;
+
+ // if we modify the row for the new record, we automatically insert a "new new row".
+ // But if somebody else inserts a new record into the data source, we have to do the same.
+ // For that reason we have to listen to some properties of our data source.
+ ::comphelper::OPropertyChangeMultiplexer* m_pDataSourcePropMultiplexer;
+ FmXGridSourcePropListener* m_pDataSourcePropListener;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowsChangeListener>
+ m_xRowSetListener; // get notification when rows were changed
+
+ void* m_pFieldListeners;
+ // property listeners for field values
+
+ DisposeListenerGridBridge* m_pCursorDisposeListener;
+ // need to know about the diposing of the seek cursor
+ // construct analogous to the data source proplistener/multiplexer above :
+ // DisposeListenerGridBridge is a bridge from FmXDisposeListener which I don't want to be derived from
+
+ FmGridListener* m_pGridListener;
+
+protected:
+ CursorWrapper* m_pDataCursor; // Cursor fuer Updates
+ CursorWrapper* m_pSeekCursor; // Cursor zum Seeken
+
+private:
+ // dieses sind Laufvariablen
+ DbGridRowRef m_xCurrentRow; // Row an der aktuellen Zeile
+ DbGridRowRef m_xPaintRow; // Row die gerade drgestellt werden soll
+ sal_Int32 m_nSeekPos; // Position des SeekCursors
+ sal_Int32 m_nTotalCount; // wird gesetzt, wenn der DatenCursor mit dem Zählen der
+ // Datensätze fertig ist
+ // initial Wert ist -1
+ osl::Mutex m_aDestructionSafety;
+ osl::Mutex m_aAdjustSafety;
+
+ com::sun::star::util::Date
+ m_aNullDate; // NullDate of the Numberformatter;
+
+ BrowserMode m_nMode;
+ sal_Int32 m_nCurrentPos; // Aktuelle Position;
+ sal_uInt32 m_nDeleteEvent; // EventId fuer asychrone Loeschen von Zeilen
+ sal_uInt16 m_nOptions; // Was kann das Control (Insert, Update, Delete)
+ // default readonly
+ sal_uInt16 m_nOptionMask; // the mask of options to be enabled in setDataSource
+ // (with respect to the data source capabilities)
+ // defaults to (insert | update | delete)
+ USHORT m_nLastColId;
+ long m_nLastRowId;
+
+ sal_Bool m_bDesignMode : 1; // default = sal_False
+ sal_Bool m_bRecordCountFinal : 1;
+ sal_Bool m_bMultiSelection : 1;
+ sal_Bool m_bNavigationBar : 1;
+
+ sal_Bool m_bSynchDisplay : 1;
+ sal_Bool m_bForceROController : 1;
+ sal_Bool m_bHandle : 1;
+ sal_Bool m_bFilterMode : 1;
+ sal_Bool m_bWantDestruction : 1;
+ sal_Bool m_bInAdjustDataSource : 1;
+ sal_Bool m_bPendingAdjustRows : 1; // if an async adjust is pending, is it for AdjustRows or AdjustDataSource ?
+ sal_Bool m_bHideScrollbars : 1;
+
+protected:
+ sal_Bool m_bUpdating : 1; // werden gerade updates durchgefuehrt
+
+protected:
+ virtual sal_Bool SeekRow(long nRow);
+ virtual void VisibleRowsChanged( long nNewTopRow, sal_uInt16 nNumRows);
+ virtual void PaintStatusCell(OutputDevice& rDev, const Rectangle& rRect) const;
+ virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColId) const;
+ virtual RowStatus GetRowStatus(long nRow) const;
+ virtual sal_Bool CursorMoving(long nNewRow, sal_uInt16 nNewCol);
+ virtual void CursorMoved();
+ virtual void ArrangeControls(sal_uInt16& nX, sal_uInt16 nY);
+ virtual sal_uInt32 GetTotalCellWidth(long nRow, sal_uInt16 nColId);
+ virtual void Command(const CommandEvent& rEvt);
+ virtual long PreNotify(NotifyEvent& rEvt);
+ virtual void KeyInput(const KeyEvent& rEvt);
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual void Select();
+
+ virtual ::svt::CellController* GetController(long nRow, sal_uInt16 nCol);
+
+ virtual void CellModified();
+ virtual sal_Bool SaveModified();
+ virtual sal_Bool IsModified() const;
+
+ virtual sal_uInt16 AppendColumn(const String& rName, sal_uInt16 nWidth = 0, sal_uInt16 nPos = HEADERBAR_APPEND, sal_uInt16 nId = (sal_uInt16)-1);
+ virtual void RemoveColumn(sal_uInt16 nId);
+ virtual DbGridColumn* CreateColumn(sal_uInt16 nId) const;
+ virtual void ColumnMoved(sal_uInt16 nId);
+ virtual sal_Bool SaveRow();
+ virtual sal_Bool IsTabAllowed(sal_Bool bForward) const;
+
+ /// hide a column
+ virtual void HideColumn(sal_uInt16 nId);
+ /// show a column
+ virtual void ShowColumn(sal_uInt16 nId);
+
+ /** This is called before executing a context menu for a row. rMenu contains the initial entries
+ handled by this base class' method (which always has to be called).
+ Derived classes may alter the menu in any way and handle any additional entries in
+ PostExecuteColumnContextMenu.
+ All disabled entries will be removed before executing the menu, so be careful with separators
+ near entries you probably wish to disable ...
+ */
+ virtual void PreExecuteRowContextMenu(sal_uInt16 nRow, PopupMenu& rMenu);
+ /** After executing the context menu for a row this method is called.
+ */
+ virtual void PostExecuteRowContextMenu(sal_uInt16 nRow, const PopupMenu& rMenu, sal_uInt16 nExecutionResult);
+
+ virtual void DataSourcePropertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void FieldValueChanged(sal_uInt16 _nId, const ::com::sun::star::beans::PropertyChangeEvent& _evt);
+ virtual void FieldListenerDisposing(sal_uInt16 _nId);
+
+ virtual void disposing(sal_uInt16 _nId, const ::com::sun::star::lang::EventObject& _rEvt);
+
+ // own overridables
+ /// called when the current row changed
+ virtual void onRowChange();
+ /// called when the current column changed
+ virtual void onColumnChange();
+
+ // DragSourceHelper overridables
+ virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel );
+
+ void executeRowContextMenu( long _nRow, const Point& _rPreferredPos );
+
+public:
+ DbGridControl(
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >,
+ Window* pParent,
+ WinBits nBits = WB_BORDER);
+
+ virtual ~DbGridControl();
+
+ virtual void Init();
+ virtual void InitColumnsByFields(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& xFields) = 0;
+ virtual void RemoveRows();
+
+ /** GetCellText returns the text at the given position
+ @param _nRow
+ the number of the row
+ @param _nColId
+ the ID of the column
+ @return
+ the text out of the cell
+ */
+ virtual String GetCellText(long _nRow, USHORT _nColId) const;
+
+ void RemoveRows(sal_Bool bNewCursor);
+
+ void InvalidateStatus();
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& getNumberFormatter() const {return m_xFormatter;}
+
+ // die Datenquelle
+ // die Optionen koennen die Updatefaehigkeiten noch einschraenken, nicht erweitern
+ virtual void setDataSource(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& rCursor,
+ sal_uInt16 nOpts = OPT_INSERT | OPT_UPDATE | OPT_DELETE);
+ virtual void Dispatch(sal_uInt16 nId);
+
+ CursorWrapper* getDataSource() const {return m_pDataCursor;}
+ const DbGridColumns& GetColumns() const {return m_aColumns;}
+
+ void EnableHandle(sal_Bool bEnable);
+ sal_Bool HasHandle() const {return m_bHandle;}
+ void InsertHandleColumn();
+
+ /// welche Position hat die Spalte mit der Id in der ::com::sun::star::sdbcx::View, die Handle-Column zahelt nicht mit
+ sal_uInt16 GetViewColumnPos( sal_uInt16 nId ) const { sal_uInt16 nPos = GetColumnPos(nId); return (nPos==(sal_uInt16)-1) ? GRID_COLUMN_NOT_FOUND : nPos-1; }
+
+ /** welche Position hat die Spalte mit der Id in m_aColumns, also dem von GetColumns gelieferten ::com::sun::star::sdbcx::Container ?
+ (unterscheidet sich u.U. von der von GetViewColumnPos gelieferten, wenn es versteckt Spalten gibt)
+ */
+ sal_uInt16 GetModelColumnPos( sal_uInt16 nId ) const;
+
+ /// Anzahl der Spalten im Model
+ sal_uInt16 GetViewColCount() const { return ColCount() - 1; }
+ sal_uInt16 GetModelColCount() const { return (sal_uInt16)m_aColumns.Count(); }
+ /// umgekehrt zu GetViewColumnPos : Id zu Position, die erste Nicht-Handle-Column hat die Position 0
+ sal_uInt16 GetColumnIdFromViewPos( sal_uInt16 nPos ) const { return GetColumnId(nPos + 1); }
+ sal_uInt16 GetColumnIdFromModelPos( sal_uInt16 nPos ) const;
+
+ virtual void SetDesignMode(sal_Bool bMode);
+ sal_Bool IsDesignMode() const {return m_bDesignMode;}
+ sal_Bool IsOpen() const {return m_pSeekCursor != NULL;}
+
+ virtual void SetFilterMode(sal_Bool bMode);
+ sal_Bool IsFilterMode() const {return m_bFilterMode;}
+ sal_Bool IsFilterRow(long nRow) const {return m_bFilterMode && nRow == 0;}
+
+ void EnableNavigationBar(sal_Bool bEnable);
+ sal_Bool HasNavigationBar() const {return m_bNavigationBar;}
+
+ sal_uInt16 GetOptions() const {return m_nOptions;}
+ NavigationBar& GetNavigationBar() {return m_aBar;}
+ sal_uInt16 SetOptions(sal_uInt16 nOpt);
+ // The new options are interpreted with respect to the current data source. If it is unable
+ // to update, to insert or to restore, the according options are ignored. If the grid isn't
+ // connected to a data source, all options except OPT_READONLY are ignored.
+
+ void SetMultiSelection(sal_Bool bMulti);
+ sal_Bool GetMultiSelection() const {return m_bMultiSelection;}
+
+ const com::sun::star::util::Date& getNullDate() const {return m_aNullDate;}
+
+ // Positionierung
+ void MoveToPosition(sal_uInt32 nPos);
+ void MoveToFirst();
+ void MoveToNext();
+ void MoveToPrev();
+ void MoveToLast();
+ void AppendNew();
+
+ // Abgleich der Cursor falls von außen der DatenCursor verschoben wurde
+ // Flag bedeutet ob ein Abgleich es Rowcounts vorgenommen werden soll
+ void AdjustDataSource(sal_Bool bFull = sal_False);
+ void Undo();
+
+ virtual void BeginCursorAction();
+ virtual void EndCursorAction();
+
+ // wird die aktuelle Zeile neu gesetzt
+ sal_Bool IsUpdating() const {return m_bUpdating;}
+
+ virtual void RowRemoved( long nRow, long nNumRows = 1, sal_Bool bDoPaint = sal_True );
+ virtual void RowInserted( long nRow, long nNumRows = 1, sal_Bool bDoPaint = sal_True, sal_Bool bKeepSelection = sal_False );
+ virtual void RowModified( long nRow, sal_uInt16 nColId = USHRT_MAX );
+
+ void resetCurrentRow();
+
+ sal_Bool getDisplaySynchron() const { return m_bSynchDisplay; }
+ void setDisplaySynchron(sal_Bool bSync);
+ void forceSyncDisplay();
+ // wenn das auf sal_False gesetzt wird, laeuft die Anzeige nicht mehr mit der aktuellen Cursor-Position synchron
+ // (soll heissen, in AdjustDataSource wird nicht in die zur CursorPosition gehoerenden Zeile gesprungen)
+ // wer das benutzt, sollte bitte wissen, was er tut, da zum Beispiel die Eingabe von Daten in einer Zeile auf der Anzeige,
+ // die gar nicht mit der Position des Cursors synchron ist, ziemlich kritisch sein koennte
+
+ sal_Bool isForcedROController() const { return m_bForceROController; }
+ void forceROController(sal_Bool bForce);
+ // Setzt man das auf sal_True, hat das GridControl immer einen ::com::sun::star::frame::Controller, der allerdings read-only ist. Ausserdem
+ // wird die Edit-Zeile des Controllers so eingestellt, dass sie ihre Selektion bei Fokus-Verlust weiterhin anzeigt.
+
+ const DbGridRowRef& GetCurrentRow() const {return m_xCurrentRow;}
+
+ void SetStateProvider(const Link& rProvider) { m_aMasterStateProvider = rProvider; }
+ // if this link is set the given provider will be asked for the state of my items.
+ // the return values are interpreted as follows :
+ // <0 -> not specified (use default mechanism to determine the state)
+ // ==0 -> the item is disabled
+ // >0 -> the item is enabled
+ void SetSlotExecutor(const Link& rExecutor) { m_aMasterSlotExecutor = rExecutor; }
+ // analogous : if this link is set, all nav-bar slots will be routed through it when executed
+ // if the handler returns nonzero, no further handling of the slot occurs
+
+ void EnablePermanentCursor(sal_Bool bEnable);
+ sal_Bool IsPermanentCursorEnabled() const;
+
+ /** forces both scrollbars to be hidden
+
+ For the horizontal srollbar, this is overruled by enabling the navigation bar: A navigation
+ bar <b>always</b> implies a horizontal scroll bar
+ @seealso EnableNavigationBar
+ */
+ void ForceHideScrollbars( sal_Bool _bForce );
+ sal_Bool IsForceHideScrollbars() const;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ getServiceManager() const { return m_xServiceFactory; }
+
+ /// returns <TRUE/> if the text of the given cell can be copied into the clipboard
+ sal_Bool canCopyCellText(sal_Int32 _nRow, sal_Int16 _nColId);
+ /// copies the text of the given cell into the clipboard
+ void copyCellText(sal_Int32 _nRow, sal_Int16 _nColId);
+
+ // selectin listener handling
+ FmGridListener* getGridListener() const { return m_pGridListener; }
+ void setGridListener( FmGridListener* _pListener ) { m_pGridListener = _pListener; }
+
+ // helper class to grant access to selected methods from within the DbCellControl class
+ struct GrantControlAccess
+ {
+ friend class DbCellControl;
+ friend class RowSetEventListener;
+ protected:
+ GrantControlAccess() { }
+ };
+
+ /// called when a controller needs to be re-initialized
+ void refreshController(sal_uInt16 _nColId, GrantControlAccess _aAccess);
+
+ CursorWrapper* GetSeekCursor(GrantControlAccess /*_aAccess*/) const { return m_pSeekCursor; }
+ const DbGridRowRef& GetSeekRow(GrantControlAccess /*_aAccess*/) const { return m_xSeekRow; }
+ void SetSeekPos(sal_Int32 nPos,GrantControlAccess /*_aAccess*/) {m_nSeekPos = nPos;}
+
+ /**
+ @return
+ The count of additional controls of the control area.
+ */
+ virtual sal_Int32 GetAccessibleControlCount() const;
+
+ /** Creates the accessible object of an additional control.
+ @param _nIndex
+ The 0-based index of the control.
+ @return
+ The XAccessible interface of the specified control.
+ */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ CreateAccessibleControl( sal_Int32 _nIndex );
+
+ // IAccessibleTableProvider
+ /** Creates the accessible object of a data table cell.
+ @param nRow The row index of the cell.
+ @param nColumnId The column ID of the cell.
+ @return The XAccessible interface of the specified cell. */
+ virtual ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible >
+ CreateAccessibleCell( sal_Int32 nRow, sal_uInt16 nColumnId );
+
+protected:
+ void RecalcRows(long nNewTopRow, sal_uInt16 nLinesOnScreen, sal_Bool bUpdateCursor);
+ sal_Bool SeekCursor(long nRow, sal_Bool bAbsolute = sal_False);
+ void RemoveColumns(); // aufraeumen eigener strukturen
+ void AdjustRows();
+ sal_Int32 AlignSeekCursor();
+ sal_Bool SetCurrent(long nNewRow);
+
+ String GetCurrentRowCellText(DbGridColumn* pCol,const DbGridRowRef& _rRow) const;
+ virtual void DeleteSelectedRows();
+ sal_Bool IsValid(const DbGridRowRef& _xRow) const {return _xRow && _xRow->IsValid();}
+
+ // Zeile an der gerade eingefuegt wird
+ sal_Bool IsCurrentAppending() const;
+
+ // Leerzeile zum Einfuegen
+ sal_Bool IsInsertionRow(long nRow) const;
+
+ void SetSeekPos(sal_Int32 nPos) {m_nSeekPos = nPos;}
+ sal_Int32 GetCurrentPos() const {return m_nCurrentPos;}
+ sal_Int32 GetSeekPos() const {return m_nSeekPos;}
+ sal_Int32 GetTotalCount() const {return m_nTotalCount;}
+
+ const DbGridRowRef& GetEmptyRow() const { return m_xEmptyRow; }
+ const DbGridRowRef& GetSeekRow() const { return m_xSeekRow; }
+ const DbGridRowRef& GetPaintRow() const { return m_xPaintRow; }
+ CursorWrapper* GetSeekCursor() const { return m_pSeekCursor; }
+
+
+ void ConnectToFields();
+ void DisconnectFromFields();
+
+ void implAdjustInSolarThread(sal_Bool _bRows);
+ // calls AdjustRows or AdjustDataSource, synchron if the caller is running in the solar thread, else asynchron
+
+protected:
+ virtual void InitController(::svt::CellControllerRef& rController, long nRow, sal_uInt16 nCol);
+ void Construct();
+ void ImplInitWindow( const InitWindowFacet _eInitWhat );
+ DECL_LINK(OnDelete, void*);
+
+ DECL_LINK(OnAsyncAdjust, void*);
+ // if the param is != NULL, AdjustRows will be called, else AdjustDataSource
+
+private:
+ using BrowseBox::InsertHandleColumn;
+};
+
+
+SV_IMPL_REF(DbGridRow);
+
+
+#endif // _SVX_GRIDCTRL_HXX
+
diff --git a/svx/inc/svx/hdft.hxx b/svx/inc/svx/hdft.hxx
new file mode 100644
index 000000000000..b3c425b85b93
--- /dev/null
+++ b/svx/inc/svx/hdft.hxx
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_HDFT_HXX
+#define _SVX_HDFT_HXX
+
+// include ---------------------------------------------------------------
+
+#include <sfx2/tabdlg.hxx>
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#include <svx/pagectrl.hxx>
+#include "svx/svxdllapi.h"
+
+// class SvxHFPage ------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxHFPage: public SfxTabPage
+{
+ using TabPage::ActivatePage;
+ using TabPage::DeactivatePage;
+
+public:
+
+ virtual BOOL FillItemSet( SfxItemSet& rOutSet );
+ virtual void Reset( const SfxItemSet& rSet );
+
+ virtual ~SvxHFPage();
+
+ void DisableDeleteQueryBox() { bDisableQueryBox = TRUE; }
+ void EnableBackgroundSelector( BOOL bNew ) { bEnableBackgroundSelector = bNew; }
+ void EnableDynamicSpacing();
+
+protected:
+ virtual void ActivatePage( const SfxItemSet& rSet );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+ SvxHFPage( Window* pParent, USHORT nResId, const SfxItemSet& rSet,
+ USHORT nSetId );
+
+ CheckBox aTurnOnBox;
+ CheckBox aCntSharedBox;
+ FixedText aLMLbl;
+ MetricField aLMEdit;
+ FixedText aRMLbl;
+ MetricField aRMEdit;
+ FixedText aDistFT;
+ MetricField aDistEdit;
+ CheckBox aDynSpacingCB;
+ FixedText aHeightFT;
+ MetricField aHeightEdit;
+ CheckBox aHeightDynBtn;
+ FixedLine aFrm;
+ SvxPageWindow aBspWin;
+ PushButton aBackgroundBtn;
+
+ USHORT nId;
+ SfxItemSet* pBBSet;
+ BOOL bDisableQueryBox;
+ BOOL bEnableBackgroundSelector;
+ FASTBOOL bInReset;
+
+ void InitHandler();
+ DECL_LINK( TurnOnHdl, CheckBox*);
+ DECL_LINK( DistModify, MetricField*);
+ DECL_LINK( HeightModify, MetricField*);
+ DECL_LINK( BorderModify, MetricField*);
+ DECL_LINK( BackgroundHdl, Button*);
+
+ void UpdateExample();
+ DECL_LINK( RangeHdl, Edit*);
+
+private:
+#ifdef _SVX_HDFT_CXX
+ SVX_DLLPRIVATE void ResetBackground_Impl( const SfxItemSet& rSet );
+#endif
+};
+
+// class SvxHeaderPage ---------------------------------------------------
+
+class SVX_DLLPUBLIC SvxHeaderPage : public SvxHFPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
+ static USHORT* GetRanges();
+
+private:
+ SvxHeaderPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+// class SvxFooterPage ---------------------------------------------------
+
+class SVX_DLLPUBLIC SvxFooterPage : public SvxHFPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
+ static USHORT* GetRanges();
+
+private:
+ SVX_DLLPRIVATE SvxFooterPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+#endif
+
diff --git a/svx/inc/svx/helperhittest3d.hxx b/svx/inc/svx/helperhittest3d.hxx
new file mode 100644
index 000000000000..eae61aa253c5
--- /dev/null
+++ b/svx/inc/svx/helperhittest3d.hxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SVX_HELPERHITTEST_HXX
+#define INCLUDED_SVX_HELPERHITTEST_HXX
+
+#include "svx/svxdllapi.h"
+#include <sal/types.h>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class B2DPoint;
+}
+
+namespace drawinglayer { namespace geometry {
+ class ViewInformation3D;
+}}
+
+class E3dCompoundObject;
+class E3dScene;
+
+//////////////////////////////////////////////////////////////////////////////
+
+/** support for getting a ViewInformation3D for a given CompoudObject3D
+ with correct ObjectTransformation filled out
+
+ @param o_rViewInformation3D
+ The ViewInformation3D created which will be overwritten
+
+ @param rCandidate
+ The E3dCompoundObject for which the ViewInformation3D shall be
+ prepared
+
+ @return
+ A pointer to the found and used root scene. This is also a hint
+ if the operation succeeded or not, since when object has no root
+ scene (is not inserted to a model), an empty ViewInformation3D
+ will be used
+*/
+E3dScene* fillViewInformation3DForCompoundObject(
+ drawinglayer::geometry::ViewInformation3D& o_rViewInformation3D,
+ const E3dCompoundObject& rCandidate);
+
+/** support for getting all from a 2d position hit objects in a 3d scene
+ in a depth sorted array
+
+ @param rPoint
+ 2D Point in view coordinates
+
+ @param rScene
+ The 3D Scene for HitTest
+
+ @param o_rResult
+ Output parameter which contains all hit 3D objects inside rScene. This
+ vector will be changed in any case. If it's empty, no hit exists. If it's
+ not empty, the first object is the object closest to the viewer
+
+*/
+SVX_DLLPUBLIC void getAllHit3DObjectsSortedFrontToBack(
+ const basegfx::B2DPoint& rPoint,
+ const E3dScene& rScene,
+ ::std::vector< const E3dCompoundObject* >& o_rResult);
+
+/** support for checking if the single given 3d object is hit at position
+
+ @param rPoint
+ 2D Point in view coordinates
+
+ @param rCandidate
+ The 3D Object which needs checking
+
+ @return
+ true if hit, false if not
+*/
+bool checkHitSingle3DObject(
+ const basegfx::B2DPoint& rPoint,
+ const E3dCompoundObject& rCandidate);
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // INCLUDED_SVX_HELPERHITTEST_HXX
+
+// eof
diff --git a/svx/inc/svx/ifaceids.hxx b/svx/inc/svx/ifaceids.hxx
new file mode 100644
index 000000000000..a2be904d89a3
--- /dev/null
+++ b/svx/inc/svx/ifaceids.hxx
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_IFACEIDS_HXX
+#define _SVX_IFACEIDS_HXX
+
+// -----------------------------------------------------------------------
+
+#include <sfx2/shell.hxx>
+
+#define SVX_INTERFACE_BASIDE_DOCSH (SFX_INTERFACE_IDE_START+ 0)
+#define SVX_INTERFACE_BASIDE_VIEWSH (SFX_INTERFACE_IDE_START+ 1)
+#define SVX_INTERFACE_EXTRUSION_BAR (SFX_INTERFACE_IDE_START+ 2)
+#define SVX_INTERFACE_FONTWORK_BAR (SFX_INTERFACE_IDE_START+ 3)
+
+#define HID_INTERFACE_BASIDE_VIEWSH SVX_INTERFACE_BASIDE_VIEWSH
+
+#define SVX_INTERFACE_FORM_SH (SFX_INTERFACE_IDE_END+ 1)
+
+#endif
+
+
diff --git a/svx/inc/svx/ipolypolygoneditorcontroller.hxx b/svx/inc/svx/ipolypolygoneditorcontroller.hxx
new file mode 100644
index 000000000000..6c3a35218df6
--- /dev/null
+++ b/svx/inc/svx/ipolypolygoneditorcontroller.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_IPOLYPOLYGONEDITORCONTROLLER_HXX
+#define _SDR_IPOLYPOLYGONEDITORCONTROLLER_HXX
+
+#include "svx/svxdllapi.h"
+#include <svx/svdedtv.hxx>
+
+//************************************************************
+// Defines
+//************************************************************
+
+enum SdrPathSmoothKind {SDRPATHSMOOTH_DONTCARE, // nur fuer Statusabfrage
+ SDRPATHSMOOTH_ANGULAR, // Eckig
+ SDRPATHSMOOTH_ASYMMETRIC, // unsymmetrisch, normales Smooth
+ SDRPATHSMOOTH_SYMMETRIC}; // symmetrisch
+
+enum SdrPathSegmentKind {SDRPATHSEGMENT_DONTCARE, // nur fuer Statusabfrage
+ SDRPATHSEGMENT_LINE, // gerader Streckenabschnitt
+ SDRPATHSEGMENT_CURVE, // Kurvenabschnitt (Bezier)
+ SDRPATHSEGMENT_TOGGLE}; // nur fuer Set: Toggle
+
+enum SdrObjClosedKind {SDROBJCLOSED_DONTCARE, // nur fuer Statusabfrage
+ SDROBJCLOSED_OPEN, // Objekte geoeffnet (Linie, Polyline, ...)
+ SDROBJCLOSED_CLOSED, // Objekte geschlossen (Polygon, ...)
+ SDROBJCLOSED_TOGGLE}; // nur fuer Set: Toggle (not implemented yet)
+
+class IPolyPolygonEditorController
+{
+public:
+ virtual void DeleteMarkedPoints() = 0;
+ virtual BOOL IsDeleteMarkedPointsPossible() const = 0;
+
+ virtual void RipUpAtMarkedPoints() = 0;
+ virtual bool IsRipUpAtMarkedPointsPossible() const = 0;
+
+ virtual BOOL IsSetMarkedSegmentsKindPossible() const = 0;
+ virtual SdrPathSegmentKind GetMarkedSegmentsKind() const = 0;
+ virtual void SetMarkedSegmentsKind(SdrPathSegmentKind eKind) = 0;
+
+ virtual BOOL IsSetMarkedPointsSmoothPossible() const = 0;
+ virtual SdrPathSmoothKind GetMarkedPointsSmooth() const = 0;
+ virtual void SetMarkedPointsSmooth(SdrPathSmoothKind eKind) = 0;
+
+ virtual void CloseMarkedObjects(BOOL bToggle, BOOL bOpen ) = 0;
+ virtual bool IsOpenCloseMarkedObjectsPossible() const = 0;
+ virtual SdrObjClosedKind GetMarkedObjectsClosedState() const = 0;
+};
+
+#endif //_SDR_IPOLYPOLYGONEDITORCONTROLLER_HXX
+
diff --git a/svx/inc/svx/itemwin.hxx b/svx/inc/svx/itemwin.hxx
new file mode 100644
index 000000000000..8f6506b90e66
--- /dev/null
+++ b/svx/inc/svx/itemwin.hxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_ITEMWIN_HXX
+#define _SVX_ITEMWIN_HXX
+
+#include <vcl/bitmap.hxx>
+
+#include <svx/dlgctrl.hxx>
+#include "svx/svxdllapi.h"
+
+// forward ---------------------------------------------------------------
+
+class XLineColorItem;
+class XLineWidthItem;
+class SfxObjectShell;
+
+// class SvxLineBox ------------------------------------------------------
+
+class SvxLineBox : public LineLB
+{
+ BmpColorMode meBmpMode;
+ USHORT nCurPos;
+ Timer aDelayTimer;
+ Size aLogicalSize;
+ BOOL bRelease;
+ SfxObjectShell* mpSh;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame;
+
+#ifdef _SVX_ITEMWIN_CXX
+ DECL_LINK( DelayHdl_Impl, Timer * );
+
+ void ReleaseFocus_Impl();
+#endif
+public:
+ SvxLineBox( Window* pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
+ WinBits nBits = WB_BORDER | WB_DROPDOWN | WB_AUTOHSCROLL );
+ ~SvxLineBox();
+
+ void FillControl();
+
+protected:
+ virtual void Select();
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+};
+
+// class SvxColorBox -----------------------------------------------------
+
+class SvxColorBox : public ColorLB
+{
+ using Window::Update;
+
+ USHORT nCurPos;
+ USHORT nId;
+ Timer aDelayTimer;
+ Size aLogicalSize;
+ BOOL bRelease;
+ ::rtl::OUString maCommand;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame;
+
+#ifdef _SVX_ITEMWIN_CXX
+ DECL_LINK( DelayHdl_Impl, Timer * );
+
+ void ReleaseFocus_Impl();
+#endif
+
+public:
+ SvxColorBox( Window* pParent,
+ const rtl::OUString& rCommand,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
+ WinBits nBits = WB_BORDER | WB_DROPDOWN | WB_AUTOHSCROLL );
+ ~SvxColorBox();
+
+ void Update( const XLineColorItem* pItem );
+
+protected:
+ virtual void Select();
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+};
+
+// class SvxMetricField --------------------------------------------------
+
+class SVX_DLLPUBLIC SvxMetricField : public MetricField
+{
+ using Window::Update;
+
+ String aCurTxt;
+ SfxMapUnit ePoolUnit;
+ FieldUnit eDlgUnit;
+ Size aLogicalSize;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > mxFrame;
+
+#ifdef _SVX_ITEMWIN_CXX
+ void ReleaseFocus_Impl();
+#endif
+
+protected:
+ virtual void Modify();
+ virtual void Down();
+ virtual void Up(); // Nur zur Sicherheit
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+public:
+ SvxMetricField( Window* pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
+ WinBits nBits = WB_BORDER | WB_SPIN | WB_REPEAT );
+ ~SvxMetricField();
+
+ void Update( const XLineWidthItem* pItem );
+ void SetCoreUnit( SfxMapUnit eUnit );
+ void RefreshDlgUnit();
+};
+
+// class SvxFillTypeBox --------------------------------------------------
+
+class SvxFillTypeBox : public FillTypeLB
+{
+public:
+ SvxFillTypeBox( Window* pParent, WinBits nBits = WB_BORDER | WB_DROPDOWN | WB_AUTOHSCROLL );
+ ~SvxFillTypeBox();
+
+ void Selected() { bSelect = TRUE; }
+ BOOL IsRelease() { return bRelease;}
+
+protected:
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual long Notify( NotifyEvent& rNEvt );
+
+private:
+ USHORT nCurPos;
+ BOOL bSelect;
+ BOOL bRelease;
+
+#ifdef _SVX_ITEMWIN_CXX
+ void ReleaseFocus_Impl();
+#endif
+};
+
+// class SvxFillAttrBox --------------------------------------------------
+
+class SvxFillAttrBox : public FillAttrLB
+{
+public:
+ SvxFillAttrBox( Window* pParent, WinBits nBits = WB_BORDER | WB_DROPDOWN | WB_AUTOHSCROLL );
+ ~SvxFillAttrBox();
+
+ BOOL IsRelease() { return bRelease;}
+
+protected:
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void Select();
+
+private:
+ USHORT nCurPos;
+ BOOL bRelease;
+
+#ifdef _SVX_ITEMWIN_CXX
+ void ReleaseFocus_Impl();
+#endif
+};
+
+#endif // #ifndef _SVX_ITEMWIN_HXX
+
diff --git a/svx/inc/svx/langbox.hxx b/svx/inc/svx/langbox.hxx
new file mode 100644
index 000000000000..0c4efa6b7231
--- /dev/null
+++ b/svx/inc/svx/langbox.hxx
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_LANGBOX_HXX
+#define _SVX_LANGBOX_HXX
+
+// include ---------------------------------------------------------------
+
+#include <com/sun/star/uno/Sequence.hxx>
+#include <vcl/lstbox.hxx>
+#include "svx/svxdllapi.h"
+#include <vcl/image.hxx>
+#include <tools/solar.h>
+#include <layout/layout.hxx>
+
+class SvtLanguageTable;
+
+#define LANG_LIST_EMPTY 0x0000
+#define LANG_LIST_ALL 0x0001
+#define LANG_LIST_WESTERN 0x0002
+#define LANG_LIST_CTL 0x0004
+#define LANG_LIST_CJK 0x0008
+#define LANG_LIST_FBD_CHARS 0x0010
+#define LANG_LIST_SPELL_AVAIL 0x0020
+#define LANG_LIST_HYPH_AVAIL 0x0040
+#define LANG_LIST_THES_AVAIL 0x0080
+#define LANG_LIST_ONLY_KNOWN 0x0100 // list only locales provided by I18N
+#define LANG_LIST_SPELL_USED 0x0200
+#define LANG_LIST_HYPH_USED 0x0400
+#define LANG_LIST_THES_USED 0x0800
+#define LANG_LIST_ALSO_PRIMARY_ONLY 0x1000 // Do not exclude primary-only
+ // languages that do not form a
+ // locale, such as Arabic as
+ // opposed to Arabic-Egypt.
+
+
+// load language strings from resource
+SVX_DLLPUBLIC String GetDicInfoStr( const String& rName, const USHORT nLang, BOOL bNeg );
+
+class SVX_DLLPUBLIC SvxLanguageBox : public ListBox
+{
+public:
+
+private:
+ Image m_aNotCheckedImage;
+ Image m_aCheckedImage;
+ Image m_aCheckedImageHC;
+ String m_aAllString;
+ com::sun::star::uno::Sequence< INT16 > *m_pSpellUsedLang;
+ SvtLanguageTable* m_pLangTable;
+ INT16 m_nLangList;
+ BOOL m_bHasLangNone;
+ BOOL m_bLangNoneIsLangAll;
+ BOOL m_bWithCheckmark;
+
+ SVX_DLLPRIVATE void Init();
+ SVX_DLLPRIVATE USHORT ImplInsertImgEntry( const String& rEntry, USHORT nPos, bool bChecked );
+ SVX_DLLPRIVATE USHORT ImplInsertLanguage(LanguageType, USHORT, sal_Int16 );
+
+public:
+ SvxLanguageBox( Window* pParent, WinBits nWinStyle, BOOL bCheck = FALSE);
+ SvxLanguageBox( Window* pParent, const ResId& rResId, BOOL bCheck = FALSE);
+ ~SvxLanguageBox();
+
+ void SetLanguageList( INT16 nLangList,
+ BOOL bHasLangNone, BOOL bLangNoneIsLangAll = FALSE,
+ BOOL bCheckSpellAvail = FALSE );
+
+ USHORT InsertLanguage( const LanguageType eLangType, USHORT nPos = LISTBOX_APPEND );
+ USHORT InsertDefaultLanguage( sal_Int16 nType, USHORT nPos = LISTBOX_APPEND );
+ USHORT InsertLanguage( const LanguageType eLangType,
+ BOOL bCheckEntry, USHORT nPos = LISTBOX_APPEND );
+ void RemoveLanguage( const LanguageType eLangType );
+ void SelectLanguage( const LanguageType eLangType, BOOL bSelect = TRUE );
+ LanguageType GetSelectLanguage() const;
+ BOOL IsLanguageSelected( const LanguageType eLangType ) const;
+};
+
+#if ENABLE_LAYOUT
+namespace layout
+{
+class SvxLanguageBoxImpl;
+class SVX_DLLPUBLIC SvxLanguageBox : public ListBox
+{
+ /*DECL_GET_IMPL( SvxLanguageBox );
+ DECL_CONSTRUCTORS( SvxLanguageBox, ListBox, WB_BORDER );
+ DECL_GET_WINDOW (SvxLanguageBox);*/
+
+public:
+ SvxLanguageBox( Context*, const char*, BOOL bCheck = FALSE );
+ ~SvxLanguageBox ();
+ void SetLanguageList (sal_Int16 list, bool hasLangNone, bool langNoneIsLangAll=false, bool checkSpellAvailable=false);
+
+ sal_uInt16 InsertLanguage (LanguageType const type, sal_uInt16 pos=LISTBOX_APPEND);
+ sal_uInt16 InsertLanguage (LanguageType const type, bool checkEntry, sal_uInt16 pos=LISTBOX_APPEND);
+ void RemoveLanguage (LanguageType const type);
+ void SelectLanguage (LanguageType const type, bool select=true);
+ LanguageType GetSelectLanguage () const;
+ bool IsLanguageSelected( LanguageType const type) const;
+};
+};
+#endif
+
+#endif
+
diff --git a/svx/inc/svx/lathe3d.hxx b/svx/inc/svx/lathe3d.hxx
new file mode 100644
index 000000000000..9ddd90a6bfac
--- /dev/null
+++ b/svx/inc/svx/lathe3d.hxx
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_LATHE3D_HXX
+#define _E3D_LATHE3D_HXX
+
+#include <svx/obj3d.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* 3D-Rotationsobjekt aus uebergebenem 2D-Polygon erzeugen
+|*
+|* Das aPolyPoly3D wird in nHSegments-Schritten um die Achse rotiert.
+|* nVSegments gibt die Anzahl der Linien von aPolyPoly3D an und stellt damit
+|* quasi eine vertikale Segmentierung dar.
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dLatheObj : public E3dCompoundObject
+{
+private:
+ // Partcodes fuer Wireframe-Generierung: Standard oder Deckelflaeche
+ enum { LATHE_PART_STD = 1, LATHE_PART_COVER = 2 };
+ basegfx::B2DPolyPolygon maPolyPoly2D;
+
+ protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+
+ public:
+ TYPEINFO();
+ E3dLatheObj(E3dDefaultAttributes& rDefault, const basegfx::B2DPolyPolygon rPoly2D);
+ E3dLatheObj();
+
+ // HorizontalSegments:
+ sal_uInt32 GetHorizontalSegments() const
+ { return ((const Svx3DHorizontalSegmentsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_HORZ_SEGS)).GetValue(); }
+
+ // VerticalSegments:
+ sal_uInt32 GetVerticalSegments() const
+ { return ((const Svx3DVerticalSegmentsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_VERT_SEGS)).GetValue(); }
+
+ // PercentDiagonal: 0..100, before 0.0..0.5
+ sal_uInt16 GetPercentDiagonal() const
+ { return ((const Svx3DPercentDiagonalItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_PERCENT_DIAGONAL)).GetValue(); }
+
+ // BackScale: 0..100, before 0.0..1.0
+ sal_uInt16 GetBackScale() const
+ { return ((const Svx3DBackscaleItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_BACKSCALE)).GetValue(); }
+
+ // EndAngle: 0..10000
+ sal_uInt32 GetEndAngle() const
+ { return ((const Svx3DEndAngleItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_END_ANGLE)).GetValue(); }
+
+ // #107245# GetSmoothNormals() for bLatheSmoothed
+ sal_Bool GetSmoothNormals() const
+ { return ((const Svx3DSmoothNormalsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_SMOOTH_NORMALS)).GetValue(); }
+
+ // #107245# GetSmoothLids() for bLatheSmoothFrontBack
+ sal_Bool GetSmoothLids() const
+ { return ((const Svx3DSmoothLidsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_SMOOTH_LIDS)).GetValue(); }
+
+ // #107245# GetCharacterMode() for bLatheCharacterMode
+ sal_Bool GetCharacterMode() const
+ { return ((const Svx3DCharacterModeItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_CHARACTER_MODE)).GetValue(); }
+
+ // #107245# GetCloseFront() for bLatheCloseFront
+ sal_Bool GetCloseFront() const
+ { return ((const Svx3DCloseFrontItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_CLOSE_FRONT)).GetValue(); }
+
+ // #107245# GetCloseBack() for bLatheCloseBack
+ sal_Bool GetCloseBack() const
+ { return ((const Svx3DCloseBackItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_CLOSE_BACK)).GetValue(); }
+
+ virtual UINT16 GetObjIdentifier() const;
+ void ReSegment(sal_uInt32 nHSegs, sal_uInt32 nVSegs);
+
+ virtual void operator=(const SdrObject&);
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ // Lokale Parameter setzen/lesen mit Geometrieneuerzeugung
+ void SetPolyPoly2D(const basegfx::B2DPolyPolygon& rNew);
+ const basegfx::B2DPolyPolygon& GetPolyPoly2D() { return maPolyPoly2D; }
+
+ // Aufbrechen
+ virtual BOOL IsBreakObjPossible();
+ virtual SdrAttrObj* GetBreakObj();
+};
+
+#endif // _E3D_LATHE3D_HXX
+
diff --git a/svx/inc/svx/msdffdef.hxx b/svx/inc/svx/msdffdef.hxx
new file mode 100644
index 000000000000..6869a97e424a
--- /dev/null
+++ b/svx/inc/svx/msdffdef.hxx
@@ -0,0 +1,1223 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _MSDFFDEF_HXX
+#define _MSDFFDEF_HXX
+
+
+#include <tools/solar.h>
+#include <tools/stream.hxx>
+#ifndef _TABLE_HXX
+#include <tools/table.hxx>
+#endif
+#include <tools/string.hxx>
+#include <tools/gen.hxx>
+#include "svx/svxdllapi.h"
+
+#define DFF_COMMON_RECORD_HEADER_SIZE 8
+
+#define DFF_PSFLAG_CONTAINER 0x0F // If the version field of a record
+ // header takes on this value, the
+ // record header marks the start of
+ // a container.
+
+#define DFF_PST_Unknown 0
+#define DFF_PST_SubContainerCompleted 1
+#define DFF_PST_IRRAtom 2
+#define DFF_PST_PSS 3
+#define DFF_PST_SubContainerException 4
+#define DFF_PST_ClientSignal1 6
+#define DFF_PST_ClientSignal2 7
+#define DFF_PST_PowerPointStateInfoAtom 10
+#define DFF_PST_Document 1000
+#define DFF_PST_DocumentAtom 1001
+#define DFF_PST_EndDocument 1002
+#define DFF_PST_SlidePersist 1003
+#define DFF_PST_SlideBase 1004
+#define DFF_PST_SlideBaseAtom 1005
+#define DFF_PST_Slide 1006
+#define DFF_PST_SlideAtom 1007
+#define DFF_PST_Notes 1008
+#define DFF_PST_NotesAtom 1009
+#define DFF_PST_Environment 1010
+#define DFF_PST_SlidePersistAtom 1011
+#define DFF_PST_Scheme 1012
+#define DFF_PST_SchemeAtom 1013
+#define DFF_PST_DocViewInfo 1014
+#define DFF_PST_SslideLayoutAtom 1015
+#define DFF_PST_MainMaster 1016
+#define DFF_PST_SSSlideInfoAtom 1017
+#define DFF_PST_SlideViewInfo 1018
+#define DFF_PST_GuideAtom 1019
+#define DFF_PST_ViewInfo 1020
+#define DFF_PST_ViewInfoAtom 1021
+#define DFF_PST_SlideViewInfoAtom 1022
+#define DFF_PST_VBAInfo 1023
+#define DFF_PST_VBAInfoAtom 1024
+#define DFF_PST_SSDocInfoAtom 1025
+#define DFF_PST_Summary 1026
+#define DFF_PST_Texture 1027
+#define DFF_PST_VBASlideInfo 1028
+#define DFF_PST_VBASlideInfoAtom 1029
+#define DFF_PST_DocRoutingSlip 1030
+#define DFF_PST_OutlineViewInfo 1031
+#define DFF_PST_SorterViewInfo 1032
+#define DFF_PST_ExObjList 1033
+#define DFF_PST_ExObjListAtom 1034
+#define DFF_PST_PPDrawingGroup 1035
+#define DFF_PST_PPDrawing 1036
+#define DFF_PST_NamedShows 1040
+#define DFF_PST_NamedShow 1041
+#define DFF_PST_NamedShowSlides 1042
+#define DFF_PST_List 2000
+#define DFF_PST_FontCollection 2005
+#define DFF_PST_ListPlaceholder 2017
+#define DFF_PST_BookmarkCollection 2019
+#define DFF_PST_SoundCollection 2020
+#define DFF_PST_SoundCollAtom 2021
+#define DFF_PST_Sound 2022
+#define DFF_PST_SoundData 2023
+#define DFF_PST_BookmarkSeedAtom 2025
+#define DFF_PST_GuideList 2026
+#define DFF_PST_RunArray 2028
+#define DFF_PST_RunArrayAtom 2029
+#define DFF_PST_ArrayElementAtom 2030
+#define DFF_PST_Int4ArrayAtom 2031
+#define DFF_PST_ColorSchemeAtom 2032
+#define DFF_PST_OEShape 3008
+#define DFF_PST_ExObjRefAtom 3009
+#define DFF_PST_OEPlaceholderAtom 3011
+#define DFF_PST_GrColor 3020
+#define DFF_PST_GrectAtom 3025
+#define DFF_PST_GratioAtom 3031
+#define DFF_PST_Gscaling 3032
+#define DFF_PST_GpointAtom 3034
+#define DFF_PST_OEShapeAtom 3035
+#define DFF_PST_OutlineTextRefAtom 3998
+#define DFF_PST_TextHeaderAtom 3999
+#define DFF_PST_TextCharsAtom 4000
+#define DFF_PST_StyleTextPropAtom 4001
+#define DFF_PST_BaseTextPropAtom 4002
+#define DFF_PST_TxMasterStyleAtom 4003
+#define DFF_PST_TxCFStyleAtom 4004
+#define DFF_PST_TxPFStyleAtom 4005
+#define DFF_PST_TextRulerAtom 4006
+#define DFF_PST_TextBookmarkAtom 4007
+#define DFF_PST_TextBytesAtom 4008
+#define DFF_PST_TxSIStyleAtom 4009
+#define DFF_PST_TextSpecInfoAtom 4010
+#define DFF_PST_DefaultRulerAtom 4011
+#define DFF_PST_FontEntityAtom 4023
+#define DFF_PST_FontEmbedData 4024
+#define DFF_PST_TypeFace 4025
+#define DFF_PST_CString 4026
+#define DFF_PST_ExternalObject 4027
+#define DFF_PST_MetaFile 4033
+#define DFF_PST_ExOleObj 4034
+#define DFF_PST_ExOleObjAtom 4035
+#define DFF_PST_ExPlainLinkAtom 4036
+#define DFF_PST_CorePict 4037
+#define DFF_PST_CorePictAtom 4038
+#define DFF_PST_ExPlainAtom 4039
+#define DFF_PST_SrKinsoku 4040
+#define DFF_PST_Handout 4041
+#define DFF_PST_ExEmbed 4044
+#define DFF_PST_ExEmbedAtom 4045
+#define DFF_PST_ExLink 4046
+#define DFF_PST_ExLinkAtom_old 4047
+#define DFF_PST_BookmarkEntityAtom 4048
+#define DFF_PST_ExLinkAtom 4049
+#define DFF_PST_SrKinsokuAtom 4050
+#define DFF_PST_ExHyperlinkAtom 4051
+#define DFF_PST_ExPlain 4053
+#define DFF_PST_ExPlainLink 4054
+#define DFF_PST_ExHyperlink 4055
+#define DFF_PST_SlideNumberMCAtom 4056
+#define DFF_PST_HeadersFooters 4057
+#define DFF_PST_HeadersFootersAtom 4058
+#define DFF_PST_RecolorEntryAtom 4062
+#define DFF_PST_TxInteractiveInfoAtom 4063
+#define DFF_PST_EmFormatAtom 4065
+#define DFF_PST_CharFormatAtom 4066
+#define DFF_PST_ParaFormatAtom 4067
+#define DFF_PST_MasterText 4068
+#define DFF_PST_RecolorInfoAtom 4071
+#define DFF_PST_ExQuickTime 4073
+#define DFF_PST_ExQuickTimeMovie 4074
+#define DFF_PST_ExQuickTimeMovieData 4075
+#define DFF_PST_ExSubscription 4076
+#define DFF_PST_ExSubscriptionSection 4077
+#define DFF_PST_ExControl 4078
+#define DFF_PST_ExControlAtom 4091
+#define DFF_PST_SlideListWithText 4080
+#define DFF_PST_AnimationInfoAtom 4081
+#define DFF_PST_InteractiveInfo 4082
+#define DFF_PST_InteractiveInfoAtom 4083
+#define DFF_PST_SlideList 4084
+#define DFF_PST_UserEditAtom 4085
+#define DFF_PST_CurrentUserAtom 4086
+#define DFF_PST_DateTimeMCAtom 4087
+#define DFF_PST_GenericDateMCAtom 4088
+#define DFF_PST_HeaderMCAtom 4089
+#define DFF_PST_FooterMCAtom 4090
+#define DFF_PST_ExMediaAtom 4100
+#define DFF_PST_ExVideo 4101
+#define DFF_PST_ExAviMovie 4102
+#define DFF_PST_ExMCIMovie 4103
+#define DFF_PST_ExMIDIAudio 4109
+#define DFF_PST_ExCDAudio 4110
+#define DFF_PST_ExWAVAudioEmbedded 4111
+#define DFF_PST_ExWAVAudioLink 4112
+#define DFF_PST_ExOleObjStg 4113
+#define DFF_PST_ExCDAudioAtom 4114
+#define DFF_PST_ExWAVAudioEmbeddedAtom 4115
+#define DFF_PST_AnimationInfo 4116
+#define DFF_PST_RTFDateTimeMCAtom 4117
+#define DFF_PST_ProgTags 5000
+#define DFF_PST_ProgStringTag 5001
+#define DFF_PST_ProgBinaryTag 5002
+#define DFF_PST_BinaryTagData 5003
+#define DFF_PST_PrintOptions 6000
+#define DFF_PST_PersistPtrFullBlock 6001
+#define DFF_PST_PersistPtrIncrementalBlock 6002
+#define DFF_PST_RulerIndentAtom 10000
+#define DFF_PST_GscalingAtom 10001
+#define DFF_PST_GrColorAtom 10002
+#define DFF_PST_GLPointAtom 10003
+#define DFF_PST_GlineAtom 10004
+
+// Record Name FBT-Value Instance Contents Wrd Exl Ppt Ver
+
+#define DFF_msofbtDggContainer 0xF000 // per-document data X X X
+#define DFF_msofbtDgg 0xF006 // an FDGG and several FIDCLs X X X 0
+#define DFF_msofbtCLSID 0xF016 // the CLSID of the application that put the data on the clipboard C C C 0
+#define DFF_msofbtOPT 0xF00B // count of properties the document-wide default shape properties X X X 3
+#define DFF_msofbtColorMRU 0xF11A // count of colors the colors in the MRU swatch X X X 0
+#define DFF_msofbtSplitMenuColors 0xF11E // count of colors the colors in the top-level split menus X X X 0
+#define DFF_msofbtBstoreContainer 0xF001 // count of BLIPs all images in the document (JPEGs, metafiles, etc.) X X X
+#define DFF_msofbtBSE 0xF007 // BLIP type an FBSE (one per BLIP) X X X 2
+#define DFF_msofbtBlipFirst 0xF018 // range of fbts reserved for various kinds of BLIPs X X X
+#define DFF_msofbtBlipLast 0xF117 // range of fbts reserved for various kinds of BLIPs X X X
+
+#define DFF_msofbtDgContainer 0xF002 // per-sheet/page/slide data X X X
+#define DFF_msofbtDg 0xF008 // drawing ID an FDG X X X 0
+#define DFF_msofbtRegroupItems 0xF118 // count of regroup entries several FRITs X X X 0
+#define DFF_msofbtColorScheme 0xF120 // count of colors the colors of the source host's color scheme C C 0
+#define DFF_msofbtSpgrContainer 0xF003 // several SpContainers, the first of which is the group shape itself X X X
+#define DFF_msofbtSpContainer 0xF004 // a shape X X X
+#define DFF_msofbtSpgr 0xF009 // an FSPGR; only present if the shape is a group shape X X X 1
+#define DFF_msofbtSp 0xF00A // shape type an FSP X X X 2
+#define DFF_msofbtTextbox 0xF00C // RTF text C C C 0
+#define DFF_msofbtClientTextbox 0xF00D // host-defined the text in the textbox, in host-defined format X X X
+#define DFF_msofbtAnchor 0xF00E // a RECT, in 100000ths of an inch C C C 0
+#define DFF_msofbtChildAnchor 0xF00F // a RECT, in units relative to the parent group X X X 0
+#define DFF_msofbtClientAnchor 0xF010 // host-defined the location of the shape, in a host-defined format X X X
+#define DFF_msofbtClientData 0xF011 // host-defined host-specific data X X X
+#define DFF_msofbtOleObject 0xF11F // a serialized IStorage for an OLE object C C C 0
+#define DFF_msofbtDeletedPspl 0xF11D // an FPSPL; only present in top-level deleted shapes X 0
+#define DFF_msofbtUDefProp 0xF122 // range of fbts reserved for various kinds of BLIPs X X X
+#define DFF_msofbtSolverContainer 0xF005 // count of rules the rules governing shapes X X X
+#define DFF_msofbtConnectorRule 0xF012 // an FConnectorRule X X 1
+#define DFF_msofbtAlignRule 0xF013 // an FAlignRule X X X 0
+#define DFF_msofbtArcRule 0xF014 // an FARCRU X X X 0
+#define DFF_msofbtClientRule 0xF015 // host-defined host-defined
+#define DFF_msofbtCalloutRule 0xF017 // an FCORU X X X 0
+
+#define DFF_msofbtSelection 0xF119 // an FDGSL followed by the SPIDs of the shapes in the selection X 0
+
+// Werte fuer den ULONG im DFF_PST_TextHeaderAtom
+enum DFF_TextHeader {
+ DFFTH_TITLE,
+ DFFTH_BODY,
+ DFFTH_NOTES,
+ DFFTH_NOTUSED,
+ DFFTH_OTHER, // Text in a Shape
+ DFFTH_CENTERBODY, // Subtitle in Title-Slide
+ DFFTH_CENTERTITLE, // Title in Title-Slide
+ DFFTH_HALFBODY, // Body in two-column slide
+ DFFTH_QUARTERBODY // Body in four-body slide
+};
+
+
+// Shape Properties
+// 1pt = 12700 EMU (English Metric Units)
+// 1pt = 20 Twip = 20/1440" = 1/72"
+// 1twip=635 EMU
+// 1" = 12700*72 = 914400 EMU
+// 1" = 25.4mm
+// 1mm = 36000 EMU
+// Transform
+#define DFF_Prop_Rotation 4 // Fixed Point 16.16 degrees
+// Protection
+#define DFF_Prop_LockRotation 119 // BOOL No rotation
+#define DFF_Prop_LockAspectRatio 120 // BOOL Don't allow changes in aspect ratio
+#define DFF_Prop_LockPosition 121 // BOOL Don't allow the shape to be moved
+#define DFF_Prop_LockAgainstSelect 122 // BOOL Shape may not be selected
+#define DFF_Prop_LockCropping 123 // BOOL No cropping this shape
+#define DFF_Prop_LockVertices 124 // BOOL Edit Points not allowed
+#define DFF_Prop_LockText 125 // BOOL Do not edit text
+#define DFF_Prop_LockAdjustHandles 126 // BOOL Do not adjust
+#define DFF_Prop_LockAgainstGrouping 127 // BOOL Do not group this shape
+// Text
+#define DFF_Prop_lTxid 128 // LONG id for the text, value determined by the host
+#define DFF_Prop_dxTextLeft 129 // LONG margins relative to shape's inscribed text rectangle (in EMUs)
+#define DFF_Prop_dyTextTop 130 // LONG
+#define DFF_Prop_dxTextRight 131 // LONG
+#define DFF_Prop_dyTextBottom 132 // LONG
+#define DFF_Prop_WrapText 133 // MSO_WRAPMODE Wrap text at shape margins
+#define DFF_Prop_scaleText 134 // LONG Text zoom/scale (used if fFitTextToShape)
+#define DFF_Prop_anchorText 135 // MSO_ANCHOR How to anchor the text
+#define DFF_Prop_txflTextFlow 136 // MSO_TXFL Text flow
+#define DFF_Prop_cdirFont 137 // MSO_CDIR Font rotation
+#define DFF_Prop_hspNext 138 // MSO_HSP ID of the next shape (used by Word for linked textboxes)
+#define DFF_Prop_txdir 139 // MSO_TXDIR Bi-Di Text direction
+#define DFF_Prop_SelectText 187 // BOOL TRUE if single click selects text, FALSE if two clicks
+#define DFF_Prop_AutoTextMargin 188 // BOOL use host's margin calculations
+#define DFF_Prop_RotateText 189 // BOOL Rotate text with shape
+#define DFF_Prop_FitShapeToText 190 // BOOL Size shape to fit text size
+#define DFF_Prop_FitTextToShape 191 // BOOL Size text to fit shape size
+// GeoText
+#define DFF_Prop_gtextUNICODE 192 // WCHAR* UNICODE text string
+#define DFF_Prop_gtextRTF 193 // char* RTF text string
+#define DFF_Prop_gtextAlign 194 // MSO_GEOTEXTALIGN alignment on curve
+#define DFF_Prop_gtextSize 195 // LONG default point size
+#define DFF_Prop_gtextSpacing 196 // LONG fixed point 16.16
+#define DFF_Prop_gtextFont 197 // WCHAR* font family name
+#define DFF_Prop_gtextFReverseRows 240 // BOOL 8000 Reverse row order
+#define DFF_Prop_fGtext 241 // BOOL 4000 Has text effect
+#define DFF_Prop_gtextFVertical 242 // BOOL 2000 Rotate characters
+#define DFF_Prop_gtextFKern 243 // BOOL 1000 Kern characters
+#define DFF_Prop_gtextFTight 244 // BOOL 800 Tightening or tracking
+#define DFF_Prop_gtextFStretch 245 // BOOL 400 Stretch to fit shape
+#define DFF_Prop_gtextFShrinkFit 246 // BOOL 200 Char bounding box
+#define DFF_Prop_gtextFBestFit 247 // BOOL 100 Scale text-on-path
+#define DFF_Prop_gtextFNormalize 248 // BOOL 80 Stretch char height
+#define DFF_Prop_gtextFDxMeasure 249 // BOOL 40 Do not measure along path
+#define DFF_Prop_gtextFBold 250 // BOOL 20 Bold font
+#define DFF_Prop_gtextFItalic 251 // BOOL 10 Italic font
+#define DFF_Prop_gtextFUnderline 252 // BOOL 8 Underline font
+#define DFF_Prop_gtextFShadow 253 // BOOL 4 Shadow font
+#define DFF_Prop_gtextFSmallcaps 254 // BOOL 2 Small caps font
+#define DFF_Prop_gtextFStrikethrough 255 // BOOL 1 Strike through font
+// Blip
+#define DFF_Prop_cropFromTop 256 // LONG 16.16 fraction times total image width or height, as appropriate.
+#define DFF_Prop_cropFromBottom 257 // LONG
+#define DFF_Prop_cropFromLeft 258 // LONG
+#define DFF_Prop_cropFromRight 259 // LONG
+#define DFF_Prop_pib 260 // IMsoBlip* Blip to display
+#define DFF_Prop_pibName 261 // WCHAR* Blip file name
+#define DFF_Prop_pibFlags 262 // MSO_BLIPFLAGS Blip flags
+#define DFF_Prop_pictureTransparent 263 // LONG transparent color (none if ~0UL)
+#define DFF_Prop_pictureContrast 264 // LONG contrast setting
+#define DFF_Prop_pictureBrightness 265 // LONG brightness setting
+#define DFF_Prop_pictureGamma 266 // LONG 16.16 gamma
+#define DFF_Prop_pictureId 267 // LONG Host-defined ID for OLE objects (usually a pointer)
+#define DFF_Prop_pictureDblCrMod 268 // MSO_CLR Modification used if shape has double shadow
+#define DFF_Prop_pictureFillCrMod 269 // MSO_CLR
+#define DFF_Prop_pictureLineCrMod 270 // MSO_CLR
+#define DFF_Prop_pibPrint 271 // IMsoBlip* Blip to display when printing
+#define DFF_Prop_pibPrintName 272 // WCHAR* Blip file name
+#define DFF_Prop_pibPrintFlags 273 // MSO_BLIPFLAGS Blip flags
+#define DFF_Prop_fNoHitTestPicture 316 // BOOL Do not hit test the picture
+#define DFF_Prop_pictureGray 317 // BOOL grayscale display
+#define DFF_Prop_pictureBiLevel 318 // BOOL bi-level display
+#define DFF_Prop_pictureActive 319 // BOOL Server is active (OLE objects only)
+// Geometry
+#define DFF_Prop_geoLeft 320 // LONG Defines the G (geometry) coordinate space.
+#define DFF_Prop_geoTop 321 // LONG
+#define DFF_Prop_geoRight 322 // LONG
+#define DFF_Prop_geoBottom 323 // LONG
+#define DFF_Prop_shapePath 324 // MSO_SHAPEPATH
+#define DFF_Prop_pVertices 325 // IMsoArray An array of points, in G units.
+#define DFF_Prop_pSegmentInfo 326 // IMsoArray
+#define DFF_Prop_adjustValue 327 // LONG Adjustment values corresponding to the positions of the
+#define DFF_Prop_adjust2Value 328 // LONG adjust handles of the shape. The number of values used
+#define DFF_Prop_adjust3Value 329 // LONG and their allowable ranges vary from shape type to shape type.
+#define DFF_Prop_adjust4Value 330 // LONG
+#define DFF_Prop_adjust5Value 331 // LONG
+#define DFF_Prop_adjust6Value 332 // LONG
+#define DFF_Prop_adjust7Value 333 // LONG
+#define DFF_Prop_adjust8Value 334 // LONG
+#define DFF_Prop_adjust9Value 335 // LONG
+#define DFF_Prop_adjust10Value 336 // LONG
+#define DFF_Prop_connectorPoints 337 // IMsoArray
+#define DFF_Prop_stretchPointX 339 // LONG
+#define DFF_Prop_stretchPointY 340 // LONG
+#define DFF_Prop_Handles 341 // H*
+#define DFF_Prop_pFormulas 342 // LONG
+#define DFF_Prop_textRectangles 343 // LONG
+#define DFF_Prop_connectorType 344 // LONG ->0=none, 1=segments, 2=custom, 3=rect
+#define DFF_Prop_fShadowOK 378 // BOOL Shadow may be set
+#define DFF_Prop_f3DOK 379 // BOOL 3D may be set
+#define DFF_Prop_fLineOK 380 // BOOL Line style may be set
+#define DFF_Prop_fGtextOK 381 // BOOL Text effect (FontWork) supported
+#define DFF_Prop_fFillShadeShapeOK 382 // BOOL
+#define DFF_Prop_fFillOK 383 // BOOL OK to fill the shape through the UI or VBA?
+// FillStyle
+#define DFF_Prop_fillType 384 // MSO_FILLTYPE Type of fill
+#define DFF_Prop_fillColor 385 // MSO_CLR Foreground color
+#define DFF_Prop_fillOpacity 386 // LONG Fixed 16.16
+#define DFF_Prop_fillBackColor 387 // MSO_CLR Background color
+#define DFF_Prop_fillBackOpacity 388 // LONG Shades only
+#define DFF_Prop_fillCrMod 389 // MSO_CLR Modification for BW views
+#define DFF_Prop_fillBlip 390 // IMsoBlip* Pattern/texture
+#define DFF_Prop_fillBlipName 391 // WCHAR* Blip file name
+#define DFF_Prop_fillBlipFlags 392 // MSO_BLIPFLAGS Blip flags
+#define DFF_Prop_fillWidth 393 // LONG How big (A units) to make a metafile texture.
+#define DFF_Prop_fillHeight 394 // LONG
+#define DFF_Prop_fillAngle 395 // LONG Fade angle - degrees in 16.16
+#define DFF_Prop_fillFocus 396 // LONG Linear shaded fill focus percent
+#define DFF_Prop_fillToLeft 397 // LONG Fraction 16.16
+#define DFF_Prop_fillToTop 398 // LONG Fraction 16.16
+#define DFF_Prop_fillToRight 399 // LONG Fraction 16.16
+#define DFF_Prop_fillToBottom 400 // LONG Fraction 16.16
+#define DFF_Prop_fillRectLeft 401 // LONG For shaded fills, use the specified rectangle instead of the shape's bounding rect to define how large the fade is going to be.
+#define DFF_Prop_fillRectTop 402 // LONG
+#define DFF_Prop_fillRectRight 403 // LONG
+#define DFF_Prop_fillRectBottom 404 // LONG
+#define DFF_Prop_fillDztype 405 // MSO_DZTYPE
+#define DFF_Prop_fillShadePreset 406 // LONG Special shades
+#define DFF_Prop_fillShadeColors 407 // IMsoArray a preset array of colors
+#define DFF_Prop_fillOriginX 408 // LONG
+#define DFF_Prop_fillOriginY 409 // LONG
+#define DFF_Prop_fillShapeOriginX 410 // LONG
+#define DFF_Prop_fillShapeOriginY 411 // LONG
+#define DFF_Prop_fillShadeType 412 // MSO_SHADETYPE Type of shading, if a shaded (gradient) fill.
+#define DFF_Prop_fFilled 443 // BOOL Is shape filled?
+#define DFF_Prop_fHitTestFill 444 // BOOL Should we hit test fill?
+#define DFF_Prop_fillShape 445 // BOOL Register pattern on shape
+#define DFF_Prop_fillUseRect 446 // BOOL Use the large rect?
+#define DFF_Prop_fNoFillHitTest 447 // BOOL Hit test a shape as though filled
+// LineStyle
+#define DFF_Prop_lineColor 448 // MSO_CLR Color of line
+#define DFF_Prop_lineOpacity 449 // LONG Not implemented
+#define DFF_Prop_lineBackColor 450 // MSO_CLR Background color
+#define DFF_Prop_lineCrMod 451 // MSO_CLR Modification for BW views
+#define DFF_Prop_lineType 452 // MSO_LINETYPE Type of line
+#define DFF_Prop_lineFillBlip 453 // IMsoBlip* Pattern/texture
+#define DFF_Prop_lineFillBlipName 454 // WCHAR* Blip file name
+#define DFF_Prop_lineFillBlipFlags 455 // MSO_BLIPFLAGS Blip flags
+#define DFF_Prop_lineFillWidth 456 // LONG How big (A units) to make a metafile texture.
+#define DFF_Prop_lineFillHeight 457 // LONG
+#define DFF_Prop_lineFillDztype 458 // MSO_DZTYPE How to interpret fillWidth/Height numbers.
+#define DFF_Prop_lineWidth 459 // LONG A units; 1pt == 12700 EMUs
+#define DFF_Prop_lineMiterLimit 460 // LONG ratio (16.16) of width
+#define DFF_Prop_lineStyle 461 // MSO_LINESTYLE Draw parallel lines?
+#define DFF_Prop_lineDashing 462 // MSO_LINEDASHING Can be overridden by:
+#define DFF_Prop_lineDashStyle 463 // IMsoArray As Win32 ExtCreatePen
+#define DFF_Prop_lineStartArrowhead 464 // MSO_LINEEND Arrow at start
+#define DFF_Prop_lineEndArrowhead 465 // MSO_LINEEND Arrow at end
+#define DFF_Prop_lineStartArrowWidth 466 // MSO_LINEENDWIDTH Arrow at start
+#define DFF_Prop_lineStartArrowLength 467 // MSO_LINEENDLENGTH Arrow at end
+#define DFF_Prop_lineEndArrowWidth 468 // MSO_LINEENDWIDTH Arrow at start
+#define DFF_Prop_lineEndArrowLength 469 // MSO_LINEENDLENGTH Arrow at end
+#define DFF_Prop_lineJoinStyle 470 // MSO_LINEJOIN How to join lines
+#define DFF_Prop_lineEndCapStyle 471 // MSO_LINECAP How to end lines
+#define DFF_Prop_fArrowheadsOK 507 // BOOL Allow arrowheads if prop. is set
+#define DFF_Prop_fLine 508 // BOOL Any line?
+#define DFF_Prop_fHitTestLine 509 // BOOL Should we hit test lines?
+#define DFF_Prop_lineFillShape 510 // BOOL Register pattern on shape
+#define DFF_Prop_fNoLineDrawDash 511 // BOOL Draw a dashed line if no line
+// ShadowStyle
+#define DFF_Prop_shadowType 512 // MSO_SHADOWTYPE Type of effect
+#define DFF_Prop_shadowColor 513 // MSO_CLR Foreground color
+#define DFF_Prop_shadowHighlight 514 // MSO_CLR Embossed color
+#define DFF_Prop_shadowCrMod 515 // MSO_CLR Modification for BW views
+#define DFF_Prop_shadowOpacity 516 // LONG Fixed 16.16
+#define DFF_Prop_shadowOffsetX 517 // LONG Offset shadow
+#define DFF_Prop_shadowOffsetY 518 // LONG Offset shadow
+#define DFF_Prop_shadowSecondOffsetX 519 // LONG Double offset shadow
+#define DFF_Prop_shadowSecondOffsetY 520 // LONG Double offset shadow
+#define DFF_Prop_shadowScaleXToX 521 // LONG 16.16
+#define DFF_Prop_shadowScaleYToX 522 // LONG 16.16
+#define DFF_Prop_shadowScaleXToY 523 // LONG 16.16
+#define DFF_Prop_shadowScaleYToY 524 // LONG 16.16
+#define DFF_Prop_shadowPerspectiveX 525 // LONG 16.16 / weight
+#define DFF_Prop_shadowPerspectiveY 526 // LONG 16.16 / weight
+#define DFF_Prop_shadowWeight 527 // LONG scaling factor
+#define DFF_Prop_shadowOriginX 528 // LONG
+#define DFF_Prop_shadowOriginY 529 // LONG
+#define DFF_Prop_fShadow 574 // BOOL Any shadow?
+#define DFF_Prop_fshadowObscured 575 // BOOL Excel5-style shadow
+// PerspectiveStyle
+#define DFF_Prop_perspectiveType 576 // MSO_XFORMTYPE Where transform applies
+#define DFF_Prop_perspectiveOffsetX 577 // LONG The LONG values define a transformation matrix, effectively, each value is scaled by the perspectiveWeight parameter.
+#define DFF_Prop_perspectiveOffsetY 578 // LONG
+#define DFF_Prop_perspectiveScaleXToX 579 // LONG
+#define DFF_Prop_perspectiveScaleYToX 580 // LONG
+#define DFF_Prop_perspectiveScaleXToY 581 // LONG
+#define DFF_Prop_perspectiveScaleYToY 582 // LONG
+#define DFF_Prop_perspectivePerspectiveX 583 // LONG
+#define DFF_Prop_perspectivePerspectiveY 584 // LONG
+#define DFF_Prop_perspectiveWeight 585 // LONG Scaling factor
+#define DFF_Prop_perspectiveOriginX 586 // LONG
+#define DFF_Prop_perspectiveOriginY 587 // LONG
+#define DFF_Prop_fPerspective 639 // BOOL On/off
+// 3D Object
+#define DFF_Prop_c3DSpecularAmt 640 // LONG Fixed-point 16.16
+#define DFF_Prop_c3DDiffuseAmt 641 // LONG Fixed-point 16.16
+#define DFF_Prop_c3DShininess 642 // LONG Default gives OK results
+#define DFF_Prop_c3DEdgeThickness 643 // LONG Specular edge thickness
+#define DFF_Prop_c3DExtrudeForward 644 // LONG Distance of extrusion in EMUs
+#define DFF_Prop_c3DExtrudeBackward 645 // LONG
+#define DFF_Prop_c3DExtrudePlane 646 // LONG Extrusion direction
+#define DFF_Prop_c3DExtrusionColor 647 // MSO_CLR Basic color of extruded part of shape; the lighting model used will determine the exact shades used when rendering.
+#define DFF_Prop_c3DCrMod 648 // MSO_CLR Modification for BW views
+#define DFF_Prop_f3D 700 // BOOL Does this shape have a 3D effect?
+#define DFF_Prop_fc3DMetallic 701 // BOOL Use metallic specularity?
+#define DFF_Prop_fc3DUseExtrusionColor 702 // BOOL
+#define DFF_Prop_fc3DLightFace 703 // BOOL
+// 3D Style
+#define DFF_Prop_c3DYRotationAngle 704 // LONG degrees (16.16) about y axis
+#define DFF_Prop_c3DXRotationAngle 705 // LONG degrees (16.16) about x axis
+#define DFF_Prop_c3DRotationAxisX 706 // LONG These specify the rotation axis; only their relative magnitudes matter.
+#define DFF_Prop_c3DRotationAxisY 707 // LONG
+#define DFF_Prop_c3DRotationAxisZ 708 // LONG
+#define DFF_Prop_c3DRotationAngle 709 // LONG degrees (16.16) about axis
+#define DFF_Prop_c3DRotationCenterX 710 // LONG rotation center x (16.16 or g-units)
+#define DFF_Prop_c3DRotationCenterY 711 // LONG rotation center y (16.16 or g-units)
+#define DFF_Prop_c3DRotationCenterZ 712 // LONG rotation center z (absolute (emus))
+#define DFF_Prop_c3DRenderMode 713 // MSO_3DRENDERMODE Full,wireframe, or bcube
+#define DFF_Prop_c3DTolerance 714 // LONG pixels (16.16)
+#define DFF_Prop_c3DXViewpoint 715 // LONG X view point (emus)
+#define DFF_Prop_c3DYViewpoint 716 // LONG Y view point (emus)
+#define DFF_Prop_c3DZViewpoint 717 // LONG Z view distance (emus)
+#define DFF_Prop_c3DOriginX 718 // LONG
+#define DFF_Prop_c3DOriginY 719 // LONG
+#define DFF_Prop_c3DSkewAngle 720 // LONG degree (16.16) skew angle
+#define DFF_Prop_c3DSkewAmount 721 // LONG Percentage skew amount
+#define DFF_Prop_c3DAmbientIntensity 722 // LONG Fixed point intensity
+#define DFF_Prop_c3DKeyX 723 // LONG Key light source direc-
+#define DFF_Prop_c3DKeyY 724 // LONG tion; only their relative
+#define DFF_Prop_c3DKeyZ 725 // LONG magnitudes matter
+#define DFF_Prop_c3DKeyIntensity 726 // LONG Fixed point intensity
+#define DFF_Prop_c3DFillX 727 // LONG Fill light source direc-
+#define DFF_Prop_c3DFillY 728 // LONG tion; only their relative
+#define DFF_Prop_c3DFillZ 729 // LONG magnitudes matter
+#define DFF_Prop_c3DFillIntensity 730 // LONG Fixed point intensity
+#define DFF_Prop_fc3DConstrainRotation 763 // BOOL
+#define DFF_Prop_fc3DRotationCenterAuto 764 // BOOL
+#define DFF_Prop_fc3DParallel 765 // BOOL Parallel projection?
+#define DFF_Prop_fc3DKeyHarsh 766 // BOOL Is key lighting harsh?
+#define DFF_Prop_fc3DFillHarsh 767 // BOOL Is fill lighting harsh?
+// Shape
+#define DFF_Prop_hspMaster 769 // MSO_HSP master shape
+#define DFF_Prop_cxstyle 771 // MSO_CXSTYLE Type of connector
+#define DFF_Prop_bWMode 772 // MSO_BWMODE Settings for modifications to be made when in different forms of black-and-white mode.
+#define DFF_Prop_bWModePureBW 773 // MSO_BWMODE
+#define DFF_Prop_bWModeBW 774 // MSO_BWMODE
+#define DFF_Prop_fOleIcon 826 // BOOL For OLE objects, whether the object is in icon form
+#define DFF_Prop_fPreferRelativeResize 827 // BOOL For UI only. Prefer relative resizing.
+#define DFF_Prop_fLockShapeType 828 // BOOL Lock the shape type (don't allow Change Shape)
+#define DFF_Prop_fDeleteAttachedObject 830 // BOOL
+#define DFF_Prop_fBackground 831 // BOOL If TRUE, this is the background shape.
+
+// Callout
+#define DFF_Prop_spcot 832 // MSO_SPCOT Callout type
+#define DFF_Prop_dxyCalloutGap 833 // LONG Distance from box to first point.(EMUs)
+#define DFF_Prop_spcoa 834 // MSO_SPCOA Callout angle
+#define DFF_Prop_spcod 835 // MSO_SPCOD Callout drop type
+#define DFF_Prop_dxyCalloutDropSpecified 836 // LONG if mso_spcodSpecified, the actual drop distance
+#define DFF_Prop_dxyCalloutLengthSpecified 837 // LONG if fCalloutLengthSpecified, the actual distance
+#define DFF_Prop_fCallout 889 // BOOL Is the shape a callout?
+#define DFF_Prop_fCalloutAccentBar 890 // BOOL does callout have accent bar
+#define DFF_Prop_fCalloutTextBorder 891 // BOOL does callout have a text border
+#define DFF_Prop_fCalloutMinusX 892 // BOOL
+#define DFF_Prop_fCalloutMinusY 893 // BOOL
+#define DFF_Prop_fCalloutDropAuto 894 // BOOL If true, then we occasionally invert the drop distance
+#define DFF_Prop_fCalloutLengthSpecified 895 // BOOL if true, we look at dxyCalloutLengthSpecified
+
+// GroupShape
+#define DFF_Prop_wzName 896 // WCHAR* Shape Name (present only if explicitly set)
+#define DFF_Prop_wzDescription 897 // WCHAR* alternate text
+#define DFF_Prop_pihlShape 898 // IHlink* The hyperlink in the shape.
+#define DFF_Prop_pWrapPolygonVertices 899 // IMsoArray The polygon that text will be wrapped around (Word)
+#define DFF_Prop_dxWrapDistLeft 900 // LONG Left wrapping distance from text (Word)
+#define DFF_Prop_dyWrapDistTop 901 // LONG Top wrapping distance from text (Word)
+#define DFF_Prop_dxWrapDistRight 902 // LONG Right wrapping distance from text (Word)
+#define DFF_Prop_dyWrapDistBottom 903 // LONG Bottom wrapping distance from text (Word)
+#define DFF_Prop_lidRegroup 904 // LONG Regroup ID
+#define DFF_Prop_tableProperties 927 // LONG
+#define DFF_Prop_tableRowProperties 928 // LONG*
+#define DFF_Prop_fEditedWrap 953 // BOOL Has the wrap polygon been edited?
+#define DFF_Prop_fBehindDocument 954 // BOOL Word-only (shape is behind text)
+#define DFF_Prop_fOnDblClickNotify 955 // BOOL Notify client on a double click
+#define DFF_Prop_fIsButton 956 // BOOL A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros.
+#define DFF_Prop_fOneD 957 // BOOL 1D adjustment
+#define DFF_Prop_fHidden 958 // BOOL Do not display
+#define DFF_Prop_fPrint 959 // BOOL Print this shape
+// entsprechende BitFlags
+#define DFF_PBit_EditedWrap 0x00000040
+#define DFF_PBit_BehindDocument 0x00000020
+#define DFF_PBit_OnDblClickNotify 0x00000010
+#define DFF_PBit_IsButton 0x00000008
+#define DFF_PBit_OneD 0x00000004
+#define DFF_PBit_Hidden 0x00000002
+#define DFF_PBit_Print 0x00000001
+
+//---------------------------------------------------------------------------
+// Dreh- und Angelpunkt: der Shape-Typ
+//---------------------------------------------------------------------------
+typedef enum
+ {
+ mso_sptMin = 0,
+ mso_sptNotPrimitive = mso_sptMin,
+ mso_sptRectangle = 1,
+ mso_sptRoundRectangle = 2,
+ mso_sptEllipse = 3,
+ mso_sptDiamond = 4,
+ mso_sptIsocelesTriangle = 5,
+ mso_sptRightTriangle = 6,
+ mso_sptParallelogram = 7,
+ mso_sptTrapezoid = 8,
+ mso_sptHexagon = 9,
+ mso_sptOctagon = 10,
+ mso_sptPlus = 11,
+ mso_sptStar = 12,
+ mso_sptArrow = 13,
+ mso_sptThickArrow = 14,
+ mso_sptHomePlate = 15,
+ mso_sptCube = 16,
+ mso_sptBalloon = 17,
+ mso_sptSeal = 18,
+ mso_sptArc = 19,
+ mso_sptLine = 20,
+ mso_sptPlaque = 21,
+ mso_sptCan = 22,
+ mso_sptDonut = 23,
+ mso_sptTextSimple = 24,
+ mso_sptTextOctagon = 25,
+ mso_sptTextHexagon = 26,
+ mso_sptTextCurve = 27,
+ mso_sptTextWave = 28,
+ mso_sptTextRing = 29,
+ mso_sptTextOnCurve = 30,
+ mso_sptTextOnRing = 31,
+ mso_sptStraightConnector1 = 32,
+ mso_sptBentConnector2 = 33,
+ mso_sptBentConnector3 = 34,
+ mso_sptBentConnector4 = 35,
+ mso_sptBentConnector5 = 36,
+ mso_sptCurvedConnector2 = 37,
+ mso_sptCurvedConnector3 = 38,
+ mso_sptCurvedConnector4 = 39,
+ mso_sptCurvedConnector5 = 40,
+ mso_sptCallout1 = 41,
+ mso_sptCallout2 = 42,
+ mso_sptCallout3 = 43,
+ mso_sptAccentCallout1 = 44,
+ mso_sptAccentCallout2 = 45,
+ mso_sptAccentCallout3 = 46,
+ mso_sptBorderCallout1 = 47,
+ mso_sptBorderCallout2 = 48,
+ mso_sptBorderCallout3 = 49,
+ mso_sptAccentBorderCallout1 = 50,
+ mso_sptAccentBorderCallout2 = 51,
+ mso_sptAccentBorderCallout3 = 52,
+ mso_sptRibbon = 53,
+ mso_sptRibbon2 = 54,
+ mso_sptChevron = 55,
+ mso_sptPentagon = 56,
+ mso_sptNoSmoking = 57,
+ mso_sptSeal8 = 58,
+ mso_sptSeal16 = 59,
+ mso_sptSeal32 = 60,
+ mso_sptWedgeRectCallout = 61,
+ mso_sptWedgeRRectCallout = 62,
+ mso_sptWedgeEllipseCallout = 63,
+ mso_sptWave = 64,
+ mso_sptFoldedCorner = 65,
+ mso_sptLeftArrow = 66,
+ mso_sptDownArrow = 67,
+ mso_sptUpArrow = 68,
+ mso_sptLeftRightArrow = 69,
+ mso_sptUpDownArrow = 70,
+ mso_sptIrregularSeal1 = 71,
+ mso_sptIrregularSeal2 = 72,
+ mso_sptLightningBolt = 73,
+ mso_sptHeart = 74,
+ mso_sptPictureFrame = 75,
+ mso_sptQuadArrow = 76,
+ mso_sptLeftArrowCallout = 77,
+ mso_sptRightArrowCallout = 78,
+ mso_sptUpArrowCallout = 79,
+ mso_sptDownArrowCallout = 80,
+ mso_sptLeftRightArrowCallout = 81,
+ mso_sptUpDownArrowCallout = 82,
+ mso_sptQuadArrowCallout = 83,
+ mso_sptBevel = 84,
+ mso_sptLeftBracket = 85,
+ mso_sptRightBracket = 86,
+ mso_sptLeftBrace = 87,
+ mso_sptRightBrace = 88,
+ mso_sptLeftUpArrow = 89,
+ mso_sptBentUpArrow = 90,
+ mso_sptBentArrow = 91,
+ mso_sptSeal24 = 92,
+ mso_sptStripedRightArrow = 93,
+ mso_sptNotchedRightArrow = 94,
+ mso_sptBlockArc = 95,
+ mso_sptSmileyFace = 96,
+ mso_sptVerticalScroll = 97,
+ mso_sptHorizontalScroll = 98,
+ mso_sptCircularArrow = 99,
+ mso_sptNotchedCircularArrow = 100,
+ mso_sptUturnArrow = 101,
+ mso_sptCurvedRightArrow = 102,
+ mso_sptCurvedLeftArrow = 103,
+ mso_sptCurvedUpArrow = 104,
+ mso_sptCurvedDownArrow = 105,
+ mso_sptCloudCallout = 106,
+ mso_sptEllipseRibbon = 107,
+ mso_sptEllipseRibbon2 = 108,
+ mso_sptFlowChartProcess = 109,
+ mso_sptFlowChartDecision = 110,
+ mso_sptFlowChartInputOutput = 111,
+ mso_sptFlowChartPredefinedProcess = 112,
+ mso_sptFlowChartInternalStorage = 113,
+ mso_sptFlowChartDocument = 114,
+ mso_sptFlowChartMultidocument = 115,
+ mso_sptFlowChartTerminator = 116,
+ mso_sptFlowChartPreparation = 117,
+ mso_sptFlowChartManualInput = 118,
+ mso_sptFlowChartManualOperation = 119,
+ mso_sptFlowChartConnector = 120,
+ mso_sptFlowChartPunchedCard = 121,
+ mso_sptFlowChartPunchedTape = 122,
+ mso_sptFlowChartSummingJunction = 123,
+ mso_sptFlowChartOr = 124,
+ mso_sptFlowChartCollate = 125,
+ mso_sptFlowChartSort = 126,
+ mso_sptFlowChartExtract = 127,
+ mso_sptFlowChartMerge = 128,
+ mso_sptFlowChartOfflineStorage = 129,
+ mso_sptFlowChartOnlineStorage = 130,
+ mso_sptFlowChartMagneticTape = 131,
+ mso_sptFlowChartMagneticDisk = 132,
+ mso_sptFlowChartMagneticDrum = 133,
+ mso_sptFlowChartDisplay = 134,
+ mso_sptFlowChartDelay = 135,
+ mso_sptTextPlainText = 136,
+ mso_sptTextStop = 137,
+ mso_sptTextTriangle = 138,
+ mso_sptTextTriangleInverted = 139,
+ mso_sptTextChevron = 140,
+ mso_sptTextChevronInverted = 141,
+ mso_sptTextRingInside = 142,
+ mso_sptTextRingOutside = 143,
+ mso_sptTextArchUpCurve = 144,
+ mso_sptTextArchDownCurve = 145,
+ mso_sptTextCircleCurve = 146,
+ mso_sptTextButtonCurve = 147,
+ mso_sptTextArchUpPour = 148,
+ mso_sptTextArchDownPour = 149,
+ mso_sptTextCirclePour = 150,
+ mso_sptTextButtonPour = 151,
+ mso_sptTextCurveUp = 152,
+ mso_sptTextCurveDown = 153,
+ mso_sptTextCascadeUp = 154,
+ mso_sptTextCascadeDown = 155,
+ mso_sptTextWave1 = 156,
+ mso_sptTextWave2 = 157,
+ mso_sptTextWave3 = 158,
+ mso_sptTextWave4 = 159,
+ mso_sptTextInflate = 160,
+ mso_sptTextDeflate = 161,
+ mso_sptTextInflateBottom = 162,
+ mso_sptTextDeflateBottom = 163,
+ mso_sptTextInflateTop = 164,
+ mso_sptTextDeflateTop = 165,
+ mso_sptTextDeflateInflate = 166,
+ mso_sptTextDeflateInflateDeflate = 167,
+ mso_sptTextFadeRight = 168,
+ mso_sptTextFadeLeft = 169,
+ mso_sptTextFadeUp = 170,
+ mso_sptTextFadeDown = 171,
+ mso_sptTextSlantUp = 172,
+ mso_sptTextSlantDown = 173,
+ mso_sptTextCanUp = 174,
+ mso_sptTextCanDown = 175,
+ mso_sptFlowChartAlternateProcess = 176,
+ mso_sptFlowChartOffpageConnector = 177,
+ mso_sptCallout90 = 178,
+ mso_sptAccentCallout90 = 179,
+ mso_sptBorderCallout90 = 180,
+ mso_sptAccentBorderCallout90 = 181,
+ mso_sptLeftRightUpArrow = 182,
+ mso_sptSun = 183,
+ mso_sptMoon = 184,
+ mso_sptBracketPair = 185,
+ mso_sptBracePair = 186,
+ mso_sptSeal4 = 187,
+ mso_sptDoubleWave = 188,
+ mso_sptActionButtonBlank = 189,
+ mso_sptActionButtonHome = 190,
+ mso_sptActionButtonHelp = 191,
+ mso_sptActionButtonInformation = 192,
+ mso_sptActionButtonForwardNext = 193,
+ mso_sptActionButtonBackPrevious = 194,
+ mso_sptActionButtonEnd = 195,
+ mso_sptActionButtonBeginning = 196,
+ mso_sptActionButtonReturn = 197,
+ mso_sptActionButtonDocument = 198,
+ mso_sptActionButtonSound = 199,
+ mso_sptActionButtonMovie = 200,
+ mso_sptHostControl = 201,
+ mso_sptTextBox = 202,
+ mso_sptMax = 0x0FFF,
+ mso_sptNil = mso_sptMax
+ } MSO_SPT;
+
+// verschiedene enums aus der OfficeDraw-Doku, Appendix D - Anfang
+//
+// beachte: in Abweichung von der MS-Doku beginnen alle
+// mit "mso_" statt mit "mso"
+//
+enum MSO_ShapePath {
+ mso_shapeLines, // A line of straight segments
+ mso_shapeLinesClosed, // A closed polygonal object
+ mso_shapeCurves, // A line of Bezier curve segments
+ mso_shapeCurvesClosed, // A closed shape with curved edges
+ mso_shapeComplex // pSegmentInfo must be non-empty
+};
+
+enum MSO_WrapMode {
+ mso_wrapSquare,
+ mso_wrapByPoints,
+ mso_wrapNone,
+ mso_wrapTopBottom,
+ mso_wrapThrough
+};
+
+enum MSO_BWMode {
+ mso_bwColor, // only used for predefined shades
+ mso_bwAutomatic, // depends on object type
+ mso_bwGrayScale, // shades of gray only
+ mso_bwLightGrayScale, // shades of light gray only
+ mso_bwInverseGray, // dark gray mapped to light gray, etc.
+ mso_bwGrayOutline, // pure gray and white
+ mso_bwBlackTextLine, // black text and lines, all else grayscale
+ mso_bwHighContrast, // pure black and white mode (no grays)
+ mso_bwBlack, // solid black
+ mso_bwWhite, // solid white
+ mso_bwDontShow, // object not drawn
+ mso_bwNumModes // number of Black and white modes
+};
+
+enum MSO_Anchor {
+ mso_anchorTop,
+ mso_anchorMiddle,
+ mso_anchorBottom,
+ mso_anchorTopCentered,
+ mso_anchorMiddleCentered,
+ mso_anchorBottomCentered,
+ mso_anchorTopBaseline,
+ mso_anchorBottomBaseline,
+ mso_anchorTopCenteredBaseline,
+ mso_anchorBottomCenteredBaseline
+};
+
+enum MSO_CDir {
+ mso_cdir0, // Right
+ mso_cdir90, // Down
+ mso_cdir180, // Left
+ mso_cdir270 // Up
+};
+
+// connector style
+enum MSO_ConnectorStyle {
+ mso_cxstyleStraight = 0,
+ mso_cxstyleBent,
+ mso_cxstyleCurved,
+ mso_cxstyleNone
+};
+
+// MSO_TXFL -- text flow
+enum MSO_TextFlow {
+ mso_txflHorzN, // Horizontal non-@
+ mso_txflTtoBA, // Top to Bottom @-font
+ mso_txflBtoT, // Bottom to Top non-@
+ mso_txflTtoBN, // Top to Bottom non-@
+ mso_txflHorzA, // Horizontal @-font
+ mso_txflVertN // Vertical, non-@
+};
+
+// MSO_TXDIR - text direction (needed for Bi-Di support)
+enum MSO_TextDir {
+ mso_txdirLTR, // left-to-right text direction
+ mso_txdirRTL, // right-to-left text direction
+ mso_txdirContext // context text direction
+};
+
+// MSO_SPCOT -- Callout Type
+enum MSO_SPCalloutType {
+ mso_spcotRightAngle = 1,
+ mso_spcotOneSegment = 2,
+ mso_spcotTwoSegment = 3,
+ mso_spcotThreeSegment = 4
+};
+
+// MSO_SPCOA -- Callout Angle
+enum MSO_SPCalloutAngle {
+ mso_spcoaAny,
+ mso_spcoa30,
+ mso_spcoa45,
+ mso_spcoa60,
+ mso_spcoa90,
+ mso_spcoa0
+};
+
+// MSO_SPCOD -- Callout Drop
+enum MSO_SPCalloutDrop {
+ mso_spcodTop,
+ mso_spcodCenter,
+ mso_spcodBottom,
+ mso_spcodSpecified
+};
+
+// MSO_GEOTEXTALIGN - FontWork alignment
+enum MSO_GeoTextAlign {
+ mso_alignTextStretch, /* Stretch each line of text to fit width. */
+ mso_alignTextCenter, /* Center text on width. */
+ mso_alignTextLeft, /* Left justify. */
+ mso_alignTextRight, /* Right justify. */
+ mso_alignTextLetterJust, /* Spread letters out to fit width. */
+ mso_alignTextWordJust, /* Spread words out to fit width. */
+ mso_alignTextInvalid /* Invalid */
+};
+
+// MSO_BLIPFLAGS - flags for pictures
+enum MSO_BlipFlags {
+ mso_blipflagDefault = 0,
+ mso_blipflagComment = 0, // Blip name is a comment
+ mso_blipflagFile, // Blip name is a file name
+ mso_blipflagURL, // Blip name is a full URL
+ mso_blipflagType = 3, // Mask to extract type
+ /* Or the following flags with any of the above. */
+ mso_blipflagDontSave = 4, // A "dont" is the depression in the metal
+ // body work of an automobile caused when a
+ // cyclist violently thrusts his or her nose
+ // at it, thus a DontSave is another name for
+ // a cycle lane.
+ mso_blipflagDoNotSave = 4, // For those who prefer English
+ mso_blipflagLinkToFile = 8
+};
+
+enum MSO_3DRenderMode {
+ mso_FullRender, // Generate a full rendering
+ mso_Wireframe, // Generate a wireframe
+ mso_BoundingCube // Generate a bounding cube
+};
+
+enum MSO_XFormType {
+ mso_xformAbsolute, // Apply transform in absolute space centered on shape
+ mso_xformShape, // Apply transform to shape geometry
+ mso_xformDrawing // Apply transform in drawing space
+};
+
+enum MSO_ShadowType {
+ mso_shadowOffset, // N pixel offset shadow
+ mso_shadowDouble, // Use second offset too
+ mso_shadowRich, // Rich perspective shadow (cast relative to shape)
+ mso_shadowShape, // Rich perspective shadow (cast in shape space)
+ mso_shadowDrawing, // Perspective shadow cast in drawing space
+ mso_shadowEmbossOrEngrave
+};
+
+// MSO_DZTYPE - the type of a (length) measurement
+enum MSO_DZType {
+ mso_dztypeMin = 0,
+ mso_dztypeDefault = 0, // Default size, ignore the values
+ mso_dztypeA = 1, // Values are in EMUs
+ mso_dztypeV = 2, // Values are in pixels
+ mso_dztypeShape = 3, // Values are 16.16 fractions of shape size
+ mso_dztypeFixedAspect = 4, // Aspect ratio is fixed
+ mso_dztypeAFixed = 5, // EMUs, fixed aspect ratio
+ mso_dztypeVFixed = 6, // Pixels, fixed aspect ratio
+ mso_dztypeShapeFixed = 7, // Proportion of shape, fixed aspect ratio
+ mso_dztypeFixedAspectEnlarge
+ = 8, // Aspect ratio is fixed, favor larger size
+ mso_dztypeAFixedBig = 9, // EMUs, fixed aspect ratio
+ mso_dztypeVFixedBig = 10, // Pixels, fixed aspect ratio
+ mso_dztypeShapeFixedBig= 11, // Proportion of shape, fixed aspect ratio
+ mso_dztypeMax = 11
+};
+
+enum MSO_FillType {
+ mso_fillSolid, // Fill with a solid color
+ mso_fillPattern, // Fill with a pattern (bitmap)
+ mso_fillTexture, // A texture (pattern with its own color map)
+ mso_fillPicture, // Center a picture in the shape
+ mso_fillShade, // Shade from start to end points
+ mso_fillShadeCenter, // Shade from bounding rectangle to end point
+ mso_fillShadeShape, // Shade from shape outline to end point
+ mso_fillShadeScale, // Similar to mso_fillShade, but the fillAngle
+ // is additionally scaled by the aspect ratio of
+ // the shape. If shape is square, it is the
+ // same as mso_fillShade.
+ mso_fillShadeTitle, // special type - shade to title --- for PP
+ mso_fillBackground // Use the background fill color/pattern
+};
+
+// MSO_SHADETYPE - how to interpret the colors in a shaded fill.
+enum MSO_ShadeType {
+ mso_shadeNone = 0, // Interpolate without correction between RGBs
+ mso_shadeGamma = 1, // Apply gamma correction to colors
+ mso_shadeSigma = 2, // Apply a sigma transfer function to position
+ mso_shadeBand = 4, // Add a flat band at the start of the shade
+ mso_shadeOneColor = 8, // This is a one color shade
+
+ /* A parameter for the band or sigma function can be stored in the top
+ 16 bits of the value - this is a proportion of *each* band of the
+ shade to make flat (or the approximate equal value for a sigma
+ function). NOTE: the parameter is not used for the sigma function,
+ instead a built in value is used. This value should not be changed
+ from the default! */
+ mso_shadeParameterShift = 16,
+ mso_shadeParameterMask = 0xffff0000,
+
+ mso_shadeDefault = (mso_shadeGamma|mso_shadeSigma|
+ (16384<<mso_shadeParameterShift))
+};
+
+// MSOLINESTYLE - compound line style
+enum MSO_LineStyle {
+ mso_lineSimple, // Single line (of width lineWidth)
+ mso_lineDouble, // Double lines of equal width
+ mso_lineThickThin, // Double lines, one thick, one thin
+ mso_lineThinThick, // Double lines, reverse order
+ mso_lineTriple // Three lines, thin, thick, thin
+};
+
+// MSO_LINETYPE - how to "fill" the line contour
+enum MSO_LineType {
+ mso_lineSolidType, // Fill with a solid color
+ mso_linePattern, // Fill with a pattern (bitmap)
+ mso_lineTexture, // A texture (pattern with its own color map)
+ mso_linePicture // Center a picture in the shape
+};
+
+// MSO_LINEDASHING - dashed line style
+enum MSO_LineDashing {
+ mso_lineSolid, // Solid (continuous) pen
+ mso_lineDashSys, // PS_DASH system dash style
+ mso_lineDotSys, // PS_DOT system dash style
+ mso_lineDashDotSys, // PS_DASHDOT system dash style
+ mso_lineDashDotDotSys, // PS_DASHDOTDOT system dash style
+ mso_lineDotGEL, // square dot style
+ mso_lineDashGEL, // dash style
+ mso_lineLongDashGEL, // long dash style
+ mso_lineDashDotGEL, // dash short dash
+ mso_lineLongDashDotGEL, // long dash short dash
+ mso_lineLongDashDotDotGEL // long dash short dash short dash
+};
+
+// MSO_LINEEND - line end effect
+enum MSO_LineEnd {
+ mso_lineNoEnd,
+ mso_lineArrowEnd,
+ mso_lineArrowStealthEnd,
+ mso_lineArrowDiamondEnd,
+ mso_lineArrowOvalEnd,
+ mso_lineArrowOpenEnd
+};
+
+// MSO_LINEENDWIDTH - size of arrowhead
+enum MSO_LineEndWidth {
+ mso_lineNarrowArrow,
+ mso_lineMediumWidthArrow,
+ mso_lineWideArrow
+};
+
+// MSO_LINEENDLENGTH - size of arrowhead
+enum MSO_LineEndLength {
+ mso_lineShortArrow,
+ mso_lineMediumLenArrow,
+ mso_lineLongArrow
+};
+
+// MSO_LINEJOIN - line join style.
+enum MSO_LineJoin {
+ mso_lineJoinBevel, // Join edges by a straight line
+ mso_lineJoinMiter, // Extend edges until they join
+ mso_lineJoinRound // Draw an arc between the two edges
+};
+
+// MSO_LINECAP - line cap style (applies to ends of dash segments too).
+enum MSO_LineCap {
+ mso_lineEndCapRound, // Rounded ends - the default
+ mso_lineEndCapSquare, // Square protrudes by half line width
+ mso_lineEndCapFlat // Line ends at end point
+};
+// verschiedene enums aus der OfficeDraw-Doku, Appendix D - Ende
+
+// BStore-Container
+// FBSE - File Blip Store Entry
+typedef struct _MSOF_BSE {
+ BYTE btWin32; // Required type on Win32
+ BYTE btMacOS; // Required type on Mac
+ BYTE rgbUid[16]; // Identifier of blip
+ USHORT tag; // currently unused
+ ULONG size; // Blip size in stream
+ ULONG cRef; // Reference count on the blip
+ ULONG /*MSOFO*/ foDelay; // File offset in the delay stream
+ BYTE usage; // How this blip is used (MSOBLIPUSAGE)
+ BYTE cbName; // length of the blip name
+ BYTE unused2; // for the future
+ BYTE unused3; // for the future
+} MSO_FBSE;
+
+typedef enum {
+ mso_blipUsageDefault, // All non-texture fill blips get this.
+ mso_blipUsageTexture,
+ mso_blipUsageMax = 255 // Since this is stored in a byte
+} MSO_BLIPUSAGE;
+
+typedef enum { // GEL provided types...
+ mso_blipERROR = 0, // An error occured during loading
+ mso_blipUNKNOWN, // An unknown blip type
+ mso_blipEMF, // Windows Enhanced Metafile
+ mso_blipWMF, // Windows Metafile
+ mso_blipPICT, // Macintosh PICT
+ mso_blipJPEG, // JFIF
+ mso_blipPNG, // PNG
+ mso_blipDIB, // Windows DIB
+ mso_blipFirstClient = 32, // First client defined blip type
+ mso_blipLastClient = 255 // Last client defined blip type
+} MSO_BLIPTYPE;
+
+typedef enum {
+ mso_biUNKNOWN = 0,
+ mso_biWMF = 0x216, // Metafile header then compressed WMF
+ mso_biEMF = 0x3D4, // Metafile header then compressed EMF
+ mso_biPICT = 0x542, // Metafile header then compressed PICT
+ mso_biPNG = 0x6E0, // One byte tag then PNG data
+ mso_biJFIF = 0x46A, // One byte tag then JFIF data
+ mso_biJPEG = mso_biJFIF,
+ mso_biDIB = 0x7A8, // One byte tag then DIB data
+ mso_biClient=0x800 // Clients should set this bit
+} MSO_BI; // Blip signature as encoded in the MSO_FBH.inst
+
+typedef enum {
+ mso_compressionDeflate = 0,
+ mso_compressionNone = 254, // Used only if compression fails
+ mso_compressionTest = 255 // For testing only
+} MSO_BLIPCOMPRESSION;
+
+typedef enum {
+ mso_filterAdaptive = 0, // PNG type - not used/supported for metafile
+ mso_filterNone = 254,
+ mso_filterTest = 255 // For testing only
+} MSO_BLIPFILTER;
+
+typedef enum {
+ mso_syscolorButtonFace, // COLOR_BTNFACE
+ mso_syscolorWindowText, // COLOR_WINDOWTEXT
+ mso_syscolorMenu, // COLOR_MENU
+ mso_syscolorHighlight, // COLOR_HIGHLIGHT
+ mso_syscolorHighlightText, // COLOR_HIGHLIGHTTEXT
+ mso_syscolorCaptionText, // COLOR_CAPTIONTEXT
+ mso_syscolorActiveCaption, // COLOR_ACTIVECAPTION
+ mso_syscolorButtonHighlight, // COLOR_BTNHIGHLIGHT
+ mso_syscolorButtonShadow, // COLOR_BTNSHADOW
+ mso_syscolorButtonText, // COLOR_BTNTEXT
+ mso_syscolorGrayText, // COLOR_GRAYTEXT
+ mso_syscolorInactiveCaption, // COLOR_INACTIVECAPTION
+ mso_syscolorInactiveCaptionText, // COLOR_INACTIVECAPTIONTEXT
+ mso_syscolorInfoBackground, // COLOR_INFOBK
+ mso_syscolorInfoText, // COLOR_INFOTEXT
+ mso_syscolorMenuText, // COLOR_MENUTEXT
+ mso_syscolorScrollbar, // COLOR_SCROLLBAR
+ mso_syscolorWindow, // COLOR_WINDOW
+ mso_syscolorWindowFrame, // COLOR_WINDOWFRAME
+ mso_syscolor3DLight, // COLOR_3DLIGHT
+ mso_syscolorMax, // Count of system colors
+
+ mso_colorFillColor = 0xF0, // Use the fillColor property
+ mso_colorLineOrFillColor, // Use the line color only if there is a line
+ mso_colorLineColor, // Use the lineColor property
+ mso_colorShadowColor, // Use the shadow color
+ mso_colorThis, // Use this color (only valid as described below)
+ mso_colorFillBackColor, // Use the fillBackColor property
+ mso_colorLineBackColor, // Use the lineBackColor property
+ mso_colorFillThenLine, // Use the fillColor unless no fill and line
+ mso_colorIndexMask = 0xFF, // Extract the color index
+
+ mso_colorProcessMask =0xFFFF00,// All the processing bits
+ mso_colorModificationMask =0x0F00, // Just the function
+ mso_colorModFlagMask =0xF000, // Just the additional flags
+ mso_colorDarken =0x0100, // Darken color by parameter/255
+ mso_colorLighten =0x0200, // Lighten color by parameter/255
+ mso_colorAdd =0x0300, // Add grey level RGB(param,param,param)
+ mso_colorSubtract =0x0400, // Subtract grey level RGB(p,p,p)
+ mso_colorReverseSubtract =0x0500, // Subtract from grey level RGB(p,p,p)
+ /* In the following "black" means maximum component value, white minimum.
+ The operation is per component, to guarantee white combine with
+ mso_colorGray */
+ mso_colorBlackWhite =0x0600, // Black if < uParam, else white (>=)
+ mso_colorInvert =0x2000, // Invert color (at the *end*)
+ mso_colorInvert128 =0x4000, // Invert by toggling the top bit
+ mso_colorGray =0x8000, // Make the color gray (before the above!)
+ mso_colorBParamMask =0xFF0000,// Parameter used as above
+ mso_colorBParamShift = 16 // To extract the parameter value
+} MSO_SYSCOLORINDEX;
+
+#ifdef Hier_noch_was_aus_der_Doku
+/* The secondary, or data, UID - should always be set. */
+BYTE m_rgbUid[16];
+/* The primary UID - this defaults to 0, in which case the primary ID is
+ that of the internal data. NOTE!: The primary UID is only saved to disk
+ if (blip_instance ^ blip_signature == 1). Blip_instance is MSO_FBH.inst and
+ blip_signature is one of the values defined in MSO_BI */
+BYTE m_rgbUidPrimary[16]; // optional based on the above check
+
+/* Metafile Blip overhead = 34 bytes. m_cb gives the number of
+ bytes required to store an uncompressed version of the file, m_cbSave
+ is the compressed size. m_mfBounds gives the boundary of all the
+ drawing calls within the metafile (this may just be the bounding box
+ or it may allow some whitespace, for a WMF this comes from the
+ SetWindowOrg and SetWindowExt records of the metafile). */
+int m_cb; // Cache of the metafile size
+RECT m_rcBounds; // Boundary of metafile drawing commands
+POINT m_ptSize; // Size of metafile in EMUs
+int m_cbSave; // Cache of saved size (size of m_pvBits)
+BYTE m_fCompression; // MSO_BLIPCOMPRESSION
+BYTE m_fFilter; // always mso_filterNone
+void *m_pvBits; // Compressed bits of metafile.
+
+/* The secondary, or data, UID - should always be set. */
+BYTE m_rgbUid[16];
+/* The primary UID - this defaults to 0, in which case the primary ID is
+ that of the internal data. NOTE!: The primary UID is only saved to disk
+ if (blip_instance ^ blip_signature == 1). Blip_instance is MSO_FBH.finst and
+ blip_signature is one of the values defined in MSO_BI*/
+BYTE m_rgbUidPrimary[16]; // optional based on the above check
+BYTE m_bTag;
+void *m_pvBits; // raster bits of the blip.
+#endif
+
+#endif
diff --git a/svx/inc/svx/numfmtsh.hxx b/svx/inc/svx/numfmtsh.hxx
new file mode 100644
index 000000000000..493cdb6b10d2
--- /dev/null
+++ b/svx/inc/svx/numfmtsh.hxx
@@ -0,0 +1,267 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_NUMFMTSH_HXX
+#define _SVX_NUMFMTSH_HXX
+
+// include ---------------------------------------------------------------
+
+#include <tools/string.hxx>
+#include <i18npool/lang.h>
+
+#ifndef _SVSTDARR_ULONGS
+#define _SVSTDARR_ULONGS
+#endif
+#ifndef _SVSTDARR_USHORTS
+#define _SVSTDARR_USHORTS
+#endif
+#ifndef _SVSTDARR_STRINGS
+#define _SVSTDARR_STRINGS
+#endif
+#include "svx/svxdllapi.h"
+
+#include <svl/svstdarr.hxx>
+
+// forward ---------------------------------------------------------------
+
+class Color;
+class SvNumberFormatter;
+class SvNumberFormatTable;
+class SvStrings;
+class SvStringsDtor;
+class NfCurrencyEntry;
+// enum ------------------------------------------------------------------
+
+enum SvxNumberValueType
+{
+ SVX_VALUE_TYPE_UNDEFINED = 0,
+ SVX_VALUE_TYPE_NUMBER,
+ SVX_VALUE_TYPE_STRING
+};
+
+// define ----------------------------------------------------------------
+
+#define CAT_ALL 0 // Reihenfolge der Kategorie-
+#define CAT_USERDEFINED 1 // ListBox-Eintraege in der TabPage
+#define CAT_NUMBER 2
+#define CAT_PERCENT 3
+#define CAT_CURRENCY 4
+#define CAT_DATE 5
+#define CAT_TIME 6
+#define CAT_SCIENTIFIC 7
+#define CAT_FRACTION 8
+#define CAT_BOOLEAN 9
+#define CAT_TEXT 10
+
+#define SELPOS_NONE -1
+
+#define NUMBERFORMAT_ENTRY_NEW_CURRENCY NUMBERFORMAT_ENTRY_NOT_FOUND-1
+
+typedef NfCurrencyEntry* NfShCurrencyEntryPtr;
+SV_DECL_PTRARR( NfShCurrencyEntries, NfShCurrencyEntryPtr, 8, 1 )
+
+
+class SvxDelStrgs: public SvStrings
+{
+
+public:
+ ~SvxDelStrgs() { DeleteAndDestroy(0,Count());}
+
+};
+
+// class SvxNumberFormatShell --------------------------------------------
+
+class SVX_DLLPUBLIC SvxNumberFormatShell
+{
+public:
+ SvxNumberFormatShell( SvNumberFormatter* pNumFormatter,
+ sal_uInt32 nFormatKey,
+ SvxNumberValueType eNumValType,
+ const String& rNumStr );
+
+ SvxNumberFormatShell( SvNumberFormatter* pNumFormatter,
+ sal_uInt32 nFormatKey,
+ SvxNumberValueType eNumValType,
+ double nNumVal,
+ const String* pNumStr = NULL );
+
+ ~SvxNumberFormatShell();
+
+
+ static SvxNumberFormatShell* Create( SvNumberFormatter* pNumFormatter,
+ sal_uInt32 nFormatKey,
+ SvxNumberValueType eNumValType,
+ const String& rNumStr );
+
+ static SvxNumberFormatShell* Create( SvNumberFormatter* pNumFormatter,
+ sal_uInt32 nFormatKey,
+ SvxNumberValueType eNumValType,
+ double nNumVal,
+ const String* pNumStr = NULL );
+
+
+ void GetInitSettings( USHORT& nCatLbPos,
+ LanguageType& rLangType,
+ USHORT& nFmtLbSelPos,
+ SvStrings& rFmtEntries,
+ String& rPrevString,
+ Color*& rpPrevColor );
+
+ void CategoryChanged( USHORT nCatLbPos,
+ short& rFmtSelPos,
+ SvStrings& rFmtEntries );
+
+ void LanguageChanged( LanguageType eLangType,
+ short& rFmtSelPos,
+ SvStrings& rFmtEntries );
+
+ void FormatChanged( USHORT nFmtLbPos,
+ String& rPreviewStr,
+ Color*& rpFontColor );
+
+ BOOL AddFormat( String& rFormat,
+ xub_StrLen& rErrPos,
+ USHORT& rCatLbSelPos,
+ short& rFmtSelPos,
+ SvStrings& rFmtEntries );
+
+ BOOL RemoveFormat( const String& rFormat,
+ USHORT& rCatLbSelPos,
+ short& rFmtSelPos,
+ SvStrings& rFmtEntries );
+
+ void MakeFormat( String& rFormat,
+ BOOL bThousand,
+ BOOL bNegRed,
+ USHORT nPrecision,
+ USHORT nLeadingZeroes,
+ USHORT nCurrencyEntryPos);
+
+ void GetOptions( const String& rFormat,
+ BOOL& rThousand,
+ BOOL& rNegRed,
+ USHORT& rPrecision,
+ USHORT& rLeadingZeroes,
+ USHORT& rCatLbPos );
+
+ void MakePreviewString( const String& rFormatStr,
+ String& rPreviewStr,
+ Color*& rpFontColor );
+
+ void MakePrevStringFromVal( const String& rFormatStr, //@ 19.09.97
+ String& rPreviewStr,
+ Color*& rpFontColor,
+ double nValue);
+
+ BOOL IsUserDefined( const String& rFmtString );
+ BOOL IsTmpCurrencyFormat( const String& rFmtString );
+ BOOL FindEntry( const String& rFmtString, sal_uInt32* pAt = NULL );
+
+ void ValidateNewEntries( BOOL bValidate = TRUE ) { bUndoAddList = !bValidate; }
+ sal_uInt32 GetUpdateDataCount() const;
+ void GetUpdateData( sal_uInt32* pDelArray, const sal_uInt32 nSize );
+
+ void SetCurNumFmtKey( sal_uInt32 nNew ) { nCurFormatKey = nNew; }
+ void SetCurLanguage( LanguageType eNew ) { eCurLanguage = eNew; }
+ sal_uInt32 GetCurNumFmtKey() const { return nCurFormatKey; }
+ LanguageType GetCurLanguage() const { return eCurLanguage; }
+
+ /** Returns the name of Standard, General, ... for the
+ current language. */
+ String GetStandardName() const;
+
+ String GetComment4Entry(short nEntry);
+ short GetCategory4Entry(short nEntry);
+ BOOL GetUserDefined4Entry(short nEntry);
+ String GetFormat4Entry(short nEntry);
+ void SetComment4Entry(short nEntry,String aCommentString);
+
+ BOOL IsBankingSymbol(USHORT nPos);
+ void SetCurrencySymbol(USHORT nPos);
+ sal_uInt32 GetCurrencySymbol();
+ USHORT FindCurrencyFormat( const String& rFmtString );
+ USHORT FindCurrencyFormat(const NfCurrencyEntry* pTmpCurrencyEntry,BOOL bTmpBanking);
+ NfCurrencyEntry* GetCurCurrencyEntry();
+ void SetCurCurrencyEntry(NfCurrencyEntry*);
+ short GetListPos4Entry(sal_uInt32 nIdx);
+ short GetListPos4Entry( const String& rFmtString );
+
+ void GetCurrencySymbols( SvStringsDtor& rList, USHORT* pPos );
+ void GetCurrencySymbols( SvStringsDtor& rList, BOOL bFlag );
+
+ USHORT FindCurrencyTableEntry( const String& rFmtString, BOOL &bTestBanking );
+ BOOL IsInTable(USHORT nPos,BOOL bTmpBanking,const String &rFmtString);
+
+ void GetCurrencyFormats(SvStrings& rList);
+
+private:
+ static const double DEFAULT_NUMVALUE; // 123456789
+
+ SvNumberFormatter* pFormatter;
+ SvNumberFormatTable* pCurFmtTable;
+ SvxNumberValueType eValType;
+ String aValStr;
+ double nValNum;
+ BOOL bUndoAddList;
+ SvULongs aAddList;
+ SvULongs aDelList;
+ SvULongs aCurEntryList;
+ sal_uInt32 nInitFormatKey;
+ sal_uInt32 nCurFormatKey;
+ short nCurCategory;
+ LanguageType eCurLanguage;
+ SvUShorts aCurCurrencyList;
+ NfCurrencyEntry* pCurCurrencyEntry;
+ BOOL bBankingSymbol;
+ USHORT nCurCurrencyEntryPos;
+ SvStrings aCurrencyFormatList;
+
+#ifdef _SVX_NUMFMTSH_CXX
+ SVX_DLLPRIVATE short FillEntryList_Impl( SvStrings& rList );
+ SVX_DLLPRIVATE void FillEListWithStd_Impl( SvStrings& rList,USHORT aPrivCat, short &Pos);
+ SVX_DLLPRIVATE short FillEListWithFormats_Impl( SvStrings& rList,short nSelPos,
+ NfIndexTableOffset eOffsetStart,
+ NfIndexTableOffset eOffsetEnd);
+
+ SVX_DLLPRIVATE short FillEListWithDateTime_Impl( SvStrings& rList,short nSelPos);
+
+ SVX_DLLPRIVATE short FillEListWithCurrency_Impl( SvStrings& rList,short nSelPos);
+ SVX_DLLPRIVATE short FillEListWithSysCurrencys( SvStrings& rList,short nSelPos);
+ SVX_DLLPRIVATE short FillEListWithUserCurrencys( SvStrings& rList,short nSelPos);
+
+ SVX_DLLPRIVATE short FillEListWithUsD_Impl( SvStrings& rList, sal_uInt16 nPrivCat, short Pos );
+ SVX_DLLPRIVATE BOOL IsRemoved_Impl( sal_uInt32 nKey );
+ SVX_DLLPRIVATE BOOL IsAdded_Impl( sal_uInt32 nKey );
+ SVX_DLLPRIVATE void GetPreviewString_Impl( String& rString,
+ Color*& rpColor );
+ SVX_DLLPRIVATE void PosToCategory_Impl( USHORT nPos, short& rCategory );
+ SVX_DLLPRIVATE void CategoryToPos_Impl( short nCategory, USHORT& rPos );
+#endif
+};
+
+
+#endif
+
diff --git a/svx/inc/svx/numinf.hxx b/svx/inc/svx/numinf.hxx
new file mode 100644
index 000000000000..167cb094d1e1
--- /dev/null
+++ b/svx/inc/svx/numinf.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_NUMINF_HXX
+#define _SVX_NUMINF_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svl/itempool.hxx>
+#include <svx/numfmtsh.hxx>
+#include "svx/svxdllapi.h"
+
+// class SvxNumberInfoItem -----------------------------------------------
+
+
+
+/*
+[Beschreibung]
+Dieses Item dient als Transport-Medium fuer einen Number-Formatter.
+*/
+
+class SVX_DLLPUBLIC SvxNumberInfoItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+
+ SvxNumberInfoItem( const USHORT nId );
+ SvxNumberInfoItem( SvNumberFormatter* pNumFormatter,
+ const USHORT nId );
+ SvxNumberInfoItem( SvNumberFormatter* pNumFormatter, const String& rVal,
+ const USHORT nId );
+ SvxNumberInfoItem( SvNumberFormatter* pNumFormatter, const double& rVal,
+ const USHORT nId );
+ // if both double and String are supplied, String is used for text formats
+ SvxNumberInfoItem( SvNumberFormatter* pNumFormatter, const double& rVal,
+ const String& rValueStr, const USHORT nId );
+ SvxNumberInfoItem( const SvxNumberInfoItem& );
+ ~SvxNumberInfoItem();
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream& , USHORT nItemVersion ) const;
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ SvNumberFormatter* GetNumberFormatter() const { return pFormatter; }
+ void SetNumberFormatter( SvNumberFormatter* pNumFrmt );
+ const String& GetValueString() const { return aStringVal; }
+ void SetStringValue( const String& rNewVal );
+ double GetValueDouble() const { return nDoubleVal; }
+ void SetDoubleValue( const double& rNewVal );
+
+ const sal_uInt32* GetDelArray() const { return pDelFormatArr; }
+ void SetDelFormatArray( const sal_uInt32* pData,
+ const sal_uInt32 nCount );
+
+ SvxNumberValueType GetValueType() const { return eValueType; }
+ sal_uInt32 GetDelCount() const { return nDelCount; }
+
+private:
+ SvNumberFormatter* pFormatter;
+ SvxNumberValueType eValueType;
+ String aStringVal;
+ double nDoubleVal;
+
+ sal_uInt32* pDelFormatArr;
+ sal_uInt32 nDelCount;
+};
+
+
+
+#endif
+
diff --git a/svx/inc/svx/obj3d.hxx b/svx/inc/svx/obj3d.hxx
new file mode 100644
index 000000000000..1116fd3fa033
--- /dev/null
+++ b/svx/inc/svx/obj3d.hxx
@@ -0,0 +1,328 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_OBJ3D_HXX
+#define _E3D_OBJ3D_HXX
+
+#include <svx/svdoattr.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/volume3d.hxx>
+#include <svx/def3d.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/deflt3d.hxx>
+#include <vcl/bitmap.hxx>
+#include <svx/svx3ditems.hxx>
+#include <svx/xflclit.hxx>
+#include <svl/itemset.hxx>
+#include <basegfx/polygon/b3dpolypolygon.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SfxPoolItem;
+class Viewport3D;
+class E3dScene;
+class E3dPolyScene;
+
+namespace basegfx { class B3DPolyPolygon; }
+namespace sdr { namespace properties {
+ class BaseProperties;
+ class E3dProperties;
+ class E3dCompoundProperties;
+ class E3dExtrudeProperties;
+ class E3dLatheProperties;
+ class E3dSphereProperties;
+}}
+
+/*************************************************************************
+|*
+|* GeoData relevant fuer Undo-Actions
+|*
+\************************************************************************/
+
+class E3DObjGeoData : public SdrObjGeoData
+{
+public:
+ basegfx::B3DRange maLocalBoundVol; // umschliessendes Volumen des Objekts
+ basegfx::B3DHomMatrix maTransformation; // lokale Transformation
+
+ E3DObjGeoData() {}
+};
+
+/*************************************************************************
+|*
+|* Liste fuer 3D-Objekte
+|*
+\************************************************************************/
+
+class E3dObjList : public SdrObjList
+{
+public:
+ TYPEINFO();
+ E3dObjList(SdrModel* pNewModel = 0, SdrPage* pNewPage = 0, E3dObjList* pNewUpList = 0);
+ SVX_DLLPUBLIC E3dObjList(const E3dObjList& rSrcList);
+ SVX_DLLPUBLIC virtual ~E3dObjList();
+
+ virtual void NbcInsertObject(SdrObject* pObj, ULONG nPos=CONTAINER_APPEND, const SdrInsertReason* pReason=NULL);
+ virtual void InsertObject(SdrObject* pObj, ULONG nPos=CONTAINER_APPEND, const SdrInsertReason* pReason=NULL);
+ virtual SdrObject* NbcRemoveObject(ULONG nObjNum);
+ virtual SdrObject* RemoveObject(ULONG nObjNum);
+};
+
+/*************************************************************************
+|*
+|* Basisklasse fuer 3D-Objekte
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dObject : public SdrAttrObj
+{
+private:
+ // to allow sdr::properties::E3dProperties access to StructureChanged()
+ friend class sdr::properties::E3dProperties;
+
+ // Aus der E3dObjList und E3dDragMethod alles erlauben
+ friend class E3dObjList;
+ friend class E3dDragMethod;
+
+ protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ E3dObjList maSubList; // Subliste (Childobjekte)
+
+ basegfx::B3DRange maLocalBoundVol; // umschliessendes Volumen des Objekts (aus geometrieerzeugung)
+ basegfx::B3DHomMatrix maTransformation; // lokale Transformation
+ basegfx::B3DHomMatrix maFullTransform; // globale Transformation (inkl. Parents)
+
+ // Flags
+ unsigned mbTfHasChanged : 1;
+ unsigned mbIsSelected : 1;
+
+ public:
+ void SetBoundVolInvalid();
+
+ protected:
+ void SetTransformChanged();
+ virtual void NewObjectInserted(const E3dObject* p3DObj);
+ virtual void StructureChanged();
+ basegfx::B3DRange RecalcBoundVolume() const;
+
+protected:
+ // E3dObject is only a helper class (for E3DScene and E3DCompoundObject)
+ // and no instances should be created from anyone, so i move the constructors
+ // to protected area
+ E3dObject();
+ E3dObject(BOOL bIsFromChart);
+
+public:
+ TYPEINFO();
+ virtual void RecalcSnapRect();
+ virtual void SetRectsDirty(sal_Bool bNotMyself = sal_False);
+
+ virtual ~E3dObject();
+
+ virtual UINT32 GetObjInventor() const;
+ virtual UINT16 GetObjIdentifier() const;
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+
+ virtual void NbcSetLayer(SdrLayerID nLayer);
+
+ virtual void SetObjList(SdrObjList* pNewObjList);
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pNewModel);
+ virtual void NbcMove(const Size& rSize);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual SdrObjList* GetSubList() const;
+
+ // 3D-Objekt in die Gruppe einfuegen; Eigentumsuebergang!
+ virtual void Insert3DObj(E3dObject* p3DObj);
+ void Remove3DObj(E3dObject* p3DObj);
+
+ E3dObject* GetParentObj() const;
+ virtual E3dScene* GetScene() const;
+
+ const basegfx::B3DRange& GetBoundVolume() const;
+ void InvalidateBoundVolume();
+
+ // komplette Transformation inklusive aller Parents berechnen
+ const basegfx::B3DHomMatrix& GetFullTransform() const;
+
+ // Transformationsmatrix abfragen bzw. (zurueck)setzen
+ const basegfx::B3DHomMatrix& GetTransform() const;
+ virtual void NbcSetTransform(const basegfx::B3DHomMatrix& rMatrix);
+ virtual void SetTransform(const basegfx::B3DHomMatrix& rMatrix);
+
+ // [FG] 2D-Rotationen, werden hier als Rotationen um die Z-Achse, die in den Bildschirm zeigt,
+ // implementiert plus eine Verschiebung der Scene. Dies bedeutet auch die Scene (E3dScene)
+ // muss diese Routine in der Klasse als virtual definieren.
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+
+ // get wireframe polygon for local object. No transform is applied.
+ basegfx::B3DPolyPolygon CreateWireframe() const;
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+ USHORT GetLogicalGroup() { return 0; }
+ virtual void operator=(const SdrObject&);
+
+ virtual SdrObjGeoData *NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+ // Selektion Setzen/Lesen
+ bool GetSelected() const { return mbIsSelected; }
+ void SetSelected(bool bNew);
+
+ // Aufbrechen
+ virtual BOOL IsBreakObjPossible();
+ virtual SdrAttrObj* GetBreakObj();
+};
+
+/*************************************************************************
+|*
+|* Klasse fuer alle zusammengesetzen Objekte (Cube, Lathe, Scene, Extrude)
+|* Diese Klasse erspart ein paar ISA-Abfragen und sie beschleunigt das
+|* Verhalten ungemein, da alle Attribute usw. fuer die untergeordneten
+|* Polygone hierueber gehalten werden. Die Polygone duerfen nur Attribute
+|* halten, wenn sie direkt einer Szene untergeordnet sind.
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dCompoundObject : public E3dObject
+{
+private:
+ // to allow sdr::properties::E3dCompoundProperties access to SetGeometryValid()
+ friend class sdr::properties::E3dCompoundProperties;
+ friend class sdr::properties::E3dExtrudeProperties;
+ friend class sdr::properties::E3dLatheProperties;
+ friend class sdr::properties::E3dSphereProperties;
+
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ // Material des Objektes
+ Color aMaterialAmbientColor;
+
+ // Attribute zur Geometrieerzeugung
+ unsigned bCreateNormals : 1;
+ unsigned bCreateTexture : 1;
+
+protected:
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+
+ // convert given basegfx::B3DPolyPolygon to screen coor
+ basegfx::B2DPolyPolygon TransformToScreenCoor(const basegfx::B3DPolyPolygon& rCandidate);
+
+public :
+ TYPEINFO();
+
+ E3dCompoundObject();
+ E3dCompoundObject(E3dDefaultAttributes& rDefault);
+ virtual ~E3dCompoundObject();
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual void AddToHdlList(SdrHdlList& rHdlList) const;
+
+ // DoubleSided: TRUE/FALSE
+ BOOL GetDoubleSided() const
+ { return ((const Svx3DDoubleSidedItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_DOUBLE_SIDED)).GetValue(); }
+
+ // NormalsKind: 0 == FALSE/FALSE, 1 == TRUE/FALSE, else == TRUE/TRUE
+ sal_uInt16 GetNormalsKind() const
+ { return ((const Svx3DNormalsKindItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_NORMALS_KIND)).GetValue(); }
+
+ // NormalsInvert: TRUE/FALSE
+ BOOL GetNormalsInvert() const
+ { return ((const Svx3DNormalsInvertItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_NORMALS_INVERT)).GetValue(); }
+
+ // TextureProjX: 0 == FALSE/FALSE, 1 == TRUE/FALSE, else == TRUE/TRUE
+ sal_uInt16 GetTextureProjectionX() const
+ { return ((const Svx3DTextureProjectionXItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_TEXTURE_PROJ_X)).GetValue(); }
+
+ // TextureProjY: 0 == FALSE/FALSE, 1 == TRUE/FALSE, else == TRUE/TRUE
+ sal_uInt16 GetTextureProjectionY() const
+ { return ((const Svx3DTextureProjectionYItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_TEXTURE_PROJ_Y)).GetValue(); }
+
+ // Shadow3D: TRUE/FALSE
+ BOOL GetShadow3D() const
+ { return ((const Svx3DShadow3DItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_SHADOW_3D)).GetValue(); }
+
+ // MaterialColor: Color
+ Color GetMaterialColor() const
+ { return ((const Svx3DMaterialColorItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_MAT_COLOR)).GetValue(); }
+
+ // MaterialEmission: Color
+ Color GetMaterialEmission() const
+ { return ((const Svx3DMaterialEmissionItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_MAT_EMISSION)).GetValue(); }
+
+ // MaterialSpecular: Color
+ Color GetMaterialSpecular() const
+ { return ((const Svx3DMaterialSpecularItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_MAT_SPECULAR)).GetValue(); }
+
+ // MaterialSpecularIntensity:
+ sal_uInt16 GetMaterialSpecularIntensity() const
+ { return ((const Svx3DMaterialSpecularIntensityItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY)).GetValue(); }
+
+ // TextureFilter: TRUE/FALSE
+ BOOL GetTextureFilter() const
+ { return ((const Svx3DTextureFilterItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_TEXTURE_FILTER)).GetValue(); }
+
+ // #i28528#
+ // Added extra Item (Bool) for chart2 to be able to show reduced line geometry
+ BOOL GetReducedLineGeometry() const
+ { return ((const Svx3DReducedLineGeometryItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_REDUCED_LINE_GEOMETRY)).GetValue(); }
+
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void RecalcSnapRect();
+
+ // Parameter Geometrieerzeugung setzen/lesen
+ BOOL GetCreateNormals() const { return bCreateNormals; }
+ void SetCreateNormals(BOOL bNew);
+
+ BOOL GetCreateTexture() const { return bCreateTexture; }
+ void SetCreateTexture(BOOL bNew);
+
+ // Copy-Operator
+ virtual void operator=(const SdrObject&);
+
+ // Material des Objektes
+ const Color& GetMaterialAmbientColor() const { return aMaterialAmbientColor; }
+ void SetMaterialAmbientColor(const Color& rColor);
+
+ // #110988#
+ sal_Bool IsAOrdNumRemapCandidate(E3dScene*& prScene) const;
+};
+
+#endif // _E3D_OBJ3D_HXX
diff --git a/svx/inc/svx/pagectrl.hxx b/svx/inc/svx/pagectrl.hxx
new file mode 100644
index 000000000000..74a79d8e3a0d
--- /dev/null
+++ b/svx/inc/svx/pagectrl.hxx
@@ -0,0 +1,170 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_PAGECTRL_HXX
+#define _SVX_PAGECTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <vcl/window.hxx>
+#include "svx/svxdllapi.h"
+
+// forward ---------------------------------------------------------------
+
+class SvxBoxItem;
+struct PageWindow_Impl;
+
+// class SvxPageWindow ---------------------------------------------------
+
+class SVX_DLLPUBLIC SvxPageWindow : public Window
+{
+ using Window::GetBorder;
+
+private:
+ Size aWinSize;
+ Size aSize;
+
+ long nTop;
+ long nBottom;
+ long nLeft;
+ long nRight;
+ Color aColor;
+
+ PageWindow_Impl* pImpl;
+
+ long nHdLeft;
+ long nHdRight;
+ long nHdDist;
+ long nHdHeight;
+ Color aHdColor;
+ SvxBoxItem* pHdBorder;
+
+ long nFtLeft;
+ long nFtRight;
+ long nFtDist;
+ long nFtHeight;
+ Color aFtColor;
+ SvxBoxItem* pFtBorder;
+
+ BOOL bFooter :1;
+ BOOL bHeader :1;
+ BOOL bTable :1;
+ BOOL bHorz :1;
+ BOOL bVert :1;
+
+ USHORT eUsage;
+
+ String aLeftText;
+ String aRightText;
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+ virtual void DrawPage( const Point& rPoint,
+ const BOOL bSecond,
+ const BOOL bEnabled );
+
+public:
+ SvxPageWindow( Window* pParent, const ResId& rId );
+ ~SvxPageWindow();
+
+ void SetWidth( long nW ) { aSize.Width() = nW; }
+ void SetHeight( long nH ) { aSize.Height() = nH; }
+
+ void SetSize( const Size& rSz ) { aSize = rSz; }
+ const Size& GetSize() const { return aSize; }
+
+ void SetTop( long nNew ) { nTop = nNew; }
+ void SetBottom( long nNew ) { nBottom = nNew; }
+ void SetLeft( long nNew ) { nLeft = nNew; }
+ void SetRight( long nNew ) { nRight = nNew; }
+ void SetColor( const Color& rNew ) { aColor = rNew; }
+ void SetBorder( const SvxBoxItem& rNew );
+ void SetBitmap( Bitmap* pBmp );
+
+ long GetTop() const { return nTop; }
+ long GetBottom() const { return nBottom;}
+ long GetLeft() const { return nLeft; }
+ long GetRight() const { return nRight; }
+
+ const Color& GetColor() const { return aColor; }
+ const SvxBoxItem& GetBorder() const;
+
+ void SetHdLeft( long nNew ) { nHdLeft = nNew; }
+ void SetHdRight( long nNew ) { nHdRight = nNew; }
+ void SetHdDist( long nNew ) { nHdDist = nNew; }
+ void SetHdHeight( long nNew ) { nHdHeight = nNew; }
+ void SetHdColor( const Color& aNew ) { aHdColor = aNew; }
+ void SetHdBorder( const SvxBoxItem& rNew );
+
+ long GetHdLeft() const { return nHdLeft; }
+ long GetHdRight() const { return nHdRight; }
+ long GetHdDist() const { return nHdDist; }
+ long GetHdHeight() const { return nHdHeight;}
+
+ const Color& GetHdColor() const { return aHdColor; }
+ const SvxBoxItem& GetHdBorder() const { return *pHdBorder; }
+
+ void SetFtLeft( long nNew ) { nFtLeft = nNew; }
+ void SetFtRight( long nNew ) { nFtRight = nNew; }
+ void SetFtDist( long nNew ) { nFtDist = nNew; }
+ void SetFtHeight( long nNew ) { nFtHeight = nNew; }
+ void SetFtColor( const Color& aNew ) { aFtColor = aNew; }
+ void SetFtBorder( const SvxBoxItem& rNew );
+
+ long GetFtLeft() const { return nFtLeft; }
+ long GetFtRight() const { return nFtRight; }
+ long GetFtDist() const { return nFtDist; }
+ long GetFtHeight() const { return nFtHeight;}
+
+ const Color& GetFtColor() const { return aFtColor; }
+ const SvxBoxItem& GetFtBorder() const { return *pFtBorder; }
+
+ void SetUsage( USHORT eU ) { eUsage = eU; }
+ USHORT GetUsage() const { return eUsage;}
+
+ void SetHeader( BOOL bNew ) { bHeader = bNew; }
+ BOOL GetHeader() const { return bHeader;}
+ void SetFooter( BOOL bNew ) { bFooter = bNew; }
+ BOOL GetFooter() const { return bFooter;}
+
+ void SetTable( BOOL bNew ) { bTable = bNew; }
+ BOOL GetTable() const { return bTable;}
+ void SetHorz( BOOL bNew ) { bHorz = bNew; }
+ BOOL GetHorz() const { return bHorz;}
+ void SetVert( BOOL bNew ) { bVert = bNew; }
+ BOOL GetVert() const { return bVert;}
+
+ void EnableFrameDirection(sal_Bool bEnable);
+ //uses enum SvxFrameDirection
+ void SetFrameDirection(sal_Int32 nFrameDirection);
+
+ void ResetBackground();
+};
+
+#endif // #ifndef _SVX_PAGECTRL_HXX
+
+
diff --git a/svx/inc/svx/pageitem.hxx b/svx/inc/svx/pageitem.hxx
new file mode 100644
index 000000000000..97a325751ca4
--- /dev/null
+++ b/svx/inc/svx/pageitem.hxx
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_PAGEITEM_HXX
+#define _SVX_PAGEITEM_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svl/poolitem.hxx>
+#include <tools/string.hxx>
+#include "svx/svxdllapi.h"
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: SvxNumType
+ --------------------------------------------------------------------*/
+
+enum SvxNumType
+{
+ SVX_CHARS_UPPER_LETTER,
+ SVX_CHARS_LOWER_LETTER,
+ SVX_ROMAN_UPPER,
+ SVX_ROMAN_LOWER,
+ SVX_ARABIC,
+ SVX_NUMBER_NONE,
+ SVX_CHAR_SPECIAL,
+ SVX_PAGEDESC
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Benutzung der Seite
+ --------------------------------------------------------------------*/
+
+enum SvxPageUsage
+{
+ SVX_PAGE_LEFT = 0x0001,
+ SVX_PAGE_RIGHT = 0x0002,
+ SVX_PAGE_ALL = 0x0003,
+ SVX_PAGE_MIRROR = 0x0007,
+ SVX_PAGE_HEADERSHARE = 0x0040,
+ SVX_PAGE_FOOTERSHARE = 0x0080
+};
+
+/*--------------------------------------------------------------------
+ Beschreibung: Teile der Seitenbeschreibung
+ --------------------------------------------------------------------*/
+
+
+
+/*
+[Beschreibung]
+Dieses Item beschreibt ein Seiten-Attribut (Name der Vorlage, Numerierung,
+Portrait oder Landscape, Layout).
+*/
+
+class SVX_DLLPUBLIC SvxPageItem: public SfxPoolItem
+{
+private:
+ String aDescName; // Name der Vorlage
+ SvxNumType eNumType; // Numerierung
+ BOOL bLandscape; // Portrait / Landscape
+ USHORT eUse; // Layout
+
+public:
+
+ TYPEINFO();
+ SvxPageItem( const USHORT nId );
+ SvxPageItem( const SvxPageItem& rItem );
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ virtual SfxPoolItem* Create( SvStream&, USHORT ) const;
+ virtual SvStream& Store( SvStream& , USHORT nItemVersion ) const;
+
+ // Ausrichtung
+ USHORT GetPageUsage() const { return eUse; }
+ void SetPageUsage(USHORT eU) { eUse= eU; }
+
+ BOOL IsLandscape() const { return bLandscape; }
+ void SetLandscape(BOOL bL) { bLandscape = bL; }
+
+ // Numerierung
+ SvxNumType GetNumType() const { return eNumType; }
+ void SetNumType(SvxNumType eNum) { eNumType = eNum; }
+
+ // Name des Descriptors
+ const String& GetDescName() const { return aDescName; }
+ void SetDescName(const String& rStr) { aDescName = rStr; }
+};
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Container fuer Header/Footer-Attribute
+ --------------------------------------------------------------------*/
+
+
+
+/*
+[Beschreibung]
+Dieses Item dient als Container fuer Header- und Footer-Attribute.
+*/
+
+class SVX_DLLPUBLIC SvxSetItem: public SfxSetItem
+{
+public:
+ SvxSetItem( const USHORT nId, const SfxItemSet& rSet );
+ SvxSetItem( const SvxSetItem& rItem );
+ SvxSetItem( const USHORT nId, SfxItemSet* pSet );
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual SfxPoolItem* Create( SvStream&, USHORT nVersion ) const;
+ virtual SvStream& Store( SvStream&, USHORT nItemVersion ) const;
+};
+
+
+
+
+#endif
+
diff --git a/svx/inc/svx/paraprev.hxx b/svx/inc/svx/paraprev.hxx
new file mode 100644
index 000000000000..25f454daee6d
--- /dev/null
+++ b/svx/inc/svx/paraprev.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_PARAPREV_HXX
+#define _SVX_PARAPREV_HXX
+
+// include ---------------------------------------------------------------
+
+#include <vcl/window.hxx>
+#include <editeng/svxenum.hxx>
+#include "svx/svxdllapi.h"
+
+// enum ------------------------------------------------------------------
+
+enum SvxPrevLineSpace
+{
+ SVX_PREV_LINESPACE_1 = 0,
+ SVX_PREV_LINESPACE_15,
+ SVX_PREV_LINESPACE_2,
+ SVX_PREV_LINESPACE_PROP,
+ SVX_PREV_LINESPACE_MIN,
+ SVX_PREV_LINESPACE_DURCH
+};
+
+// class SvxParaPrevWindow -----------------------------------------------
+
+class SVX_DLLPUBLIC SvxParaPrevWindow : public Window
+{
+ using Window::Draw;
+private:
+ Size aWinSize;
+ Size aSize;
+
+ // Einzuege
+ long nLeftMargin;
+ long nRightMargin;
+ short nFirstLineOfst;
+ // Abstaende
+ USHORT nUpper;
+ USHORT nLower;
+ // Ausrichtung
+ SvxAdjust eAdjust;
+ // Letzte Zeile im Blocksatz
+ SvxAdjust eLastLine;
+ // Zeilenabstand
+ SvxPrevLineSpace eLine;
+ USHORT nLineVal;
+
+ String aText;
+ Rectangle Lines[9];
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+ void DrawParagraph( BOOL bAll );
+
+public:
+ SvxParaPrevWindow( Window* pParent, const ResId& rId );
+
+ void SetFirstLineOfst( short nNew ) { nFirstLineOfst = nNew; }
+ void SetLeftMargin( long nNew ) { nLeftMargin = nNew; }
+ void SetRightMargin( long nNew ) { nRightMargin = nNew; }
+ void SetUpper( USHORT nNew ) { nUpper = nNew; }
+ void SetLower( USHORT nNew ) { nLower = nNew; }
+ void SetAdjust( SvxAdjust eNew ) { eAdjust = eNew; }
+ void SetLastLine( SvxAdjust eNew ) { eLastLine = eNew; }
+ void SetLineSpace( SvxPrevLineSpace eNew, USHORT nNew = 0 )
+ { eLine = eNew; nLineVal = nNew; }
+ void SetText( const String& rStr ) { aText = rStr; }
+ void SetSize( Size aNew ) { aSize = aNew; }
+
+ short GetFirstLineOfst() const { return nFirstLineOfst; }
+ long GetLeftMargin() const { return nLeftMargin; }
+ long GetRightMargin() const { return nRightMargin; }
+ USHORT GetUpper() const { return nUpper; }
+ USHORT GetLower() const { return nLower; }
+ SvxAdjust GetAdjust() const { return eAdjust; }
+
+ SvxPrevLineSpace GetLineEnum() const { return eLine; }
+ USHORT GetLineValue() const { return nLineVal; }
+ String GetText() const { return aText; }
+ Size GetSize() const { return aSize; }
+
+ void OutputSizeChanged();
+
+ void Draw( BOOL bAll ) { DrawParagraph( bAll ); }
+};
+
+#endif
+
diff --git a/svx/inc/svx/polygn3d.hxx b/svx/inc/svx/polygn3d.hxx
new file mode 100644
index 000000000000..0517b6464907
--- /dev/null
+++ b/svx/inc/svx/polygn3d.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_POLYGON3D_HXX
+#define _E3D_POLYGON3D_HXX
+
+#include <svx/obj3d.hxx>
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC E3dPolygonObj : public E3dCompoundObject
+{
+private:
+ // Parameter
+ basegfx::B3DPolyPolygon aPolyPoly3D;
+ basegfx::B3DPolyPolygon aPolyNormals3D;
+ basegfx::B2DPolyPolygon aPolyTexture2D;
+ BOOL bLineOnly;
+
+ SVX_DLLPRIVATE void CreateDefaultNormals();
+ SVX_DLLPRIVATE void CreateDefaultTexture();
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+public:
+ void SetPolyPolygon3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
+ void SetPolyNormals3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
+ void SetPolyTexture2D(const basegfx::B2DPolyPolygon& rNewPolyPoly2D);
+
+ TYPEINFO();
+
+ E3dPolygonObj(
+ E3dDefaultAttributes& rDefault,
+ const basegfx::B3DPolyPolygon& rPolyPoly3D,
+ BOOL bLinOnly=FALSE);
+ E3dPolygonObj(
+ E3dDefaultAttributes& rDefault,
+ const basegfx::B3DPolyPolygon& rPolyPoly3D,
+ const basegfx::B3DPolyPolygon& rPolyNormals3D,
+ BOOL bLinOnly=FALSE);
+ E3dPolygonObj(
+ E3dDefaultAttributes& rDefault,
+ const basegfx::B3DPolyPolygon& rPolyPoly3D,
+ const basegfx::B3DPolyPolygon& rPolyNormals3D,
+ const basegfx::B2DPolyPolygon& rPolyTexture2D,
+ BOOL bLinOnly=FALSE);
+
+ E3dPolygonObj();
+ virtual ~E3dPolygonObj();
+
+ const basegfx::B3DPolyPolygon& GetPolyPolygon3D() const { return aPolyPoly3D; }
+ const basegfx::B3DPolyPolygon& GetPolyNormals3D() const { return aPolyNormals3D; }
+ const basegfx::B2DPolyPolygon& GetPolyTexture2D() const { return aPolyTexture2D; }
+
+ virtual UINT16 GetObjIdentifier() const;
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual void operator=(const SdrObject&);
+
+ // LineOnly?
+ BOOL GetLineOnly() { return bLineOnly; }
+ void SetLineOnly(BOOL bNew);
+};
+
+#endif // _E3D_POLYGON3D_HXX
diff --git a/svx/inc/svx/polypolygoneditor.hxx b/svx/inc/svx/polypolygoneditor.hxx
new file mode 100644
index 000000000000..adc8eb0cbeaf
--- /dev/null
+++ b/svx/inc/svx/polypolygoneditor.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_POLYPOLYGONEDITOR_HXX_
+#define _SDR_POLYPOLYGONEDITOR_HXX_
+
+#include "svx/svxdllapi.h"
+
+#include "svx/ipolypolygoneditorcontroller.hxx"
+
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <set>
+
+class SdrUShortCont;
+
+namespace sdr
+{
+
+/** this class implements some helper functions to edit a B2DPolyPolygon */
+class SVX_DLLPUBLIC PolyPolygonEditor
+{
+public:
+ PolyPolygonEditor( const basegfx::B2DPolyPolygon& rPolyPolygon, bool bClosed );
+
+ const basegfx::B2DPolyPolygon& GetPolyPolygon() const { return maPolyPolygon; }
+
+ /** returns true if the B2DPolyPolygon was changed.
+ Warning: B2DPolyPolygon can be empty after this operation!
+ */
+ bool DeletePoints( const std::set< sal_uInt16 >& rAbsPoints );
+
+ /** returns true if the B2DPolyPolygon was changed.
+ */
+ bool SetSegmentsKind(SdrPathSegmentKind eKind, const std::set< sal_uInt16 >& rAbsPoints);
+
+ /** returns true if the B2DPolyPolygon was changed.
+ */
+ bool SetPointsSmooth( basegfx::B2VectorContinuity eFlags, const std::set< sal_uInt16 >& rAbsPoints);
+
+ /** Outputs the realative position ( polygon number and point number in that polygon ) from the absolut point number.
+ False is returned if the given absolute point is greater not inside this B2DPolyPolygon
+ */
+ static bool GetRelativePolyPoint( const basegfx::B2DPolyPolygon& rPoly, sal_uInt32 nAbsPnt, sal_uInt32& rPolyNum, sal_uInt32& rPointNum );
+
+private:
+ basegfx::B2DPolyPolygon maPolyPolygon;
+ bool mbIsClosed;
+};
+
+}
+
+#endif
diff --git a/svx/inc/svx/polysc3d.hxx b/svx/inc/svx/polysc3d.hxx
new file mode 100644
index 000000000000..d33a12b671c1
--- /dev/null
+++ b/svx/inc/svx/polysc3d.hxx
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_POLYSC3D_HXX
+#define _E3D_POLYSC3D_HXX
+
+#include <svx/svdpage.hxx>
+#include <svx/scene3d.hxx>
+
+/*************************************************************************
+|*
+|* 3D-Szene mit Darstellung durch 2D-Polygone
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dPolyScene : public E3dScene
+{
+public:
+ TYPEINFO();
+ E3dPolyScene();
+ E3dPolyScene(E3dDefaultAttributes& rDefault);
+
+ virtual UINT16 GetObjIdentifier() const;
+};
+
+#endif // _E3D_POLYSC3D_HXX
diff --git a/svx/inc/svx/rectenum.hxx b/svx/inc/svx/rectenum.hxx
new file mode 100644
index 000000000000..98a00c3a1154
--- /dev/null
+++ b/svx/inc/svx/rectenum.hxx
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_RECTENUM_HXX
+#define _SVX_RECTENUM_HXX
+
+// enum ------------------------------------------------------------------
+
+enum RECT_POINT
+{
+ RP_LT, RP_MT, RP_RT, RP_LM, RP_MM, RP_RM, RP_LB, RP_MB, RP_RB
+};
+
+enum CTL_STYLE
+{
+ CS_RECT,
+ CS_LINE,
+ CS_ANGLE,
+ CS_SHADOW
+};
+
+
+#endif
diff --git a/svx/inc/svx/ruler.hxx b/svx/inc/svx/ruler.hxx
new file mode 100644
index 000000000000..d27f3a079495
--- /dev/null
+++ b/svx/inc/svx/ruler.hxx
@@ -0,0 +1,270 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_RULER_HXX
+#define _SVX_RULER_HXX
+
+#include <vcl/menu.hxx>
+#include <svtools/ruler.hxx>
+#include <svl/lstner.hxx>
+#include "svx/svxdllapi.h"
+
+class SvxProtectItem;
+class SvxRulerItem;
+class SfxBindings;
+class SvxLongLRSpaceItem;
+class SvxLongULSpaceItem;
+class SvxTabStopItem;
+class SvxLRSpaceItem;
+class SvxPagePosSizeItem;
+class SvxColumnItem;
+class SfxRectangleItem;
+class SvxObjectItem;
+class SfxBoolItem;
+struct SvxRuler_Impl;
+
+class SVX_DLLPUBLIC SvxRuler: public Ruler, public SfxListener
+{
+ friend class SvxRulerItem;
+ using Window::Notify;
+
+ SvxRulerItem **pCtrlItem;
+ SvxLongLRSpaceItem *pLRSpaceItem; //Linker und Rechter Rand
+ SfxRectangleItem *pMinMaxItem; //Maxima fuers Draggen
+ SvxLongULSpaceItem *pULSpaceItem; //Oberer und Unterer Rand
+ SvxTabStopItem *pTabStopItem; //Tabstops
+ SvxLRSpaceItem *pParaItem; //Absaetze
+ SvxLRSpaceItem *pParaBorderItem; //Border distance
+ SvxPagePosSizeItem *pPagePosItem; //Seitenabstaende zum Lineal
+ SvxColumnItem *pColumnItem; //Spalten
+ SvxObjectItem *pObjectItem; //Objekt
+ Window *pEditWin;
+ SvxRuler_Impl *pRuler_Imp;
+ BOOL bAppSetNullOffset :1;
+ BOOL bHorz :1;
+ long lLogicNullOffset; // in logischen Koordinaten
+ long lAppNullOffset; // in logischen Koordinaten
+ long lMinFrame; // minimale Framebreite in Pixel
+ long lInitialDragPos;
+ USHORT nFlags;
+ enum {
+ NONE = 0x0000,
+ DRAG_OBJECT = 0x0001,
+ // letzte Spalte verkleinern, Shift
+ DRAG_OBJECT_SIZE_LINEAR = 0x0002,
+ DRAG_OBJECT_SIZE_PROPORTIONAL = 0x0004, // proportional, Ctrl
+ // nur aktuelle Zeile (Tabelle; Shift-Ctrl)
+ DRAG_OBJECT_ACTLINE_ONLY = 0x0008,
+ // aktuell gleiche Tastenbelegung
+ DRAG_OBJECT_LEFT_INDENT_ONLY = DRAG_OBJECT_SIZE_PROPORTIONAL
+ }
+ nDragType;
+ USHORT nDefTabType;
+ USHORT nTabCount;
+ USHORT nTabBufSize;
+ long lDefTabDist;
+ long lTabPos;
+ RulerTab *pTabs; // Tabpositionen in Pixel
+ RulerIndent *pIndents; // Absatzraender in Pixel
+ RulerBorder *pBorders;
+ USHORT nBorderCount;
+ RulerBorder *pObjectBorders;
+ SfxBindings *pBindings;
+ long nDragOffset;
+ long nMaxLeft;
+ long nMaxRight;
+ BOOL bValid;
+ BOOL bListening;
+ BOOL bActive;
+//#if 0 // _SOLAR__PRIVATE
+ void StartListening_Impl();
+ long GetCorrectedDragPos( BOOL bLeft = TRUE, BOOL bRight = TRUE );
+ void DrawLine_Impl(long &lTabPos, int, BOOL Hori=TRUE);
+ USHORT GetObjectBordersOff(USHORT nIdx) const;
+
+ // Seitenr"ander oder umgebender Rahmen
+ void UpdateFrame(const SvxLongLRSpaceItem *);
+ void UpdateFrame(const SvxLongULSpaceItem *);
+ void UpdateFrameMinMax(const SfxRectangleItem *);
+ // Absatzeinzuege
+ void UpdatePara(const SvxLRSpaceItem *);
+ // Border distance
+ void UpdateParaBorder(const SvxLRSpaceItem *);
+ // Tabs
+ void Update(const SvxTabStopItem *);
+ // Seitenposition und -breite
+ void Update(const SvxPagePosSizeItem *);
+ // Spalten
+ void Update(const SvxColumnItem *, USHORT nSID);
+ // Object Selektion
+ void Update(const SvxObjectItem *);
+ // Protect
+ void Update( const SvxProtectItem* );
+ // left-to-right text
+ void UpdateTextRTL( const SfxBoolItem* );
+ // Absatzeinzuege
+ void UpdatePara();
+ void UpdateTabs();
+ void UpdatePage();
+ void UpdateFrame();
+ void UpdateColumns();
+ void UpdateObject();
+
+ long PixelHAdjust(long lPos, long lPos2) const;
+ long PixelVAdjust(long lPos, long lPos2) const;
+ long PixelAdjust(long lPos, long lPos2) const;
+
+ long ConvertHPosPixel(long lPos) const;
+ long ConvertVPosPixel(long lPos) const;
+ long ConvertHSizePixel(long lSize) const;
+ long ConvertVSizePixel(long lSize) const;
+
+ long ConvertPosPixel(long lPos) const;
+ long ConvertSizePixel(long lSize) const;
+
+ long ConvertHPosLogic(long lPos) const;
+ long ConvertVPosLogic(long lPos) const;
+ long ConvertHSizeLogic(long lSize) const;
+ long ConvertVSizeLogic(long lSize) const;
+
+ long ConvertPosLogic(long lPos) const;
+ long ConvertSizeLogic(long lSize) const;
+
+ long GetFirstLineIndent() const;
+// long GetLogicFirstLineIndent() const;
+ long GetLeftIndent() const;
+// long GetLogicLeftIndent() const;
+ long GetRightIndent() const;
+ long GetLogicRightIndent() const;
+ long GetPageWidth() const;
+
+ inline long GetLeftFrameMargin() const;
+ long GetRightFrameMargin() const;
+
+ void CalcMinMax();
+
+ void EvalModifier();
+ void DragMargin1();
+ //adjust the left margin either after DragMargin1() or after DragBorders()
+ void AdjustMargin1(long lDiff);
+ void DragMargin2();
+ void DragIndents();
+ void DragTabs();
+ void DragBorders();
+ void DragObjectBorder();
+
+ void ApplyMargins();
+ void ApplyIndents();
+ void ApplyTabs();
+ void ApplyBorders();
+ void ApplyObject();
+
+ long GetFrameLeft() const;
+ void SetFrameLeft(long);
+
+ long GetLeftMin() const;
+ long GetRightMax() const;
+
+ DECL_LINK( TabMenuSelect, Menu * );
+ DECL_LINK( MenuSelect, Menu * );
+ void PrepareProportional_Impl(RulerType);
+
+ USHORT GetNextVisible(USHORT nColumn);
+ USHORT GetPrevVisible(USHORT nColumn);
+//#endif
+
+ void Update();
+
+enum UpdateType {
+ MOVE_ALL,
+ MOVE_LEFT,
+ MOVE_RIGHT
+ };
+ void UpdateParaContents_Impl(long lDiff, UpdateType = MOVE_ALL);
+protected:
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void Click();
+ virtual long StartDrag();
+ virtual void Drag();
+ virtual void EndDrag();
+ virtual void ExtraDown();
+ virtual void MouseMove( const MouseEvent& rMEvt );
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // Berechnung der Grenzwerte fuer Objectgrenzen
+ // Werte sind bezogen auf die Seite
+ virtual BOOL CalcLimits(long &nMax1, long &nMax2, BOOL bFirst) const;
+ BOOL IsActLastColumn(
+ BOOL bForceDontConsiderHidden = FALSE, USHORT nAct=USHRT_MAX) const ;
+ BOOL IsActFirstColumn(
+ BOOL bForceDontConsiderHidden = FALSE, USHORT nAct=USHRT_MAX) const;
+ USHORT GetActLeftColumn(
+ BOOL bForceDontConsiderHidden = FALSE, USHORT nAct=USHRT_MAX ) const;
+ USHORT GetActRightColumn (
+ BOOL bForceDontConsiderHidden = FALSE, USHORT nAct=USHRT_MAX ) const;
+ long CalcPropMaxRight(USHORT nCol=USHRT_MAX) const;
+
+public:
+#define SVXRULER_SUPPORT_TABS 0x0001
+#define SVXRULER_SUPPORT_PARAGRAPH_MARGINS 0x0002
+#define SVXRULER_SUPPORT_BORDERS 0x0004
+#define SVXRULER_SUPPORT_OBJECT 0x0008
+#define SVXRULER_SUPPORT_SET_NULLOFFSET 0x0010
+#define SVXRULER_SUPPORT_NEGATIVE_MARGINS 0x0020
+#define SVXRULER_SUPPORT_PARAGRAPH_MARGINS_VERTICAL 0x0040
+#define SVXRULER_SUPPORT_REDUCED_METRIC 0x0080 //shorten the context menu to select metric
+
+ SvxRuler(Window* pParent,
+ Window *pEditWin,
+ USHORT nRulerFlags,
+ SfxBindings &rBindings,
+ WinBits nWinStyle = WB_STDRULER);
+ ~SvxRuler();
+
+ void SetMinFrameSize(long lSize);
+ long GetMinFrameSize() const ;
+
+ USHORT GetRulerFlags() const { return nFlags; }
+
+ void SetDefTabDist(long);
+ long GetDefTabDist() const;
+
+ // Setzen / Erfragen NullOffset in logischen Einheiten
+ void SetNullOffsetLogic(long lOff = 0);
+ long GetNullOffsetLogic() const { return lAppNullOffset; }
+
+ void SetActive(BOOL bOn = TRUE);
+ BOOL IsActive() const { return bActive; }
+
+ void ForceUpdate() { Update(); }
+
+ //#i24363# tab stops relative to indent
+ void SetTabsRelativeToIndent( BOOL bRel = TRUE );
+};
+
+#endif
+
diff --git a/svx/inc/svx/scene3d.hxx b/svx/inc/svx/scene3d.hxx
new file mode 100644
index 000000000000..dfda9ac1a36e
--- /dev/null
+++ b/svx/inc/svx/scene3d.hxx
@@ -0,0 +1,252 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_SCENE3D_HXX
+#define _E3D_SCENE3D_HXX
+
+#include <svx/camera3d.hxx>
+#include <tools/b3dtrans.hxx>
+#include <tools/time.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/obj3d.hxx>
+
+namespace sdr { namespace properties {
+ class BaseProperties;
+ class E3dSceneProperties;
+}}
+
+namespace drawinglayer { namespace geometry {
+ class ViewInformation3D;
+}}
+
+/*************************************************************************
+|*
+|* GeoData relevant fuer Undo-Actions
+|*
+\************************************************************************/
+
+class E3DSceneGeoData : public E3DObjGeoData
+{
+public:
+ Camera3D aCamera;
+
+ E3DSceneGeoData() {}
+};
+
+// #110988#
+class Imp3DDepthRemapper;
+
+/*************************************************************************
+|*
+|* Basisklasse fuer 3D-Szenen
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dScene : public E3dObject
+{
+private:
+ // to allow sdr::properties::E3dSceneProperties access to StructureChanged()
+ friend class sdr::properties::E3dSceneProperties;
+
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+ // Transformationen
+ B3dCamera aCameraSet;
+ Camera3D aCamera;
+
+ // #110988#
+ Imp3DDepthRemapper* mp3DDepthRemapper;
+
+ // Flag to determine if only selected objects should be drawn
+ unsigned bDrawOnlySelected : 1;
+
+ virtual void NewObjectInserted(const E3dObject* p3DObj);
+ virtual void StructureChanged();
+
+ void RebuildLists();
+
+ virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint);
+
+protected:
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+
+ // #110988#
+ void ImpCleanup3DDepthMapper();
+
+public:
+ TYPEINFO();
+ E3dScene();
+ E3dScene(E3dDefaultAttributes& rDefault);
+ virtual ~E3dScene();
+
+ virtual void SetBoundRectDirty();
+
+ // access to cleanup of depth mapper
+ void Cleanup3DDepthMapper() { ImpCleanup3DDepthMapper(); }
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+
+ // #110988#
+ sal_uInt32 RemapOrdNum(sal_uInt32 nOrdNum) const;
+
+ // Perspective: enum ProjectionType { PR_PARALLEL, PR_PERSPECTIVE }
+ ProjectionType GetPerspective() const
+ { return (ProjectionType)((const Svx3DPerspectiveItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_PERSPECTIVE)).GetValue(); }
+
+ // Distance:
+ double GetDistance() const
+ { return (double)((const Svx3DDistanceItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_DISTANCE)).GetValue(); }
+
+ // Focal length: before cm, now 1/10th mm (*100)
+ double GetFocalLength() const
+ { return ((const Svx3DFocalLengthItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_FOCAL_LENGTH)).GetValue(); }
+
+ // Two sided lighting:
+ BOOL GetTwoSidedLighting() const
+ { return ((const Svx3DTwoSidedLightingItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING)).GetValue(); }
+
+ // Lightcolor:
+ Color GetLightColor1() const
+ { return ((const Svx3DLightcolor1Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_1)).GetValue(); }
+ Color GetLightColor2() const
+ { return ((const Svx3DLightcolor2Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_2)).GetValue(); }
+ Color GetLightColor3() const
+ { return ((const Svx3DLightcolor3Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_3)).GetValue(); }
+ Color GetLightColor4() const
+ { return ((const Svx3DLightcolor4Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_4)).GetValue(); }
+ Color GetLightColor5() const
+ { return ((const Svx3DLightcolor5Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_5)).GetValue(); }
+ Color GetLightColor6() const
+ { return ((const Svx3DLightcolor6Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_6)).GetValue(); }
+ Color GetLightColor7() const
+ { return ((const Svx3DLightcolor7Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_7)).GetValue(); }
+ Color GetLightColor8() const
+ { return ((const Svx3DLightcolor8Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTCOLOR_8)).GetValue(); }
+
+ // Ambient color:
+ Color GetGlobalAmbientColor() const
+ { return ((const Svx3DAmbientcolorItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_AMBIENTCOLOR)).GetValue(); }
+
+ // Light on/off:
+ BOOL GetLightOnOff1() const
+ { return ((const Svx3DLightOnOff1Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_1)).GetValue(); }
+ BOOL GetLightOnOff2() const
+ { return ((const Svx3DLightOnOff2Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_2)).GetValue(); }
+ BOOL GetLightOnOff3() const
+ { return ((const Svx3DLightOnOff3Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_3)).GetValue(); }
+ BOOL GetLightOnOff4() const
+ { return ((const Svx3DLightOnOff4Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_4)).GetValue(); }
+ BOOL GetLightOnOff5() const
+ { return ((const Svx3DLightOnOff5Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_5)).GetValue(); }
+ BOOL GetLightOnOff6() const
+ { return ((const Svx3DLightOnOff6Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_6)).GetValue(); }
+ BOOL GetLightOnOff7() const
+ { return ((const Svx3DLightOnOff7Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_7)).GetValue(); }
+ BOOL GetLightOnOff8() const
+ { return ((const Svx3DLightOnOff8Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTON_8)).GetValue(); }
+
+ // Light direction:
+ basegfx::B3DVector GetLightDirection1() const
+ { return ((const Svx3DLightDirection1Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_1)).GetValue(); }
+ basegfx::B3DVector GetLightDirection2() const
+ { return ((const Svx3DLightDirection2Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_2)).GetValue(); }
+ basegfx::B3DVector GetLightDirection3() const
+ { return ((const Svx3DLightDirection3Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_3)).GetValue(); }
+ basegfx::B3DVector GetLightDirection4() const
+ { return ((const Svx3DLightDirection4Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_4)).GetValue(); }
+ basegfx::B3DVector GetLightDirection5() const
+ { return ((const Svx3DLightDirection5Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_5)).GetValue(); }
+ basegfx::B3DVector GetLightDirection6() const
+ { return ((const Svx3DLightDirection6Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_6)).GetValue(); }
+ basegfx::B3DVector GetLightDirection7() const
+ { return ((const Svx3DLightDirection7Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_7)).GetValue(); }
+ basegfx::B3DVector GetLightDirection8() const
+ { return ((const Svx3DLightDirection8Item&)GetObjectItemSet().Get(SDRATTR_3DSCENE_LIGHTDIRECTION_8)).GetValue(); }
+
+ // ShadowSlant:
+ sal_uInt16 GetShadowSlant() const
+ { return ((const Svx3DShadowSlantItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_SHADOW_SLANT)).GetValue(); }
+
+ // ShadeMode: 0 == FLAT, 1 == PHONG, 2 == SMOOTH, 3 == ForceDraft
+ sal_uInt16 GetShadeMode() const
+ { return ((const Svx3DShadeModeItem&)GetObjectItemSet().Get(SDRATTR_3DSCENE_SHADE_MODE)).GetValue(); }
+
+ // set flag to draw only selected
+ void SetDrawOnlySelected(BOOL bNew) { bDrawOnlySelected = bNew; }
+ bool GetDrawOnlySelected() const { return bDrawOnlySelected; }
+ virtual UINT16 GetObjIdentifier() const;
+
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcMove(const Size& rSize);
+ virtual void NbcResize(const Point& rRef, const Fraction& rXFact,
+ const Fraction& rYFact);
+ virtual void RecalcSnapRect();
+
+ virtual E3dScene* GetScene() const;
+ void SetCamera(const Camera3D& rNewCamera);
+ const Camera3D& GetCamera() const { return aCamera; }
+ void removeAllNonSelectedObjects();
+
+ virtual void operator=(const SdrObject&);
+
+ virtual SdrObjGeoData *NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+ virtual void NbcSetTransform(const basegfx::B3DHomMatrix& rMatrix);
+ virtual void SetTransform(const basegfx::B3DHomMatrix& rMatrix);
+
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ void RotateScene(const Point& rRef, long nWink, double sn, double cs);
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ // Transformationen rausgeben
+ B3dCamera& GetCameraSet() { return aCameraSet; }
+
+ // Aufbrechen
+ virtual BOOL IsBreakObjPossible();
+
+ basegfx::B3DVector GetShadowPlaneDirection() const;
+ void SetShadowPlaneDirection(const basegfx::B3DVector& rVec);
+
+ // Polygon das waehrend des Erzeugens aufgezogen wird
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+
+ // create moves
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat); // TRUE=Xor muss repainted werden
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+};
+
+#endif // _E3D_SCENE3D_HXX
diff --git a/svx/inc/svx/sdangitm.hxx b/svx/inc/svx/sdangitm.hxx
new file mode 100644
index 000000000000..f78a98081efb
--- /dev/null
+++ b/svx/inc/svx/sdangitm.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDANGITM_HXX
+#define _SDANGITM_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+//------------------------------------------------------------
+// class SdrAngleItem
+//------------------------------------------------------------
+class SVX_DLLPUBLIC SdrAngleItem: public SfxInt32Item {
+public:
+ TYPEINFO();
+ SdrAngleItem(): SfxInt32Item() {}
+ SdrAngleItem(USHORT nId, INT32 nAngle=0): SfxInt32Item(nId,nAngle) {}
+ SdrAngleItem(USHORT nId, SvStream& rIn): SfxInt32Item(nId,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String& rText,
+ const IntlWrapper *
+ pIntlWrapper = 0) const;
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+
+#endif
diff --git a/svx/inc/svx/sdasaitm.hxx b/svx/inc/svx/sdasaitm.hxx
new file mode 100644
index 000000000000..882c25a1fdaf
--- /dev/null
+++ b/svx/inc/svx/sdasaitm.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDASAITM_HXX
+#define _SDASAITM_HXX
+
+#include <svl/poolitem.hxx>
+#include <tools/list.hxx>
+
+class SdrCustomShapeAdjustmentValue
+{
+ sal_uInt32 nValue;
+
+ friend class SdrCustomShapeAdjustmentItem;
+
+ public :
+
+ void SetValue( sal_Int32 nVal ) { nValue = nVal; };
+ sal_Int32 GetValue() const { return nValue; };
+
+};
+
+class SdrCustomShapeAdjustmentItem : public SfxPoolItem
+{
+ List aAdjustmentValueList;
+
+ public :
+
+ TYPEINFO();
+ SVX_DLLPUBLIC SdrCustomShapeAdjustmentItem();
+ SdrCustomShapeAdjustmentItem( SvStream& rIn, sal_uInt16 nVersion );
+ SVX_DLLPUBLIC ~SdrCustomShapeAdjustmentItem();
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePresentation,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresentationMetric,
+ String &rText, const IntlWrapper * = 0) const;
+ virtual SfxPoolItem* Create( SvStream&, sal_uInt16 nItem ) const;
+ virtual SvStream& Store( SvStream&, sal_uInt16 nVersion ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual sal_uInt16 GetVersion( sal_uInt16 nFileFormatVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+
+ sal_uInt32 GetCount() const { return aAdjustmentValueList.Count(); };
+ SVX_DLLPUBLIC const SdrCustomShapeAdjustmentValue& GetValue( sal_uInt32 nIndex ) const;
+ SVX_DLLPUBLIC void SetValue( sal_uInt32 nIndex,
+ const SdrCustomShapeAdjustmentValue& rVal );
+};
+
+#endif
+
diff --git a/svx/inc/svx/sdasitm.hxx b/svx/inc/svx/sdasitm.hxx
new file mode 100644
index 000000000000..0eee8e872453
--- /dev/null
+++ b/svx/inc/svx/sdasitm.hxx
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDASITM_HXX
+#define _SDASITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdooitm.hxx>
+#include <svl/stritem.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/uno/Any.hxx>
+#include <rtl/ustring.hxx>
+#include <hash_map>
+#include <map>
+#include "svx/svxdllapi.h"
+
+class SdrCustomShapeEngineItem : public SfxStringItem
+{
+ public :
+ SdrCustomShapeEngineItem();
+ SdrCustomShapeEngineItem( const String& rCustomShapeEngine );
+};
+
+class SdrCustomShapeDataItem : public SfxStringItem
+{
+ public :
+ SdrCustomShapeDataItem();
+ SdrCustomShapeDataItem( const String& rCustomShapeData );
+};
+
+class SVX_DLLPUBLIC SdrCustomShapeGeometryItem : public SfxPoolItem
+{
+public:
+ typedef std::pair < const ::rtl::OUString, const ::rtl::OUString > PropertyPair;
+
+private:
+ struct SVX_DLLPRIVATE PropertyEq
+ {
+ bool operator()( const rtl::OUString&, const rtl::OUString& ) const;
+ };
+ struct SVX_DLLPRIVATE PropertyPairEq
+ {
+ bool operator()( const SdrCustomShapeGeometryItem::PropertyPair&, const SdrCustomShapeGeometryItem::PropertyPair& ) const;
+ };
+ struct SVX_DLLPRIVATE PropertyPairHash
+ {
+ size_t operator()( const SdrCustomShapeGeometryItem::PropertyPair &r1 ) const;
+ };
+ typedef std::hash_map < PropertyPair, sal_Int32, PropertyPairHash, PropertyPairEq > PropertyPairHashMap;
+ typedef std::hash_map< rtl::OUString, sal_Int32, rtl::OUStringHash, PropertyEq > PropertyHashMap;
+
+ PropertyHashMap aPropHashMap;
+ PropertyPairHashMap aPropPairHashMap;
+
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aPropSeq;
+
+ public :
+
+ TYPEINFO();
+
+ SdrCustomShapeGeometryItem();
+ SdrCustomShapeGeometryItem( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& );
+ SdrCustomShapeGeometryItem( SvStream& rIn, sal_uInt16 nVersion );
+ ~SdrCustomShapeGeometryItem();
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePresentation,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresentationMetric,
+ String &rText, const IntlWrapper * = 0) const;
+
+ virtual SfxPoolItem* Create( SvStream&, sal_uInt16 nItem ) const;
+ virtual SvStream& Store( SvStream&, sal_uInt16 nVersion ) const;
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual sal_uInt16 GetVersion( sal_uInt16 nFileFormatVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& GetGeometry() const;
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+ com::sun::star::uno::Any* GetPropertyValueByName( const rtl::OUString& rPropName );
+ com::sun::star::uno::Any* GetPropertyValueByName( const rtl::OUString& rPropName, const rtl::OUString& rPropName2 );
+
+ void SetPropertyValue( const com::sun::star::beans::PropertyValue& rPropVal );
+ void SetPropertyValue( const rtl::OUString& rSequenceName, const com::sun::star::beans::PropertyValue& rPropVal );
+
+ void ClearPropertyValue( const rtl::OUString& rPropertyName );
+ void ClearPropertyValue( const rtl::OUString& rSequenceName, const rtl::OUString& rPropertyName );
+};
+
+class SdrCustomShapeReplacementURLItem : public SfxStringItem
+{
+ public :
+ SdrCustomShapeReplacementURLItem();
+ SdrCustomShapeReplacementURLItem( const String& rCustomShapeReplacementURL );
+};
+
+//---------------------------
+// class SdrTextWordWrapItem
+//---------------------------
+class SdrTextWordWrapItem : public SdrOnOffItem {
+public:
+ SdrTextWordWrapItem( BOOL bAuto = FALSE ): SdrOnOffItem( SDRATTR_TEXT_WORDWRAP, bAuto ) {}
+ SdrTextWordWrapItem( SvStream& rIn ) : SdrOnOffItem( SDRATTR_TEXT_WORDWRAP, rIn ) {}
+};
+
+//-------------------------------
+// class SdrTextAutoGrowSizeItem
+//-------------------------------
+class SdrTextAutoGrowSizeItem : public SdrOnOffItem {
+public:
+ SdrTextAutoGrowSizeItem( BOOL bAuto = FALSE ): SdrOnOffItem( SDRATTR_TEXT_AUTOGROWSIZE, bAuto ) {}
+ SdrTextAutoGrowSizeItem( SvStream& rIn ) : SdrOnOffItem( SDRATTR_TEXT_AUTOGROWSIZE, rIn ) {}
+};
+
+#endif
+
diff --git a/svx/inc/svx/sderitm.hxx b/svx/inc/svx/sderitm.hxx
new file mode 100644
index 000000000000..37c63a2cbc35
--- /dev/null
+++ b/svx/inc/svx/sderitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDERITM_HXX
+#define _SDERITM_HXX
+
+#include <svx/sdmetitm.hxx>
+#include <svx/svddef.hxx>
+
+//------------------------------
+// class SdrEckenradiusItem
+//------------------------------
+class SdrEckenradiusItem: public SdrMetricItem {
+public:
+ SdrEckenradiusItem(long nRadius=0): SdrMetricItem(SDRATTR_ECKENRADIUS,nRadius) {}
+ SdrEckenradiusItem(SvStream& rIn) : SdrMetricItem(SDRATTR_ECKENRADIUS,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdgcoitm.hxx b/svx/inc/svx/sdgcoitm.hxx
new file mode 100644
index 000000000000..8ed0c2a0bb04
--- /dev/null
+++ b/svx/inc/svx/sdgcoitm.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGCOITM_HXX
+#define _SDGCOITM_HXX
+
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//-----------------
+// SdrGrafRedItem -
+//-----------------
+
+class SVX_DLLPUBLIC SdrGrafRedItem : public SdrSignedPercentItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafRedItem( short nRedPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFRED, nRedPercent ) {}
+ SdrGrafRedItem( SvStream& rIn ) : SdrSignedPercentItem( SDRATTR_GRAFRED, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+//-------------------
+// SdrGrafGreenItem -
+//-------------------
+
+class SVX_DLLPUBLIC SdrGrafGreenItem : public SdrSignedPercentItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafGreenItem( short nGreenPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFGREEN, nGreenPercent ) {}
+ SdrGrafGreenItem( SvStream& rIn ) : SdrSignedPercentItem( SDRATTR_GRAFGREEN, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+//-------------------
+// SdrGrafBlueItem -
+//-------------------
+
+class SVX_DLLPUBLIC SdrGrafBlueItem : public SdrSignedPercentItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafBlueItem( short nBluePercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFBLUE, nBluePercent ) {}
+ SdrGrafBlueItem( SvStream& rIn ) : SdrSignedPercentItem( SDRATTR_GRAFBLUE, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+#endif // _SDGCOITM_HXX
diff --git a/svx/inc/svx/sdgcpitm.hxx b/svx/inc/svx/sdgcpitm.hxx
new file mode 100644
index 000000000000..9980db89a858
--- /dev/null
+++ b/svx/inc/svx/sdgcpitm.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGCPITM_HXX
+#define _SDGCPITM_HXX
+
+#include <svx/grfcrop.hxx>
+#include <svx/svddef.hxx>
+
+//------------------
+// SdrGrafCropItem -
+//------------------
+
+class SVX_DLLPUBLIC SdrGrafCropItem : public SvxGrfCrop
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafCropItem( sal_Int32 nLeftCrop = 0, sal_Int32 nTopCrop = 0,
+ sal_Int32 nRightCrop = 0, sal_Int32 nBottomCrop = 0,
+ USHORT nWhichId = SDRATTR_GRAFCROP ) :
+ SvxGrfCrop( nLeftCrop, nRightCrop, nTopCrop, nBottomCrop, nWhichId ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+ virtual USHORT GetVersion( USHORT nFileVersion ) const;
+};
+
+#endif // _SDGCPITM_HXX
diff --git a/svx/inc/svx/sdggaitm.hxx b/svx/inc/svx/sdggaitm.hxx
new file mode 100644
index 000000000000..13026e67988b
--- /dev/null
+++ b/svx/inc/svx/sdggaitm.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGGAITM_HXX
+#define _SDGGAITM_HXX
+
+#include <svl/intitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//----------------------
+// SdrGrafGamma100Item -
+//----------------------
+
+class SVX_DLLPUBLIC SdrGrafGamma100Item : public SfxUInt32Item
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafGamma100Item( ULONG nGamma100 = 100 ) : SfxUInt32Item( SDRATTR_GRAFGAMMA, nGamma100 ) {}
+ SdrGrafGamma100Item( SvStream& rIn ) : SfxUInt32Item( SDRATTR_GRAFGAMMA, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+#endif // _SDGGAITM_HXX
diff --git a/svx/inc/svx/sdginitm.hxx b/svx/inc/svx/sdginitm.hxx
new file mode 100644
index 000000000000..ca43ea6b2b31
--- /dev/null
+++ b/svx/inc/svx/sdginitm.hxx
@@ -0,0 +1,52 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGINITM_HXX
+#define _SDGINITM_HXX
+
+#include <svx/sdooitm.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//--------------------
+// SdrGrafInvertItem -
+//--------------------
+
+class SVX_DLLPUBLIC SdrGrafInvertItem : public SdrOnOffItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafInvertItem( BOOL bInvert = FALSE ) : SdrOnOffItem( SDRATTR_GRAFINVERT, bInvert ) {}
+ SdrGrafInvertItem( SvStream& rIn ) : SdrOnOffItem( SDRATTR_GRAFINVERT, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+#endif // _SDGINITM_HXX
diff --git a/svx/inc/svx/sdgluitm.hxx b/svx/inc/svx/sdgluitm.hxx
new file mode 100644
index 000000000000..41f81f168b24
--- /dev/null
+++ b/svx/inc/svx/sdgluitm.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGLUITM_HXX
+#define _SDGLUITM_HXX
+
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//-----------------------
+// SdrGrafLuminanceItem -
+//-----------------------
+
+class SVX_DLLPUBLIC SdrGrafLuminanceItem : public SdrSignedPercentItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafLuminanceItem( short nLuminancePercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFLUMINANCE, nLuminancePercent ) {}
+ SdrGrafLuminanceItem( SvStream& rIn ) : SdrSignedPercentItem( SDRATTR_GRAFLUMINANCE, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+//----------------------
+// SdrGrafContrastItem -
+//----------------------
+
+class SVX_DLLPUBLIC SdrGrafContrastItem : public SdrSignedPercentItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafContrastItem( short nContrastPercent = 0 ) : SdrSignedPercentItem( SDRATTR_GRAFCONTRAST, nContrastPercent ) {}
+ SdrGrafContrastItem( SvStream& rIn ) : SdrSignedPercentItem( SDRATTR_GRAFCONTRAST, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+#endif // _SDGLUITM_HXX
diff --git a/svx/inc/svx/sdgmoitm.hxx b/svx/inc/svx/sdgmoitm.hxx
new file mode 100644
index 000000000000..77577b31b7d2
--- /dev/null
+++ b/svx/inc/svx/sdgmoitm.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGMOITM_HXX
+#define _SDGMOITM_HXX
+
+#include <svtools/grfmgr.hxx>
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//------------------
+// SdrGrafModeItem -
+//------------------
+
+class SVX_DLLPUBLIC SdrGrafModeItem : public SfxEnumItem
+{
+public:
+
+ TYPEINFO();
+
+ SdrGrafModeItem( GraphicDrawMode eMode = GRAPHICDRAWMODE_STANDARD ) : SfxEnumItem( SDRATTR_GRAFMODE, (USHORT)eMode ) {}
+ SdrGrafModeItem( SvStream& rIn ) : SfxEnumItem( SDRATTR_GRAFMODE, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+ virtual USHORT GetValueCount() const;
+ GraphicDrawMode GetValue() const { return (GraphicDrawMode) SfxEnumItem::GetValue(); }
+
+ virtual String GetValueTextByPos( USHORT nPos ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String& rText, const IntlWrapper * = 0) const;
+
+};
+
+#endif // _SDGMOITM_HXX
diff --git a/svx/inc/svx/sdgtritm.hxx b/svx/inc/svx/sdgtritm.hxx
new file mode 100644
index 000000000000..47359d9b6bbf
--- /dev/null
+++ b/svx/inc/svx/sdgtritm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDGTRITM_HXX
+#define _SDGTRITM_HXX
+
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//--------------------------
+// SdrGrafTransparenceItem -
+//--------------------------
+
+class SVX_DLLPUBLIC SdrGrafTransparenceItem : public SdrPercentItem
+{
+public:
+
+ TYPEINFO();
+ SdrGrafTransparenceItem( USHORT nTransparencePercent = 0 ) : SdrPercentItem( SDRATTR_GRAFTRANSPARENCE, nTransparencePercent ) {}
+ SdrGrafTransparenceItem( SvStream& rIn ) : SdrPercentItem( SDRATTR_GRAFTRANSPARENCE, rIn ) {}
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+};
+
+#endif // _SDGTRITM_HXX
diff --git a/svx/inc/svx/sdmetitm.hxx b/svx/inc/svx/sdmetitm.hxx
new file mode 100644
index 000000000000..6e74cba29a59
--- /dev/null
+++ b/svx/inc/svx/sdmetitm.hxx
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDMETITM_HXX
+#define _SDMETITM_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+//------------------------------------------------------------
+// class SdrAngleItem
+// Fuer alle Metriken. GetPresentation liefert dann bei
+// Value=2500 z.B. ein "25mm".
+//------------------------------------------------------------
+class SVX_DLLPUBLIC SdrMetricItem: public SfxInt32Item {
+public:
+ TYPEINFO();
+ SdrMetricItem(): SfxInt32Item() {}
+ SdrMetricItem(USHORT nId, INT32 nVal=0): SfxInt32Item(nId,nVal) {}
+ SdrMetricItem(USHORT nId, SvStream& rIn): SfxInt32Item(nId,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual FASTBOOL HasMetrics() const;
+ virtual FASTBOOL ScaleMetrics(long nMul, long nDiv);
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String& rText, const IntlWrapper * = 0) const;
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+
+#endif
diff --git a/svx/inc/svx/sdooitm.hxx b/svx/inc/svx/sdooitm.hxx
new file mode 100644
index 000000000000..415cfd151bc9
--- /dev/null
+++ b/svx/inc/svx/sdooitm.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDOOITM_HXX
+#define _SDOOITM_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+//------------------------------------------------------------
+// class SdrOnOffItem
+// hier liefert GetValueTextByVal() "an" oder "aus"
+// anstelle von "TRUE" und "FALSE"
+//------------------------------------------------------------
+class SVX_DLLPUBLIC SdrOnOffItem: public SfxBoolItem {
+public:
+ TYPEINFO();
+ SdrOnOffItem(): SfxBoolItem() {}
+ SdrOnOffItem(USHORT nId, BOOL bOn=FALSE): SfxBoolItem(nId,bOn) {}
+ SdrOnOffItem(USHORT nId, SvStream& rIn): SfxBoolItem(nId,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual String GetValueTextByVal(BOOL bVal) const;
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+
+#endif
diff --git a/svx/inc/svx/sdprcitm.hxx b/svx/inc/svx/sdprcitm.hxx
new file mode 100644
index 000000000000..59f31998b71a
--- /dev/null
+++ b/svx/inc/svx/sdprcitm.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDPRCITM_HXX
+#define _SDPRCITM_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+//------------------------------------------------------------
+// class SdrPercentItem
+// Ganze Prozente von 0
+//------------------------------------------------------------
+
+class SVX_DLLPUBLIC SdrPercentItem : public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ SdrPercentItem(): SfxUInt16Item() {}
+ SdrPercentItem(USHORT nId, UINT16 nVal=0): SfxUInt16Item(nId,nVal) {}
+ SdrPercentItem(USHORT nId, SvStream& rIn): SfxUInt16Item(nId,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+//------------------------------------------------------------
+// class SdrSignedPercentItem
+// Ganze Prozente von +/-
+//------------------------------------------------------------
+
+class SVX_DLLPUBLIC SdrSignedPercentItem : public SfxInt16Item
+{
+public:
+ TYPEINFO();
+ SdrSignedPercentItem(): SfxInt16Item() {}
+ SdrSignedPercentItem( USHORT nId, INT16 nVal = 0 ) : SfxInt16Item( nId,nVal ) {}
+ SdrSignedPercentItem( USHORT nId, SvStream& rIn ) : SfxInt16Item( nId,rIn ) {}
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0 ) const;
+
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+
+#endif
diff --git a/svx/inc/svx/sdr/animation/animationstate.hxx b/svx/inc/svx/sdr/animation/animationstate.hxx
new file mode 100644
index 000000000000..3728d1724cd2
--- /dev/null
+++ b/svx/inc/svx/sdr/animation/animationstate.hxx
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ANIMATION_ANIMATIONSTATE_HXX
+#define _SDR_ANIMATION_ANIMATIONSTATE_HXX
+
+#include <sal/types.h>
+#include <vector>
+#include <svx/sdr/animation/scheduler.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContact;
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace animation
+ {
+ class PrimitiveAnimation : public Event
+ {
+ protected:
+ // the animated VOC
+ sdr::contact::ViewObjectContact& mrVOContact;
+
+ // the vetor of animated primitives
+ drawinglayer::primitive2d::Primitive2DSequence maAnimatedPrimitives;
+
+ // local helpers
+ double getSmallestNextTime(double fCurrentTime);
+ void prepareNextEvent();
+
+ public:
+ // basic constructor.
+ PrimitiveAnimation(sdr::contact::ViewObjectContact& rVOContact, const drawinglayer::primitive2d::Primitive2DSequence& rAnimatedPrimitives);
+
+ // destructor
+ virtual ~PrimitiveAnimation();
+
+ // execute event, from base class Event
+ virtual void Trigger(sal_uInt32 nTime);
+ };
+ } // end of namespace animation
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_ANIMATION_ANIMATIONSTATE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/animation/objectanimator.hxx b/svx/inc/svx/sdr/animation/objectanimator.hxx
new file mode 100644
index 000000000000..adc7f8ffebaf
--- /dev/null
+++ b/svx/inc/svx/sdr/animation/objectanimator.hxx
@@ -0,0 +1,57 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ANIMATION_OBJECTANIMATOR_HXX
+#define _SDR_ANIMATION_OBJECTANIMATOR_HXX
+
+#include <sal/types.h>
+#include <vector>
+#include <vcl/timer.hxx>
+#include <svx/sdr/animation/scheduler.hxx>
+#include <svx/sdr/animation/animationstate.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace animation
+ {
+ class primitiveAnimator : public Scheduler
+ {
+ public:
+ // basic constructor and destructor
+ primitiveAnimator();
+ SVX_DLLPUBLIC virtual ~primitiveAnimator();
+ };
+ } // end of namespace animation
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_ANIMATION_OBJECTANIMATOR_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/animation/scheduler.hxx b/svx/inc/svx/sdr/animation/scheduler.hxx
new file mode 100644
index 000000000000..21547ed51da0
--- /dev/null
+++ b/svx/inc/svx/sdr/animation/scheduler.hxx
@@ -0,0 +1,159 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ANIMATION_SCHEDULER_HXX
+#define _SDR_ANIMATION_SCHEDULER_HXX
+
+#include <sal/types.h>
+#include <vcl/timer.hxx>
+#include <svx/svxdllapi.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// event class
+
+namespace sdr
+{
+ namespace animation
+ {
+ class Event
+ {
+ // time of event in ms
+ sal_uInt32 mnTime;
+
+ // pointer for simply linked list
+ Event* mpNext;
+
+ public:
+ // constructor/destructor
+ Event(sal_uInt32 nTime);
+ SVX_DLLPUBLIC virtual ~Event();
+
+ // access to mpNext
+ Event* GetNext() const;
+ void SetNext(Event* pNew);
+
+ // get/set time
+ sal_uInt32 GetTime() const;
+ void SetTime(sal_uInt32 nNew);
+
+ // execute event
+ virtual void Trigger(sal_uInt32 nTime) = 0;
+ };
+ } // end of namespace animation
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+// eventlist class
+
+namespace sdr
+{
+ namespace animation
+ {
+ class EventList
+ {
+ // pointer to first entry
+ Event* mpHead;
+
+ public:
+ // constructor/destructor
+ EventList();
+ SVX_DLLPUBLIC virtual ~EventList();
+
+ // insert/remove time dependent
+ void Insert(Event* pNew);
+ void Remove(Event* pOld);
+
+ // clear list
+ void Clear();
+
+ // get first
+ Event* GetFirst();
+ };
+ } // end of namespace animation
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+// scheduler class
+
+namespace sdr
+{
+ namespace animation
+ {
+ class Scheduler : public Timer
+ {
+ // time in ms
+ sal_uInt32 mnTime;
+
+ // next delta time
+ sal_uInt32 mnDeltaTime;
+
+ // list of events
+ EventList maList;
+
+ // Flag which remembers if this timer is paused. Default
+ // is false.
+ bool mbIsPaused;
+
+ public:
+ // constructor/destructor
+ Scheduler();
+ SVX_DLLPUBLIC virtual ~Scheduler();
+
+ // From baseclass Timer, the timeout call
+ SVX_DLLPUBLIC virtual void Timeout();
+
+ // get time
+ sal_uInt32 GetTime();
+
+ // #i38135#
+ void SetTime(sal_uInt32 nTime);
+
+ // reset
+ void Reset(sal_uInt32 nTime);
+
+ // execute all ripe events, removes executed ones from the scheduler
+ void triggerEvents();
+
+ // re-start or stop timer according to event list
+ void checkTimeout();
+
+ // insert/remove events, wrapper to EventList methods
+ void InsertEvent(Event* pNew);
+ void RemoveEvent(Event* pOld);
+
+ // get/set pause
+ bool IsPaused() const { return mbIsPaused; }
+ void SetPaused(bool bNew);
+ };
+ } // end of namespace animation
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_ANIMATION_SCHEDULER_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx
new file mode 100644
index 000000000000..df8ee7c666a9
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <svx/sdr/attribute/sdrtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrFillTextAttribute
+ {
+ // shadow and text attributes
+ SdrFillAttribute maFill; // fill attributes (if used)
+ FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used)
+ SdrTextAttribute maTextAttribute; // text and text attributes (if used)
+
+ public:
+ SdrFillTextAttribute(
+ const SdrFillAttribute& rFill,
+ const FillGradientAttribute& rFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute);
+ SdrFillTextAttribute();
+ SdrFillTextAttribute(const SdrFillTextAttribute& rCandidate);
+ SdrFillTextAttribute& operator=(const SdrFillTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFillTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
+ const SdrTextAttribute& getText() const { return maTextAttribute; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx
new file mode 100644
index 000000000000..03b86ff33a0f
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRFORMTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRFORMTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <svx/xenum.hxx>
+#include <tools/color.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+class SfxItemSet;
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrFormTextAttribute;
+ class SdrFormTextOutlineAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrFormTextAttribute
+ {
+ private:
+ ImpSdrFormTextAttribute* mpSdrFormTextAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrFormTextAttribute(const SfxItemSet& rSet);
+ SdrFormTextAttribute();
+ SdrFormTextAttribute(const SdrFormTextAttribute& rCandidate);
+ SdrFormTextAttribute& operator=(const SdrFormTextAttribute& rCandidate);
+ ~SdrFormTextAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFormTextAttribute& rCandidate) const;
+
+ // data read access
+ sal_Int32 getFormTextDistance() const;
+ sal_Int32 getFormTextStart() const;
+ sal_Int32 getFormTextShdwXVal() const;
+ sal_Int32 getFormTextShdwYVal() const;
+ sal_uInt16 getFormTextShdwTransp() const;
+ XFormTextStyle getFormTextStyle() const;
+ XFormTextAdjust getFormTextAdjust() const;
+ XFormTextShadow getFormTextShadow() const;
+ Color getFormTextShdwColor() const;
+ const SdrFormTextOutlineAttribute& getOutline() const;
+ const SdrFormTextOutlineAttribute& getShadowOutline() const;
+ bool getFormTextMirror() const;
+ bool getFormTextOutline() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRFORMTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx b/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx
new file mode 100644
index 000000000000..fd72607b2f08
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrFormTextOutlineAttribute;
+ class LineAttribute;
+ class StrokeAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrFormTextOutlineAttribute
+ {
+ private:
+ ImpSdrFormTextOutlineAttribute* mpSdrFormTextOutlineAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrFormTextOutlineAttribute(
+ const LineAttribute& rLineAttribute,
+ const StrokeAttribute& rStrokeAttribute,
+ sal_uInt8 nTransparence);
+ SdrFormTextOutlineAttribute();
+ SdrFormTextOutlineAttribute(const SdrFormTextOutlineAttribute& rCandidate);
+ SdrFormTextOutlineAttribute& operator=(const SdrFormTextOutlineAttribute& rCandidate);
+ ~SdrFormTextOutlineAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFormTextOutlineAttribute& rCandidate) const;
+
+ // data read access
+ const LineAttribute& getLineAttribute() const;
+ const StrokeAttribute& getStrokeAttribute() const;
+ sal_uInt8 getTransparence() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx
new file mode 100644
index 000000000000..c2fa9200dfe8
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRLINEFILLSHADOWTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRLINEFILLSHADOWTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLineFillShadowTextAttribute : public SdrLineShadowTextAttribute
+ {
+ // add fill and transGradient attributes
+ SdrFillAttribute maFill; // fill attributes (if used)
+ FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used)
+
+ public:
+ SdrLineFillShadowTextAttribute(
+ const SdrLineAttribute& rLine,
+ const SdrFillAttribute& rFill,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const FillGradientAttribute& rFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute);
+ SdrLineFillShadowTextAttribute();
+ SdrLineFillShadowTextAttribute(const SdrLineFillShadowTextAttribute& rCandidate);
+ SdrLineFillShadowTextAttribute& operator=(const SdrLineFillShadowTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineFillShadowTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRLINEFILLSHADOWTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx
new file mode 100644
index 000000000000..e5d19cef5f4e
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRLINESHADOWTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRLINESHADOWTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/attribute/sdrshadowtextattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLineShadowTextAttribute : public SdrShadowTextAttribute
+ {
+ // line, shadow, lineStartEnd and text attributes
+ SdrLineAttribute maLine; // line attributes (if used)
+ SdrLineStartEndAttribute maLineStartEnd; // line start end (if used)
+
+ public:
+ SdrLineShadowTextAttribute(
+ const SdrLineAttribute& rLine,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute);
+ SdrLineShadowTextAttribute();
+ SdrLineShadowTextAttribute(const SdrLineShadowTextAttribute& rCandidate);
+ SdrLineShadowTextAttribute& operator=(const SdrLineShadowTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineShadowTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrLineAttribute& getLine() const { return maLine; }
+ const SdrLineStartEndAttribute& getLineStartEnd() const { return maLineStartEnd; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRLINESHADOWTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx
new file mode 100644
index 000000000000..f71a74d6a580
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRSHADOWTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRSHADOWTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <svx/sdr/attribute/sdrtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrShadowTextAttribute
+ {
+ // shadow and text attributes
+ SdrShadowAttribute maShadow; // shadow attributes (if used)
+ SdrTextAttribute maTextAttribute; // text and text attributes (if used)
+
+ public:
+ SdrShadowTextAttribute(
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute);
+ SdrShadowTextAttribute();
+ SdrShadowTextAttribute(const SdrShadowTextAttribute& rCandidate);
+ SdrShadowTextAttribute& operator=(const SdrShadowTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrShadowTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrShadowAttribute& getShadow() const { return maShadow; }
+ const SdrTextAttribute& getText() const { return maTextAttribute; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRSHADOWTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx
new file mode 100644
index 000000000000..f202eabbfbff
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_ATTRIBUTE_SDRTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <svx/xenum.hxx>
+#include <editeng/outlobj.hxx>
+#include <svx/sdtaitm.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+class SdrText;
+
+namespace drawinglayer { namespace animation {
+ class AnimationEntryList;
+}}
+
+namespace drawinglayer { namespace attribute {
+ class SdrFormTextAttribute;
+}}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrTextAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrTextAttribute
+ {
+ private:
+ ImpSdrTextAttribute* mpSdrTextAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrTextAttribute(
+ const SdrText& rSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
+ XFormTextStyle eFormTextStyle,
+ sal_Int32 aTextLeftDistance,
+ sal_Int32 aTextUpperDistance,
+ sal_Int32 aTextRightDistance,
+ sal_Int32 aTextLowerDistance,
+ SdrTextHorzAdjust aSdrTextHorzAdjust,
+ SdrTextVertAdjust aSdrTextVertAdjust,
+ bool bContour,
+ bool bFitToSize,
+ bool bHideContour,
+ bool bBlink,
+ bool bScroll,
+ bool bInEditMode,
+ bool bFixedCellHeight,
+ bool bWrongSpell);
+ SdrTextAttribute();
+ SdrTextAttribute(const SdrTextAttribute& rCandidate);
+ SdrTextAttribute& operator=(const SdrTextAttribute& rCandidate);
+ ~SdrTextAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrTextAttribute& rCandidate) const;
+
+ // data read access
+ const SdrText& getSdrText() const;
+ const OutlinerParaObject& getOutlinerParaObject() const;
+ bool isContour() const;
+ bool isFitToSize() const;
+ bool isHideContour() const;
+ bool isBlink() const;
+ bool isScroll() const;
+ bool isInEditMode() const;
+ bool isFixedCellHeight() const;
+ bool isWrongSpell() const;
+ const SdrFormTextAttribute& getSdrFormTextAttribute() const;
+ sal_Int32 getTextLeftDistance() const;
+ sal_Int32 getTextUpperDistance() const;
+ sal_Int32 getTextRightDistance() const;
+ sal_Int32 getTextLowerDistance() const;
+ sal_uInt32 getPropertiesVersion() const;
+ SdrTextHorzAdjust getSdrTextHorzAdjust() const;
+ SdrTextVertAdjust getSdrTextVertAdjust() const;
+
+ // helpers: animation timing generators
+ void getBlinkTextTiming(
+ drawinglayer::animation::AnimationEntryList& rAnimList) const;
+ void getScrollTextTiming(
+ drawinglayer::animation::AnimationEntryList& rAnimList,
+ double fFrameLength,
+ double fTextLength) const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/displayinfo.hxx b/svx/inc/svx/sdr/contact/displayinfo.hxx
new file mode 100644
index 000000000000..777e0abdd09b
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/displayinfo.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_DISPLAYINFO_HXX
+#define _SDR_CONTACT_DISPLAYINFO_HXX
+
+#include <sal/types.h>
+#include <svx/svdsob.hxx>
+#include <svtools/colorcfg.hxx>
+#include <vcl/region.hxx>
+#include <vector>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrPage;
+
+namespace sdr { namespace contact {
+ class ViewObjectContact;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC DisplayInfo
+ {
+ protected:
+ // The Layers which shall be processed (visible)
+ SetOfByte maProcessLayers;
+
+ // The redraw area, in logical coordinates of OutputDevice. If Region
+ // is empty, everything needs to be redrawn
+ Region maRedrawArea;
+
+ // bitfield
+
+ // Internal flag to know when the control layer is painted. Default is
+ // false. If set to true, painting of the page, page borders and
+ // the rasters will be suppressed as if mbPageProcessingActive is set (see there).
+ // This flag is set internally from the processing mechanism to avoid double page
+ // painting when the control layer needs to be painted as last layer
+ unsigned mbControlLayerProcessingActive : 1;
+
+ // Internal flag to decide if page stuff (background, border, MasterPage, grid, etc...)
+ // will be processed at all. This flag is user-defined and will not be changed from the
+ // processing mechanism. Default is true, thus set to false if PagePainting should be suppressed.
+ // For more granular switching page stuff painting on and off, use the according flags at the
+ // view (->Is*Visible())
+ unsigned mbPageProcessingActive : 1;
+
+ // Internal flag to remember if EnteredGroupDrawMode is active. Default is true
+ // since this mode starts activated and gets switched off when reacing
+ // the current group level. Should only be changed by instances which do
+ // primitive processing
+ unsigned mbGhostedDrawModeActive : 1;
+
+ // Internal flag to know if a MasterPage is processed as SubContent of another
+ // page. Initialized to false, this should only be changed from the instance which
+ // is processing the MasterPage asSubContent and knows what it does
+ unsigned mbSubContentActive : 1;
+
+ public:
+ // basic constructor.
+ DisplayInfo();
+
+ // destructor
+ virtual ~DisplayInfo();
+
+ // access to ProcessLayers
+ void SetProcessLayers(const SetOfByte& rSet);
+ const SetOfByte& GetProcessLayers() const { return maProcessLayers; }
+
+ // access to RedrawArea
+ void SetRedrawArea(const Region& rRegion);
+ const Region& GetRedrawArea() const { return maRedrawArea; }
+
+ // Access to ControlLayerProcessingActive flag
+ void SetControlLayerProcessingActive(bool bDoPaint);
+ bool GetControlLayerProcessingActive() const { return mbControlLayerProcessingActive; }
+
+ // Access to PageProcessingActive flag
+ void SetPageProcessingActive(bool bDoPaint);
+ bool GetPageProcessingActive() const { return mbPageProcessingActive; }
+
+ // Save the original DrawMode from outdev
+ void ClearGhostedDrawMode();
+ void SetGhostedDrawMode();
+ bool IsGhostedDrawModeActive() const { return mbGhostedDrawModeActive; }
+
+ // access to master page painting flag
+ bool GetSubContentActive() const { return mbSubContentActive; }
+ void SetSubContentActive(bool bNew);
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_DISPLAYINFO_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/objectcontact.hxx b/svx/inc/svx/sdr/contact/objectcontact.hxx
new file mode 100644
index 000000000000..d88ea3dc2a12
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/objectcontact.hxx
@@ -0,0 +1,229 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_OBJECTCONTACT_HXX
+#define _SDR_CONTACT_OBJECTCONTACT_HXX
+
+#include <svx/sdr/animation/objectanimator.hxx>
+#include "svx/svxdllapi.h"
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SetOfByte;
+class Rectangle;
+class SdrPageView;
+class OutputDevice;
+
+namespace sdr { namespace contact {
+ class DisplayInfo;
+ class ViewContact;
+ class ViewObjectContactRedirector;
+}}
+
+namespace sdr { namespace event {
+ class TimerEventHandler;
+}}
+
+namespace basegfx {
+ class B2DRange;
+ class B2DHomMatrix;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ObjectContact
+ {
+ private:
+ // make ViewObjectContact a friend to exclusively allow it to use
+ // AddViewObjectContact/RemoveViewObjectContact
+ friend class ViewObjectContact;
+
+ // All VOCs which are created using this OC, thus remembering this OC
+ // as a reference. All those VOCs need to be deleted when the OC goes down.
+ // Registering and de-registering is done in the VOC constructors/destructors.
+ std::vector< ViewObjectContact* > maViewObjectContactVector;
+
+ // A new ViewObjectContact was created and shall be remembered.
+ void AddViewObjectContact(ViewObjectContact& rVOContact);
+
+ // A ViewObjectContact was deleted and shall be forgotten.
+ virtual void RemoveViewObjectContact(ViewObjectContact& rVOContact);
+
+ // the primitiveAnimator which is used if this View and/or the contained primitives
+ // support animatedSwitchPrimitives
+ sdr::animation::primitiveAnimator maPrimitiveAnimator;
+
+ // the EventHandler for e.g. asynchronious loading of graphics
+ sdr::event::TimerEventHandler* mpEventHandler;
+
+ // The redirector. If set it is used to pipe all supported calls
+ // to the redirector
+ ViewObjectContactRedirector* mpViewObjectContactRedirector;
+
+ // the Primitive2DParameters containing view information
+ drawinglayer::geometry::ViewInformation2D maViewInformation2D;
+
+ // bitfield
+ // flag for preview renderer
+ unsigned mbIsPreviewRenderer : 1;
+
+ // method to create a EventHandler. Needs to give a result.
+ sdr::event::TimerEventHandler* CreateEventHandler();
+
+ protected:
+ // Interface to allow derivates to travel over the registered VOC's
+ sal_uInt32 getViewObjectContactCount() const { return maViewObjectContactVector.size(); }
+ ViewObjectContact* getViewObjectContact(sal_uInt32 a) const { return maViewObjectContactVector[a]; }
+
+ // interface to allow derivates to set PreviewRenderer flag
+ void setPreviewRenderer(bool bNew) { mbIsPreviewRenderer = bNew; }
+
+ // interface to allow derivates to set ViewInformation2D
+ void updateViewInformation2D(const drawinglayer::geometry::ViewInformation2D& rViewInformation2D) { maViewInformation2D = rViewInformation2D; }
+
+ public:
+ // basic constructor
+ ObjectContact();
+ virtual ~ObjectContact();
+
+ // LazyInvalidate request. This is used from the VOCs to mark that they
+ // got invalidated by an ActionCanged() call. An active view needs to remember
+ // this and take action on it. Default implementation directly calls back
+ // triggerLazyInvalidate() wich promptly handles the request
+ virtual void setLazyInvalidate(ViewObjectContact& rVOC);
+
+ // call this to support evtl. preparations for repaint. Default does nothing
+ virtual void PrepareProcessDisplay();
+
+ // Process the whole displaying
+ virtual void ProcessDisplay(DisplayInfo& rDisplayInfo);
+
+ // test if visualizing of entered groups is switched on at all. Default
+ // implementation returns sal_False.
+ virtual bool DoVisualizeEnteredGroup() const;
+
+ // get active group's (the entered group) ViewContact
+ virtual const ViewContact* getActiveViewContact() const;
+
+ // Invalidate given rectangle at the window/output which is represented by
+ // this ObjectContact. Default does nothing.
+ virtual void InvalidatePartOfView(const basegfx::B2DRange& rRange) const;
+
+ // Get info if given Rectangle is visible in this view
+ virtual bool IsAreaVisible(const basegfx::B2DRange& rRange) const;
+
+ // Get info about the need to visualize GluePoints. The default
+ // is that it is not necessary.
+ virtual bool AreGluePointsVisible() const;
+
+ // method to get the primitiveAnimator
+ sdr::animation::primitiveAnimator& getPrimitiveAnimator();
+
+ // method to get the EventHandler. It will
+ // return a existing one or create a new one using CreateEventHandler().
+ sdr::event::TimerEventHandler& GetEventHandler() const;
+
+ // delete the EventHandler
+ void DeleteEventHandler();
+
+ // test if there is an EventHandler without creating one on demand
+ bool HasEventHandler() const;
+
+ // check if text animation is allowed. Default is sal_true.
+ virtual bool IsTextAnimationAllowed() const;
+
+ // check if graphic animation is allowed. Default is sal_true.
+ virtual bool IsGraphicAnimationAllowed() const;
+
+ // check if asynchronious graphis loading is allowed. Default is sal_False.
+ virtual bool IsAsynchronGraphicsLoadingAllowed() const;
+
+ // access to ViewObjectContactRedirector
+ ViewObjectContactRedirector* GetViewObjectContactRedirector() const;
+ void SetViewObjectContactRedirector(ViewObjectContactRedirector* pNew);
+
+ // check if buffering of MasterPages is allowed. Default is sal_False.
+ virtual bool IsMasterPageBufferingAllowed() const;
+
+ // print? Default is false
+ virtual bool isOutputToPrinter() const;
+
+ // window? Default is true
+ virtual bool isOutputToWindow() const;
+
+ // VirtualDevice? Default is false
+ virtual bool isOutputToVirtualDevice() const;
+
+ // recording MetaFile? Default is false
+ virtual bool isOutputToRecordingMetaFile() const;
+
+ // pdf export? Default is false
+ virtual bool isOutputToPDFFile() const;
+
+ // gray display mode
+ virtual bool isDrawModeGray() const;
+
+ // gray display mode
+ virtual bool isDrawModeBlackWhite() const;
+
+ // high contrast display mode
+ virtual bool isDrawModeHighContrast() const;
+
+ // check if this is a preview renderer. Default is sal_False.
+ bool IsPreviewRenderer() const { return mbIsPreviewRenderer; }
+
+ // get Primitive2DParameters for this view
+ const drawinglayer::geometry::ViewInformation2D& getViewInformation2D() const { return maViewInformation2D; }
+
+ // access to SdrPageView. May return 0L like the default implementations do. Needs to be overloaded as needed.
+ virtual SdrPageView* TryToGetSdrPageView() const;
+
+ // access to OutputDevice. May return 0L like the default implementations do. Needs to be overloaded as needed.
+ virtual OutputDevice* TryToGetOutputDevice() const;
+
+ // reset ViewPort at internal ViewInformation2D. This is needed when the OC is used
+ // not for ProcessDisplay() but to get a VOC associated with it. When trying to get
+ // a sequence of primitives from the VOC then, the last initialized ViewPort from
+ // the last ProcessDisplay() is used for geometric visibility testing. If this is not
+ // wanted (like in such cases) this method is used. It will reuse the current
+ // ViewInformation2D, but clear the ViewPort (no ViewPort means all is visible)
+ void resetViewPort();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_OBJECTCONTACT_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/objectcontactofobjlistpainter.hxx b/svx/inc/svx/sdr/contact/objectcontactofobjlistpainter.hxx
new file mode 100644
index 000000000000..3f7211aa9dc0
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/objectcontactofobjlistpainter.hxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_OBJECTCONTACTOFOBJLISTPAINTER_HXX
+#define _SDR_CONTACT_OBJECTCONTACTOFOBJLISTPAINTER_HXX
+
+#include <svx/sdr/contact/objectcontact.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/svdpage.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrPage;
+class SdrObject;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ObjectContactPainter : public ObjectContact
+ {
+ protected:
+ // Hierarchy access methods
+ virtual sal_uInt32 GetPaintObjectCount() const = 0;
+ virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) const = 0;
+
+ public:
+ // basic constructor/destructor
+ ObjectContactPainter();
+ virtual ~ObjectContactPainter();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ // typedef for transferring SdrObject
+ typedef ::std::vector< SdrObject* > SdrObjectVector;
+
+ class SVX_DLLPUBLIC ObjectContactOfObjListPainter : public ObjectContactPainter
+ {
+ protected:
+ // Target OutputDevice
+ OutputDevice& mrTargetOutputDevice;
+
+ // Set StartPoint for next run, also given in constructor
+ SdrObjectVector maStartObjects;
+
+ // the processed page which is the base e.g. for PageNumberFields
+ const SdrPage* mpProcessedPage;
+
+ // Hierarchy access methods
+ virtual sal_uInt32 GetPaintObjectCount() const;
+ virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) const;
+
+ public:
+ // basic constructor/destructor
+ ObjectContactOfObjListPainter(
+ OutputDevice& rTargetDevice,
+ const SdrObjectVector& rObjects,
+ const SdrPage* pProcessedPage);
+ virtual ~ObjectContactOfObjListPainter();
+
+ // Process the whole displaying
+ virtual void ProcessDisplay(DisplayInfo& rDisplayInfo);
+
+ // access to OutputDevice. May return 0L like the default implementations do. Needs to be overloaded as needed.
+ virtual OutputDevice* TryToGetOutputDevice() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ObjectContactOfPagePainter : public ObjectContactPainter
+ {
+ protected:
+ // the original ObjectContact this painter is working on
+ ObjectContact& mrOriginalObjectContact;
+
+ // Set StartPoint for next run, also given in constructor
+ SdrPageWeakRef mxStartPage;
+
+ // Hierarchy access methods
+ virtual sal_uInt32 GetPaintObjectCount() const;
+ virtual ViewContact& GetPaintObjectViewContact(sal_uInt32 nIndex) const;
+
+ public:
+ // basic constructor
+ ObjectContactOfPagePainter(
+ const SdrPage* pPage,
+ ObjectContact& rOriginalObjectContact);
+ virtual ~ObjectContactOfPagePainter();
+
+ // set another page
+ void SetStartPage(const SdrPage* pPage);
+ const SdrPage* GetStartPage() const { return mxStartPage.get(); }
+
+ // access to OutputDevice. May return 0L like the default implementations do. Needs to be overloaded as needed.
+ virtual OutputDevice* TryToGetOutputDevice() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_OBJECTCONTACTOFOBJLISTPAINTER_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/objectcontactofpageview.hxx b/svx/inc/svx/sdr/contact/objectcontactofpageview.hxx
new file mode 100644
index 000000000000..fc0a51c9eea8
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/objectcontactofpageview.hxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_OBJECTCONTACTOFPAGEVIEW_HXX
+#define _SDR_CONTACT_OBJECTCONTACTOFPAGEVIEW_HXX
+
+#include <svx/sdr/contact/objectcontact.hxx>
+#include <tools/gen.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrPageWindow;
+class SdrPage;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ObjectContactOfPageView : public ObjectContact, public Timer
+ {
+ protected:
+ // the owner of this ObjectContactOfPageView. Set from constructor and not
+ // to be changed in any way.
+ SdrPageWindow& mrPageWindow;
+
+ // Process the whole displaying, the real version
+ void DoProcessDisplay(DisplayInfo& rDisplayInfo);
+
+ public:
+ // access to SdrPageWindow
+ SdrPageWindow& GetPageWindow() const { return mrPageWindow; }
+
+ // access to SdrPage of PageView
+ SdrPage* GetSdrPage() const;
+
+ // basic constructor, used from SdrPageView.
+ ObjectContactOfPageView(SdrPageWindow& rPageWindow);
+ virtual ~ObjectContactOfPageView();
+
+ // LazyInvalidate request. This is used from the VOCs to mark that they
+ // got invalidated by an ActionCanged() call. An active view needs to remember
+ // this and take action on it. Default implementation directly calls back
+ // triggerLazyInvalidate() wich promptly handles the request
+ virtual void setLazyInvalidate(ViewObjectContact& rVOC);
+
+ // call this to support evtl. preparations for repaint
+ virtual void PrepareProcessDisplay();
+
+ // From baseclass Timer, the timeout call triggered by te LazyInvalidate mechanism
+ virtual void Timeout();
+
+ // Process the whole displaying
+ virtual void ProcessDisplay(DisplayInfo& rDisplayInfo);
+
+ // test if visualizing of entered groups is switched on at all
+ virtual bool DoVisualizeEnteredGroup() const;
+
+ // get active group's (the entered group) ViewContact
+ virtual const ViewContact* getActiveViewContact() const;
+
+ // Invalidate given rectangle at the window/output which is represented by
+ // this ObjectContact.
+ virtual void InvalidatePartOfView(const basegfx::B2DRange& rRange) const;
+
+ // Get info if given Rectangle is visible in this view
+ virtual bool IsAreaVisible(const basegfx::B2DRange& rRange) const;
+
+ // Get info about the need to visualize GluePoints. The default
+ // is that it is not necessary.
+ virtual bool AreGluePointsVisible() const;
+
+ // check if text animation is allowed.
+ virtual bool IsTextAnimationAllowed() const;
+
+ // check if graphic animation is allowed.
+ virtual bool IsGraphicAnimationAllowed() const;
+
+ // check if asynchronious graphis loading is allowed. Default is sal_False.
+ virtual bool IsAsynchronGraphicsLoadingAllowed() const;
+
+ // check if buffering of MasterPages is allowed. Default is sal_False.
+ virtual bool IsMasterPageBufferingAllowed() const;
+
+ // print? Default is false
+ virtual bool isOutputToPrinter() const;
+
+ // window? Default is true
+ virtual bool isOutputToWindow() const;
+
+ // VirtualDevice? Default is false
+ virtual bool isOutputToVirtualDevice() const;
+
+ // recording MetaFile? Default is false
+ virtual bool isOutputToRecordingMetaFile() const;
+
+ // pdf export? Default is false
+ virtual bool isOutputToPDFFile() const;
+
+ // gray display mode
+ virtual bool isDrawModeGray() const;
+
+ // gray display mode
+ virtual bool isDrawModeBlackWhite() const;
+
+ // high contrast display mode
+ virtual bool isDrawModeHighContrast() const;
+
+ // overloaded access to SdrPageView
+ virtual SdrPageView* TryToGetSdrPageView() const;
+
+ // access to OutputDevice. May return 0L like the default implementations do. Needs to be overloaded as needed.
+ virtual OutputDevice* TryToGetOutputDevice() const;
+
+ /** sets all UNO controls which are associated with this ObjectContact to
+ design or alive mode.
+ */
+ void SetUNOControlsDesignMode( bool _bDesignMode ) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_OBJECTCONTACTOFPAGEVIEW_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/objectcontacttools.hxx b/svx/inc/svx/sdr/contact/objectcontacttools.hxx
new file mode 100644
index 000000000000..b7f22868ec57
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/objectcontacttools.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_OBJECTCONTACTTOOLS_HXX
+#define _SDR_CONTACT_OBJECTCONTACTTOOLS_HXX
+
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class OutputDevice;
+
+namespace drawinglayer { namespace processor2d {
+ class BaseProcessor2D;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ // create a mating VCL-Provessor for given OutputDevice. This includes
+ // looking for MetaFile-recording. The returned renderer changes owner,
+ // deletion is duty of the caller
+ drawinglayer::processor2d::BaseProcessor2D* createBaseProcessor2DFromOutputDevice(
+ OutputDevice& rTargetOutDev,
+ const drawinglayer::geometry::ViewInformation2D& rViewInformation2D);
+
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_OBJECTCONTACTTOOLS_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontact.hxx b/svx/inc/svx/sdr/contact/viewcontact.hxx
new file mode 100644
index 000000000000..f4675f2728fc
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontact.hxx
@@ -0,0 +1,172 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACT_HXX
+#define _SDR_CONTACT_VIEWCONTACT_HXX
+
+#include <sal/types.h>
+#include <tools/gen.hxx>
+#include "svx/svxdllapi.h"
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SetOfByte;
+class SdrPage;
+class SdrObject;
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ObjectContact;
+ class ViewObjectContact;
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewContact
+ {
+ private:
+ // make ViewObjectContact a friend to exclusively allow it to use
+ // AddViewObjectContact/RemoveViewObjectContact
+ friend class ViewObjectContact;
+
+ // List of ViewObjectContacts. This contains all VOCs which were constructed
+ // with this VC. Since the VOCs remember a reference to this VC, this list needs
+ // to be kept and is used e.g. at destructor to destroy all VOCs.
+ // Registering and de-registering is done in the VOC constructors/destructors.
+ std::vector< ViewObjectContact* > maViewObjectContactVector;
+
+ // Primitive2DSequence of the ViewContact. This contains all necessary information
+ // for the graphical visualisation and needs to be supported by all VCs which
+ // can be visualized.
+ drawinglayer::primitive2d::Primitive2DSequence mxViewIndependentPrimitive2DSequence;
+
+ // A new ViewObjectContact was created and shall be remembered.
+ void AddViewObjectContact(ViewObjectContact& rVOContact);
+
+ // A ViewObjectContact was deleted and shall be forgotten.
+ void RemoveViewObjectContact(ViewObjectContact& rVOContact);
+
+ // internal tooling to delete VOCs
+ void deleteAllVOCs();
+
+ protected:
+ // Interface to allow derivates to travel over the registered VOC's
+ sal_uInt32 getViewObjectContactCount() const { return maViewObjectContactVector.size(); }
+ ViewObjectContact* getViewObjectContact(sal_uInt32 a) const { return maViewObjectContactVector[a]; }
+
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something. Default is to create
+ // a standard ViewObjectContact containing the given ObjectContact and *this
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ // This method is responsible for creating the graphical visualisation data derived ONLY from
+ // the model data. It will be stored/buffered in mxViewIndependentPrimitive2DSequence. The default implementation
+ // creates a yellow replacement rectangle (1000, 1000, 5000, 3000) to visualize missing
+ // implementations. All implementations have to provide basic geometry here, this is the central
+ // visualisation method and will also be used for BoundRect computations in the long run.
+ // This means it's always an error when the default implementation is called and thus gets
+ // asserted there
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ // method for flushing View Independent Primitive2DSequence for VOC implementations
+ void flushViewIndependentPrimitive2DSequence() { mxViewIndependentPrimitive2DSequence.realloc(0); }
+
+ // basic constructor. Since this is a base class only, it shall
+ // never be called directly
+ ViewContact();
+
+ // Methods to react on start getting viewed or stop getting
+ // viewed. This info is derived from the count of members of
+ // registered ViewObjectContacts. Default does nothing.
+ virtual void StartGettingViewed();
+ virtual void StopGettingViewed();
+
+ public:
+ // basic destructor with needed cleanups
+ virtual ~ViewContact();
+
+ // get a Object-specific ViewObjectContact for a specific
+ // ObjectContact (->View). Always needs to return something.
+ ViewObjectContact& GetViewObjectContact(ObjectContact& rObjectContact);
+
+ // Test if this ViewContact has ViewObjectContacts at all. This can
+ // be used to test if this ViewContact is visualized ATM or not
+ bool HasViewObjectContacts(bool bExcludePreviews = false) const;
+
+ // Check if this primitive is animated in any OC (View) which means it has
+ // generated a PrimitiveAnimation in it's VOC
+ bool isAnimatedInAnyViewObjectContact() const;
+
+ // Access to possible sub-hierarchy and parent. GetObjectCount() default is 0L
+ // and GetViewContact default pops up an assert since it's an error if
+ // GetObjectCount has a result != 0 and it's not overloaded.
+ virtual sal_uInt32 GetObjectCount() const;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const;
+ virtual ViewContact* GetParentContact() const;
+
+ // React on insertion of a child into DRawHierarchy starting
+ // from this object
+ void ActionChildInserted(ViewContact& rChild);
+
+ // React on changes of the object of this ViewContact
+ virtual void ActionChanged();
+
+ // access to SdrObject and/or SdrPage. May return 0L like the default
+ // implementations do. Needs to be overloaded as needed.
+ virtual SdrObject* TryToGetSdrObject() const;
+ virtual SdrPage* TryToGetSdrPage() const;
+
+ // access to the local primitive. This will ensure that the primitive is
+ // current in comparing the local one with a fresh created incarnation
+ drawinglayer::primitive2d::Primitive2DSequence getViewIndependentPrimitive2DSequence() const;
+
+ // add Gluepoints (if available)
+ virtual drawinglayer::primitive2d::Primitive2DSequence createGluePointPrimitive2DSequence() const;
+
+ // delete all existing VOCs including DrawHierarchy which will invalidate all
+ // visualisations, too. Used mostly at object removal from DrawHierarchy to
+ // delete all existing VOCs by purpose, but can also be used for other purposes.
+ // It is always possible to delete the VOCs, these are re-created on demand
+ void flushViewObjectContacts(bool bWithHierarchy = true);
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACT_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3d.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3d.hxx
new file mode 100644
index 000000000000..b8e30b320a79
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3d.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr { namespace contact {
+ class ViewContactOfE3dScene;
+}}
+
+namespace drawinglayer { namespace attribute {
+ class SdrLineAttribute;
+}}
+
+namespace basegfx {
+ class BColor;
+ class B3DHomMatrix;
+}
+
+class E3dObject;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfE3d : public ViewContactOfSdrObj
+ {
+ protected:
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ public:
+ // basic constructor, used from E3dObject.
+ ViewContactOfE3d(E3dObject& rObj);
+ virtual ~ViewContactOfE3d();
+
+ // access to E3dObject
+ E3dObject& GetE3dObject() const
+ {
+ return (E3dObject&)GetSdrObject();
+ }
+
+ // public helpers
+ drawinglayer::primitive2d::Primitive2DSequence impCreateWithGivenPrimitive3DSequence(
+ const drawinglayer::primitive3d::Primitive3DSequence& rxContent3D) const;
+
+ //////////////////////////////////////////////////////////////////////////////
+ // primitive stuff
+
+ protected:
+ // Primitive3DSequence of the ViewContact. This contains all necessary information
+ // for the graphical visualisation and needs to be supported by all 3D VCs which
+ // can be visualized. It does NOT contain the object transformation to be able to
+ // buffer for all possible usages
+ drawinglayer::primitive3d::Primitive3DSequence mxViewIndependentPrimitive3DSequence;
+
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in mxViewIndependentPrimitive3DSequence, but without object transformation
+ virtual drawinglayer::primitive3d::Primitive3DSequence createViewIndependentPrimitive3DSequence() const = 0;
+
+ // This method is responsible for creating the graphical visualisation data derived ONLY from
+ // the model data. The default implementation will try to create a 3D to 2D embedding (will work
+ // when scene is known) which can then be used for 2D processing concerning ranges
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ // helper to enable test-visualisation of invisible 3D obects
+ drawinglayer::attribute::SdrLineAttribute* impCreateFallbackLineAttribute(const basegfx::BColor& rBColor) const;
+
+ public:
+ // access to the local primitive without the object's local 3D transform. This is e.g. needed
+ // to get the not-yet transformed BoundVolume for e.g. interactions
+ drawinglayer::primitive3d::Primitive3DSequence getVIP3DSWithoutObjectTransform() const;
+
+ // access to the local primitive. This will ensure that the list is
+ // current in comparing the local list content with a fresh created incarnation. It will
+ // use getVIP3DSWithoutObjectTransform and embed to 3d transform primitive when object's
+ // local 3d transform is used
+ drawinglayer::primitive3d::Primitive3DSequence getViewIndependentPrimitive3DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dcube.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dcube.hxx
new file mode 100644
index 000000000000..cccb51a4b8cc
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dcube.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+#include <svx/sdr/contact/viewcontactofe3d.hxx>
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class E3dCubeObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfE3dCube : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dCube(E3dCubeObj& rCubeObj);
+ virtual ~ViewContactOfE3dCube();
+
+ // access to SdrObject
+ E3dCubeObj& GetE3dCubeObj() const
+ {
+ return (E3dCubeObj&)GetE3dObject();
+ }
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DSequence createViewIndependentPrimitive3DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3DCUBE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dextrude.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dextrude.hxx
new file mode 100644
index 000000000000..4fa152af362d
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dextrude.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+#include <svx/sdr/contact/viewcontactofe3d.hxx>
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class E3dExtrudeObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfE3dExtrude : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dExtrude(E3dExtrudeObj& rExtrude);
+ virtual ~ViewContactOfE3dExtrude();
+
+ // access to SdrObject
+ E3dExtrudeObj& GetE3dExtrudeObj() const
+ {
+ return (E3dExtrudeObj&)GetE3dObject();
+ }
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DSequence createViewIndependentPrimitive3DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3DEXTRUDE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dlathe.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dlathe.hxx
new file mode 100644
index 000000000000..5c8502348b00
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dlathe.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+#include <svx/sdr/contact/viewcontactofe3d.hxx>
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class E3dLatheObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfE3dLathe : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dLathe(E3dLatheObj& rLathe);
+ virtual ~ViewContactOfE3dLathe();
+
+ // access to SdrObject
+ E3dLatheObj& GetE3dLatheObj() const
+ {
+ return (E3dLatheObj&)GetE3dObject();
+ }
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DSequence createViewIndependentPrimitive3DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3DLATHE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dpolygon.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dpolygon.hxx
new file mode 100644
index 000000000000..f681655888aa
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dpolygon.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+#include <svx/sdr/contact/viewcontactofe3d.hxx>
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class E3dPolygonObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfE3dPolygon : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dPolygon(E3dPolygonObj& rPolygon);
+ virtual ~ViewContactOfE3dPolygon();
+
+ // access to SdrObject
+ E3dPolygonObj& GetE3dPolygonObj() const
+ {
+ return (E3dPolygonObj&)GetE3dObject();
+ }
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DSequence createViewIndependentPrimitive3DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3DPOLYGON_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx
new file mode 100644
index 000000000000..0b2efdc3d313
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3DSCENE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3DSCENE_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <drawinglayer/geometry/viewinformation3d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class E3dScene;
+
+namespace basegfx {
+ class B3DRange;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewContactOfE3dScene : public ViewContactOfSdrObj
+ {
+ protected:
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something. Default is to create
+ // a standard ViewObjectContact containing the given ObjectContact and *this
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dScene(E3dScene& rScene);
+
+ // access to SdrObject
+ E3dScene& GetE3dScene() const
+ {
+ return (E3dScene&)GetSdrObject();
+ }
+
+ // React on changes of the object of this ViewContact
+ virtual void ActionChanged();
+
+ // access to ViewInformation3D and ObjectTransformation
+ const drawinglayer::geometry::ViewInformation3D& getViewInformation3D(const ::basegfx::B3DRange& rContentRange) const;
+ const drawinglayer::geometry::ViewInformation3D& getViewInformation3D() const;
+ const basegfx::B2DHomMatrix& getObjectTransformation() const;
+
+ // attribute providers
+ const drawinglayer::attribute::SdrSceneAttribute& getSdrSceneAttribute() const;
+ const drawinglayer::attribute::SdrLightingAttribute& getSdrLightingAttribute() const;
+
+ // scene primitive creators. If pLayerVisibility is given, a visibility test with the LayerID and the
+ // given SetOfByte is done.
+ drawinglayer::primitive2d::Primitive2DSequence createScenePrimitive2DSequence(const SetOfByte* pLayerVisibility) const;
+
+ // helpers to get the sequence of all contained 3D primitives and it's range,
+ // regardless of layer or visibility constraints and using a neutral ViewInformation3D
+ drawinglayer::primitive3d::Primitive3DSequence getAllPrimitive3DSequence() const;
+ basegfx::B3DRange getAllContentRange3D() const;
+
+ protected:
+ // the 3d transformation stack
+ drawinglayer::geometry::ViewInformation3D maViewInformation3D;
+
+ // the object transformation
+ basegfx::B2DHomMatrix maObjectTransformation;
+
+ // attributes
+ drawinglayer::attribute::SdrSceneAttribute maSdrSceneAttribute;
+ drawinglayer::attribute::SdrLightingAttribute maSdrLightingAttribute;
+
+ // create methods for ViewInformation3D and ObjectTransformation
+ void createViewInformation3D(const ::basegfx::B3DRange& rContentRange);
+ void createObjectTransformation();
+
+ // attribute creators
+ void createSdrSceneAttribute();
+ void createSdrLightingAttribute();
+
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3DSCENE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dsphere.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dsphere.hxx
new file mode 100644
index 000000000000..68a64e888d91
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dsphere.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFE3D_HXX
+#include <svx/sdr/contact/viewcontactofe3d.hxx>
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class E3dSphereObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfE3dSphere : public ViewContactOfE3d
+ {
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfE3dSphere(E3dSphereObj& rSphere);
+ virtual ~ViewContactOfE3dSphere();
+
+ // access to SdrObject
+ E3dSphereObj& GetE3dSphereObj() const
+ {
+ return (E3dSphereObj&)GetE3dObject();
+ }
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored in the local primitive list. Default creates a yellow replacement rectangle.
+ virtual drawinglayer::primitive3d::Primitive3DSequence createViewIndependentPrimitive3DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFE3DSPHERE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofgraphic.hxx b/svx/inc/svx/sdr/contact/viewcontactofgraphic.hxx
new file mode 100644
index 000000000000..b207c3e7fbde
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofgraphic.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/contact/viewcontactoftextobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrGrafObj;
+namespace drawinglayer { namespace attribute { class SdrLineFillShadowTextAttribute; }}
+class GraphicAttr;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfGraphic : public ViewContactOfTextObj
+ {
+ private:
+ // helpers for constructing various primitive visualisations in various states
+ drawinglayer::primitive2d::Primitive2DSequence createVIP2DSForPresObj(
+ const basegfx::B2DHomMatrix& rObjectMatrix,
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute& rAttribute,
+ const GraphicAttr& rLocalGrafInfo) const;
+ drawinglayer::primitive2d::Primitive2DSequence createVIP2DSForDraft(
+ const basegfx::B2DHomMatrix& rObjectMatrix,
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute& rAttribute) const;
+
+ protected:
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ public:
+ // access to SdrObject
+ SdrGrafObj& GetGrafObject() const
+ {
+ return ((SdrGrafObj&)GetSdrObject());
+ }
+
+ // basic constructor, destructor
+ ViewContactOfGraphic(SdrGrafObj& rGrafObj);
+ virtual ~ViewContactOfGraphic();
+
+ // #i102380#
+ void flushGraphicObjects();
+
+ // helpers for viusualisation state
+ bool visualisationUsesPresObj() const;
+ bool visualisationUsesDraft() const;
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFGRAPHIC_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofgroup.hxx b/svx/inc/svx/sdr/contact/viewcontactofgroup.hxx
new file mode 100644
index 000000000000..189f69a7311b
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofgroup.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFGROUP_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFGROUP_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrObjGroup;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfGroup : public ViewContactOfSdrObj
+ {
+ protected:
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something. Default is to create
+ // a standard ViewObjectContact containing the given ObjectContact and *this
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ // internal access to SdrObject
+ SdrObjGroup& GetSdrObjGroup() const
+ {
+ return (SdrObjGroup&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfGroup(SdrObjGroup& rGroup);
+ virtual ~ViewContactOfGroup();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFGROUP_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofmasterpagedescriptor.hxx b/svx/inc/svx/sdr/contact/viewcontactofmasterpagedescriptor.hxx
new file mode 100644
index 000000000000..c408f1373e4c
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofmasterpagedescriptor.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/contact/viewcontact.hxx>
+#include <svx/sdrmasterpagedescriptor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SfxItemSet;
+class Bitmap;
+class MapMode;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfMasterPageDescriptor : public ViewContact
+ {
+ protected:
+ // the owner of this ViewContact. Set from constructor and not
+ // to be changed in any way.
+ sdr::MasterPageDescriptor& mrMasterPageDescriptor;
+
+ // Create a Object-Specific ViewObjectContact
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ // This method is responsible for creating the graphical visualisation data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ // basic constructor
+ ViewContactOfMasterPageDescriptor(sdr::MasterPageDescriptor& rDescriptor);
+
+ // The destructor.
+ virtual ~ViewContactOfMasterPageDescriptor();
+
+ // access to MasterPageDescriptor
+ sdr::MasterPageDescriptor& GetMasterPageDescriptor() const
+ {
+ return mrMasterPageDescriptor;
+ }
+
+ // Access to possible sub-hierarchy and parent
+ virtual sal_uInt32 GetObjectCount() const;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const;
+ virtual ViewContact* GetParentContact() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofpageobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofpageobj.hxx
new file mode 100644
index 000000000000..54d188d198cc
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofpageobj.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFPAGEOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFPAGEOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrPageObj;
+class SdrPage;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewContactOfPageObj : public ViewContactOfSdrObj
+ {
+ protected:
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ // create graphical visualisation data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ // Access to referenced page
+ const SdrPage* GetReferencedPage() const;
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfPageObj(SdrPageObj& rPageObj);
+ virtual ~ViewContactOfPageObj();
+
+ // #WIP# React on changes of the object of this ViewContact
+ virtual void ActionChanged();
+
+ // access to SdrObject
+ SdrPageObj& GetPageObj() const
+ {
+ return (SdrPageObj&)GetSdrObject();
+ }
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFPAGEOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrcaptionobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrcaptionobj.hxx
new file mode 100644
index 000000000000..5171ce75204f
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrcaptionobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrCaptionObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrCaptionObj : public ViewContactOfSdrRectObj
+ {
+ protected:
+ // internal access to SdrCaptionObj
+ SdrCaptionObj& GetCaptionObj() const
+ {
+ return (SdrCaptionObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrCaptionObj(SdrCaptionObj& rCaptionObj);
+ virtual ~ViewContactOfSdrCaptionObj();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRCAPTIONOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrcircobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrcircobj.hxx
new file mode 100644
index 000000000000..3d0ed6b56a59
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrcircobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrCircObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrCircObj : public ViewContactOfSdrRectObj
+ {
+ protected:
+ // internal access to SdrCircObj
+ SdrCircObj& GetCircObj() const
+ {
+ return (SdrCircObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrCircObj(SdrCircObj& rCircObj);
+ virtual ~ViewContactOfSdrCircObj();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRCIRCOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdredgeobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdredgeobj.hxx
new file mode 100644
index 000000000000..97ccf16c8c0a
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdredgeobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactoftextobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrEdgeObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrEdgeObj : public ViewContactOfTextObj
+ {
+ protected:
+ // internal access to SdrEdgeObj
+ SdrEdgeObj& GetEdgeObj() const
+ {
+ return (SdrEdgeObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrEdgeObj(SdrEdgeObj& rEdgeObj);
+ virtual ~ViewContactOfSdrEdgeObj();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDREDGEOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrmeasureobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrmeasureobj.hxx
new file mode 100644
index 000000000000..97f258b2cda5
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrmeasureobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactoftextobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrMeasureObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrMeasureObj : public ViewContactOfTextObj
+ {
+ protected:
+ // internal access to SdrMeasureObj
+ SdrMeasureObj& GetMeasureObj() const
+ {
+ return (SdrMeasureObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrMeasureObj(SdrMeasureObj& rMeasureObj);
+ virtual ~ViewContactOfSdrMeasureObj();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRMEASUREOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrmediaobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrmediaobj.hxx
new file mode 100644
index 000000000000..975ce214f3e8
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrmediaobj.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRMEDIAOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRMEDIAOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrMediaObj;
+namespace avmedia { class MediaItem; }
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewContactOfSdrMediaObj : public ViewContactOfSdrObj
+ {
+ friend class ViewObjectContactOfSdrMediaObj;
+
+ public:
+
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrMediaObj( SdrMediaObj& rMediaObj );
+ virtual ~ViewContactOfSdrMediaObj();
+
+ public:
+
+ // access to SdrMediaObj
+ SdrMediaObj& GetSdrMediaObj() const
+ {
+ return (SdrMediaObj&)GetSdrObject();
+ }
+
+ bool hasPreferredSize() const;
+ Size getPreferredSize() const;
+
+ void updateMediaItem( ::avmedia::MediaItem& rItem ) const;
+ void executeMediaItem( const ::avmedia::MediaItem& rItem );
+
+ protected:
+
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ // get notified if some properties have changed
+ virtual void mediaPropertiesChanged( const ::avmedia::MediaItem& rNewState );
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRMEDIAOBJ_HXX
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrobj.hxx
new file mode 100644
index 000000000000..c9ac57389799
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrobj.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDROBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDROBJ_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/contact/viewcontact.hxx>
+#include <svx/sdtakitm.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrObject;
+class GeoStat;
+class Bitmap;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewContactOfSdrObj : public ViewContact
+ {
+ protected:
+ // the owner of this ViewContact. Set from constructor and not
+ // to be changed in any way.
+ SdrObject& mrObject;
+
+ // Remember AnimationKind of object. Used to find out if that kind
+ // has changed in ActionChanged()
+ SdrTextAniKind meRememberedAnimationKind;
+
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ public:
+ // access to SdrObject
+ SdrObject& GetSdrObject() const
+ {
+ return mrObject;
+ }
+
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrObj(SdrObject& rObj);
+ virtual ~ViewContactOfSdrObj();
+
+ // Access to possible sub-hierarchy
+ virtual sal_uInt32 GetObjectCount() const;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const;
+ virtual ViewContact* GetParentContact() const;
+
+ // React on changes of the object of this ViewContact
+ virtual void ActionChanged();
+
+ // overload for acessing the SdrObject
+ virtual SdrObject* TryToGetSdrObject() const;
+
+ //////////////////////////////////////////////////////////////////////////////
+ // primitive stuff
+
+ // add Gluepoints (if available)
+ virtual drawinglayer::primitive2d::Primitive2DSequence createGluePointPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDROBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrobjcustomshape.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrobjcustomshape.hxx
new file mode 100644
index 000000000000..b58356283e57
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrobjcustomshape.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX
+
+#include <svx/sdr/contact/viewcontactoftextobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrObjCustomShape;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrObjCustomShape : public ViewContactOfTextObj
+ {
+ protected:
+ // internal access to SdrObjCustomShape
+ SdrObjCustomShape& GetCustomShapeObj() const
+ {
+ return (SdrObjCustomShape&)GetSdrObject();
+ }
+
+ // #i101684# internal tooling
+ basegfx::B2DRange getCorrectedTextBoundRect() const;
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrObjCustomShape(SdrObjCustomShape& rCustomShape);
+ virtual ~ViewContactOfSdrObjCustomShape();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDROBJCUSTOMSHAPE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx
new file mode 100644
index 000000000000..76ff4f8e5632
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrOle2Obj;
+class Graphic;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrOle2Obj : public ViewContactOfSdrRectObj
+ {
+ protected:
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something.
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ public:
+ // access to SdrOle2Obj
+ SdrOle2Obj& GetOle2Obj() const
+ {
+ return (SdrOle2Obj&)GetSdrObject();
+ }
+
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrOle2Obj(SdrOle2Obj& rOle2Obj);
+ virtual ~ViewContactOfSdrOle2Obj();
+
+ // helper for creating a OLE sequence for this object. It takes care od attributes, needed
+ // scaling (e.g. for EmptyPresObj's), the correct graphic and other stuff. It is used from
+ // createViewIndependentPrimitive2DSequence with false, and with evtl. HighContrast true
+ // from the VOC which knows that
+ drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequenceWithParameters(bool bHighContrast) const;
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data, just wraps to call createPrimitive2DSequenceWithParameters(false)
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrpage.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrpage.hxx
new file mode 100644
index 000000000000..54ddb9c299b3
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrpage.hxx
@@ -0,0 +1,311 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRPAGE_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRPAGE_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/contact/viewcontact.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrPage;
+
+namespace sdr { namespace contact {
+ class ViewContactOfSdrPage;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfPageSubObject : public ViewContact
+ {
+ protected:
+ ViewContactOfSdrPage& mrParentViewContactOfSdrPage;
+
+ public:
+ ViewContactOfPageSubObject(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageSubObject();
+
+ virtual ViewContact* GetParentContact() const;
+ const SdrPage& getPage() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfPageBackground : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfPageBackground(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageBackground();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfPageShadow : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfPageShadow(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageShadow();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfPageFill : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfPageFill(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageFill();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfMasterPage : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfMasterPage(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfMasterPage();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfOuterPageBorder : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfOuterPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfOuterPageBorder();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfInnerPageBorder : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfInnerPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfInnerPageBorder();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfPageHierarchy : public ViewContactOfPageSubObject
+ {
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
+ virtual ~ViewContactOfPageHierarchy();
+
+ virtual sal_uInt32 GetObjectCount() const;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfGrid : public ViewContactOfPageSubObject
+ {
+ protected:
+ // bitfield
+ unsigned mbFront : 1;
+
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfGrid(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront);
+ virtual ~ViewContactOfGrid();
+
+ bool getFront() const { return mbFront; }
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfHelplines : public ViewContactOfPageSubObject
+ {
+ protected:
+ // bitfield
+ unsigned mbFront : 1;
+
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+
+ public:
+ ViewContactOfHelplines(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront);
+ virtual ~ViewContactOfHelplines();
+
+ bool getFront() const { return mbFront; }
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrPage : public ViewContact
+ {
+ protected:
+ // the owner of this ViewContact. Set from constructor and not
+ // to be changed in any way.
+ SdrPage& mrPage;
+
+ // helper viewContacts to build a clear paint hierarchy
+ ViewContactOfPageBackground maViewContactOfPageBackground;
+ ViewContactOfPageShadow maViewContactOfPageShadow;
+ ViewContactOfPageFill maViewContactOfPageFill;
+ ViewContactOfMasterPage maViewContactOfMasterPage;
+ ViewContactOfOuterPageBorder maViewContactOfOuterPageBorder;
+ ViewContactOfInnerPageBorder maViewContactOfInnerPageBorder;
+ ViewContactOfGrid maViewContactOfGridBack;
+ ViewContactOfHelplines maViewContactOfHelplinesBack;
+ ViewContactOfPageHierarchy maViewContactOfPageHierarchy;
+ ViewContactOfGrid maViewContactOfGridFront;
+ ViewContactOfHelplines maViewContactOfHelplinesFront;
+
+ // Create a Object-Specific ViewObjectContact, set ViewContact and
+ // ObjectContact. Always needs to return something. Default is to create
+ // a standard ViewObjectContact containing the given ObjectContact and *this
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact);
+
+ public:
+ // access to SdrObject
+ SdrPage& GetSdrPage() const
+ {
+ return mrPage;
+ }
+
+ // basic constructor, used from SdrPage.
+ ViewContactOfSdrPage(SdrPage& rObj);
+ virtual ~ViewContactOfSdrPage();
+
+ // Access to possible sub-hierarchy
+ virtual sal_uInt32 GetObjectCount() const;
+ virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const;
+
+ // React on changes of the object of this ViewContact
+ virtual void ActionChanged();
+
+ // overload for acessing the SdrPage
+ virtual SdrPage* TryToGetSdrPage() const;
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRPAGE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrpathobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrpathobj.hxx
new file mode 100644
index 000000000000..1d2127a3ab80
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrpathobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactoftextobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrPathObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrPathObj : public ViewContactOfTextObj
+ {
+ protected:
+ // internal access to SdrPathObj
+ SdrPathObj& GetPathObj() const
+ {
+ return (SdrPathObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrPathObj(SdrPathObj& rTextObj);
+ virtual ~ViewContactOfSdrPathObj();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRPATHOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofsdrrectobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofsdrrectobj.hxx
new file mode 100644
index 000000000000..dddedd4e9f5b
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofsdrrectobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRRECTOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFSDRRECTOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactoftextobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrRectObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfSdrRectObj : public ViewContactOfTextObj
+ {
+ protected:
+ // internal access to SdrRectObj
+ SdrRectObj& GetRectObj() const
+ {
+ return (SdrRectObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfSdrRectObj(SdrRectObj& rTextObj);
+ virtual ~ViewContactOfSdrRectObj();
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFSDRRECTOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactoftextobj.hxx b/svx/inc/svx/sdr/contact/viewcontactoftextobj.hxx
new file mode 100644
index 000000000000..933199761f5a
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactoftextobj.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFTEXTOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFTEXTOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrTextObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContactOfTextObj : public ViewContactOfSdrObj
+ {
+ protected:
+ // internal access to SdrTextObj
+ SdrTextObj& GetTextObj() const
+ {
+ return (SdrTextObj&)GetSdrObject();
+ }
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfTextObj(SdrTextObj& rTextObj);
+ virtual ~ViewContactOfTextObj();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFTEXTOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofunocontrol.hxx b/svx/inc/svx/sdr/contact/viewcontactofunocontrol.hxx
new file mode 100644
index 000000000000..d0263ce60506
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofunocontrol.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_SDR_CONTACT_VIEWCONTACTOFUNOCONTROL_HXX
+#define SVX_SDR_CONTACT_VIEWCONTACTOFUNOCONTROL_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/uno/Reference.hxx>
+/** === end UNO includes === **/
+#include <svx/sdr/contact/viewcontactofsdrmediaobj.hxx>
+#include <svx/svxdllapi.h>
+
+#include <memory>
+
+class OutputDevice;
+class Window;
+class SdrUnoObj;
+namespace com { namespace sun { namespace star {
+ namespace awt {
+ class XControl;
+ class XControlContainer;
+ }
+} } }
+
+//........................................................................
+namespace sdr { namespace contact {
+//........................................................................
+
+ //====================================================================
+ //= ViewContactOfUnoControl
+ //====================================================================
+ class ViewContactOfUnoControl_Impl;
+ class SVX_DLLPRIVATE ViewContactOfUnoControl : public ViewContactOfSdrObj
+ {
+ private:
+ ::std::auto_ptr< ViewContactOfUnoControl_Impl > m_pImpl;
+
+ public:
+ // access to SdrObject
+ SdrUnoObj& GetSdrUnoObj() const
+ {
+ return ((SdrUnoObj&)GetSdrObject());
+ }
+
+ ViewContactOfUnoControl( SdrUnoObj& _rUnoObject );
+ virtual ~ViewContactOfUnoControl();
+
+ /** access control to selected members
+ */
+ struct SdrUnoObjAccessControl { friend class ::SdrUnoObj; private: SdrUnoObjAccessControl() { } };
+
+ /** retrieves a temporary XControl instance, whose parent is the given window
+ @seealso SdrUnoObj::GetTemporaryControlForWindow
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >
+ getTemporaryControlForWindow( const Window& _rWindow, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _inout_ControlContainer ) const;
+
+ protected:
+ virtual ViewObjectContact& CreateObjectSpecificViewObjectContact( ObjectContact& _rObjectContact );
+
+ private:
+ ViewContactOfUnoControl(); // never implemented
+ ViewContactOfUnoControl( const ViewContactOfUnoControl& ); // never implemented
+ ViewContactOfUnoControl& operator=( const ViewContactOfUnoControl& ); // never implemented
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+
+//........................................................................
+} } // namespace sdr::contact
+//........................................................................
+
+#endif // SVX_SDR_CONTACT_VIEWCONTACTOFUNOCONTROL_HXX
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewcontactofvirtobj.hxx b/svx/inc/svx/sdr/contact/viewcontactofvirtobj.hxx
new file mode 100644
index 000000000000..7aef09535149
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewcontactofvirtobj.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWCONTACTOFVIRTOBJ_HXX
+#define _SDR_CONTACT_VIEWCONTACTOFVIRTOBJ_HXX
+
+#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrVirtObj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewContactOfVirtObj : public ViewContactOfSdrObj
+ {
+ protected:
+ // internal access to SdrObject. Iplementation in *.cxx to avoid
+ // including SdrVirtObj here.
+ SdrVirtObj& GetVirtObj() const;
+
+ public:
+ // basic constructor, used from SdrObject.
+ ViewContactOfVirtObj(SdrVirtObj& rObj);
+ virtual ~ViewContactOfVirtObj();
+
+ // Access to possible sub-hierarchy
+ virtual sal_uInt32 GetObjectCount() const;
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data
+ // ONLY based on model data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createViewIndependentPrimitive2DSequence() const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWCONTACTOFVIRTOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontact.hxx b/svx/inc/svx/sdr/contact/viewobjectcontact.hxx
new file mode 100644
index 000000000000..3917caebef0e
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontact.hxx
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACT_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACT_HXX
+
+#include <sal/types.h>
+
+#include <vector>
+#include <tools/debug.hxx>
+#include <tools/gen.hxx>
+#include "svx/svxdllapi.h"
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class Region;
+
+namespace sdr { namespace contact {
+ class DisplayInfo;
+ class ObjectContact;
+ class ViewContact;
+ class ViewObjectContactRedirector;
+}}
+
+namespace sdr { namespace animation {
+ class PrimitiveAnimation;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContact
+ {
+ private:
+ // must-exist and constant contacts
+ ObjectContact& mrObjectContact;
+ ViewContact& mrViewContact;
+
+ // This range defines the object's BoundRect
+ basegfx::B2DRange maObjectRange;
+
+ // PrimitiveSequence of the ViewContact. This contains all necessary information
+ // for the graphical visualisation and needs to be supported by all VCs which
+ // can be visualized.
+ drawinglayer::primitive2d::Primitive2DSequence mxPrimitive2DSequence;
+
+ // the PrimitiveAnimation if Primitive2DSequence contains animations
+ sdr::animation::PrimitiveAnimation* mpPrimitiveAnimation;
+
+ // bitfield
+ // This bool gets set when the object gets invalidated by ActionChanged() and
+ // can be used from the OC to late-invalidates
+ unsigned mbLazyInvalidate : 1;
+
+ protected:
+ // make redirector a protected friend, it needs to call createPrimitives as default action
+ friend class ViewObjectContactRedirector;
+
+ // Called from getPrimitive2DSequence() when vector has changed. Evaluate object animation
+ // and setup accordingly
+ void checkForPrimitive2DAnimations();
+
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored/cached in the local primitive. Default gets view-independent Primitive
+ // from the ViewContact using ViewContact::getViewIndependentPrimitive2DSequence(), takes care of
+ // visibility, handles glue and ghosted.
+ // This method will not handle included hierarchies and not check geometric visibility.
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ // method for flushing Primitive2DSequence for VOC implementations
+ void flushPrimitive2DSequence() { mxPrimitive2DSequence.realloc(0); }
+
+ public:
+ // basic constructor.
+ ViewObjectContact(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContact();
+
+ // access to ObjectContact
+ ObjectContact& GetObjectContact() const { return mrObjectContact; }
+
+ // access to ViewContact
+ ViewContact& GetViewContact() const { return mrViewContact; }
+
+ // get the oebject's size range
+ const basegfx::B2DRange& getObjectRange() const;
+
+ // A ViewObjectContact was deleted and shall be forgotten.
+ void RemoveViewObjectContact(ViewObjectContact& rVOContact);
+
+ // React on changes of the object of this ViewContact
+ virtual void ActionChanged();
+
+ // LazyInvalidate handling
+ void triggerLazyInvalidate();
+
+ // Check if this primitive is animated in any OC (View) which means it has
+ // generated a PrimitiveAnimation
+ bool isAnimated() const { return (0 != mpPrimitiveAnimation); }
+
+ // Take some action when new objects are inserted
+ virtual void ActionChildInserted(ViewContact& rChild);
+
+ // access to the local primitive. This will ensure that the local primitive is
+ // current in comparing the local one with a fresh created incarnation
+ // This method will not handle included hierarchies and not check visibility.
+ drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ // test this VOC for visibility concerning model-view stuff like e.g. Layer
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+
+ // test this VOC for ghosted mode
+ virtual bool isPrimitiveGhosted(const DisplayInfo& rDisplayInfo) const;
+
+ // process this primitive: Eventually also recursively travel an existing hierarchy,
+ // e.g. for group objects, scenes or pages. This method will test geometrical visibility.
+ virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
+
+ // just process the sub-hierarchy, used as tooling from getPrimitive2DSequenceHierarchy
+ drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACT_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofe3d.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofe3d.hxx
new file mode 100644
index 000000000000..9306f76a5371
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofe3d.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFE3D_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFE3D_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr { namespace contact {
+ class ViewObjectContactOfE3dScene;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContactOfE3d : public ViewObjectContactOfSdrObj
+ {
+ protected:
+ // Primitive3D sequence of the ViewContact. This contains all necessary information
+ // for the graphical visualisation and needs to be supported by all VCs which
+ // can be visualized.
+ drawinglayer::primitive3d::Primitive3DSequence mxPrimitive3DSequence;
+
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored/cached in the local primitive. Default gets view-independent Primitive3D
+ // from the ViewContact using ViewContact::getViewIndependentPrimitive3DSequence(), takes care of
+ // visibility and ghosted.
+ // This method will not handle included hierarchies and not check geometric visibility.
+ drawinglayer::primitive3d::Primitive3DSequence createPrimitive3DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ // also overload the 2d method to deliver a 2d object with embedd3d 3d and the 3d transformation which is able to
+ // answer the get2DRange question accordingly
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfE3d(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfE3d();
+
+ // access to the local primitive sequence. This will ensure that the list is
+ // current in comparing the local list content with a fresh created incarnation
+ // This method will not handle included hierarchies or visibility.
+ drawinglayer::primitive3d::Primitive3DSequence getPrimitive3DSequence(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFE3D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofe3dscene.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofe3dscene.hxx
new file mode 100644
index 000000000000..49d35b90d03f
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofe3dscene.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFE3DSCENE_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFE3DSCENE_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfE3dScene : public ViewObjectContactOfSdrObj
+ {
+ protected:
+ // 2d primitive creator
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ // basic constructor.
+ ViewObjectContactOfE3dScene(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfE3dScene();
+
+ // process this primitive: Eventually also recursively travel an existing hierarchy,
+ // e.g. for group objects, scenes or pages. This method will test geometrical visibility.
+ virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFE3DSCENE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofgraphic.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofgraphic.hxx
new file mode 100644
index 000000000000..ee0620353765
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofgraphic.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFGRAPHIC_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFGRAPHIC_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrGrafObj;
+
+namespace sdr { namespace event {
+ class AsynchGraphicLoadingEvent;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContactOfGraphic : public ViewObjectContactOfSdrObj
+ {
+ private:
+ // allow async loading event helper to call tooling methods
+ friend class sdr::event::AsynchGraphicLoadingEvent;
+
+ // Member which takes care for the asynch loading events which may be necessary
+ // for asynch graphics loading.
+ sdr::event::AsynchGraphicLoadingEvent* mpAsynchLoadEvent;
+
+ // async graphics loading helpers. Only to be used internally or from the
+ // event helper class (in .cxx file)
+ bool impPrepareGraphicWithAsynchroniousLoading();
+ bool impPrepareGraphicWithSynchroniousLoading();
+ void doAsynchGraphicLoading();
+ void forgetAsynchGraphicLoadingEvent(sdr::event::AsynchGraphicLoadingEvent* pEvent);
+
+ protected:
+ SdrGrafObj& getSdrGrafObj();
+
+ // This method is responsible for creating the graphical visualisation data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfGraphic(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfGraphic();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFGRAPHIC_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx
new file mode 100644
index 000000000000..da92072fef18
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFGROUP_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFGROUP_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfGroup : public ViewObjectContactOfSdrObj
+ {
+ public:
+ // basic constructor.
+ ViewObjectContactOfGroup(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfGroup();
+
+ // This method recursively paints the draw hierarchy.
+ virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFGROUP_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx
new file mode 100644
index 000000000000..3cb7ba2a7f84
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFMASTERPAGEDESCRIPTOR_HXX
+
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr {
+ class MasterPageDescriptor;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContactOfMasterPageDescriptor : public ViewObjectContact
+ {
+ public:
+ ViewObjectContactOfMasterPageDescriptor(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfMasterPageDescriptor();
+
+ // access to MasterPageDescriptor
+ sdr::MasterPageDescriptor& GetMasterPageDescriptor() const;
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofpageobj.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofpageobj.hxx
new file mode 100644
index 000000000000..747f25cba3b6
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofpageobj.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFPAGEOBJ_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFPAGEOBJ_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr { namespace contact {
+ class PagePrimitiveExtractor;
+}}
+
+class SdrPage;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageObj : public ViewObjectContactOfSdrObj
+ {
+ private:
+ // the page painter helper
+ PagePrimitiveExtractor* mpExtractor;
+
+ protected:
+ // This method is responsible for creating the graphical visualisation data which is
+ // stored/cached in the local primitive.
+ // This method will not handle included hierarchies and not check geometric visibility.
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfPageObj(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageObj();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFPAGEOBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofsdrmediaobj.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrmediaobj.hxx
new file mode 100644
index 000000000000..d0fcfd6698f9
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrmediaobj.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFSDRMEDIAOBJ_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFSDRMEDIAOBJ_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+
+namespace avmedia { class MediaItem; }
+class Window;
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SdrMediaWindow;
+
+ class ViewObjectContactOfSdrMediaObj : public ViewObjectContactOfSdrObj
+ {
+ public:
+
+ ViewObjectContactOfSdrMediaObj( ObjectContact& rObjectContact,
+ ViewContact& rViewContact,
+ const ::avmedia::MediaItem& rMediaItem );
+ virtual ~ViewObjectContactOfSdrMediaObj();
+
+ public:
+
+ Window* getWindow() const;
+
+ bool hasPreferredSize() const;
+ Size getPreferredSize() const;
+
+ void updateMediaItem( ::avmedia::MediaItem& rItem ) const;
+ void executeMediaItem( const ::avmedia::MediaItem& rItem );
+
+ private:
+
+ ::sdr::contact::SdrMediaWindow* mpMediaWindow;
+
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_CONTACT_VIEWOBJECTCONTACTOFSDRMEDIAOBJ_HXX
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofsdrobj.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
new file mode 100644
index 000000000000..88245c46399e
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFSDROBJ_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFSDROBJ_HXX
+
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrObject;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfSdrObj : public ViewObjectContact
+ {
+ protected:
+ const SdrObject& getSdrObject() const;
+
+ public:
+ ViewObjectContactOfSdrObj(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfSdrObj();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFSDROBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofsdrole2obj.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrole2obj.hxx
new file mode 100644
index 000000000000..db3020023198
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrole2obj.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFSDROLE2OBJ_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFSDROLE2OBJ_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrOle2Obj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContactOfSdrOle2Obj : public ViewObjectContactOfSdrObj
+ {
+ protected:
+ const SdrOle2Obj& getSdrOle2Object() const;
+
+ // This method is responsible for creating the graphical visualisation data
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfSdrOle2Obj(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfSdrOle2Obj();
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFSDROLE2OBJ_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofsdrpage.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrpage.hxx
new file mode 100644
index 000000000000..379112a35d30
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofsdrpage.hxx
@@ -0,0 +1,246 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrPage;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageSubObject : public ViewObjectContact
+ {
+ protected:
+ const SdrPage& getPage() const;
+
+ public:
+ ViewObjectContactOfPageSubObject(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageSubObject();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ virtual bool isPrimitiveGhosted(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageBackground : public ViewObjectContactOfPageSubObject
+ {
+ protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfPageBackground(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageBackground();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfMasterPage : public ViewObjectContactOfPageSubObject
+ {
+ protected:
+ public:
+ ViewObjectContactOfMasterPage(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfMasterPage();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageFill : public ViewObjectContactOfPageSubObject
+ {
+ protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfPageFill(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageFill();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageShadow : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfPageShadow(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageShadow();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfOuterPageBorder : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfOuterPageBorder(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfOuterPageBorder();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfInnerPageBorder : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfInnerPageBorder(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfInnerPageBorder();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageHierarchy : public ViewObjectContactOfPageSubObject
+ {
+ public:
+ ViewObjectContactOfPageHierarchy(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageHierarchy();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageGrid : public ViewObjectContactOfPageSubObject
+ {
+ protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfPageGrid(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageGrid();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfPageHelplines : public ViewObjectContactOfPageSubObject
+ {
+ protected:
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ public:
+ ViewObjectContactOfPageHelplines(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfPageHelplines();
+
+ virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ class SVX_DLLPUBLIC ViewObjectContactOfSdrPage : public ViewObjectContact
+ {
+ public:
+ ViewObjectContactOfSdrPage(ObjectContact& rObjectContact, ViewContact& rViewContact);
+ virtual ~ViewObjectContactOfSdrPage();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTOFSDRPAGE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofunocontrol.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofunocontrol.hxx
new file mode 100644
index 000000000000..9e70771e5844
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofunocontrol.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_SDR_CONTACT_VIEWOBJECTCONTACTOFUNOCONTROL_HXX
+#define SVX_SDR_CONTACT_VIEWOBJECTCONTACTOFUNOCONTROL_HXX
+
+#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
+
+/** === begin UNO includes === **/
+#include <com/sun/star/uno/Reference.hxx>
+/** === end UNO includes === **/
+#include <rtl/ref.hxx>
+#include <svx/svxdllapi.h>
+
+class OutputDevice;
+class Window;
+class SdrUnoObj;
+namespace com { namespace sun { namespace star {
+ namespace awt {
+ class XControl;
+ class XControlContainer;
+ }
+} } }
+
+//........................................................................
+namespace sdr { namespace contact {
+//........................................................................
+
+ class ViewContactOfUnoControl;
+ class ObjectContactOfPageView;
+ //====================================================================
+ //= ViewObjectContactOfUnoControl
+ //====================================================================
+ class ViewObjectContactOfUnoControl_Impl;
+ class SVX_DLLPRIVATE ViewObjectContactOfUnoControl : public ViewObjectContactOfSdrObj
+ {
+ protected:
+ ::rtl::Reference< ViewObjectContactOfUnoControl_Impl > m_pImpl;
+
+ public:
+ ViewObjectContactOfUnoControl( ObjectContact& _rObjectContact, ViewContactOfUnoControl& _rViewContact );
+ /// determines whether an XControl already exists, and is currently visible
+ bool isControlVisible() const;
+
+ /// returns the ->XControl instance belonging to the instance, creates it if necessary
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >
+ getControl();
+
+ /** retrieves a temporary XControl instance, whose parent is the given device
+ @seealso SdrUnoObj::GetTemporaryControlForWindow
+ */
+ static ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >
+ getTemporaryControlForWindow(
+ const Window& _rWindow,
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _inout_ControlContainer,
+ const SdrUnoObj& _rUnoObject
+ );
+
+ /// ensures that the control belonging to this instances has a given visibility
+ void ensureControlVisibility( bool _bVisible ) const;
+
+ /** sets the design/alive mode of the control
+ */
+ void setControlDesignMode( bool _bDesignMode ) const;
+
+ /** callback from impl class to react on changes of properties form the XControlModel
+ */
+ void propertyChange();
+
+ /** React on changes of the object of this ViewContact
+ */
+ virtual void ActionChanged();
+
+ /** to be called when any aspect of the control which requires view updates changed
+ */
+ struct ImplAccess { friend class ViewObjectContactOfUnoControl_Impl; friend class ViewObjectContactOfUnoControl; private: ImplAccess() { } };
+ void onControlChangedOrModified( ImplAccess ) { impl_onControlChangedOrModified(); }
+
+ protected:
+ ~ViewObjectContactOfUnoControl();
+
+ // support for Primitive2D
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
+
+ // visibility check
+ virtual bool isPrimitiveVisible( const DisplayInfo& _rDisplayInfo ) const;
+ /// to be called when any aspect of the control which requires view updates changed
+ void impl_onControlChangedOrModified();
+
+ private:
+ ViewObjectContactOfUnoControl(); // never implemented
+ ViewObjectContactOfUnoControl( const ViewObjectContactOfUnoControl& ); // never implemented
+ ViewObjectContactOfUnoControl& operator=( const ViewObjectContactOfUnoControl& ); // never implemented
+ };
+
+ //====================================================================
+ //= UnoControlPrintOrPreviewContact
+ //====================================================================
+ class SVX_DLLPRIVATE UnoControlPrintOrPreviewContact : public ViewObjectContactOfUnoControl
+ {
+ public:
+ UnoControlPrintOrPreviewContact( ObjectContactOfPageView& _rObjectContact, ViewContactOfUnoControl& _rViewContact );
+ ~UnoControlPrintOrPreviewContact();
+
+ private:
+ UnoControlPrintOrPreviewContact(); // never implemented
+ UnoControlPrintOrPreviewContact( const UnoControlPrintOrPreviewContact& ); // never implemented
+ UnoControlPrintOrPreviewContact& operator=( const UnoControlPrintOrPreviewContact& ); // never implemented
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequence(const DisplayInfo& rDisplayInfo ) const;
+ };
+
+//........................................................................
+} } // namespace sdr::contact
+//........................................................................
+
+#endif // SVX_SDR_CONTACT_VIEWOBJECTCONTACTOFUNOCONTROL_HXX
+
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactredirector.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactredirector.hxx
new file mode 100644
index 000000000000..00f18751fb81
--- /dev/null
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactredirector.hxx
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_CONTACT_VIEWOBJECTCONTACTREDIRECTOR_HXX
+#define _SDR_CONTACT_VIEWOBJECTCONTACTREDIRECTOR_HXX
+
+#include "svx/svxdllapi.h"
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr { namespace contact {
+ class DisplayInfo;
+ class ViewObjectContact;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace contact
+ {
+ // This class provides a mechanism to redirect the paint mechanism for all or
+ // single ViewObjectContacts. An own derivation may be set at single ViewContacts
+ // or at the ObjectContact for redirecting all. If both is used, the one at single
+ // objects will have priority.
+ class SVX_DLLPUBLIC ViewObjectContactRedirector
+ {
+ public:
+ // basic constructor.
+ ViewObjectContactRedirector();
+
+ // The destructor.
+ virtual ~ViewObjectContactRedirector();
+
+ // all default implementations just call the same methods at the original. To do something
+ // different, overload the method and at least do what the method does.
+ virtual drawinglayer::primitive2d::Primitive2DSequence createRedirectedPrimitive2DSequence(
+ const sdr::contact::ViewObjectContact& rOriginal,
+ const sdr::contact::DisplayInfo& rDisplayInfo);
+ };
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_CONTACT_VIEWOBJECTCONTACTREDIRECTOR_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/event/eventhandler.hxx b/svx/inc/svx/sdr/event/eventhandler.hxx
new file mode 100644
index 000000000000..f8c07c2d84e5
--- /dev/null
+++ b/svx/inc/svx/sdr/event/eventhandler.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_EVENT_EVENTHANDLER_HXX
+#define _SDR_EVENT_EVENTHANDLER_HXX
+
+#include <sal/types.h>
+
+#include <vector>
+#include <vcl/timer.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr
+{
+ namespace event
+ {
+ class BaseEvent;
+ class EventHandler;
+
+ // typedefs for a list of BaseEvents
+ typedef ::std::vector< BaseEvent* > BaseEventVector;
+ } // end of namespace event
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace event
+ {
+ class BaseEvent
+ {
+ // the EventHandler this event is registered at
+ EventHandler& mrEventHandler;
+
+ public:
+ // basic constructor.
+ BaseEvent(EventHandler& rEventHandler);
+
+ // destructor
+ virtual ~BaseEvent();
+
+ // the called method if the event is triggered
+ virtual void ExecuteEvent() = 0;
+ };
+ } // end of namespace event
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace event
+ {
+ class EventHandler
+ {
+ BaseEventVector maVector;
+
+ // to allow BaseEvents to use the add/remove functionality
+ friend class BaseEvent;
+
+ // methods to add/remove events. These are private since
+ // they are used from BaseEvent only.
+ void AddEvent(BaseEvent& rBaseEvent);
+ void RemoveEvent(BaseEvent& rBaseEvent);
+
+ // access to a event, 0L when no more events
+ BaseEvent* GetEvent();
+
+ public:
+ // basic constructor.
+ EventHandler();
+
+ // destructor
+ virtual ~EventHandler();
+
+ // Trigger and consume the events
+ virtual void ExecuteEvents();
+
+ // for control
+ sal_Bool IsEmpty() const;
+ };
+ } // end of namespace event
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace event
+ {
+ class TimerEventHandler : public EventHandler, public Timer
+ {
+ public:
+ // basic constructor.
+ TimerEventHandler(sal_uInt32 nTimeout = 1L);
+
+ // destructor
+ virtual ~TimerEventHandler();
+
+ // The timer when it is triggered; from class Timer
+ virtual void Timeout();
+
+ // reset the timer
+ void Restart();
+ };
+ } // end of namespace event
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_EVENT_EVENTHANDLER_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayanimatedbitmapex.hxx b/svx/inc/svx/sdr/overlay/overlayanimatedbitmapex.hxx
new file mode 100644
index 000000000000..dd22a50480de
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayanimatedbitmapex.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYANIMATEDBITMAPEX_HXX
+#define _SDR_OVERLAY_OVERLAYANIMATEDBITMAPEX_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <vcl/bitmapex.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayAnimatedBitmapEx : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // the Bitmaps
+ BitmapEx maBitmapEx1;
+ BitmapEx maBitmapEx2;
+
+ // position of the basePosition inside the Bitmaps, in pixels
+ sal_uInt16 mnCenterX1;
+ sal_uInt16 mnCenterY1;
+ sal_uInt16 mnCenterX2;
+ sal_uInt16 mnCenterY2;
+
+ // #i53216# added CursorBlinkTime (in ms)
+ sal_uInt32 mnBlinkTime;
+
+ // bitfield
+ // Flag to remember which state to draw. Inited with sal_False (0)
+ unsigned mbOverlayState : 1;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ // #i53216# check blink time value range (currently 25 < mnBlinkTime < 10000)
+ void impCheckBlinkTimeValueRange();
+
+ public:
+ OverlayAnimatedBitmapEx(
+ const basegfx::B2DPoint& rBasePos,
+ const BitmapEx& rBitmapEx1,
+ const BitmapEx& rBitmapEx2,
+ sal_uInt32 nBlinkTime = 500,
+ sal_uInt16 nCenX1 = 0,
+ sal_uInt16 nCenY1 = 0,
+ sal_uInt16 nCenX2 = 0,
+ sal_uInt16 nCenY2 = 0);
+ virtual ~OverlayAnimatedBitmapEx();
+
+ const BitmapEx& getBitmapEx1() const { return maBitmapEx1; }
+ const BitmapEx& getBitmapEx2() const { return maBitmapEx2; }
+ void setBitmapEx1(const BitmapEx& rNew);
+ void setBitmapEx2(const BitmapEx& rNew);
+
+ sal_uInt16 getCenterX1() const { return mnCenterX1; }
+ sal_uInt16 getCenterY1() const { return mnCenterY1; }
+ sal_uInt16 getCenterX2() const { return mnCenterX2; }
+ sal_uInt16 getCenterY2() const { return mnCenterY2; }
+ void setCenterXY1(sal_uInt16 nNewX, sal_uInt16 nNewY);
+ void setCenterXY2(sal_uInt16 nNewX, sal_uInt16 nNewY);
+
+ // #i53216# added CursorBlinkTime (in ms)
+ sal_uInt32 getBlinkTime() const { return mnBlinkTime; }
+ void setBlinkTime(sal_uInt32 nNew);
+
+ // execute event from base class ::sdr::animation::Event. Default
+ // implementation does nothing and does not create a new event.
+ virtual void Trigger(sal_uInt32 nTime);
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYANIMATEDBITMAPEX_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaybitmapex.hxx b/svx/inc/svx/sdr/overlay/overlaybitmapex.hxx
new file mode 100644
index 000000000000..1fbf0b6add3d
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaybitmapex.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYBITMAPEX_HXX
+#define _SDR_OVERLAY_OVERLAYBITMAPEX_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <vcl/bitmapex.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayBitmapEx : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // the Bitmap itself
+ BitmapEx maBitmapEx;
+
+ // position of the basePosition inside the Bitmap, in pixels
+ sal_uInt16 mnCenterX;
+ sal_uInt16 mnCenterY;
+
+ // optional transparency
+ double mfAlpha;
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayBitmapEx(
+ const basegfx::B2DPoint& rBasePos,
+ const BitmapEx& rBitmapEx,
+ sal_uInt16 nCenX = 0, sal_uInt16 nCenY = 0, double fAlpha = 0.0 );
+ virtual ~OverlayBitmapEx();
+
+ const BitmapEx& getBitmapEx() const { return maBitmapEx; }
+ void setBitmapEx(const BitmapEx& rNew);
+
+ sal_uInt16 getCenterX() const { return mnCenterX; }
+ sal_uInt16 getCenterY() const { return mnCenterY; }
+ void setCenterXY(sal_uInt16 nNewX, sal_uInt16 nNewY);
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYBITMAPEX_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaycrosshair.hxx b/svx/inc/svx/sdr/overlay/overlaycrosshair.hxx
new file mode 100644
index 000000000000..13e45fa47baf
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaycrosshair.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYCROSSHAIR_HXX
+#define _SDR_OVERLAY_OVERLAYCROSSHAIR_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayCrosshairStriped : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayCrosshairStriped(const basegfx::B2DPoint& rBasePos);
+ virtual ~OverlayCrosshairStriped();
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged();
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYCROSSHAIR_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayhatchrect.hxx b/svx/inc/svx/sdr/overlay/overlayhatchrect.hxx
new file mode 100644
index 000000000000..ce17ef86d881
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayhatchrect.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYHATCHRECT_HXX
+#define _SDR_OVERLAY_OVERLAYHATCHRECT_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <vcl/hatch.hxx>
+#include <tools/gen.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+class PolyPolygon;
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayHatchRect : public OverlayObjectWithBasePosition
+ {
+ // geometric definitions
+ basegfx::B2DPoint maSecondPosition;
+ const double mfDiscreteGrow;
+ const double mfDiscreteShrink;
+ const double mfHatchRotation;
+ const double mfRotation;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayHatchRect(
+ const basegfx::B2DPoint& rBasePosition,
+ const basegfx::B2DPoint& rSecondPosition,
+ const Color& rHatchColor,
+ double fDiscreteGrow,
+ double fDiscreteShrink,
+ double fHatchRotation,
+ double fRotation);
+
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ void setSecondPosition(const basegfx::B2DPoint&);
+
+ // data read access
+ double getDiscreteGrow() const { return mfDiscreteGrow; }
+ double getDiscreteShrink() const { return mfDiscreteShrink; }
+ double getHatchRotation() const { return mfHatchRotation; }
+ double getRotation() const { return mfRotation; }
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYHATCHRECT_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayhelpline.hxx b/svx/inc/svx/sdr/overlay/overlayhelpline.hxx
new file mode 100644
index 000000000000..c8f26639f032
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayhelpline.hxx
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYHELPLINE_HXX
+#define _SDR_OVERLAY_OVERLAYHELPLINE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <svx/svdhlpln.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayHelplineStriped : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // remember HelpLineKind
+ SdrHelpLineKind meKind;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayHelplineStriped(
+ const basegfx::B2DPoint& rBasePos,
+ SdrHelpLineKind eNewKind = SDRHELPLINE_POINT);
+ virtual ~OverlayHelplineStriped();
+
+ // dat read access
+ SdrHelpLineKind getKind() const { return meKind; }
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged();
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYHELPLINE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayline.hxx b/svx/inc/svx/sdr/overlay/overlayline.hxx
new file mode 100644
index 000000000000..3df8dc0f4f05
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayline.hxx
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYLINE_HXX
+#define _SDR_OVERLAY_OVERLAYLINE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayLineStriped : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // second position in pixel
+ basegfx::B2DPoint maSecondPosition;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayLineStriped(
+ const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos);
+ virtual ~OverlayLineStriped();
+
+ // change second position
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ void setSecondPosition(const basegfx::B2DPoint& rNew);
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged();
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYLINE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaymanager.hxx b/svx/inc/svx/sdr/overlay/overlaymanager.hxx
new file mode 100644
index 000000000000..379086211cbf
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaymanager.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYMANAGER_HXX
+#define _SDR_OVERLAY_OVERLAYMANAGER_HXX
+
+#include <svx/sdr/animation/scheduler.hxx>
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <vcl/mapmod.hxx>
+#include <tools/color.hxx>
+#include "svx/svxdllapi.h"
+#include <svtools/optionsdrawinglayer.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class OutputDevice;
+class Region;
+
+namespace sdr { namespace overlay {
+ class OverlayObject;
+}}
+
+namespace basegfx {
+ class B2DRange;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayManager : public ::sdr::animation::Scheduler
+ {
+ protected:
+ // the OutputDevice to work on, set on construction and not to be changed
+ OutputDevice& rmOutputDevice;
+
+ // the vector of registered OverlayObjects
+ OverlayObjectVector maOverlayObjects;
+
+ // Stripe support. All striped OverlayObjects use these stripe
+ // values. Changes change all those objects.
+ Color maStripeColorA; // defaults to Color(COL_BLACK)
+ Color maStripeColorB; // defaults to Color(COL_WHITE)
+ sal_uInt32 mnStripeLengthPixel; // defaults to 4L
+
+ // hold an incarnation of Drawinglayer configuration options
+ SvtOptionsDrawinglayer maDrawinglayerOpt;
+
+ // hold buffered the logic length of discrete vector (1.0, 0.0) and the
+ // view transformation belonging to it. Update happens in getDiscreteOne()
+ basegfx::B2DHomMatrix maViewTransformation;
+ drawinglayer::geometry::ViewInformation2D maViewInformation2D;
+ double mfDiscreteOne;
+
+ // internal
+ void ImpDrawMembers(const basegfx::B2DRange& rRange, OutputDevice& rDestinationDevice) const;
+ void ImpStripeDefinitionChanged();
+ void impApplyRemoveActions(OverlayObject& rTarget);
+ void impApplyAddActions(OverlayObject& rTarget);
+
+ // return mfDiscreteOne to derivations, but also check for buffered local
+ // ViewTransformation and evtl. correct mfDiscreteOne
+ double getDiscreteOne() const;
+
+ public:
+ // when handing over another OverlayManager at construction, the OverlayObjects
+ // will be taken over from it. The new one will have added all OverlayObjects
+ // while the handed over one will have none
+ OverlayManager(
+ OutputDevice& rOutputDevice,
+ OverlayManager* pOldOverlayManager = 0);
+ virtual ~OverlayManager();
+
+ // access to current ViewInformation2D; this call checks and evtl. updates ViewInformation2D
+ const drawinglayer::geometry::ViewInformation2D getCurrentViewInformation2D() const;
+
+ // complete redraw
+ virtual void completeRedraw(const Region& rRegion, OutputDevice* pPreRenderDevice = 0) const;
+
+ // flush. Do buffered updates.
+ virtual void flush();
+
+ // #i68597# part of content gets copied, react on it
+ virtual void copyArea(const Point& rDestPt, const Point& rSrcPt, const Size& rSrcSize);
+
+ // restore part of background. Implemented form buffered versions only.
+ virtual void restoreBackground(const Region& rRegion) const;
+
+ // get the OutputDevice
+ OutputDevice& getOutputDevice() const { return rmOutputDevice; }
+
+ // add and remove OverlayObjects
+ void add(OverlayObject& rOverlayObject);
+ void remove(OverlayObject& rOverlayObject);
+
+ // invalidate the given range at local OutputDevice
+ virtual void invalidateRange(const basegfx::B2DRange& rRange);
+
+ // stripe support ColA
+ Color getStripeColorA() const { return maStripeColorA; }
+ void setStripeColorA(Color aNew= Color(COL_BLACK));
+
+ // stripe support ColB
+ Color getStripeColorB() const { return maStripeColorB; }
+ void setStripeColorB(Color aNew = Color(COL_WHITE));
+
+ // stripe support StripeLengthPixel
+ sal_uInt32 getStripeLengthPixel() const { return mnStripeLengthPixel; }
+ void setStripeLengthPixel(sal_uInt32 nNew = 5L);
+
+ // access to maDrawinglayerOpt
+ const SvtOptionsDrawinglayer& getDrawinglayerOpt() const { return maDrawinglayerOpt; }
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYMANAGER_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaymanagerbuffered.hxx b/svx/inc/svx/sdr/overlay/overlaymanagerbuffered.hxx
new file mode 100644
index 000000000000..fb21fa328232
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaymanagerbuffered.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYMANAGERBUFFERED_HXX
+#define _SDR_OVERLAY_OVERLAYMANAGERBUFFERED_HXX
+
+#include <svx/sdr/overlay/overlaymanager.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <vcl/virdev.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class VirtualDevice;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayManagerBuffered : public OverlayManager
+ {
+ protected:
+ // The VirtualDevice for draw window content buffering, this
+ // is the view content without overlay
+ VirtualDevice maBufferDevice;
+
+ // #i73602# The VirtualDevice for OverlayPaint buffering. This
+ // is an extra device to avoid flickering of overlay paints
+ VirtualDevice maOutputBufferDevice;
+
+ // Timer for buffering
+ Timer maBufferTimer;
+
+ // Range for buffering (in pixel to be independent from mapMode)
+ basegfx::B2IRange maBufferRememberedRangePixel;
+
+ // bitfield
+ // Flag to decide if PreRendering shall be used for overlay refreshes.
+ // Default is false.
+ unsigned mbRefreshWithPreRendering : 1;
+
+ // link for timer
+ DECL_LINK(ImpBufferTimerHandler, AutoTimer*);
+
+ // Internal methods for buffering
+ void ImpPrepareBufferDevice();
+ void ImpRestoreBackground() const ;
+ void ImpRestoreBackground(const Region& rRegionPixel) const;
+ void ImpSaveBackground(const Region& rRegion, OutputDevice* pPreRenderDevice = 0L);
+
+ public:
+ // when handing over another OverlayManager at construction, the OverlayObjects
+ // will be taken over from it. The new one will have added all OverlayObjects
+ // while the handed over one will have none
+ OverlayManagerBuffered(
+ OutputDevice& rOutputDevice,
+ OverlayManager* pOldOverlayManager = 0,
+ bool bRefreshWithPreRendering = false);
+ virtual ~OverlayManagerBuffered();
+
+ // complete redraw
+ virtual void completeRedraw(const Region& rRegion, OutputDevice* pPreRenderDevice = 0L) const;
+
+ // flush. Do buffered updates.
+ virtual void flush();
+
+ // #i68597# part of content gets copied, react on it
+ virtual void copyArea(const Point& rDestPt, const Point& rSrcPt, const Size& rSrcSize);
+
+ // restore part of background. Implemented form buffered versions only.
+ virtual void restoreBackground(const Region& rRegion) const;
+
+ // invalidate the given range at local OutputDevice
+ virtual void invalidateRange(const basegfx::B2DRange& rRange);
+
+ // access to RefreshWithPreRendering Flag
+ bool DoRefreshWithPreRendering() const { return mbRefreshWithPreRendering; }
+ void SetRefreshWithPreRendering(bool bNew);
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYMANAGERBUFFERED_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayobject.hxx b/svx/inc/svx/sdr/overlay/overlayobject.hxx
new file mode 100644
index 000000000000..0200e859d370
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayobject.hxx
@@ -0,0 +1,203 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYOBJECT_HXX
+#define _SDR_OVERLAY_OVERLAYOBJECT_HXX
+
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <tools/color.hxx>
+#include <svx/sdr/animation/scheduler.hxx>
+#include "svx/svxdllapi.h"
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class OutputDevice;
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayManager;
+ } // end of namespace overlay
+} // end of namespace sdr
+
+namespace basegfx
+{
+ class B2DPolygon;
+ class B2DPolyPolygon;
+ class B2DRange;
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayObject : private ::boost::noncopyable, public ::sdr::animation::Event
+ {
+ private:
+ // Manager is allowed access to private Member mpOverlayManager
+ friend class OverlayManager;
+
+ // pointer to OverlayManager, if object is added. Changed by
+ // OverlayManager, do not chnge Yourself.
+ OverlayManager* mpOverlayManager;
+
+ // Primitive2DSequence of the OverlayObject
+ drawinglayer::primitive2d::Primitive2DSequence maPrimitive2DSequence;
+
+ protected:
+ // access methods to maPrimitive2DSequence. The usage of this methods may allow
+ // later thread-safe stuff to be added if needed. Only to be used by getPrimitive2DSequence()
+ // implementations for buffering the last decomposition.
+ const drawinglayer::primitive2d::Primitive2DSequence& getPrimitive2DSequence() const { return maPrimitive2DSequence; }
+ void setPrimitive2DSequence(const drawinglayer::primitive2d::Primitive2DSequence& rNew) { maPrimitive2DSequence = rNew; }
+
+ // the creation method for Primitive2DSequence. Called when getPrimitive2DSequence()
+ // sees that maPrimitive2DSequence is empty. Needs to be supported by all
+ // OverlayObject implementations. Default implementation will assert
+ // a missing implementation
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ // region in logical coordinates
+ basegfx::B2DRange maBaseRange;
+
+ // base color of this OverlayObject
+ Color maBaseColor;
+
+ // bitfield
+ // Flag for visibility
+ unsigned mbIsVisible : 1;
+
+ // Flag to control hittability
+ unsigned mbIsHittable : 1;
+
+ // Flag to hold info if this objects supports animation. Default is
+ // false. If true, the Trigger() method should be overloaded
+ // to implement the animation effect and to re-initiate the event.
+ unsigned mbAllowsAnimation : 1;
+
+ // Flag tocontrol if this OverlayObject allows AntiAliased visualisation.
+ // Default is true, but e.g. for selection visualisation in SC and SW,
+ // it is switched to false
+ unsigned mbAllowsAntiAliase : 1;
+
+ // set changed flag. Call after change, since the old range is invalidated
+ // and then the new one is calculated and invalidated, too. This will only
+ // work after the change.
+ virtual void objectChange();
+
+ // write access to AntiAliase flag. This is protected since
+ // only implementations are allowed to change this, preferrably in their
+ // constructor
+ void allowAntiAliase(bool bNew);
+
+ public:
+ OverlayObject(Color aBaseColor);
+ virtual ~OverlayObject();
+
+ // get OverlayManager
+ OverlayManager* getOverlayManager() const { return mpOverlayManager; }
+
+ // the access method for Primitive2DSequence. Will use createPrimitive2DSequence and
+ // setPrimitive2DSequence if needed. Overloading may be used to allow disposal of last
+ // created primitives to react on changed circumstances and to re-create primitives
+ virtual drawinglayer::primitive2d::Primitive2DSequence getOverlayObjectPrimitive2DSequence() const;
+
+ // access to visibility state
+ bool isVisible() const { return mbIsVisible; }
+ void setVisible(bool bNew);
+
+ // access to hittable flag
+ bool isHittable() const { return mbIsHittable; }
+ void setHittable(bool bNew);
+
+ // read access to AntiAliase flag
+ bool allowsAntiAliase() const { return mbAllowsAntiAliase; }
+
+ // read access to baseRange. This may trigger createBaseRange() if
+ // object is changed.
+ const basegfx::B2DRange& getBaseRange() const;
+
+ // access to baseColor
+ Color getBaseColor() const { return maBaseColor; }
+ void setBaseColor(Color aNew);
+
+ // execute event from base class ::sdr::animation::Event. Default
+ // implementation does nothing and does not create a new event.
+ virtual void Trigger(sal_uInt32 nTime);
+
+ // acces to AllowsAnimation flag
+ bool allowsAnimation() const { return mbAllowsAnimation; }
+
+ // stripe definition has changed. The OverlayManager does have
+ // support data to draw graphics in two colors striped. This
+ // method notifies the OverlayObject if that change takes place.
+ // Default implementation does nothing.
+ virtual void stripeDefinitionHasChanged();
+ };
+
+ // typedefs for a vector of OverlayObjects
+ typedef ::std::vector< OverlayObject* > OverlayObjectVector;
+
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayObjectWithBasePosition : public OverlayObject
+ {
+ protected:
+ // base position in logical coordinates
+ basegfx::B2DPoint maBasePosition;
+
+ public:
+ OverlayObjectWithBasePosition(const basegfx::B2DPoint& rBasePos, Color aBaseColor);
+ virtual ~OverlayObjectWithBasePosition();
+
+ // access to basePosition
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ void setBasePosition(const basegfx::B2DPoint& rNew);
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYOBJECT_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayobjectcell.hxx b/svx/inc/svx/sdr/overlay/overlayobjectcell.hxx
new file mode 100644
index 000000000000..5d43983a57b0
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayobjectcell.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYOBJECTCELL_HXX
+#define _SDR_OVERLAY_OVERLAYOBJECTCELL_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+// #114409#
+namespace sdr
+{
+ namespace overlay
+ {
+ enum CellOverlayType { CELL_OVERLAY_INVERT, CELL_OVERLAY_TRANSPARENT };
+
+ // OverlayObjectCell - used for cell cursor, selection and AutoFill handle
+
+ class SVX_DLLPUBLIC OverlayObjectCell : public OverlayObject
+ {
+ public:
+ typedef ::std::vector< basegfx::B2DRange > RangeVector;
+
+ private:
+ CellOverlayType mePaintType;
+ RangeVector maRectangles;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayObjectCell( CellOverlayType eType, const Color& rColor, const RangeVector& rRects);
+ virtual ~OverlayObjectCell();
+ };
+
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYLINE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayobjectlist.hxx b/svx/inc/svx/sdr/overlay/overlayobjectlist.hxx
new file mode 100644
index 000000000000..181ccdfb7831
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayobjectlist.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYOBJECTLIST_HXX
+#define _SDR_OVERLAY_OVERLAYOBJECTLIST_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <tools/gen.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+#define DEFAULT_VALUE_FOR_HITTEST_PIXEL (2L)
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayObjectList
+ {
+ protected:
+ // the vector of OverlayObjects
+ OverlayObjectVector maVector;
+
+ // default value for HiTestPixel
+ sal_uInt32 getDefaultValueForHitTestPixel() const { return 4L; }
+
+ public:
+ OverlayObjectList() {}
+ ~OverlayObjectList();
+
+ // clear list, this includes deletion of all contained objects
+ void clear();
+
+ // append/remove objects
+ void append(OverlayObject& rOverlayObject) { maVector.push_back(&rOverlayObject); }
+ void remove(OverlayObject& rOverlayObject);
+
+ // access to objects
+ sal_uInt32 count() const { return maVector.size(); }
+ OverlayObject& getOverlayObject(sal_uInt32 nIndex) const { return *(maVector[nIndex]); }
+
+ // Hittest with logical coordinates
+ bool isHitLogic(const basegfx::B2DPoint& rLogicPosition, double fLogicTolerance = 0.0) const;
+
+ // Hittest with pixel coordinates and pixel tolerance
+ bool isHitPixel(const Point& rDiscretePosition, sal_uInt32 fDiscreteTolerance = DEFAULT_VALUE_FOR_HITTEST_PIXEL) const;
+
+ // calculate BaseRange of all included OverlayObjects and return
+ basegfx::B2DRange getBaseRange() const;
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYOBJECTLIST_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaypolypolygon.hxx b/svx/inc/svx/sdr/overlay/overlaypolypolygon.hxx
new file mode 100644
index 000000000000..7107a92c286c
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaypolypolygon.hxx
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYPOLYPOLYGON_HXX
+#define _SDR_OVERLAY_OVERLAYPOLYPOLYGON_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayPolyPolygonStriped : public OverlayObject
+ {
+ protected:
+ // geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayPolyPolygonStriped(const basegfx::B2DPolyPolygon& rPolyPolygon);
+ virtual ~OverlayPolyPolygonStriped();
+
+ // change geometry
+ basegfx::B2DPolyPolygon getPolyPolygon() const { return maPolyPolygon; }
+ void setPolyPolygon(const basegfx::B2DPolyPolygon& rNew);
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged();
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYPOLYPOLYGON_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx b/svx/inc/svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx
new file mode 100644
index 000000000000..049dfefe585d
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYPRIMITIVE2DSEQUENCEOBJECT_HXX
+#define _SDR_OVERLAY_OVERLAYPRIMITIVE2DSEQUENCEOBJECT_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class SVX_DLLPUBLIC OverlayPrimitive2DSequenceObject : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // the sequence of primitives to show
+ const drawinglayer::primitive2d::Primitive2DSequence maSequence;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ private:
+ // internal helper to create a drawinglayer::geometry::ViewInformation2D
+ // using a OutputDevice and local knowledge
+ drawinglayer::geometry::ViewInformation2D impCreateViewInformation2D(OutputDevice& rOutputDevice) const;
+
+ public:
+ OverlayPrimitive2DSequenceObject(const drawinglayer::primitive2d::Primitive2DSequence& rSequence);
+
+ virtual ~OverlayPrimitive2DSequenceObject();
+
+ // data read access
+ const drawinglayer::primitive2d::Primitive2DSequence& getSequence() const { return maSequence; }
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYPRIMITIVE2DSEQUENCEOBJECT_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayrollingrectangle.hxx b/svx/inc/svx/sdr/overlay/overlayrollingrectangle.hxx
new file mode 100644
index 000000000000..0dec8ac62fd9
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayrollingrectangle.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYROOLINGRECTANGLE_HXX
+#define _SDR_OVERLAY_OVERLAYROOLINGRECTANGLE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayRollingRectangleStriped : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // second position in pixel
+ basegfx::B2DPoint maSecondPosition;
+
+ // bitfield
+ // Flag to switch on/off long lines to the OutputDevice bounds
+ unsigned mbExtendedLines : 1;
+
+ // Flag to switch on/off the bounds itself
+ unsigned mbShowBounds : 1;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayRollingRectangleStriped(
+ const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ bool bExtendedLines = false,
+ bool bShowBounds = true);
+ virtual ~OverlayRollingRectangleStriped();
+
+ // change second position
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ void setSecondPosition(const basegfx::B2DPoint& rNew);
+
+ // change extended lines
+ bool getExtendedLines() const { return mbExtendedLines; }
+ void setExtendedLines(bool bNew);
+
+ // change show bounds
+ bool getShowBounds() const { return mbShowBounds; }
+ void setShowBounds(bool bNew);
+
+ // react on stripe definition change
+ virtual void stripeDefinitionHasChanged();
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYROOLINGRECTANGLE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlayselection.hxx b/svx/inc/svx/sdr/overlay/overlayselection.hxx
new file mode 100644
index 000000000000..4372929d4317
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlayselection.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYSELECTION_HXX
+#define _SDR_OVERLAY_OVERLAYSELECTION_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <vcl/region.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ // overlay type definition
+ enum OverlayType
+ {
+ OVERLAY_INVERT,
+ OVERLAY_SOLID,
+ OVERLAY_TRANSPARENT
+ };
+
+ class SVX_DLLPUBLIC OverlaySelection : public OverlayObject
+ {
+ protected:
+ // type of overlay
+ OverlayType meOverlayType;
+
+ // geometry of overlay
+ std::vector< basegfx::B2DRange > maRanges;
+
+ // Values of last primitive creation. These are checked in getOverlayObjectPrimitive2DSequence
+ // to evtl. get rid of last Primitive2DSequence. This ensures that these values are up-to-date
+ // and are usable when creating primitives
+ OverlayType maLastOverlayType;
+ sal_uInt16 mnLastTransparence;
+
+ // bitfield
+ unsigned mbBorder : 1;
+
+ // geometry creation for OverlayObject, can use local *Last* values
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlaySelection(
+ OverlayType eType,
+ const Color& rColor,
+ const std::vector< basegfx::B2DRange >& rRanges,
+ bool bBorder);
+ virtual ~OverlaySelection();
+
+ // data read access
+ OverlayType getOverlayType() const { return meOverlayType; }
+ const std::vector< basegfx::B2DRange >& getRanges() const { return maRanges; }
+ bool getBorder() const { return mbBorder; }
+
+ // overloaded to check conditions for last createOverlayObjectPrimitive2DSequence
+ virtual drawinglayer::primitive2d::Primitive2DSequence getOverlayObjectPrimitive2DSequence() const;
+
+ // data write access
+ void setRanges(const std::vector< basegfx::B2DRange >& rNew);
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYSELECTION_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaytools.hxx b/svx/inc/svx/sdr/overlay/overlaytools.hxx
new file mode 100644
index 000000000000..4142e326a910
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaytools.hxx
@@ -0,0 +1,278 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYTOOLS_HXX
+#define _SDR_OVERLAY_OVERLAYTOOLS_HXX
+
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <vcl/bitmapex.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// Overlay helper class which holds a BotmapEx which is to be visualized
+// at the given logic position with the Bitmap's pixel size, unscaled and
+// unrotated (like a marker). The discrete pixel on the bitmap assocciated
+// with the target position is given in discrete X,Y coordinates
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class OverlayBitmapExPrimitive : public DiscreteMetricDependentPrimitive2D
+ {
+ private:
+ // The BitmapEx to use, PixelSize is used
+ BitmapEx maBitmapEx;
+
+ // The logic position
+ basegfx::B2DPoint maBasePosition;
+
+ // The pixel inside the BitmapEx which is assocciated with
+ // the target position (offset in the bitmap)
+ sal_uInt16 mnCenterX;
+ sal_uInt16 mnCenterY;
+
+ protected:
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ public:
+ OverlayBitmapExPrimitive(
+ const BitmapEx& rBitmapEx,
+ const basegfx::B2DPoint& rBasePosition,
+ sal_uInt16 nCenterX,
+ sal_uInt16 nCenterY);
+
+ // data access
+ const BitmapEx& getBitmapEx() const { return maBitmapEx; }
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ sal_uInt16 getCenterX() const { return mnCenterX; }
+ sal_uInt16 getCenterY() const { return mnCenterY; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// Overlay helper class for a crosshair
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class OverlayCrosshairPrimitive : public ViewportDependentPrimitive2D
+ {
+ private:
+ // The logic position
+ basegfx::B2DPoint maBasePosition;
+
+ // The stripe colors and legth
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+ double mfDiscreteDashLength;
+
+ protected:
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ public:
+ OverlayCrosshairPrimitive(
+ const basegfx::B2DPoint& rBasePosition,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB,
+ double fDiscreteDashLength);
+
+ // data access
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// Overlay helper class for a hatch rectangle as used e.g. for text object
+// selection hilighting
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class OverlayHatchRectanglePrimitive : public DiscreteMetricDependentPrimitive2D
+ {
+ private:
+ // the logic rectangle definition
+ basegfx::B2DRange maObjectRange;
+
+ // the hatch definition
+ double mfDiscreteHatchDistance;
+ double mfHatchRotation;
+ basegfx::BColor maHatchColor;
+
+ // the dscrete grow and shrink of the box
+ double mfDiscreteGrow;
+ double mfDiscreteShrink;
+
+ // the rotation of the primitive itself
+ double mfRotation;
+
+ protected:
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ public:
+ OverlayHatchRectanglePrimitive(
+ const basegfx::B2DRange& rObjectRange,
+ double fDiscreteHatchDistance,
+ double fHatchRotation,
+ const basegfx::BColor& rHatchColor,
+ double fDiscreteGrow,
+ double fDiscreteShrink,
+ double fRotation);
+
+ // data access
+ const basegfx::B2DRange& getObjectRange() const { return maObjectRange; }
+ double getDiscreteHatchDistance() const { return mfDiscreteHatchDistance; }
+ double getHatchRotation() const { return mfHatchRotation; }
+ const basegfx::BColor& getHatchColor() const { return maHatchColor; }
+ double getDiscreteGrow() const { return mfDiscreteGrow; }
+ double getDiscreteShrink() const { return mfDiscreteShrink; }
+ double getRotation() const { return mfRotation; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// Overlay helper class for a striped helpline
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ enum HelplineStyle
+ {
+ HELPLINESTYLE_POINT,
+ HELPLINESTYLE_VERTICAL,
+ HELPLINESTYLE_HORIZONTAL
+ };
+
+ class OverlayHelplineStripedPrimitive : public ViewportDependentPrimitive2D
+ {
+ private:
+ // The logic position
+ basegfx::B2DPoint maBasePosition;
+
+ // the style
+ HelplineStyle meStyle;
+
+ // The stripe colors and legth
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+ double mfDiscreteDashLength;
+
+ protected:
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ public:
+ OverlayHelplineStripedPrimitive(
+ const basegfx::B2DPoint& rBasePosition,
+ HelplineStyle eStyle,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB,
+ double fDiscreteDashLength);
+
+ // data access
+ const basegfx::B2DPoint& getBasePosition() const { return maBasePosition; }
+ HelplineStyle getStyle() const { return meStyle; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// Overlay helper class for rolling rectangle helplines. This primitive is
+// only for the extended lines to the ends of the view
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class OverlayRollingRectanglePrimitive : public ViewportDependentPrimitive2D
+ {
+ private:
+ // The logic range
+ basegfx::B2DRange maRollingRectangle;
+
+ // The stripe colors and legth
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+ double mfDiscreteDashLength;
+
+ protected:
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ public:
+ OverlayRollingRectanglePrimitive(
+ const basegfx::B2DRange& aRollingRectangle,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB,
+ double fDiscreteDashLength);
+
+ // data access
+ const basegfx::B2DRange& getRollingRectangle() const { return maRollingRectangle; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ // compare operator
+ virtual bool operator==( const BasePrimitive2D& rPrimitive ) const;
+
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYTOOLS_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/overlay/overlaytriangle.hxx b/svx/inc/svx/sdr/overlay/overlaytriangle.hxx
new file mode 100644
index 000000000000..5479f65984ea
--- /dev/null
+++ b/svx/inc/svx/sdr/overlay/overlaytriangle.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OVERLAY_OVERLAYTRIANGLE_HXX
+#define _SDR_OVERLAY_OVERLAYTRIANGLE_HXX
+
+#include <svx/sdr/overlay/overlayobject.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace overlay
+ {
+ class OverlayTriangle : public OverlayObjectWithBasePosition
+ {
+ protected:
+ // second and third position in pixel
+ basegfx::B2DPoint maSecondPosition;
+ basegfx::B2DPoint maThirdPosition;
+
+ // geometry creation for OverlayObject
+ virtual drawinglayer::primitive2d::Primitive2DSequence createOverlayObjectPrimitive2DSequence();
+
+ public:
+ OverlayTriangle(
+ const basegfx::B2DPoint& rBasePos,
+ const basegfx::B2DPoint& rSecondPos,
+ const basegfx::B2DPoint& rThirdPos,
+ Color aTriangleColor);
+ virtual ~OverlayTriangle();
+
+ // change second position
+ const basegfx::B2DPoint& getSecondPosition() const { return maSecondPosition; }
+ void setSecondPosition(const basegfx::B2DPoint& rNew);
+
+ // change third position
+ const basegfx::B2DPoint& getThirdPosition() const { return maThirdPosition; }
+ void setThirdPosition(const basegfx::B2DPoint& rNew);
+ };
+ } // end of namespace overlay
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OVERLAY_OVERLAYTRIANGLE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/primitiveFactory2d.hxx b/svx/inc/svx/sdr/primitive2d/primitiveFactory2d.hxx
new file mode 100644
index 000000000000..09ba09a12f04
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/primitiveFactory2d.hxx
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_PRIMITIVEFACTORY2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_PRIMITIVEFACTORY2D_HXX
+
+#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp>
+#include <cppuhelper/compbase1.hxx>
+#include <comphelper/broadcasthelper.hxx>
+
+#include <svx/svxdllapi.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// UNO API helper methods
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ SVX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL XPrimitiveFactory2DProvider_createInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rSMgr) throw( ::com::sun::star::uno::Exception );
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// PrimitiveFactory2D class
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ // typedef for PrimitiveFactory2DImplBase
+ typedef cppu::WeakComponentImplHelper1< ::com::sun::star::graphic::XPrimitiveFactory2D > PrimitiveFactory2DImplBase;
+
+ // base class for C++ implementation of com::sun::star::graphic::XPrimitiveFactory2D
+ class PrimitiveFactory2D
+ : protected comphelper::OBaseMutex,
+ public PrimitiveFactory2DImplBase
+ {
+ private:
+ protected:
+ public:
+ // constructor
+ PrimitiveFactory2D();
+
+ // Methods from XPrimitiveFactory2D
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XPrimitive2D > > SAL_CALL createPrimitivesFromXShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aParms ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XPrimitive2D > > SAL_CALL createPrimitivesFromXDrawPage( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xDrawPage, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aParms ) throw (::com::sun::star::uno::RuntimeException);
+
+ // UNO API helpers
+ SVX_DLLPUBLIC static rtl::OUString getImplementationName_Static();
+ SVX_DLLPUBLIC static com::sun::star::uno::Sequence< rtl::OUString > getSupportedServiceNames_Static();
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_PRIMITIVEFACTORY2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx b/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
new file mode 100644
index 000000000000..9ea424217757
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRATTRIBUTECREATOR_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRATTRIBUTECREATOR_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+class SfxItemSet;
+class SdrText;
+
+namespace drawinglayer { namespace attribute {
+ class SdrLineAttribute;
+ class SdrLineStartEndAttribute;
+ class SdrShadowAttribute;
+ class SdrFillAttribute;
+ class SdrTextAttribute;
+ class FillGradientAttribute;
+ class SdrFillBitmapAttribute;
+ class SdrShadowTextAttribute;
+ class SdrLineShadowTextAttribute;
+ class SdrLineFillShadowTextAttribute;
+ class SdrLineFillShadowAttribute3D;
+ class SdrSceneAttribute;
+ class SdrLightingAttribute;
+ class SdrFillTextAttribute;
+}}
+
+namespace basegfx {
+ class B2DRange;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ // SdrAttribute creators
+ attribute::SdrLineAttribute createNewSdrLineAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrLineStartEndAttribute createNewSdrLineStartEndAttribute(
+ const SfxItemSet& rSet,
+ double fWidth);
+
+ attribute::SdrShadowAttribute createNewSdrShadowAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrFillAttribute createNewSdrFillAttribute(
+ const SfxItemSet& rSet);
+
+ // #i101508# Support handing over given text-to-border distances
+ attribute::SdrTextAttribute createNewSdrTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText& rText,
+ const sal_Int32* pLeft = 0,
+ const sal_Int32* pUpper = 0,
+ const sal_Int32* pRight = 0,
+ const sal_Int32* pLower = 0);
+
+ attribute::FillGradientAttribute createNewTransparenceGradientAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrFillBitmapAttribute createNewSdrFillBitmapAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrShadowTextAttribute createNewSdrShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText,
+ bool bSuppressText); // #i98072# added option to suppress text on demand
+
+ attribute::SdrLineShadowTextAttribute createNewSdrLineShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText);
+
+ attribute::SdrLineFillShadowTextAttribute createNewSdrLineFillShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText);
+
+ attribute::SdrLineFillShadowAttribute3D createNewSdrLineFillShadowAttribute(
+ const SfxItemSet& rSet,
+ bool bSuppressFill);
+
+ attribute::SdrSceneAttribute createNewSdrSceneAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrLightingAttribute createNewSdrLightingAttribute(
+ const SfxItemSet& rSet);
+
+ // #i101508# Support handing over given text-to-border distances
+ attribute::SdrFillTextAttribute createNewSdrFillTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pSdrText,
+ const sal_Int32* pLeft = 0,
+ const sal_Int32* pUpper = 0,
+ const sal_Int32* pRight = 0,
+ const sal_Int32* pLower = 0);
+
+ // helpers
+ void calculateRelativeCornerRadius(
+ sal_Int32 nRadius,
+ const ::basegfx::B2DRange& rObjectRange,
+ double& rfCornerRadiusX,
+ double& rfCornerRadiusY);
+
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRATTRIBUTECREATOR_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx
new file mode 100644
index 000000000000..b8039fd33c61
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRCAPTIONPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRCAPTIONPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrCaptionPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ ::basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute;
+ ::basegfx::B2DPolygon maTail;
+ double mfCornerRadiusX; // [0.0..1.0] relative to 1/2 width
+ double mfCornerRadiusY; // [0.0..1.0] relative to 1/2 height
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrCaptionPrimitive2D(
+ const ::basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
+ const ::basegfx::B2DPolygon& rTail,
+ double fCornerRadiusX = 0.0,
+ double fCornerRadiusY = 0.0);
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // data access
+ const ::basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ const ::basegfx::B2DPolygon& getTail() const { return maTail; }
+ double getCornerRadiusX() const { return mfCornerRadiusX; }
+ double getCornerRadiusY() const { return mfCornerRadiusY; }
+ bool isCornerRadiusUsed() const { return (0.0 != mfCornerRadiusX || 0.0 != mfCornerRadiusY); }
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRCAPTIONPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx
new file mode 100644
index 000000000000..d532d733e60e
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrConnectorPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ attribute::SdrLineShadowTextAttribute maSdrLSTAttribute;
+ ::basegfx::B2DPolygon maUnitPolygon;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrConnectorPrimitive2D(
+ const attribute::SdrLineShadowTextAttribute& rSdrLSTAttribute,
+ const ::basegfx::B2DPolygon& rUnitPolygon);
+
+ // data access
+ const attribute::SdrLineShadowTextAttribute& getSdrLSTAttribute() const { return maSdrLSTAttribute; }
+ const ::basegfx::B2DPolygon& getUnitPolygon() const { return maUnitPolygon; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
new file mode 100644
index 000000000000..9b2a12e5d386
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDCUSTOMSHAPEPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDCUSTOMSHAPEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrCustomShapePrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ attribute::SdrShadowTextAttribute maSdrSTAttribute;
+ Primitive2DSequence maSubPrimitives;
+ basegfx::B2DHomMatrix maTextBox;
+
+ // bitfield
+ // defines if SdrTextWordWrapItem was set at SdrObjCustomShape which means
+ // that the text needs to be block formatted
+ unsigned mbWordWrap : 1;
+
+ // defines that the object contains/is a 3D AutoShape. Needed for
+ // making exceptions with shadow generation
+ unsigned mb3DShape : 1;
+
+ // #SJ# Allow text clipping against TextBox in special cases (used for SC)
+ unsigned mbForceTextClipToTextRange : 1;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrCustomShapePrimitive2D(
+ const attribute::SdrShadowTextAttribute& rSdrSTAttribute,
+ const Primitive2DSequence& rSubPrimitives,
+ const basegfx::B2DHomMatrix& rTextBox,
+ bool bWordWrap,
+ bool b3DShape,
+ bool bForceTextClipToTextRange);
+
+ // data access
+ const attribute::SdrShadowTextAttribute& getSdrSTAttribute() const { return maSdrSTAttribute; }
+ const Primitive2DSequence& getSubPrimitives() const { return maSubPrimitives; }
+ const basegfx::B2DHomMatrix& getTextBox() const { return maTextBox; }
+ bool getWordWrap() const { return mbWordWrap; }
+ bool get3DShape() const { return mb3DShape; }
+ bool isForceTextClipToTextRange() const { return mbForceTextClipToTextRange; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDCUSTOMSHAPEPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx b/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx
new file mode 100644
index 000000000000..7ef8f3a3f476
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+namespace basegfx {
+ class B2DPolygon;
+ class B2DPolyPolygon;
+ class B2DHomMatrix;
+}
+
+namespace drawinglayer { namespace attribute {
+ class SdrFillAttribute;
+ class SdrLineAttribute;
+ class FillGradientAttribute;
+ class SdrShadowAttribute;
+ class SdrLineStartEndAttribute;
+ class SdrTextAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ Primitive2DReference createPolyPolygonFillPrimitive(
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
+ const attribute::SdrFillAttribute& rFill,
+ const attribute::FillGradientAttribute& rFillGradient);
+
+ Primitive2DReference createPolygonLinePrimitive(
+ const basegfx::B2DPolygon& rUnitPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
+ const attribute::SdrLineAttribute& rLine,
+ const attribute::SdrLineStartEndAttribute& rStroke);
+
+ Primitive2DReference createTextPrimitive(
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
+ const attribute::SdrTextAttribute& rText,
+ const attribute::SdrLineAttribute& rStroke,
+ bool bCellText,
+ bool bWordWrap,
+ bool bClipOnBounds);
+
+ Primitive2DSequence createEmbeddedShadowPrimitive(
+ const Primitive2DSequence& rContent,
+ const attribute::SdrShadowAttribute& rShadow);
+
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx
new file mode 100644
index 000000000000..84f1dfad9b00
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRELLIPSEPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRELLIPSEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrEllipsePrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ ::basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrEllipsePrimitive2D(
+ const ::basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute);
+
+ // data access
+ const ::basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrEllipseSegmentPrimitive2D : public SdrEllipsePrimitive2D
+ {
+ private:
+ double mfStartAngle;
+ double mfEndAngle;
+
+ // bitfield
+ unsigned mbCloseSegment : 1;
+ unsigned mbCloseUsingCenter : 1;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrEllipseSegmentPrimitive2D(
+ const ::basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
+ double fStartAngle,
+ double fEndAngle,
+ bool bCloseSegment,
+ bool bCloseUsingCenter);
+
+ // data access
+ double getStartAngle() const { return mfStartAngle; }
+ double getEndAngle() const { return mfEndAngle; }
+ bool getCloseSegment() const { return mbCloseSegment; }
+ bool getCloseUsingCenter() const { return mbCloseUsingCenter; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRELLIPSEPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx
new file mode 100644
index 000000000000..f488dfaa2ee4
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRGRAFPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRGRAFPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svtools/grfmgr.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrGrafPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ ::basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute;
+ GraphicObject maGraphicObject;
+ GraphicAttr maGraphicAttr;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrGrafPrimitive2D(
+ const ::basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
+ const GraphicObject& rGraphicObject,
+ const GraphicAttr& rGraphicAttr);
+
+ // data access
+ const ::basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ const GraphicObject& getGraphicObject() const { return maGraphicObject; }
+ const GraphicAttr& getGraphicAttr() const { return maGraphicAttr; }
+ bool isTransparent() const;
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRGRAFPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx
new file mode 100644
index 000000000000..943cbbf65940
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace drawinglayer { namespace primitive2d {
+ enum MeasureTextPosition
+ {
+ MEASURETEXTPOSITION_AUTOMATIC,
+ MEASURETEXTPOSITION_NEGATIVE,
+ MEASURETEXTPOSITION_CENTERED,
+ MEASURETEXTPOSITION_POSITIVE
+ };
+}}
+
+namespace drawinglayer { namespace attribute {
+ class SdrLineAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrMeasurePrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ attribute::SdrLineShadowTextAttribute maSdrLSTAttribute;
+ basegfx::B2DPoint maStart;
+ basegfx::B2DPoint maEnd;
+ MeasureTextPosition meHorizontal;
+ MeasureTextPosition meVertical;
+ double mfDistance;
+ double mfUpper;
+ double mfLower;
+ double mfLeftDelta;
+ double mfRightDelta;
+
+ // bitfield
+ unsigned mbBelow : 1;
+ unsigned mbTextRotation : 1;
+ unsigned mbTextAutoAngle : 1;
+
+ // internal decomposition helper
+ Primitive2DReference impCreatePart(
+ const attribute::SdrLineAttribute& rLineAttribute,
+ const basegfx::B2DHomMatrix& rObjectMatrix,
+ const basegfx::B2DPoint& rStart,
+ const basegfx::B2DPoint& rEnd,
+ bool bLeftActive,
+ bool bRightActive) const;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrMeasurePrimitive2D(
+ const attribute::SdrLineShadowTextAttribute& rSdrLSTAttribute,
+ const basegfx::B2DPoint& rStart,
+ const basegfx::B2DPoint& rEnd,
+ MeasureTextPosition eHorizontal,
+ MeasureTextPosition eVertical,
+ double fDistance,
+ double fUpper,
+ double fLower,
+ double fLeftDelta,
+ double fRightDelta,
+ bool bBelow,
+ bool bTextRotation,
+ bool bTextAutoAngle);
+
+ // data access
+ const attribute::SdrLineShadowTextAttribute& getSdrLSTAttribute() const { return maSdrLSTAttribute; }
+ const basegfx::B2DPoint& getStart() const { return maStart; }
+ const basegfx::B2DPoint& getEnd() const { return maEnd; }
+ MeasureTextPosition getHorizontal() const { return meHorizontal; }
+ MeasureTextPosition getVertical() const { return meVertical; }
+ double getDistance() const { return mfDistance; }
+ double getUpper() const { return mfUpper; }
+ double getLower() const { return mfLower; }
+ double getLeftDelta() const { return mfLeftDelta; }
+ double getRightDelta() const { return mfRightDelta; }
+ bool getBelow() const { return mbBelow; }
+ bool getTextRotation() const { return mbTextRotation; }
+ bool getTextAutoAngle() const { return mbTextAutoAngle; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx
new file mode 100644
index 000000000000..45702d3300e3
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDROLE2PRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDROLE2PRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrOle2Primitive2D : public BasePrimitive2D
+ {
+ private:
+ Primitive2DSequence maOLEContent;
+ basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute;
+
+ public:
+ SdrOle2Primitive2D(
+ const Primitive2DSequence& rOLEContent,
+ const basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute);
+
+ // data access
+ const Primitive2DSequence& getOLEContent() const { return maOLEContent; }
+ const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // local decomposition.
+ virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDROLE2PRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrolecontentprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrolecontentprimitive2d.hxx
new file mode 100644
index 000000000000..9aa5c854abfd
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrolecontentprimitive2d.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDROLECONTENTPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDROLECONTENTPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/svdobj.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefinitions
+
+class SdrOle2Obj;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrOleContentPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ SdrObjectWeakRef mpSdrOle2Obj;
+ basegfx::B2DHomMatrix maObjectTransform;
+
+ // #i104867# The GraphicVersion number to identify in operator== if
+ // the graphic has changed, but without fetching it (which may
+ // be expensive, e.g. triggering chart creation)
+ sal_uInt32 mnGraphicVersion;
+
+ // bitfield
+ unsigned mbHighContrast : 1;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrOleContentPrimitive2D(
+ const SdrOle2Obj& rSdrOle2Obj,
+ const basegfx::B2DHomMatrix& rObjectTransform,
+ sal_uInt32 nGraphicVersion,
+ bool bHighContrast);
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // The default implementation will use getDecomposition results to create the range
+ virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
+
+ // data access
+ const basegfx::B2DHomMatrix& getObjectTransform() const { return maObjectTransform; }
+ sal_uInt32 getGraphicVersion() const { return mnGraphicVersion; }
+ bool getHighContrast() const { return mbHighContrast; }
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDROLECONTENTPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx
new file mode 100644
index 000000000000..0601a0696c49
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRPATHPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRPATHPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrPathPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute;
+ basegfx::B2DPolyPolygon maUnitPolyPolygon;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrPathPrimitive2D(
+ const basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon);
+
+ // data access
+ const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ const basegfx::B2DPolyPolygon& getUnitPolyPolygon() const { return maUnitPolyPolygon; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRPATHPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx b/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx
new file mode 100644
index 000000000000..b3472b4f13ba
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_PRIMITIVETOOLS_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_PRIMITIVETOOLS_HXX
+
+#include <vcl/bitmapex.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// helper methods
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ // create a 3x3 cross in given color as BitmapEx
+ BitmapEx createDefaultCross_3x3(const basegfx::BColor& rBColor);
+
+ // create a 7x7 gluepoint symbol in given colors as BitmapEx
+ BitmapEx createDefaultGluepoint_7x7(const basegfx::BColor& rBColorA, const basegfx::BColor& rBColorB);
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_PRIMITIVETOOLS_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx
new file mode 100644
index 000000000000..b5c42d850be0
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRRECTANGLEPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRRECTANGLEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrRectanglePrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ basegfx::B2DHomMatrix maTransform;
+ attribute::SdrLineFillShadowTextAttribute maSdrLFSTAttribute;
+ double mfCornerRadiusX; // [0.0..1.0] relative to 1/2 width
+ double mfCornerRadiusY; // [0.0..1.0] relative to 1/2 height
+
+ // bitfield
+ // flag which decides if the HitArea should be the filled geometry
+ bool mbForceFillForHitTest : 1;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrRectanglePrimitive2D(
+ const basegfx::B2DHomMatrix& rTransform,
+ const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
+ double fCornerRadiusX,
+ double fCornerRadiusY,
+ bool bForceFillForHitTest);
+
+ // data access
+ const basegfx::B2DHomMatrix& getTransform() const { return maTransform; }
+ const attribute::SdrLineFillShadowTextAttribute& getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
+ double getCornerRadiusX() const { return mfCornerRadiusX; }
+ double getCornerRadiusY() const { return mfCornerRadiusY; }
+ bool isCornerRadiusUsed() const { return (0.0 != mfCornerRadiusX || 0.0 != mfCornerRadiusY); }
+ bool getForceFillForHitTest() const { return mbForceFillForHitTest; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRRECTANGLEPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/sdrtextprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrtextprimitive2d.hxx
new file mode 100644
index 000000000000..a6e963c7ef13
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/sdrtextprimitive2d.hxx
@@ -0,0 +1,305 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SDR_PRIMITIVE2D_SDRTEXTPRIMITIVE2D_HXX
+#define INCLUDED_SDR_PRIMITIVE2D_SDRTEXTPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <editeng/outlobj.hxx>
+#include <tools/color.hxx>
+#include <svx/sdr/attribute/sdrformtextattribute.hxx>
+#include <tools/weakbase.hxx>
+#include <svx/sdtaitm.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+class SdrText;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrTextPrimitive2D : public BufferedDecompositionPrimitive2D
+ {
+ private:
+ // The text model data; this sould later just be the OutlinerParaObject or
+ // something equal
+ ::tools::WeakReference< SdrText > mrSdrText;
+
+ // #i97628#
+ // The text content; now as local OutlinerParaObject copy (internally RefCounted and
+ // COW) and in exclusive, local form as needed in a primitive
+ const OutlinerParaObject maOutlinerParaObject;
+
+ // remeber last VisualizingPage for which a decomposition was made. If the new target
+ // is not given or different, the decomposition needs to be potentially removed
+ // for supporting e.g. page number change on MasterPage objects or the different
+ // field renderings in SubGeometry and MasterPage mnode
+ com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > mxLastVisualizingPage;
+
+ // remember last PageNumber for which a decomposition was made. This is only used
+ // when mbContainsPageField is true, else it is 0
+ sal_Int16 mnLastPageNumber;
+
+ // remember last PageCount for which a decomposition was made. This is only used
+ // when mbContainsPageCountField is true, else it is 0
+ sal_Int16 mnLastPageCount;
+
+ // #i101443# remember last TextBackgroundColor to decide if a new decomposition is
+ // needed because of background color change
+ Color maLastTextBackgroundColor;
+
+ // bitfield
+ // is there a PageNumber, Header, Footer or DateTimeField used? Evaluated at construction
+ unsigned mbContainsPageField : 1;
+ unsigned mbContainsPageCountField : 1;
+ unsigned mbContainsOtherFields : 1;
+
+ protected:
+ // support for XTEXT_PAINTSHAPE_BEGIN/XTEXT_PAINTSHAPE_END Metafile comments
+ Primitive2DSequence encapsulateWithTextHierarchyBlockPrimitive2D(const Primitive2DSequence& rCandidate) const;
+
+ public:
+ SdrTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr);
+
+ // get data
+ const SdrText* getSdrText() const { return mrSdrText.get(); }
+ const OutlinerParaObject& getOutlinerParaObject() const { return maOutlinerParaObject; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // own get2DDecomposition to take aspect of decomposition with or without spell checker
+ // into account
+ virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ // transformed clone operator
+ virtual SdrTextPrimitive2D* createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const = 0;
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrContourTextPrimitive2D : public SdrTextPrimitive2D
+ {
+ private:
+ // unit contour polygon (scaled to [0.0 .. 1.0])
+ basegfx::B2DPolyPolygon maUnitPolyPolygon;
+
+ // complete contour polygon transform (scale, rotate, shear, translate)
+ basegfx::B2DHomMatrix maObjectTransform;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrContourTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform);
+
+ // get data
+ const basegfx::B2DPolyPolygon& getUnitPolyPolygon() const { return maUnitPolyPolygon; }
+ const basegfx::B2DHomMatrix& getObjectTransform() const { return maObjectTransform; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // transformed clone operator
+ virtual SdrTextPrimitive2D* createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrPathTextPrimitive2D : public SdrTextPrimitive2D
+ {
+ private:
+ // the path to use. Each paragraph will use one Polygon.
+ basegfx::B2DPolyPolygon maPathPolyPolygon;
+
+ // the Fontwork parameters
+ attribute::SdrFormTextAttribute maSdrFormTextAttribute;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrPathTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ const basegfx::B2DPolyPolygon& rPathPolyPolygon,
+ const attribute::SdrFormTextAttribute& rSdrFormTextAttribute);
+
+ // get data
+ const basegfx::B2DPolyPolygon& getPathPolyPolygon() const { return maPathPolyPolygon; }
+ const attribute::SdrFormTextAttribute& getSdrFormTextAttribute() const { return maSdrFormTextAttribute; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // transformed clone operator
+ virtual SdrTextPrimitive2D* createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrBlockTextPrimitive2D : public SdrTextPrimitive2D
+ {
+ private:
+ // text range transformation from unit range ([0.0 .. 1.0]) to text range
+ basegfx::B2DHomMatrix maTextRangeTransform;
+
+ // text alignments
+ SdrTextHorzAdjust maSdrTextHorzAdjust;
+ SdrTextVertAdjust maSdrTextVertAdjust;
+
+ // bitfield
+ unsigned mbFixedCellHeight : 1;
+ unsigned mbUnlimitedPage : 1; // force layout with no text break
+ unsigned mbCellText : 1; // this is a cell text as block text
+ unsigned mbWordWrap : 1; // for CustomShapes text layout
+ unsigned mbClipOnBounds : 1; // for CustomShapes text layout
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrBlockTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ const basegfx::B2DHomMatrix& rTextRangeTransform,
+ SdrTextHorzAdjust aSdrTextHorzAdjust,
+ SdrTextVertAdjust aSdrTextVertAdjust,
+ bool bFixedCellHeight,
+ bool bUnlimitedPage,
+ bool bCellText,
+ bool bWordWrap,
+ bool bClipOnBounds);
+
+ // get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
+ SdrTextHorzAdjust getSdrTextHorzAdjust() const { return maSdrTextHorzAdjust; }
+ SdrTextVertAdjust getSdrTextVertAdjust() const { return maSdrTextVertAdjust; }
+ bool isFixedCellHeight() const { return mbFixedCellHeight; }
+ bool getUnlimitedPage() const { return mbUnlimitedPage; }
+ bool getCellText() const { return mbCellText; }
+ bool getWordWrap() const { return mbWordWrap; }
+ bool getClipOnBounds() const { return mbClipOnBounds; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // transformed clone operator
+ virtual SdrTextPrimitive2D* createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ class SdrStretchTextPrimitive2D : public SdrTextPrimitive2D
+ {
+ private:
+ // text range transformation from unit range ([0.0 .. 1.0]) to text range
+ basegfx::B2DHomMatrix maTextRangeTransform;
+
+ // bitfield
+ unsigned mbFixedCellHeight : 1;
+
+ protected:
+ // local decomposition.
+ virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const;
+
+ public:
+ SdrStretchTextPrimitive2D(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObjectPtr,
+ const basegfx::B2DHomMatrix& rTextRangeTransform,
+ bool bFixedCellHeight);
+
+ // get data
+ const basegfx::B2DHomMatrix& getTextRangeTransform() const { return maTextRangeTransform; }
+ bool isFixedCellHeight() const { return mbFixedCellHeight; }
+
+ // compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ // transformed clone operator
+ virtual SdrTextPrimitive2D* createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_SDR_PRIMITIVE2D_SDRTEXTPRIMITIVE2D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/primitive2d/svx_primitivetypes2d.hxx b/svx/inc/svx/sdr/primitive2d/svx_primitivetypes2d.hxx
new file mode 100644
index 000000000000..53707f18fa4b
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive2d/svx_primitivetypes2d.hxx
@@ -0,0 +1,64 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SVX_PRIMITIVE2D_PRIMITIVETYPES2D_HXX
+#define INCLUDED_SVX_PRIMITIVE2D_PRIMITIVETYPES2D_HXX
+
+#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+#define PRIMITIVE2D_ID_SDRCAPTIONPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 0)
+#define PRIMITIVE2D_ID_SDRCONNECTORPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 1)
+#define PRIMITIVE2D_ID_SDRCUSTOMSHAPEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 2)
+#define PRIMITIVE2D_ID_SDRELLIPSEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 3)
+#define PRIMITIVE2D_ID_SDRELLIPSESEGMENTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 4)
+#define PRIMITIVE2D_ID_SDRGRAFPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 5)
+#define PRIMITIVE2D_ID_SDRMEASUREPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 6)
+#define PRIMITIVE2D_ID_SDROLE2PRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 7)
+#define PRIMITIVE2D_ID_SDRPATHPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 8)
+#define PRIMITIVE2D_ID_SDRRECTANGLEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 9)
+#define PRIMITIVE2D_ID_SDRCONTOURTEXTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 10)
+#define PRIMITIVE2D_ID_SDRPATHTEXTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 11)
+#define PRIMITIVE2D_ID_SDRBLOCKTEXTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 12)
+#define PRIMITIVE2D_ID_SDRSTRETCHTEXTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 13)
+#define PRIMITIVE2D_ID_SDRCELLPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 14)
+#define PRIMITIVE2D_ID_SDRBORDERLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 15)
+#define PRIMITIVE2D_ID_OVERLAYBITMAPEXPRIMITIVE (PRIMITIVE2D_ID_RANGE_SVX| 16)
+#define PRIMITIVE2D_ID_OVERLAYCROSSHAIRPRIMITIVE (PRIMITIVE2D_ID_RANGE_SVX| 17)
+#define PRIMITIVE2D_ID_OVERLAYHATCHRECTANGLEPRIMITIVE (PRIMITIVE2D_ID_RANGE_SVX| 18)
+#define PRIMITIVE2D_ID_OVERLAYHELPLINESTRIPEDPRIMITIVE (PRIMITIVE2D_ID_RANGE_SVX| 19)
+#define PRIMITIVE2D_ID_OVERLAYROLLINGRECTANGLEPRIMITIVE (PRIMITIVE2D_ID_RANGE_SVX| 20)
+#define PRIMITIVE2D_ID_SDRCONTROLPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 21)
+#define PRIMITIVE2D_ID_SDROLECONTENTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_SVX| 22)
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // INCLUDED_SVX_PRIMITIVE2D_PRIMITIVETYPES2D_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/inc/svx/sdr/primitive3d/sdrattributecreator3d.hxx b/svx/inc/svx/sdr/primitive3d/sdrattributecreator3d.hxx
new file mode 100644
index 000000000000..809d3f71b11c
--- /dev/null
+++ b/svx/inc/svx/sdr/primitive3d/sdrattributecreator3d.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PRIMITIVE3D_SDRATTRIBUTECREATOR3D_HXX
+#define _SDR_PRIMITIVE3D_SDRATTRIBUTECREATOR3D_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+class SfxItemSet;
+
+namespace drawinglayer { namespace attribute {
+ class Sdr3DObjectAttribute;
+}}
+
+namespace basegfx {
+ class B2DRange;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ // SdrAttribute creators
+ attribute::Sdr3DObjectAttribute* createNewSdr3DObjectAttribute(const SfxItemSet& rSet);
+
+ // helpers
+
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PRIMITIVE3D_SDRATTRIBUTECREATOR3D_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/attributeproperties.hxx b/svx/inc/svx/sdr/properties/attributeproperties.hxx
new file mode 100644
index 000000000000..a8df62b52a67
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/attributeproperties.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_ATTRIBUTEPROPERTIES_HXX
+#define _SDR_PROPERTIES_ATTRIBUTEPROPERTIES_HXX
+
+#include <svl/lstner.hxx>
+#include <svx/sdr/properties/defaultproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC AttributeProperties : public DefaultProperties, public SfxListener
+ {
+ // add style sheet, do all the necessary handling
+ void ImpAddStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // remove StyleSheet, do all the necessary handling
+ void ImpRemoveStyleSheet();
+
+ protected:
+ // the SytleSheet of this object
+ SfxStyleSheet* mpStyleSheet;
+
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& pPool);
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ AttributeProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ AttributeProperties(const AttributeProperties& rProps, SdrObject& rObj);
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // destructor
+ virtual ~AttributeProperties();
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+ // Move properties to a new ItemPool.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel = 0L);
+
+ // Set new model.
+ virtual void SetModel(SdrModel* pOldModel, SdrModel* pNewModel);
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes();
+
+ // This is the Notify(...) from 2nd base class SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_ATTRIBUTEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/captionproperties.hxx b/svx/inc/svx/sdr/properties/captionproperties.hxx
new file mode 100644
index 000000000000..124bc19b67f1
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/captionproperties.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_CAPTIONPROPERTIES_HXX
+#define _SDR_PROPERTIES_CAPTIONPROPERTIES_HXX
+
+#include <svx/sdr/properties/rectangleproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class CaptionProperties : public RectangleProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ CaptionProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ CaptionProperties(const CaptionProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~CaptionProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_CAPTIONPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/circleproperties.hxx b/svx/inc/svx/sdr/properties/circleproperties.hxx
new file mode 100644
index 000000000000..57efd50b0e01
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/circleproperties.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_CIRCLEPROPERTIES_HXX
+#define _SDR_PROPERTIES_CIRCLEPROPERTIES_HXX
+
+#include <svx/sdr/properties/rectangleproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class CircleProperties : public RectangleProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ CircleProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ CircleProperties(const CircleProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~CircleProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_CIRCLEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/connectorproperties.hxx b/svx/inc/svx/sdr/properties/connectorproperties.hxx
new file mode 100644
index 000000000000..30752f149200
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/connectorproperties.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_CONNECTORPROPERTIES_HXX
+#define _SDR_PROPERTIES_CONNECTORPROPERTIES_HXX
+
+#include <svx/sdr/properties/textproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class ConnectorProperties : public TextProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ ConnectorProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ ConnectorProperties(const ConnectorProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~ConnectorProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_CONNECTORPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/customshapeproperties.hxx b/svx/inc/svx/sdr/properties/customshapeproperties.hxx
new file mode 100644
index 000000000000..8adbf10107d9
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/customshapeproperties.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_CUSTOMSHAPEPROPERTIES_HXX
+#define _SDR_PROPERTIES_CUSTOMSHAPEPROPERTIES_HXX
+
+#include <svx/sdr/properties/textproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class CustomShapeProperties : public TextProperties
+ {
+ void UpdateTextFrameStatus();
+
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // test changeability for a single item
+ virtual sal_Bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0) const;
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ // react on Item change
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem);
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0);
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deleteion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich = 0);
+
+ public:
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+
+ // basic constructor
+ CustomShapeProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ CustomShapeProperties(const CustomShapeProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~CustomShapeProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // This is the notifyer from SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_CUSTOMSHAPEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/defaultproperties.hxx b/svx/inc/svx/sdr/properties/defaultproperties.hxx
new file mode 100644
index 000000000000..58aceccadf1a
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/defaultproperties.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_DEFAULTPROPERTIES_HXX
+#define _SDR_PROPERTIES_DEFAULTPROPERTIES_HXX
+
+#include <svx/sdr/properties/properties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC DefaultProperties : public BaseProperties
+ {
+ protected:
+ // the to be used ItemSet
+ SfxItemSet* mpItemSet;
+
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // test changeability for a single item
+ virtual sal_Bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0) const;
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0);
+
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ DefaultProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ DefaultProperties(const DefaultProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~DefaultProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const;
+
+ // set single item
+ virtual void SetObjectItem(const SfxPoolItem& rItem);
+
+ // set single item direct, do not do any notifies or things like that
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem);
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0);
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deleteion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich = 0);
+
+ // set complete item set
+ virtual void SetObjectItemSet(const SfxItemSet& rSet);
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created.
+ // Default implementation does nothing.
+ virtual void ForceDefaultAttributes();
+
+ // Scale the included ItemSet.
+ virtual void Scale(const Fraction& rScale);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+#endif //_SDR_PROPERTIES_DEFAULTPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/e3dcompoundproperties.hxx b/svx/inc/svx/sdr/properties/e3dcompoundproperties.hxx
new file mode 100644
index 000000000000..085da6720382
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/e3dcompoundproperties.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_E3DCOMPOUNDPROPERTIES_HXX
+#define _SDR_PROPERTIES_E3DCOMPOUNDPROPERTIES_HXX
+
+#include <svx/sdr/properties/e3dproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC E3dCompoundProperties : public E3dProperties
+ {
+ protected:
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ public:
+ // basic constructor
+ E3dCompoundProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dCompoundProperties(const E3dCompoundProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dCompoundProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const;
+
+ // Get merged ItemSet. Normally, this maps directly to GetObjectItemSet(), but may
+ // be overloaded e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SFX_ITEM_DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_E3DCOMPOUNDPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/e3dextrudeproperties.hxx b/svx/inc/svx/sdr/properties/e3dextrudeproperties.hxx
new file mode 100644
index 000000000000..f6baf589d642
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/e3dextrudeproperties.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_E3DEXTRUDEPROPERTIES_HXX
+#define _SDR_PROPERTIES_E3DEXTRUDEPROPERTIES_HXX
+
+#include <svx/sdr/properties/e3dcompoundproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC E3dExtrudeProperties : public E3dCompoundProperties
+ {
+ protected:
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ public:
+ // basic constructor
+ E3dExtrudeProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dExtrudeProperties(const E3dExtrudeProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dExtrudeProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_E3DEXTRUDEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/e3dlatheproperties.hxx b/svx/inc/svx/sdr/properties/e3dlatheproperties.hxx
new file mode 100644
index 000000000000..37810b36de0e
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/e3dlatheproperties.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_E3DLATHEPROPERTIES_HXX
+#define _SDR_PROPERTIES_E3DLATHEPROPERTIES_HXX
+
+#include <svx/sdr/properties/e3dcompoundproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC E3dLatheProperties : public E3dCompoundProperties
+ {
+ protected:
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ public:
+ // basic constructor
+ E3dLatheProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dLatheProperties(const E3dLatheProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dLatheProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_E3DLATHEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/e3dproperties.hxx b/svx/inc/svx/sdr/properties/e3dproperties.hxx
new file mode 100644
index 000000000000..957e37cac0b6
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/e3dproperties.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_E3DPROPERTIES_HXX
+#define _SDR_PROPERTIES_E3DPROPERTIES_HXX
+
+#include <svx/sdr/properties/attributeproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC E3dProperties : public AttributeProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ E3dProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dProperties(const E3dProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_E3DPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/e3dsceneproperties.hxx b/svx/inc/svx/sdr/properties/e3dsceneproperties.hxx
new file mode 100644
index 000000000000..0ef471999fb6
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/e3dsceneproperties.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_E3DSCENEPROPERTIES_HXX
+#define _SDR_PROPERTIES_E3DSCENEPROPERTIES_HXX
+
+#include <svx/sdr/properties/e3dproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class E3dSceneProperties : public E3dProperties
+ {
+ protected:
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ public:
+ // basic constructor
+ E3dSceneProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dSceneProperties(const E3dSceneProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dSceneProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const;
+
+ // get merged ItemSet. Normappl, this maps directly to GetObjectItemSet(), but may
+ // be overloaded e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SFX_ITEM_DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+
+ // Set a single item, iterate over hierarchies if necessary.
+ virtual void SetMergedItem(const SfxPoolItem& rItem);
+
+ // Clear a single item, iterate over hierarchies if necessary.
+ virtual void ClearMergedItem(const sal_uInt16 nWhich = 0);
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+ // Move properties to a new ItemPool. Default implementation does nothing.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel = 0L);
+
+ // Special for scene:
+ void SetSceneItemsFromCamera();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_E3DSCENEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/e3dsphereproperties.hxx b/svx/inc/svx/sdr/properties/e3dsphereproperties.hxx
new file mode 100644
index 000000000000..73b68b04e418
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/e3dsphereproperties.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_E3DSPHEREPROPERTIES_HXX
+#define _SDR_PROPERTIES_E3DSPHEREPROPERTIES_HXX
+
+#include <svx/sdr/properties/e3dcompoundproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class E3dSphereProperties : public E3dCompoundProperties
+ {
+ protected:
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ public:
+ // basic constructor
+ E3dSphereProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ E3dSphereProperties(const E3dSphereProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~E3dSphereProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_PROPERTIES_E3DSPHEREPROPERTIES_HXX
+
+// eof
+
diff --git a/svx/inc/svx/sdr/properties/emptyproperties.hxx b/svx/inc/svx/sdr/properties/emptyproperties.hxx
new file mode 100644
index 000000000000..8cab0b03ca41
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/emptyproperties.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_EMPTYPROPERTIES_HXX
+#define _SDR_PROPERTIES_EMPTYPROPERTIES_HXX
+
+#include <svx/sdr/properties/properties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC EmptyProperties : public BaseProperties
+ {
+ protected:
+ // the to be used ItemSet
+ SfxItemSet* mpEmptyItemSet;
+
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // test changeability for a single item
+ virtual sal_Bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0) const;
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0);
+
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ EmptyProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ EmptyProperties(const EmptyProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~EmptyProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const;
+
+ // set single item
+ virtual void SetObjectItem(const SfxPoolItem& rItem);
+
+ // set single item direct, do not do any notifies or things like that
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem);
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0);
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deleteion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich = 0);
+
+ // set complete item set
+ virtual void SetObjectItemSet(const SfxItemSet& rSet);
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+#endif //_SDR_PROPERTIES_EMPTYPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/graphicproperties.hxx b/svx/inc/svx/sdr/properties/graphicproperties.hxx
new file mode 100644
index 000000000000..b3e04a67da55
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/graphicproperties.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_GRAPHICPROPERTIES_HXX
+#define _SDR_PROPERTIES_GRAPHICPROPERTIES_HXX
+
+#include <svx/sdr/properties/rectangleproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class GraphicProperties : public RectangleProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ GraphicProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ GraphicProperties(const GraphicProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~GraphicProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_GRAPHICPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/groupproperties.hxx b/svx/inc/svx/sdr/properties/groupproperties.hxx
new file mode 100644
index 000000000000..f91f91db42d4
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/groupproperties.hxx
@@ -0,0 +1,129 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_GROUPPROPERTIES_HXX
+#define _SDR_PROPERTIES_GROUPPROPERTIES_HXX
+
+#include <svx/sdr/properties/defaultproperties.hxx>
+
+/////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class GroupProperties : public DefaultProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // test changeability for a single item
+ virtual sal_Bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0) const;
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0);
+
+ // Called after ItemChange() is done for all items.
+ virtual void PostItemChange(const sal_uInt16 nWhich);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ GroupProperties(SdrObject& rObj);
+
+ // copy constructor
+ GroupProperties(const GroupProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~GroupProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // get itemset
+ virtual const SfxItemSet& GetObjectItemSet() const;
+
+ // get merged ItemSet. Normally, this maps directly to GetObjectItemSet(), but may
+ // be overloaded e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SFX_ITEM_DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+
+ // set single item
+ virtual void SetObjectItem(const SfxPoolItem& rItem);
+
+ // set single item direct, do not do any notifies or things like that
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem);
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0);
+
+ // clear single item direct, do not do any notifies or things like that.
+ // Also supports complete deleteion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich = 0);
+
+ // Set a single item, iterate over hierarchies if necessary.
+ virtual void SetMergedItem(const SfxPoolItem& rItem);
+
+ // Clear a single item, iterate over hierarchies if necessary.
+ virtual void ClearMergedItem(const sal_uInt16 nWhich = 0);
+
+ // set complete item set
+ virtual void SetObjectItemSet(const SfxItemSet& rSet);
+
+ // set a new StyleSheet
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // get the local StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+
+ // Move properties to a new ItemPool.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel = 0L);
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_GROUPPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/itemsettools.hxx b/svx/inc/svx/sdr/properties/itemsettools.hxx
new file mode 100644
index 000000000000..d52189ae93cc
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/itemsettools.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_ITEMSETTOOLS_HXX
+#define _SDR_PROPERTIES_ITEMSETTOOLS_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrObject;
+class SfxItemSet;
+class Rectangle;
+class Fraction;
+
+//////////////////////////////////////////////////////////////////////////////
+// class to remember broadcast start positions
+namespace sdr
+{
+ namespace properties
+ {
+ class ItemChangeBroadcaster
+ {
+ sal_uInt32 mnCount;
+ void* mpData;
+
+ public:
+ ItemChangeBroadcaster(const SdrObject& rObj);
+ ~ItemChangeBroadcaster();
+
+ sal_uInt32 GetRectangleCount() const;
+ const Rectangle& GetRectangle(sal_uInt32 nIndex) const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ void ScaleItemSet(SfxItemSet& rSet, const Fraction& rScale);
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_ITEMSETTOOLS_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/measureproperties.hxx b/svx/inc/svx/sdr/properties/measureproperties.hxx
new file mode 100644
index 000000000000..a204ebfe9949
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/measureproperties.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_MEASUREPROPERTIES_HXX
+#define _SDR_PROPERTIES_MEASUREPROPERTIES_HXX
+
+#include <svx/sdr/properties/textproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class MeasureProperties : public TextProperties
+ {
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ MeasureProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ MeasureProperties(const MeasureProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~MeasureProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_MEASUREPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/oleproperties.hxx b/svx/inc/svx/sdr/properties/oleproperties.hxx
new file mode 100644
index 000000000000..009c375dff99
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/oleproperties.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: graphicproperties.hxx,v $
+ * $Revision: 1.6 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_OLEPROPERTIES_HXX
+#define _SDR_PROPERTIES_OLEPROPERTIES_HXX
+
+#include <svx/sdr/properties/rectangleproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class OleProperties : public RectangleProperties
+ {
+ protected:
+ public:
+ // basic constructor
+ OleProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ OleProperties(const OleProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~OleProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_OLEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/pageproperties.hxx b/svx/inc/svx/sdr/properties/pageproperties.hxx
new file mode 100644
index 000000000000..d85686b3bc5b
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/pageproperties.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_PAGEPROPERTIES_HXX
+#define _SDR_PROPERTIES_PAGEPROPERTIES_HXX
+
+#include <svx/sdr/properties/emptyproperties.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class PageProperties : public EmptyProperties
+ {
+ protected:
+ // create a new object specific itemset with object specific ranges.
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& pPool);
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0);
+
+ public:
+ // basic constructor
+ PageProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ PageProperties(const PageProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~PageProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // get itemset. Overloaded here to allow creating the empty itemset
+ // without asserting
+ virtual const SfxItemSet& GetObjectItemSet() const;
+
+ // get the installed StyleSheet
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+ // clear single item
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_PAGEPROPERTIES_HXX
+
+// eof
+
+
diff --git a/svx/inc/svx/sdr/properties/properties.hxx b/svx/inc/svx/sdr/properties/properties.hxx
new file mode 100644
index 000000000000..311c2ccfd1a5
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/properties.hxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_PROPERTIES_HXX
+#define _SDR_PROPERTIES_PROPERTIES_HXX
+
+#include <sal/types.h>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class SdrObject;
+class SfxItemSet;
+class SfxPoolItem;
+class SfxStyleSheet;
+class Fraction;
+class SfxItemPool;
+class SdrModel;
+
+namespace sdr
+{
+ namespace properties
+ {
+ class ItemChangeBroadcaster;
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC BaseProperties
+ {
+ protected:
+ // the owner of this Properties. Set from constructor and not
+ // to be changed in any way.
+ SdrObject& mrObject;
+
+ // create a new object specific itemset with object specific ranges.
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& pPool) = 0;
+
+ // internal access to SdrObject
+ SdrObject& GetSdrObject() const
+ {
+ return mrObject;
+ }
+
+ // Test changeability for a single item. If a implementation wants to prevent
+ // changing an item this method may be overloaded.
+ virtual sal_Bool AllowItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0) const = 0;
+
+ // Do the internal ItemChange. If only nWhich is given, the item needs to be cleared.
+ // Also needs to handle if nWhich and pNewItem is 0, which means to clear all items.
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0) = 0;
+
+ // Called after ItemChange() is done for all items. Allows local reactions on
+ // specific item changes
+ virtual void PostItemChange(const sal_uInt16 nWhich) = 0;
+
+ // Internally react on ItemSet changes. The given ItemSet contains all changed items, the new ones.
+ virtual void ItemSetChanged(const SfxItemSet& rSet) = 0;
+
+ public:
+ // basic constructor, used from SdrObject.
+ BaseProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object. Used from the Clone()
+ // method.
+ BaseProperties(const BaseProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~BaseProperties();
+
+ // Clone() operator, normally just calls the local copy constructor,
+ // see above.
+ virtual BaseProperties& Clone(SdrObject& rObj) const = 0;
+
+ // Get the local ItemSet. This directly returns the local ItemSet of the object. No
+ // merging of ItemSets is done for e.g. Group objects.
+ virtual const SfxItemSet& GetObjectItemSet() const = 0;
+
+ // get merged ItemSet. Normappl, this maps directly to GetObjectItemSet(), but may
+ // be overloaded e.g for group objects to return a merged ItemSet of the object.
+ // When using this method the returned ItemSet may contain items in the state
+ // SFX_ITEM_DONTCARE which means there were several such items with different
+ // values.
+ virtual const SfxItemSet& GetMergedItemSet() const;
+
+ // Sets all items which are on state SFX_ITEM_SET in rSet at the local ItemSet.
+ // Uses AllowItemChange(), ItemChange(), PostItemChange() and ItemSetChanged() calls.
+ virtual void SetObjectItemSet(const SfxItemSet& rSet) = 0;
+
+ // Set merged ItemSet. Normally, this maps to SetObjectItemSet().
+ virtual void SetMergedItemSet(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+
+ // Set single item at the local ItemSet. Uses AllowItemChange(),
+ // ItemChange(), PostItemChange() and ItemSetChanged() calls.
+ virtual void SetObjectItem(const SfxPoolItem& rItem) = 0;
+
+ // Set a single item direct. Only uses AllowItemChange() and ItemChange(),
+ // but not PostItemChange() and ItemSetChanged() calls.
+ virtual void SetObjectItemDirect(const SfxPoolItem& rItem) = 0;
+
+ // Clear a single local item. Uses AllowItemChange(),
+ // ItemChange(), PostItemChange() and ItemSetChanged() calls.
+ virtual void ClearObjectItem(const sal_uInt16 nWhich = 0) = 0;
+
+ // Set a single item, iterate over hierarchies if necessary. Default
+ // Implementation falls back to ClearObjectItem().
+ virtual void SetMergedItem(const SfxPoolItem& rItem);
+
+ // Clear a single item, iterate over hierarchies if necessary. Default
+ // Implementation falls back to ClearObjectItem().
+ virtual void ClearMergedItem(const sal_uInt16 nWhich = 0);
+
+ // Clear single item direct. Only uses AllowItemChange() and ItemChange(),
+ // but not PostItemChange() and ItemSetChanged() calls.
+ // Also supports complete deletion of items when default parameter 0 is used.
+ virtual void ClearObjectItemDirect(const sal_uInt16 nWhich = 0) = 0;
+
+ // Set a new StyleSheet. Registers as listener at the StyleSheet to get knowledge
+ // of StyleSheet changes.
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr) = 0;
+
+ // Get the installed StyleSheet.
+ virtual SfxStyleSheet* GetStyleSheet() const = 0;
+
+ // Scale the local ItemSet as far as it contains metric items. This needs to be
+ // overloaded to do it for hierarchical objects like e.g. groups.
+ virtual void Scale(const Fraction& rScale);
+
+ // Move local items to a new ItemPool. This needs to be
+ // overloaded to do it for hierarchical objects like e.g. groups.
+ virtual void MoveToItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel = 0L);
+
+ // Set new model.
+ virtual void SetModel(SdrModel* pOldModel, SdrModel* pNewModel);
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes();
+
+ // syntactical sugar for ItemSet accesses. Broadcasts before and after the changes
+ // to invalidate views in old and new BoundRects. As soon as the repaint mechanism
+ // will be changed these broadcasts will no longer be needed.
+ //void SetItemAndBroadcast(const SfxPoolItem& rItem);
+ //void ClearItemAndBroadcast(const sal_uInt16 nWhich = 0);
+ void SetMergedItemSetAndBroadcast(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+
+ // Just a convenient shortcut for GetObjectItemSet().Get(nWhich).
+ const SfxPoolItem& GetItem(const sal_uInt16 nWhich) const;
+
+ // support for convenient broadcasting. Used from SetMergedItemAndBroadcast(),
+ // ClearItemAndBroadcast() and SetItemSetAndBroadcast(), see above.
+ // But also from inside SdrObjects.
+ void BroadcastItemChange(const ItemChangeBroadcaster& rChange);
+
+ // #i101556# add versioning mechanism; used from e.g. text attribute set to
+ // allow detection of e.g. style sheet or single text attribute changes. The
+ // default implementation returns 0 (zero)
+ virtual sal_uInt32 getVersion() const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_PROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/rectangleproperties.hxx b/svx/inc/svx/sdr/properties/rectangleproperties.hxx
new file mode 100644
index 000000000000..ea61a3bdf1b2
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/rectangleproperties.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_RECTANGLEPROPERTIES_HXX
+#define _SDR_PROPERTIES_RECTANGLEPROPERTIES_HXX
+
+#include <svx/sdr/properties/textproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC RectangleProperties : public TextProperties
+ {
+ protected:
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ RectangleProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ RectangleProperties(const RectangleProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~RectangleProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_RECTANGLEPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/properties/textproperties.hxx b/svx/inc/svx/sdr/properties/textproperties.hxx
new file mode 100644
index 000000000000..9a891f424461
--- /dev/null
+++ b/svx/inc/svx/sdr/properties/textproperties.hxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PROPERTIES_TEXTPROPERTIES_HXX
+#define _SDR_PROPERTIES_TEXTPROPERTIES_HXX
+
+#include <svx/sdr/properties/attributeproperties.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ namespace properties
+ {
+ class SVX_DLLPUBLIC TextProperties : public AttributeProperties
+ {
+ private:
+ // #i101556# versioning support
+ sal_uInt32 maVersion;
+
+ protected:
+ // create a new itemset
+ virtual SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool);
+
+ // Do the ItemChange, may do special handling
+ virtual void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem = 0);
+
+ // react on ItemSet changes
+ virtual void ItemSetChanged(const SfxItemSet& rSet);
+
+ public:
+ // basic constructor
+ TextProperties(SdrObject& rObj);
+
+ // constructor for copying, but using new object
+ TextProperties(const TextProperties& rProps, SdrObject& rObj);
+
+ // destructor
+ virtual ~TextProperties();
+
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
+
+ // set a new StyleSheet and broadcast
+ virtual void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+
+ // force all attributes which come from styles to hard attributes
+ // to be able to live without the style.
+ virtual void ForceStyleToHardAttributes();
+
+ // This is the notifyer from SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ // Set single item at the local ItemSet. *Does not use* AllowItemChange(),
+ // ItemChange(), PostItemChange() and ItemSetChanged() calls.
+ void SetObjectItemNoBroadcast(const SfxPoolItem& rItem);
+
+ // #i101556# versioning support
+ virtual sal_uInt32 getVersion() const;
+ };
+ } // end of namespace properties
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_TEXTPROPERTIES_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/table/tabledesign.hxx b/svx/inc/svx/sdr/table/tabledesign.hxx
new file mode 100644
index 000000000000..a062ec5210fb
--- /dev/null
+++ b/svx/inc/svx/sdr/table/tabledesign.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_TABLE_DESIGN_HXX
+#define _SDR_TABLE_DESIGN_HXX
+
+#include "svx/svxdllapi.h"
+
+#include <com/sun/star/container/XNameAccess.hpp>
+
+namespace sdr { namespace table {
+
+const sal_Int32 first_row_style = 0;
+const sal_Int32 last_row_style = 1;
+const sal_Int32 first_column_style = 2;
+const sal_Int32 last_column_style = 3;
+const sal_Int32 even_rows_style = 4;
+const sal_Int32 odd_rows_style = 5;
+const sal_Int32 even_columns_style = 6;
+const sal_Int32 odd_columns_style = 7;
+const sal_Int32 body_style = 8;
+const sal_Int32 background_style = 9;
+const sal_Int32 style_count = 10;
+
+extern SVX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > CreateTableDesignFamily();
+
+} }
+
+
+#endif
diff --git a/svx/inc/svx/sdrcomment.hxx b/svx/inc/svx/sdrcomment.hxx
new file mode 100644
index 000000000000..1c087d3f445d
--- /dev/null
+++ b/svx/inc/svx/sdrcomment.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_COMMENT_HXX
+#define _SDR_COMMENT_HXX
+
+#include <sal/types.h>
+#include <tools/date.hxx>
+#include <rtl/ustring.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ class Comment
+ {
+ // counting ID
+ sal_uInt32 mnID;
+
+ // creation date
+ Date maCreationDate;
+
+ // name of creator
+ ::rtl::OUString maUserName;
+
+ // text content
+ ::rtl::OUString maText;
+
+ // position
+ basegfx::B2DPoint maPosition;
+
+ public:
+ Comment(
+ sal_uInt32 nID,
+ Date aCreationDate,
+ const ::rtl::OUString& rUserName,
+ const ::rtl::OUString& rText,
+ const basegfx::B2DPoint& rPosition);
+ ~Comment();
+
+ // operator for sorting the vector by mnID
+ sal_Bool operator<(const Comment& rCandidate) const { return (mnID < rCandidate.mnID); }
+
+ // comparison operators
+ sal_Bool operator==(const Comment& rCandidate) const;
+ sal_Bool operator!=(const Comment& rCandidate) const { return !(operator==(rCandidate)); }
+
+ // access to ID, read only
+ sal_uInt32 GetID() const { return mnID; }
+
+ // access to CreationDate
+ Date GetCreationDate() const { return maCreationDate; }
+ void SetCreationDate(Date aNewDate);
+
+ // access to UserName
+ const ::rtl::OUString& GetUserName() const { return maUserName; }
+ void SetUserName(const ::rtl::OUString& rNewName);
+
+ // access to text
+ const ::rtl::OUString& GetText() const { return maText; }
+ void SetText(const ::rtl::OUString& rNewText);
+
+ // access to position
+ const basegfx::B2DPoint& GetPosition() const { return maPosition; }
+ void SetPosition(const basegfx::B2DPoint& rNewPos);
+ };
+
+ // typedef for list of sdr::Comment
+ typedef ::std::vector< Comment > CommentVector;
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_COMMENT_HXX
+// eof
diff --git a/svx/inc/svx/sdrhittesthelper.hxx b/svx/inc/svx/sdrhittesthelper.hxx
new file mode 100644
index 000000000000..cc57aec9cfb6
--- /dev/null
+++ b/svx/inc/svx/sdrhittesthelper.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDRHITTESTHELPER_HXX
+#define _SDRHITTESTHELPER_HXX
+
+#include "svx/svxdllapi.h"
+#include <tools/string.hxx>
+#include <tools/gen.hxx>
+
+/////////////////////////////////////////////////////////////////////
+// #i101872# new Object HitTest as View-tooling
+
+class SdrObject;
+class SdrPageView;
+class SetOfByte;
+class SdrObjList;
+namespace sdr { namespace contact { class ViewObjectContact; }}
+namespace basegfx { class B2DPoint; }
+
+/////////////////////////////////////////////////////////////////////
+// Wrappers for classic Sdr* Mode/View classes
+
+SVX_DLLPUBLIC SdrObject* SdrObjectPrimitiveHit(
+ const SdrObject& rObject,
+ const Point& rPnt,
+ sal_uInt16 nTol,
+ const SdrPageView& rSdrPageView,
+ const SetOfByte* pVisiLayer,
+ bool bTextOnly);
+
+SVX_DLLPUBLIC SdrObject* SdrObjListPrimitiveHit(
+ const SdrObjList& rList,
+ const Point& rPnt,
+ sal_uInt16 nTol,
+ const SdrPageView& rSdrPageView,
+ const SetOfByte* pVisiLayer,
+ bool bTextOnly);
+
+/////////////////////////////////////////////////////////////////////
+// the pure HitTest based on a VOC
+
+SVX_DLLPUBLIC bool ViewObjectContactPrimitiveHit(
+ const sdr::contact::ViewObjectContact& rVOC,
+ const basegfx::B2DPoint& rHitPosition,
+ double fLogicHitTolerance,
+ bool bTextOnly);
+
+/////////////////////////////////////////////////////////////////////
+
+#endif //_SDRHITTESTHELPER_HXX
+
+/////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/inc/svx/sdrmasterpagedescriptor.hxx b/svx/inc/svx/sdrmasterpagedescriptor.hxx
new file mode 100644
index 000000000000..612f2ab927ec
--- /dev/null
+++ b/svx/inc/svx/sdrmasterpagedescriptor.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_MASTERPAGEDESCRIPTOR_HXX
+#define _SDR_MASTERPAGEDESCRIPTOR_HXX
+
+#include <svx/sdrpageuser.hxx>
+#include <svx/svdsob.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrObject;
+class SfxItemSet;
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContact;
+ } // end of namespace contact
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace sdr
+{
+ class MasterPageDescriptor : public sdr::PageUser
+ {
+ private:
+ SdrPage& maOwnerPage;
+ SdrPage& maUsedPage;
+ SetOfByte maVisibleLayers;
+
+ // ViewContact part
+ sdr::contact::ViewContact* mpViewContact;
+
+ // assignment operator defined, but not implemented
+ void operator=(const MasterPageDescriptor& rCandidate);
+
+ protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+ public:
+ MasterPageDescriptor(SdrPage& aOwnerPage, SdrPage& aUsedPage);
+ virtual ~MasterPageDescriptor();
+
+ // ViewContact part
+ sdr::contact::ViewContact& GetViewContact() const;
+
+ // this method is called form the destructor of the referenced page.
+ // do all necessary action to forget the page. It is not necessary to call
+ // RemovePageUser(), that is done form the destructor.
+ virtual void PageInDestruction(const SdrPage& rPage);
+
+ // member access to UsedPage
+ SdrPage& GetUsedPage() const { return maUsedPage; }
+
+ // member access to OwnerPage
+ SdrPage& GetOwnerPage() const { return maOwnerPage; }
+
+ // member access to VisibleLayers
+ const SetOfByte& GetVisibleLayers() const { return maVisibleLayers; }
+ void SetVisibleLayers(const SetOfByte& rNew);
+
+ // operators
+ sal_Bool operator==(const MasterPageDescriptor& rCandidate) const;
+ sal_Bool operator!=(const MasterPageDescriptor& rCandidate) const;
+ };
+} // end of namespace sdr
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_MASTERPAGEDESCRIPTOR_HXX
+// eof
diff --git a/svx/inc/svx/sdrobjectfilter.hxx b/svx/inc/svx/sdrobjectfilter.hxx
new file mode 100644
index 000000000000..55eda09c99af
--- /dev/null
+++ b/svx/inc/svx/sdrobjectfilter.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef SDROBJECTFILTER_HXX
+#define SDROBJECTFILTER_HXX
+
+#include "svx/svxdllapi.h"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+class SdrObject;
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ //====================================================================
+ //= SdrObjectFilter
+ //====================================================================
+ /** specifies a boolean predicate on the set of all SdrObjects - vulgo a filter.
+ */
+ class SVX_DLLPUBLIC SAL_NO_VTABLE ISdrObjectFilter
+ {
+ public:
+ virtual bool includeObject( const SdrObject& i_rObject ) const = 0;
+
+ virtual ~ISdrObjectFilter() = 0;
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SDROBJECTFILTER_HXX
diff --git a/svx/inc/svx/sdrobjectuser.hxx b/svx/inc/svx/sdrobjectuser.hxx
new file mode 100644
index 000000000000..6d3112d15484
--- /dev/null
+++ b/svx/inc/svx/sdrobjectuser.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_OBJECTUSER_HXX
+#define _SDR_OBJECTUSER_HXX
+
+#include <vector>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrObject;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// To make things more safe, allow users of the page to register at it. The users need to be derived
+// from sdr::PageUser to get a call. The users do not need to call RemovePageUser() at the page
+// when they get called from PageInDestruction().
+
+namespace sdr
+{
+ class ObjectUser
+ {
+ public:
+ // this method is called form the destructor of the referenced page.
+ // do all necessary action to forget the page. It is not necessary to call
+ // RemovePageUser(), that is done form the destructor.
+ virtual void ObjectInDestruction(const SdrObject& rObject) = 0;
+ };
+
+ // typedef for ObjectUserVector
+ typedef ::std::vector< ObjectUser* > ObjectUserVector;
+} // end of namespace sdr
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_OBJECTUSER_HXX
+// eof
diff --git a/svx/inc/svx/sdrpageuser.hxx b/svx/inc/svx/sdrpageuser.hxx
new file mode 100644
index 000000000000..d3f35e059fbd
--- /dev/null
+++ b/svx/inc/svx/sdrpageuser.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDR_PAGEUSER_HXX
+#define _SDR_PAGEUSER_HXX
+
+#include <vector>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// predeclarations
+class SdrPage;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// To make things more safe, allow users of the page to register at it. The users need to be derived
+// from sdr::PageUser to get a call. The users do not need to call RemovePageUser() at the page
+// when they get called from PageInDestruction().
+
+namespace sdr
+{
+ class PageUser
+ {
+ public:
+ // this method is called form the destructor of the referenced page.
+ // do all necessary action to forget the page. It is not necessary to call
+ // RemovePageUser(), that is done form the destructor.
+ virtual void PageInDestruction(const SdrPage& rPage) = 0;
+ };
+
+ // typedef for PageUserVector
+ typedef ::std::vector< PageUser* > PageUserVector;
+} // end of namespace sdr
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PAGEUSER_HXX
+// eof
diff --git a/svx/inc/svx/sdrpagewindow.hxx b/svx/inc/svx/sdrpagewindow.hxx
new file mode 100644
index 000000000000..a3e50fadc599
--- /dev/null
+++ b/svx/inc/svx/sdrpagewindow.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SDRPAGEWINDOW_HXX
+#define _SDRPAGEWINDOW_HXX
+
+#include <tools/debug.hxx>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/util/XModeChangeListener.hpp>
+#include <cppuhelper/implbase4.hxx>
+#include <svx/svdtypes.hxx> // fuer SdrLayerID
+#include <svl/svarray.hxx>
+#include <tools/contnr.hxx>
+#include <svx/sdrpagewindow.hxx>
+#include "svx/svxdllapi.h"
+
+#include <vector>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+class Region;
+class SdrUnoObj;
+class SdrPageView;
+
+// #110094#
+namespace sdr
+{
+ namespace contact
+ {
+ class ObjectContact;
+ class ViewObjectContactRedirector;
+ } // end of namespace contact
+
+ namespace overlay
+ {
+ class OverlayManager;
+ } // end of namespace overlay
+} // end of namespace sdr
+
+namespace basegfx
+{
+ class B2DRange;
+} // end of namespace basegfx
+
+class SdrUnoControlList;
+class SdrPaintWindow;
+class Link;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrPageWindow
+{
+ // #110094# ObjectContact section
+ sdr::contact::ObjectContact* mpObjectContact;
+
+ // the SdrPageView this window belongs to
+ SdrPageView& mrPageView;
+
+ // the PaintWindow to paint on. Here is access to OutDev etc.
+ // #i72752# change to pointer to allow patcing it in DrawLayer() if necessary
+ SdrPaintWindow* mpPaintWindow;
+ SdrPaintWindow* mpOriginalPaintWindow;
+
+ // UNO stuff for xControls
+ void* mpDummy;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer > mxControlContainer;
+
+ // #110094# ObjectContact section
+ sdr::contact::ObjectContact* CreateViewSpecificObjectContact();
+
+public:
+ SdrPageWindow(SdrPageView& rNewPageView, SdrPaintWindow& rPaintWindow);
+ ~SdrPageWindow();
+
+ // data read accesses
+ SdrPageView& GetPageView() const { return mrPageView; }
+ SdrPaintWindow& GetPaintWindow() const { return *mpPaintWindow; }
+ const SdrPaintWindow* GetOriginalPaintWindow() const { return mpOriginalPaintWindow; }
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer > GetControlContainer( bool _bCreateIfNecessary = true ) const;
+
+ // OVERLAYMANAGER
+ ::sdr::overlay::OverlayManager* GetOverlayManager() const;
+
+ // #i72752# allow patcing SdrPaintWindow from SdrPageView::DrawLayer if needed
+ void patchPaintWindow(SdrPaintWindow& rPaintWindow);
+ void unpatchPaintWindow();
+
+ // the repaint method. For migration from pPaintProc, use one more parameter
+ void PrePaint();
+ void PrepareRedraw(const Region& rReg);
+ void RedrawAll(sdr::contact::ViewObjectContactRedirector* pRedirector) const;
+ void RedrawLayer(const SdrLayerID* pId, sdr::contact::ViewObjectContactRedirector* pRedirector) const;
+
+ // Invalidate call, used from ObjectContact(OfPageView) in InvalidatePartOfView(...)
+ void InvalidatePageWindow(const basegfx::B2DRange& rRange);
+
+ // #110094# ObjectContact section
+ sdr::contact::ObjectContact& GetObjectContact() const;
+ /// determines whether there already exists an ObjectContact
+ bool HasObjectContact() const;
+
+ // #i26631#
+ void ResetObjectContact();
+
+ /** sets all elements in the view which support a design and a alive mode into the given mode
+ */
+ void SetDesignMode( bool _bDesignMode ) const;
+};
+
+// typedefs for a list of SdrPageWindow
+typedef ::std::vector< SdrPageWindow* > SdrPageWindowVector;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDRPAGEWINDOW_HXX
diff --git a/svx/inc/svx/sdshcitm.hxx b/svx/inc/svx/sdshcitm.hxx
new file mode 100644
index 000000000000..0c8812c96575
--- /dev/null
+++ b/svx/inc/svx/sdshcitm.hxx
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDSHCITM_HXX
+#define _SDSHCITM_HXX
+
+#include <svx/xcolit.hxx>
+#include <svx/svddef.hxx>
+
+//---------------------
+// class SdrShadowColorItem
+//---------------------
+class SdrShadowColorItem: public XColorItem {
+public:
+ SdrShadowColorItem() {}
+ SdrShadowColorItem(long nIndex, const Color& rTheColor): XColorItem(SDRATTR_SHADOWCOLOR,nIndex,rTheColor) {}
+
+ SdrShadowColorItem(const String& rName, const Color& rTheColor): XColorItem(SDRATTR_SHADOWCOLOR,rName,rTheColor) {}
+
+// SdrShadowColorItem(SvStream& rIn): XColorItem(SDRATTR_SHADOWCOLOR,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdshitm.hxx b/svx/inc/svx/sdshitm.hxx
new file mode 100644
index 000000000000..95f98ce943f6
--- /dev/null
+++ b/svx/inc/svx/sdshitm.hxx
@@ -0,0 +1,44 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDSHITM_HXX
+#define _SDSHITM_HXX
+
+#ifndef _SDOOITEM_HXX
+#include <svx/sdooitm.hxx>
+#endif
+#include <svx/svddef.hxx>
+
+//------------------------------
+// class SdrShadowItem
+//------------------------------
+class SdrShadowItem: public SdrOnOffItem {
+public:
+ SdrShadowItem(BOOL bShadow=FALSE): SdrOnOffItem(SDRATTR_SHADOW, bShadow) {}
+ SdrShadowItem(SvStream& rIn): SdrOnOffItem(SDRATTR_SHADOW, rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdshtitm.hxx b/svx/inc/svx/sdshtitm.hxx
new file mode 100644
index 000000000000..34a2cf4eb924
--- /dev/null
+++ b/svx/inc/svx/sdshtitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDSHTITM_HXX
+#define _SDSHTITM_HXX
+
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+
+//---------------------
+// class SdrShadowTransparenceItem
+//---------------------
+class SdrShadowTransparenceItem: public SdrPercentItem {
+public:
+ SdrShadowTransparenceItem(USHORT nTransp=0): SdrPercentItem(SDRATTR_SHADOWTRANSPARENCE,nTransp) {}
+ SdrShadowTransparenceItem(SvStream& rIn) : SdrPercentItem(SDRATTR_SHADOWTRANSPARENCE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdsxyitm.hxx b/svx/inc/svx/sdsxyitm.hxx
new file mode 100644
index 000000000000..3afc487b3a26
--- /dev/null
+++ b/svx/inc/svx/sdsxyitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDSXYITM_HXX
+#define _SDSXYITM_HXX
+
+#include <svx/sdmetitm.hxx>
+#include <svx/svddef.hxx>
+
+//---------------------
+// class SdrShadowXDistItem
+//---------------------
+class SdrShadowXDistItem: public SdrMetricItem {
+public:
+ SdrShadowXDistItem(long nDist=0) : SdrMetricItem(SDRATTR_SHADOWXDIST,nDist) {}
+ SdrShadowXDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_SHADOWXDIST,rIn) {}
+};
+
+//---------------------
+// class SdrShadowYDistItem
+//---------------------
+class SdrShadowYDistItem: public SdrMetricItem {
+public:
+ SdrShadowYDistItem(long nDist=0) : SdrMetricItem(SDRATTR_SHADOWYDIST,nDist) {}
+ SdrShadowYDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_SHADOWYDIST,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdtaaitm.hxx b/svx/inc/svx/sdtaaitm.hxx
new file mode 100644
index 000000000000..c10b75a8ffc7
--- /dev/null
+++ b/svx/inc/svx/sdtaaitm.hxx
@@ -0,0 +1,47 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTAAITM_HXX
+#define _SDTAAITM_HXX
+
+#include <svl/intitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC SdrTextAniAmountItem: public SfxInt16Item {
+public:
+ TYPEINFO();
+ SdrTextAniAmountItem(INT16 nVal=0): SfxInt16Item(SDRATTR_TEXT_ANIAMOUNT,nVal) {}
+ SdrTextAniAmountItem(SvStream& rIn): SfxInt16Item(SDRATTR_TEXT_ANIAMOUNT,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual FASTBOOL HasMetrics() const;
+ virtual FASTBOOL ScaleMetrics(long nMul, long nDiv);
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sdtacitm.hxx b/svx/inc/svx/sdtacitm.hxx
new file mode 100644
index 000000000000..6459924bab5b
--- /dev/null
+++ b/svx/inc/svx/sdtacitm.hxx
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef sdtacitm_hxx
+#define sdtacitm_hxx
+
+#include <svl/intitem.hxx>
+#include <svx/svddef.hxx>
+
+// Anzahl der Durchlaeufe. 0=Endlos.
+class SdrTextAniCountItem: public SfxUInt16Item {
+public:
+ SdrTextAniCountItem(UINT16 nVal=0): SfxUInt16Item(SDRATTR_TEXT_ANICOUNT,nVal) {}
+ SdrTextAniCountItem(SvStream& rIn): SfxUInt16Item(SDRATTR_TEXT_ANICOUNT,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdtaditm.hxx b/svx/inc/svx/sdtaditm.hxx
new file mode 100644
index 000000000000..2317f41bdbe1
--- /dev/null
+++ b/svx/inc/svx/sdtaditm.hxx
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTADITM_HXX
+#define _SDTADITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//------------------------------
+// class SdrTextAniDirectionItem
+//------------------------------
+
+enum SdrTextAniDirection {SDRTEXTANI_LEFT,
+ SDRTEXTANI_RIGHT,
+ SDRTEXTANI_UP,
+ SDRTEXTANI_DOWN};
+
+class SVX_DLLPUBLIC SdrTextAniDirectionItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrTextAniDirectionItem(SdrTextAniDirection eDir=SDRTEXTANI_LEFT): SfxEnumItem(SDRATTR_TEXT_ANIDIRECTION,(USHORT)eDir) {}
+ SdrTextAniDirectionItem(SvStream& rIn) : SfxEnumItem(SDRATTR_TEXT_ANIDIRECTION,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 4; }
+ SdrTextAniDirection GetValue() const { return (SdrTextAniDirection)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sdtagitm.hxx b/svx/inc/svx/sdtagitm.hxx
new file mode 100644
index 000000000000..e76ddb8ec7c4
--- /dev/null
+++ b/svx/inc/svx/sdtagitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTAGITM_HXX
+#define _SDTAGITM_HXX
+
+#include <svx/sdooitm.hxx>
+#include <svx/svddef.hxx>
+
+//------------------------------------
+// class SdrTextAutoGrowHeightItem
+//------------------------------------
+class SdrTextAutoGrowHeightItem: public SdrOnOffItem {
+public:
+ SdrTextAutoGrowHeightItem(BOOL bAuto=TRUE): SdrOnOffItem(SDRATTR_TEXT_AUTOGROWHEIGHT,bAuto) {}
+ SdrTextAutoGrowHeightItem(SvStream& rIn) : SdrOnOffItem(SDRATTR_TEXT_AUTOGROWHEIGHT,rIn) {}
+};
+
+//------------------------------------
+// class SdrTextAutoGrowWidthItem
+//------------------------------------
+class SdrTextAutoGrowWidthItem: public SdrOnOffItem {
+public:
+ SdrTextAutoGrowWidthItem(BOOL bAuto=FALSE): SdrOnOffItem(SDRATTR_TEXT_AUTOGROWWIDTH,bAuto) {}
+ SdrTextAutoGrowWidthItem(SvStream& rIn) : SdrOnOffItem(SDRATTR_TEXT_AUTOGROWWIDTH,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdtaiitm.hxx b/svx/inc/svx/sdtaiitm.hxx
new file mode 100644
index 000000000000..a7e5d9506dcb
--- /dev/null
+++ b/svx/inc/svx/sdtaiitm.hxx
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTAIITM_HXX
+#define _SDTAIITM_HXX
+
+#include <svx/sdynitm.hxx>
+#include <svx/svddef.hxx>
+
+class SdrTextAniStartInsideItem: public SdrYesNoItem {
+public:
+ SdrTextAniStartInsideItem(BOOL bOn=FALSE): SdrYesNoItem(SDRATTR_TEXT_ANISTARTINSIDE,bOn) {}
+ SdrTextAniStartInsideItem(SvStream& rIn) : SdrYesNoItem(SDRATTR_TEXT_ANISTARTINSIDE,rIn) {}
+};
+
+class SdrTextAniStopInsideItem: public SdrYesNoItem {
+public:
+ SdrTextAniStopInsideItem(BOOL bOn=FALSE): SdrYesNoItem(SDRATTR_TEXT_ANISTOPINSIDE,bOn) {}
+ SdrTextAniStopInsideItem(SvStream& rIn) : SdrYesNoItem(SDRATTR_TEXT_ANISTOPINSIDE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdtaitm.hxx b/svx/inc/svx/sdtaitm.hxx
new file mode 100644
index 000000000000..6caba22c1ffc
--- /dev/null
+++ b/svx/inc/svx/sdtaitm.hxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTAITM_HXX
+#define _SDTAITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//------------------------------
+// class SdrTextVertAdjustItem
+//------------------------------
+
+// Implementiert werden zunaechst nur TOP und CENTER, neustens auch BOTTOM
+enum SdrTextVertAdjust {SDRTEXTVERTADJUST_TOP, // Kopfbuendig (so wie man es normalerweise kennt)
+ SDRTEXTVERTADJUST_CENTER, // Zentriert (z.B. fuer die Titeltexte im Draw)
+ SDRTEXTVERTADJUST_BOTTOM, // Fussbuendig
+ SDRTEXTVERTADJUST_BLOCK // #103516# support vertical full with supported now
+ /*,SDRTEXTVERTADJUST_STRETCH*/}; // Auch die Buchstaben in der Hoehe verzerren (ni)
+
+class SVX_DLLPUBLIC SdrTextVertAdjustItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrTextVertAdjustItem(SdrTextVertAdjust eAdj=SDRTEXTVERTADJUST_TOP): SfxEnumItem(SDRATTR_TEXT_VERTADJUST,(USHORT)eAdj) {}
+ SdrTextVertAdjustItem(SvStream& rIn) : SfxEnumItem(SDRATTR_TEXT_VERTADJUST,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 5; }
+ SdrTextVertAdjust GetValue() const { return (SdrTextVertAdjust)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+//------------------------------
+// class SdrTextHorzAdjustItem
+//------------------------------
+
+enum SdrTextHorzAdjust {SDRTEXTHORZADJUST_LEFT, // Linksbuendig verankert
+ SDRTEXTHORZADJUST_CENTER, // Zentriert (z.B. fuer die Titeltexte im Draw)
+ SDRTEXTHORZADJUST_RIGHT, // Rechtsbuendig verankert
+ SDRTEXTHORZADJUST_BLOCK // So wie es frueher war: Gesamte Textrahmenbreite verwenden, Absatzformatierung macht wieder Sinn
+ /*,SDRTEXTHORZADJUST_STRETCH*/}; // FitToSize in X-Richtung (ni).
+
+class SVX_DLLPUBLIC SdrTextHorzAdjustItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrTextHorzAdjustItem(SdrTextHorzAdjust eAdj=SDRTEXTHORZADJUST_BLOCK): SfxEnumItem(SDRATTR_TEXT_HORZADJUST,(USHORT)eAdj) {}
+ SdrTextHorzAdjustItem(SvStream& rIn) : SfxEnumItem(SDRATTR_TEXT_HORZADJUST,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 5; }
+ SdrTextHorzAdjust GetValue() const { return (SdrTextHorzAdjust)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sdtakitm.hxx b/svx/inc/svx/sdtakitm.hxx
new file mode 100644
index 000000000000..f303692644ee
--- /dev/null
+++ b/svx/inc/svx/sdtakitm.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef SDTAKITM_HXX
+#define SDTAKITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+//------------------------------
+// class SdrTextAniKindItem
+//------------------------------
+
+enum SdrTextAniKind {SDRTEXTANI_NONE,
+ SDRTEXTANI_BLINK,
+ SDRTEXTANI_SCROLL,
+ SDRTEXTANI_ALTERNATE,
+ SDRTEXTANI_SLIDE};
+
+// - SDRTEXTANI_BLINK:
+// Einfach nur Blinken. Direction und Amount ohne Wirkung.
+// Frequenz siehe Delay, 0=0.5Hz (Delay=250).
+// Count=Anzahl der blinker. 0=Endlos.
+// StartInside: FALSE=beginnend mit Pause, TRUE=Beginnend mit Puls
+// StopInside: FALSE=Nach Count blinkern nicht sichtbar, TRUE=sichtbar
+// (nur wenn Count!=0)
+// - SDRTEXTANI_SCROLL:
+// Schrift laeuft rein, laeuft vollstaendig durch. Wenn ganz verschwunden
+// geht's wieder von vorne los.
+// Delay in ms, Sonderfall Delay=0 wird auf 50ms defaulted (20Hz)
+// Count=Durchlaufanzahl (0=Endlos)
+// Direction: ist eben die Richtung in die gescrollt wird.
+// StartInside: FALSE=Schrift wird auch beim ersten Durchlauf reingescrollt
+// TRUE=Der linke Teil der Schrift steht beim ersten Durchlauf
+// bereits da (im sichtbaren "Scrollbereich")
+// StopInside: FALSE=Schrift wird auch beim letzten Durchlauf vollstaendig
+// rausgescrollt
+// TRUE=Schrift wird beim letzten Durchlauf nicht rausgescrollt
+// (nur wenn Count!=0)
+// Amount: Schrittweite in logischen Einheiten. Negative Werte bedeuten
+// Pixel statt log. Einheiten. Wenn Amount=0, dann wird auf
+// 1 Pixel defaulted.
+// - SDRTEXTANI_ALTERNATE:
+// Wie SDRTEXTANI_SCROLL, nur wird nicht gescrollt bis Schrift ganz
+// verschwunden, sondern bis der letzte Teil vollstaendig sichtbar ist. Dann
+// wird die Richtung umgekehrt und zuruekgescrollt.
+// Count=Anzahl der Durchlaeufe=Anzahl der Richtungswechsel-1
+// Bei Count=1 ist SDRTEXTANI_ALTERNATE also identisch mit SDRTEXTANI_SCROLL
+// Direction ist die Startrichtung
+// Alle andern Parameter wie SDRTEXTANI_SCROLL
+// - SDRTEXTANI_SLIDE:
+// Schrift wird nur reingeschoben bis zur Originalposition.
+// -> also wie SCROLL mit StartInside=FALSE, StopInside=TRUE
+// und Count=1. Count=0 wird als Count=1 interpretiert.
+// Fuer jeden Count>1 wird der Text jedoch ruekwaerts wieder vollstaendig
+// rausgeschoben (aehnlich wie ALTERNATE) und dann wieder reingeschoben.
+// StopInside wird nicht ausgewertet, weil immer Inside gestoppt wird.
+// StartInside wird nicht ausgewertet, weil immer Outside gestartet wird.
+// Alle andern Parameter wie SDRTEXTANI_SCROLL
+// StartInside,StopInside: Bei TRUE ist die anfaengliche/entgueltige
+// Textposition abhaengig von der Textverankerung am Zeichenobjekt. Sie
+// entspricht der Textposition bei normalem Paint (ohne Laufschrift).
+
+class SVX_DLLPUBLIC SdrTextAniKindItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrTextAniKindItem(SdrTextAniKind eKind=SDRTEXTANI_NONE): SfxEnumItem(SDRATTR_TEXT_ANIKIND,(USHORT)eKind) {}
+ SdrTextAniKindItem(SvStream& rIn) : SfxEnumItem(SDRATTR_TEXT_ANIKIND,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 5; }
+ SdrTextAniKind GetValue() const { return (SdrTextAniKind)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sdtayitm.hxx b/svx/inc/svx/sdtayitm.hxx
new file mode 100644
index 000000000000..68069fffa11f
--- /dev/null
+++ b/svx/inc/svx/sdtayitm.hxx
@@ -0,0 +1,44 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTAYITM_HXX
+#define _SDTAYITM_HXX
+
+#include <svl/intitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC SdrTextAniDelayItem: public SfxUInt16Item {
+public:
+ TYPEINFO();
+ SdrTextAniDelayItem(UINT16 nVal=0): SfxUInt16Item(SDRATTR_TEXT_ANIDELAY,nVal) {}
+ SdrTextAniDelayItem(SvStream& rIn): SfxUInt16Item(SDRATTR_TEXT_ANIDELAY,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sdtcfitm.hxx b/svx/inc/svx/sdtcfitm.hxx
new file mode 100644
index 000000000000..1763b24bd937
--- /dev/null
+++ b/svx/inc/svx/sdtcfitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTCFITM_HXX
+#define _SDTCFITM_HXX
+
+#include <svx/sdooitm.hxx>
+#include <svx/svddef.hxx>
+
+//------------------------------------
+// class SdrTextContourFrameItem
+//------------------------------------
+class SdrTextContourFrameItem: public SdrOnOffItem {
+public:
+ SdrTextContourFrameItem(BOOL bOn=FALSE): SdrOnOffItem(SDRATTR_TEXT_CONTOURFRAME,bOn) {}
+ SdrTextContourFrameItem(SvStream& rIn) : SdrOnOffItem(SDRATTR_TEXT_CONTOURFRAME,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdtditm.hxx b/svx/inc/svx/sdtditm.hxx
new file mode 100644
index 000000000000..5bd53138bd85
--- /dev/null
+++ b/svx/inc/svx/sdtditm.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef SDTMITM_HXX
+#define SDTMITM_HXX
+
+#include <svx/sdmetitm.hxx>
+#include <svx/svddef.hxx>
+
+//----------------------------------------------
+// class SdrTextLeft/Right/Upper/LowerDistItem
+//----------------------------------------------
+class SdrTextLeftDistItem: public SdrMetricItem {
+public:
+ SdrTextLeftDistItem(long nHgt=0): SdrMetricItem(SDRATTR_TEXT_LEFTDIST,nHgt) {}
+ SdrTextLeftDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_LEFTDIST,rIn) {}
+};
+
+class SdrTextRightDistItem: public SdrMetricItem {
+public:
+ SdrTextRightDistItem(long nHgt=0): SdrMetricItem(SDRATTR_TEXT_RIGHTDIST,nHgt) {}
+ SdrTextRightDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_RIGHTDIST,rIn) {}
+};
+
+class SdrTextUpperDistItem: public SdrMetricItem {
+public:
+ SdrTextUpperDistItem(long nHgt=0): SdrMetricItem(SDRATTR_TEXT_UPPERDIST,nHgt) {}
+ SdrTextUpperDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_UPPERDIST,rIn) {}
+};
+
+class SdrTextLowerDistItem: public SdrMetricItem {
+public:
+ SdrTextLowerDistItem(long nHgt=0): SdrMetricItem(SDRATTR_TEXT_LOWERDIST,nHgt) {}
+ SdrTextLowerDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_LOWERDIST,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdtfchim.hxx b/svx/inc/svx/sdtfchim.hxx
new file mode 100644
index 000000000000..dbfbfab2aeac
--- /dev/null
+++ b/svx/inc/svx/sdtfchim.hxx
@@ -0,0 +1,57 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTFCHIM_HXX
+#define _SDTFCHIM_HXX
+
+#include <svx/svddef.hxx>
+
+class SVX_DLLPUBLIC SdrTextFixedCellHeightItem : public SfxBoolItem
+{
+public:
+
+ TYPEINFO();
+ SdrTextFixedCellHeightItem( BOOL bUseFixedCellHeight = FALSE );
+ SVX_DLLPRIVATE SdrTextFixedCellHeightItem( SvStream & rStream, sal_uInt16 nVersion );
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePresentation,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresentationMetric,
+ String &rText, const IntlWrapper * = 0) const;
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream&, sal_uInt16 nItem ) const;
+ SVX_DLLPRIVATE virtual SvStream& Store( SvStream&, sal_uInt16 nVersion ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ SVX_DLLPRIVATE virtual sal_uInt16 GetVersion( sal_uInt16 nFileFormatVersion ) const;
+
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+#ifdef SDR_ISPOOLABLE
+ SVX_DLLPRIVATE virtual int IsPoolable() const;
+#endif
+};
+
+#endif
diff --git a/svx/inc/svx/sdtfsitm.hxx b/svx/inc/svx/sdtfsitm.hxx
new file mode 100644
index 000000000000..324b8f8d0143
--- /dev/null
+++ b/svx/inc/svx/sdtfsitm.hxx
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTFSITM_HXX
+#define _SDTFSITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+enum SdrFitToSizeType {SDRTEXTFIT_NONE, // - kein FitToSize
+ SDRTEXTFIT_PROPORTIONAL, // - Alle Buchstaben proportional umgroessern
+ SDRTEXTFIT_ALLLINES, // - Zus. jede Zeile separat in der Breite stretchen
+ SDRTEXTFIT_RESIZEATTR}; // - Bei Rahmenumgroesserung (ausser Autogrow) wird
+ // die Schriftgroesse umattributiert (hart)
+
+// Bei SDRTEXTFIT_PROPORTIONAL und SDRTEXTFIT_ALLLINES gibt es kein AutoGrow und
+// keine automatischen Umbrueche.
+// Ist SDRTEXTFIT_RESIZEATTR gesetzt, so wird beim umgroessern des Textrahmens
+// (ausser bei AutoGrow) die Schrift durch harte Attributierung ebenfalls
+// umgegroessert.
+// Bei AutoGrowingWidth gibt es ebenfalls keine automatischen Umbrueche (erst bei
+// TextMaxFrameWidth).
+
+//--------------------------------
+// class SdrTextFitToSizeTypeItem
+//--------------------------------
+class SVX_DLLPUBLIC SdrTextFitToSizeTypeItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrTextFitToSizeTypeItem(SdrFitToSizeType eFit=SDRTEXTFIT_NONE): SfxEnumItem(SDRATTR_TEXT_FITTOSIZE,(USHORT)eFit) {}
+ SdrTextFitToSizeTypeItem(SvStream& rIn) : SfxEnumItem(SDRATTR_TEXT_FITTOSIZE,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 4; }
+ SdrFitToSizeType GetValue() const { return (SdrFitToSizeType)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+ virtual int HasBoolValue() const;
+ virtual BOOL GetBoolValue() const;
+ virtual void SetBoolValue(BOOL bVal);
+};
+
+#endif
diff --git a/svx/inc/svx/sdtmfitm.hxx b/svx/inc/svx/sdtmfitm.hxx
new file mode 100644
index 000000000000..9cd82fc5870c
--- /dev/null
+++ b/svx/inc/svx/sdtmfitm.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDTMFITM_HXX
+#define _SDTMFITM_HXX
+
+#include <svx/sdmetitm.hxx>
+#include <svx/svddef.hxx>
+
+//------------------------------
+// class SdrTextMinFrameHeighItem
+//------------------------------
+class SdrTextMinFrameHeightItem: public SdrMetricItem {
+public:
+ SdrTextMinFrameHeightItem(long nHgt=0): SdrMetricItem(SDRATTR_TEXT_MINFRAMEHEIGHT,nHgt) {}
+ SdrTextMinFrameHeightItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_MINFRAMEHEIGHT,rIn) {}
+};
+
+//------------------------------
+// class SdrTextMaxFrameHeightItem
+//------------------------------
+class SdrTextMaxFrameHeightItem: public SdrMetricItem {
+public:
+ SdrTextMaxFrameHeightItem(long nHgt=0): SdrMetricItem(SDRATTR_TEXT_MAXFRAMEHEIGHT,nHgt) {}
+ SdrTextMaxFrameHeightItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_MAXFRAMEHEIGHT,rIn) {}
+};
+
+//------------------------------
+// class SdrTextMinFrameWidthItem
+//------------------------------
+class SdrTextMinFrameWidthItem: public SdrMetricItem {
+public:
+ SdrTextMinFrameWidthItem(long nWdt=0): SdrMetricItem(SDRATTR_TEXT_MINFRAMEWIDTH,nWdt) {}
+ SdrTextMinFrameWidthItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_MINFRAMEWIDTH,rIn) {}
+};
+
+//------------------------------
+// class SdrTextMaxFrameWidthItem
+//------------------------------
+class SdrTextMaxFrameWidthItem: public SdrMetricItem {
+public:
+ SdrTextMaxFrameWidthItem(long nWdt=0): SdrMetricItem(SDRATTR_TEXT_MAXFRAMEWIDTH,nWdt) {}
+ SdrTextMaxFrameWidthItem(SvStream& rIn): SdrMetricItem(SDRATTR_TEXT_MAXFRAMEWIDTH,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sdynitm.hxx b/svx/inc/svx/sdynitm.hxx
new file mode 100644
index 000000000000..6486cda18e31
--- /dev/null
+++ b/svx/inc/svx/sdynitm.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SDYNITM_HXX
+#define _SDYNITM_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+
+//------------------------------------------------------------
+// class SdrYesNoItem
+// hier liefert GetValueTextByVal() "ja" oder "nein"
+// anstelle von "TRUE" und "FALSE"
+//------------------------------------------------------------
+class SVX_DLLPUBLIC SdrYesNoItem: public SfxBoolItem {
+public:
+ TYPEINFO();
+ SdrYesNoItem(): SfxBoolItem() {}
+ SdrYesNoItem(USHORT nId, BOOL bOn=FALSE): SfxBoolItem(nId,bOn) {}
+ SdrYesNoItem(USHORT nId, SvStream& rIn): SfxBoolItem(nId,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual String GetValueTextByVal(BOOL bVal) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+
+#endif
diff --git a/svx/inc/svx/selectioncontroller.hxx b/svx/inc/svx/selectioncontroller.hxx
new file mode 100644
index 000000000000..bd26f9f2df42
--- /dev/null
+++ b/svx/inc/svx/selectioncontroller.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SELECTIONCONTROLLER_HXX
+#define _SELECTIONCONTROLLER_HXX
+
+#include "svx/svxdllapi.h"
+
+#include <boost/shared_ptr.hpp>
+
+#include <cppuhelper/weak.hxx>
+
+class KeyEvent;
+class MouseEvent;
+class Window;
+class SfxItemSet;
+class SfxRequest;
+class SfxStyleSheet;
+class SdrPage;
+class SdrModel;
+
+namespace sdr
+{
+
+class SVX_DLLPUBLIC SelectionController: public cppu::OWeakObject
+{
+public:
+ virtual bool onKeyInput(const KeyEvent& rKEvt, Window* pWin);
+ virtual bool onMouseButtonDown(const MouseEvent& rMEvt, Window* pWin);
+ virtual bool onMouseButtonUp(const MouseEvent& rMEvt, Window* pWin);
+ virtual bool onMouseMove(const MouseEvent& rMEvt, Window* pWin);
+
+ virtual void onSelectionHasChanged();
+
+ virtual void GetState( SfxItemSet& rSet );
+ virtual void Execute( SfxRequest& rReq );
+
+ virtual bool DeleteMarked();
+
+ virtual bool GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) const;
+ virtual bool SetAttributes(const SfxItemSet& rSet, bool bReplaceAll);
+
+ virtual bool GetStyleSheet( SfxStyleSheet* &rpStyleSheet ) const;
+ virtual bool SetStyleSheet( SfxStyleSheet* pStyleSheet, bool bDontRemoveHardAttr );
+
+ virtual bool GetMarkedObjModel( SdrPage* pNewPage );
+ virtual bool PasteObjModel( const SdrModel& rModel );
+
+ /** returns a format paint brush set from the current selection */
+ virtual bool TakeFormatPaintBrush( boost::shared_ptr< SfxItemSet >& rFormatSet );
+
+ /** applies a format paint brush set from the current selection.
+ if bNoCharacterFormats is true, no character attributes are changed.
+ if bNoParagraphFormats is true, no paragraph attributes are changed.
+ */
+ virtual bool ApplyFormatPaintBrush( SfxItemSet& rFormatSet, bool bNoCharacterFormats, bool bNoParagraphFormats );
+};
+
+}
+
+#endif //_SELECTIONCONTROLLER_HXX
+
diff --git a/svx/inc/svx/shapeproperty.hxx b/svx/inc/svx/shapeproperty.hxx
new file mode 100755
index 000000000000..9b08d9c741b4
--- /dev/null
+++ b/svx/inc/svx/shapeproperty.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+************************************************************************/
+
+#ifndef SVX_SHAPEPROPERTY_HXX
+#define SVX_SHAPEPROPERTY_HXX
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ //====================================================================
+ //= ShapeProperty
+ //====================================================================
+ enum ShapeProperty
+ {
+ // generic (UNO) shape properties
+ eShapePosition,
+ eShapeSize,
+ // text doc shape properties
+ eTextShapeAnchorType,
+ // spreadsheet doc shape properties
+ eSpreadsheetAnchor,
+
+ // invalid, not to be used
+ eInvalidShapeProperty
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SVX_SHAPEPROPERTY_HXX
diff --git a/svx/inc/svx/shapepropertynotifier.hxx b/svx/inc/svx/shapepropertynotifier.hxx
new file mode 100644
index 000000000000..573af71bdc2a
--- /dev/null
+++ b/svx/inc/svx/shapepropertynotifier.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+************************************************************************/
+
+#ifndef SVX_PROPERTYCHANGENOTIFIER_HXX
+#define SVX_PROPERTYCHANGENOTIFIER_HXX
+
+#include "svx/svxdllapi.h"
+#include "svx/shapeproperty.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+/** === end UNO includes === **/
+
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+#include <memory>
+
+namespace cppu
+{
+ class OWeakObject;
+}
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ //====================================================================
+ //= IPropertyValueProvider
+ //====================================================================
+ /** a provider for a property value
+ */
+ class SVX_DLLPUBLIC IPropertyValueProvider
+ {
+ public:
+ /** returns the name of the property which this provider is responsible for
+ */
+ virtual ::rtl::OUString getPropertyName() const = 0;
+
+ /** returns the current value of the property which the provider is responsible for
+ */
+ virtual void getCurrentValue( ::com::sun::star::uno::Any& _out_rValue ) const = 0;
+
+ virtual ~IPropertyValueProvider();
+ };
+ typedef ::boost::shared_ptr< IPropertyValueProvider > PPropertyValueProvider;
+
+ //====================================================================
+ //= PropertyValueProvider
+ //====================================================================
+ /** default implementation of a IPropertyValueProvider
+
+ This default implementation queries the object which it is constructed with for the XPropertySet interface,
+ and calls the getPropertyValue method.
+ */
+ class SVX_DLLPUBLIC PropertyValueProvider :public IPropertyValueProvider
+ ,public ::boost::noncopyable
+ {
+ public:
+ PropertyValueProvider( ::cppu::OWeakObject& _rContext, const sal_Char* _pAsciiPropertyName )
+ :m_rContext( _rContext )
+ ,m_sPropertyName( ::rtl::OUString::createFromAscii( _pAsciiPropertyName ) )
+ {
+ }
+
+ virtual ::rtl::OUString getPropertyName() const;
+ virtual void getCurrentValue( ::com::sun::star::uno::Any& _out_rValue ) const;
+
+ protected:
+ ::cppu::OWeakObject& getContext() const { return m_rContext; }
+ private:
+ ::cppu::OWeakObject& m_rContext;
+ const ::rtl::OUString m_sPropertyName;
+ };
+
+ //====================================================================
+ //= PropertyChangeNotifier
+ //====================================================================
+ struct PropertyChangeNotifier_Data;
+
+ /** helper class for notifying XPropertyChangeListeners
+
+ The class is intended to be held as member of the class which does the property change broadcasting.
+ */
+ class SVX_DLLPUBLIC PropertyChangeNotifier : public ::boost::noncopyable
+ {
+ public:
+ /** constructs a notifier instance
+
+ @param _rOwner
+ the owner instance of the notifier. Will be used as css.lang.EventObject.Source when
+ notifying events.
+ */
+ PropertyChangeNotifier( ::cppu::OWeakObject& _rOwner, ::osl::Mutex& _rMutex );
+ ~PropertyChangeNotifier();
+
+ // listener maintanance
+ void addPropertyChangeListener( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& _rxListener );
+ void removePropertyChangeListener( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& _rxListener );
+
+ /** registers a IPropertyValueProvider
+ */
+ void registerProvider( const ShapeProperty _eProperty, const PPropertyValueProvider _pProvider );
+
+ /** notifies changes in the given property to all registered listeners
+
+ If no property value provider for the given property ID is registered, this is worth an assertion in a
+ non-product build, and otherwise ignored.
+ */
+ void notifyPropertyChange( const ShapeProperty _eProperty ) const;
+
+ /** is called to dispose the instance
+ */
+ void disposing();
+
+ private:
+ ::std::auto_ptr< PropertyChangeNotifier_Data > m_pData;
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SVX_PROPERTYCHANGENOTIFIER_HXX
diff --git a/svx/inc/svx/simptabl.hxx b/svx/inc/svx/simptabl.hxx
new file mode 100644
index 000000000000..1f5543e9e484
--- /dev/null
+++ b/svx/inc/svx/simptabl.hxx
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_SIMPTABL_HXX
+#define _SVX_SIMPTABL_HXX
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#include <svtools/headbar.hxx>
+#include <svtools/svtabbx.hxx>
+#include <vcl/lstbox.hxx>
+#include "svx/svxdllapi.h"
+
+class SvxSimpleTable;
+class SvxSimpTblContainer : public Control
+{
+private:
+ SvxSimpleTable* m_pTable;
+
+protected:
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+public:
+ SvxSimpTblContainer( Window* pParent, WinBits nWinStyle = 0 );
+ SvxSimpTblContainer( Window* pParent, const ResId& rResId );
+
+ inline void SetTable( SvxSimpleTable* _pTable ) { m_pTable = _pTable; }
+};
+
+class SVX_DLLPUBLIC SvxSimpleTable : public SvHeaderTabListBox
+{
+ using Window::SetPosSizePixel;
+private:
+
+ Link aHeaderBarClickLink;
+ Link aHeaderBarDblClickLink;
+ Link aCommandLink;
+ CommandEvent aCEvt;
+ SvxSimpTblContainer aPrivContainer;
+ HeaderBar aHeaderBar;
+ long nOldPos;
+ USHORT nHeaderItemId;
+ BOOL bResizeFlag;
+ BOOL bPaintFlag;
+ BOOL bSortDirection;
+ USHORT nSortCol;
+ Window* pMyParentWin;
+
+ DECL_LINK( StartDragHdl, HeaderBar* );
+ DECL_LINK( DragHdl, HeaderBar* );
+ DECL_LINK( EndDragHdl, HeaderBar* );
+ DECL_LINK( HeaderBarClick, HeaderBar* );
+ DECL_LINK( HeaderBarDblClick, HeaderBar* );
+ DECL_LINK( CompareHdl, SvSortData* );
+
+protected:
+
+ virtual void NotifyScrolled();
+
+ virtual void SetTabs();
+ virtual void Paint( const Rectangle& rRect );
+ virtual void UpdateViewSize();
+
+ virtual void HBarClick();
+ virtual void HBarDblClick();
+ virtual void HBarStartDrag();
+ virtual void HBarDrag();
+ virtual void HBarEndDrag();
+
+ virtual void Command( const CommandEvent& rCEvt );
+
+ virtual StringCompare ColCompare(SvLBoxEntry*,SvLBoxEntry*);
+ HeaderBar* GetTheHeaderBar(){return &aHeaderBar;}
+
+public:
+
+ SvxSimpleTable( Window* pParent,WinBits nBits =WB_BORDER );
+ SvxSimpleTable( Window* pParent,const ResId& );
+ ~SvxSimpleTable();
+
+ void InsertHeaderEntry(const XubString& rText,
+ USHORT nCol=HEADERBAR_APPEND,
+ HeaderBarItemBits nBits = HIB_STDSTYLE);
+
+ void SetTabs( long* pTabs, MapUnit = MAP_APPFONT );
+
+ void ClearAll();
+ void ClearHeader();
+
+ // to be removed all calls of the related methods are redirected to *Table() methods
+ using Window::Show;
+ using Window::Hide;
+ using Window::Enable;
+ using Window::Disable;
+ using Window::ToTop;
+
+ void Show();
+ void Hide();
+ void Enable();
+ void Disable();
+ void ToTop();
+
+ // remove until this line
+
+ void ShowTable();
+ void HideTable();
+ BOOL IsVisible() const;
+
+ void EnableTable();
+ void DisableTable();
+ BOOL IsEnabled() const;
+
+ void TableToTop();
+ void SetPosPixel( const Point& rNewPos );
+ Point GetPosPixel() const ;
+ virtual void SetPosSizePixel( const Point& rNewPos, Size& rNewSize );
+ void SetPosSize( const Point& rNewPos, const Size& rNewSize );
+ void SetSizePixel(const Size& rNewSize );
+ void SetOutputSizePixel(const Size& rNewSize );
+
+ Size GetSizePixel() const;
+ Size GetOutputSizePixel() const;
+
+ USHORT GetSelectedCol();
+ void SortByCol(USHORT,BOOL bDir=TRUE);
+ BOOL GetSortDirection(){ return bSortDirection;}
+ USHORT GetSortedCol(){ return nSortCol;}
+ SvLBoxItem* GetEntryAtPos( SvLBoxEntry* pEntry, USHORT nPos ) const;
+
+ CommandEvent GetCommandEvent()const;
+ inline sal_Bool IsFocusOnCellEnabled() const { return IsCellFocusEnabled(); }
+
+ void SetCommandHdl( const Link& rLink ) { aCommandLink = rLink; }
+ const Link& GetCommandHdl() const { return aCommandLink; }
+
+ void SetHeaderBarClickHdl( const Link& rLink ) { aHeaderBarClickLink = rLink; }
+ const Link& GetHeaderBarClickHdl() const { return aHeaderBarClickLink; }
+
+ void SetHeaderBarDblClickHdl( const Link& rLink ) { aHeaderBarDblClickLink = rLink; }
+ const Link& GetHeaderBarDblClickHdl() const { return aHeaderBarDblClickLink; }
+
+ void SetHeaderBarHelpId(ULONG nHelpId) {aHeaderBar.SetHelpId(nHelpId);}
+};
+
+
+#endif // _SVX_SIMPTABL_HXX
+
diff --git a/svx/inc/svx/sphere3d.hxx b/svx/inc/svx/sphere3d.hxx
new file mode 100644
index 000000000000..90dfca18c173
--- /dev/null
+++ b/svx/inc/svx/sphere3d.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_SPHERE3D_HXX
+#define _E3D_SPHERE3D_HXX
+
+#include <svx/obj3d.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Kugelobjekt mit Durchmesser r3DSize; Anzahl der Flaechen wird durch
+|* die horizontale und vertikale Segmentanzahl vorgegeben
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dSphereObj : public E3dCompoundObject
+{
+private:
+ basegfx::B3DPoint aCenter;
+ basegfx::B3DVector aSize;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+
+public:
+ TYPEINFO();
+ E3dSphereObj(E3dDefaultAttributes& rDefault, const basegfx::B3DPoint& rCenter, const basegfx::B3DVector& r3DSize);
+ E3dSphereObj();
+
+ // FG: Dieser Konstruktor wird nur von MakeObject aus der 3d-Objectfactory beim
+ // Laden von Dokumenten mit Kugeln aufgerufen. Dieser Konstruktor ruft kein
+ // CreateSphere auf, er erzeugt also keine Kugel.
+ E3dSphereObj(int dummy);
+
+ // HorizontalSegments:
+ sal_uInt32 GetHorizontalSegments() const
+ { return ((const Svx3DHorizontalSegmentsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_HORZ_SEGS)).GetValue(); }
+
+ // VerticalSegments:
+ sal_uInt32 GetVerticalSegments() const
+ { return ((const Svx3DVerticalSegmentsItem&)GetObjectItemSet().Get(SDRATTR_3DOBJ_VERT_SEGS)).GetValue(); }
+
+ virtual UINT16 GetObjIdentifier() const;
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual void operator=(const SdrObject&);
+
+ void ReSegment(sal_uInt32 nHorzSegments, sal_uInt32 nVertSegments);
+ const basegfx::B3DPoint& Center() const { return aCenter; }
+ const basegfx::B3DVector& Size() const { return aSize; }
+
+ // Lokale Parameter setzen mit Geometrieneuerzeugung
+ void SetCenter(const basegfx::B3DPoint& rNew);
+ void SetSize(const basegfx::B3DVector& rNew);
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+};
+
+#endif // _E3D_SPHERE3D_HXX
diff --git a/svx/inc/svx/splitcelldlg.hxx b/svx/inc/svx/splitcelldlg.hxx
new file mode 100644
index 000000000000..bd1d3e8f60d0
--- /dev/null
+++ b/svx/inc/svx/splitcelldlg.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_SPLITCELLDLG_HXX
+#define _SVX_SPLITCELLDLG_HXX
+
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+#include <vcl/imagebtn.hxx>
+#include <vcl/button.hxx>
+
+#include <svx/stddlg.hxx>
+
+class SvxSplitTableDlg : public SvxStandardDialog
+{
+ FixedText maCountLbl;
+ NumericField maCountEdit;
+ FixedLine maCountFL;
+ ImageRadioButton maHorzBox;
+ ImageRadioButton maVertBox;
+ CheckBox maPropCB;
+ FixedLine maDirFL;
+ OKButton maOKBtn;
+ CancelButton maCancelBtn;
+ HelpButton maHelpBtn;
+
+protected:
+ virtual void Apply();
+
+public:
+ SvxSplitTableDlg(Window *pParent );
+ DECL_LINK( ClickHdl, Button * );
+
+ bool IsHorizontal() const;
+ bool IsProportional() const;
+ long GetCount() const;
+};
+
+#endif
diff --git a/svx/inc/svx/stddlg.hxx b/svx/inc/svx/stddlg.hxx
new file mode 100644
index 000000000000..c56cac58f4ae
--- /dev/null
+++ b/svx/inc/svx/stddlg.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_STDDLG_HXX
+#define _SVX_STDDLG_HXX
+
+// include ---------------------------------------------------------------
+
+#include <sfx2/basedlgs.hxx>
+#include "svx/svxdllapi.h"
+
+// class SvxStandardDialog -----------------------------------------------
+
+class SVX_DLLPUBLIC SvxStandardDialog: public SfxModalDialog
+{
+public:
+ SvxStandardDialog( Window* pParent, const ResId& rResId );
+ ~SvxStandardDialog();
+
+ short Execute();
+
+protected:
+ virtual void Apply() = 0; // pure virtual!!!
+};
+
+
+#endif
+
diff --git a/svx/inc/svx/strarray.hxx b/svx/inc/svx/strarray.hxx
new file mode 100644
index 000000000000..08f4975f1e35
--- /dev/null
+++ b/svx/inc/svx/strarray.hxx
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_STRARRAY_HXX
+#define _SVX_STRARRAY_HXX
+
+// include ---------------------------------------------------------------
+
+#ifndef _RESARY_HXX //autogen
+#include <tools/resary.hxx>
+#endif
+#include "svx/svxdllapi.h"
+
+// class SvxStringArray -------------------------------------------------
+
+class SVX_DLLPUBLIC SvxStringArray : public ResStringArray
+{
+public:
+ SvxStringArray( sal_uInt32 nResId );
+ SvxStringArray( const ResId& rResId );
+ ~SvxStringArray();
+
+ const String& GetStringByPos( sal_uInt32 nPos ) const;
+ const String& GetStringByType( long nType ) const;
+ long GetValueByStr( const String& rStr ) const;
+};
+
+
+#endif
+
diff --git a/svx/inc/svx/subtoolboxcontrol.hxx b/svx/inc/svx/subtoolboxcontrol.hxx
new file mode 100644
index 000000000000..36b0676fece4
--- /dev/null
+++ b/svx/inc/svx/subtoolboxcontrol.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_SUBTOOLBOXCONTROL_HXX
+#define _SVX_SUBTOOLBOXCONTROL_HXX
+
+#include "svx/svxdllapi.h"
+#include <sfx2/tbxctrl.hxx>
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxSubToolBoxControl : public SfxToolBoxControl
+{
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxSubToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxSubToolBoxControl();
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
+//
+//----------------------------------------------------------------------------
+
+#endif
+
+
diff --git a/svx/inc/svx/svdattr.hxx b/svx/inc/svx/svdattr.hxx
new file mode 100644
index 000000000000..4c4ddde2912d
--- /dev/null
+++ b/svx/inc/svx/svdattr.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDATTR_HXX
+#define _SVDATTR_HXX
+
+#ifndef _SOLAR_HRC
+#include <svl/solar.hrc>
+#endif
+#include <tools/solar.h>
+#include <svx/sdangitm.hxx>
+#include <svx/sderitm.hxx>
+#include <svx/sdmetitm.hxx>
+#include <svx/sdooitm.hxx>
+#include <svx/sdprcitm.hxx>
+#include <svx/sdshcitm.hxx>
+#include <svx/sdshitm.hxx>
+#include <svx/sdshtitm.hxx>
+#include <svx/sdsxyitm.hxx>
+#include <svx/sdtaaitm.hxx>
+#ifndef _SDTACITM_HXX
+#include <svx/sdtacitm.hxx>
+#endif
+#ifndef _SDTACITM_HXX
+#include <svx/sdtaditm.hxx>
+#endif
+#include <svx/sdtagitm.hxx>
+#include <svx/sdtaiitm.hxx>
+#include <svx/sdtaitm.hxx>
+#ifndef _SDTAKITM_HXX
+#include <svx/sdtakitm.hxx>
+#endif
+#include <svx/sdtayitm.hxx>
+#ifndef SDTCFITM_HXX
+#include <svx/sdtcfitm.hxx>
+#endif
+#ifndef _SDTDITM_HXX
+#include <svx/sdtditm.hxx>
+#endif
+#include <svx/sdtfsitm.hxx>
+#include <svx/sdtmfitm.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdgluitm.hxx>
+#include <svx/sdginitm.hxx>
+#include <svx/sdgtritm.hxx>
+#include <svx/sdgcoitm.hxx>
+#include <svx/sdggaitm.hxx>
+#include <svx/sdasitm.hxx>
+#include <svx/sdgmoitm.hxx>
+#include <svx/sdasaitm.hxx>
+#endif
+
diff --git a/svx/inc/svx/svdattrx.hxx b/svx/inc/svx/svdattrx.hxx
new file mode 100644
index 000000000000..7fba70ed1ed2
--- /dev/null
+++ b/svx/inc/svx/svdattrx.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDATTRX_HXX
+#define _SVDATTRX_HXX
+
+#include <svx/sxmlhitm.hxx>
+#include <svx/sxallitm.hxx>
+#include <svx/sxcaitm.hxx>
+#include <svx/sxcecitm.hxx>
+
+#ifndef _SXCGIITM_HXX
+#include <svx/sxcgitm.hxx>
+#endif
+#include <svx/sxciaitm.hxx>
+#include <svx/sxcikitm.hxx>
+#include <svx/sxcllitm.hxx>
+#include <svx/sxctitm.hxx>
+#include <svx/sxekitm.hxx>
+#include <svx/sxelditm.hxx>
+#include <svx/sxenditm.hxx>
+
+#ifndef _SXFIITM_HXX
+#include <svx/sxfiitm.hxx>
+#endif
+
+#ifndef _SXLAYITM_HXX
+#include <svx/sxlayitm.hxx>
+#endif
+#include <svx/sxlogitm.hxx>
+#include <svx/sxmbritm.hxx>
+#include <svx/sxmfsitm.hxx>
+#include <svx/sxmkitm.hxx>
+#include <svx/sxmoitm.hxx>
+#include <svx/sxmovitm.hxx>
+
+#ifndef _SXMSIITM_HXX
+#include <svx/sxmsitm.hxx>
+#endif
+#include <svx/sxmspitm.hxx>
+#include <svx/sxmsuitm.hxx>
+#include <svx/sxmtaitm.hxx>
+#include <svx/sxmtfitm.hxx>
+#include <svx/sxmtpitm.hxx>
+#include <svx/sxmtritm.hxx>
+#include <svx/sxmuitm.hxx>
+#include <svx/sxoneitm.hxx>
+#include <svx/sxonitm.hxx>
+#include <svx/sxopitm.hxx>
+#include <svx/sxraitm.hxx>
+#include <svx/sxreaitm.hxx>
+#include <svx/sxreoitm.hxx>
+#include <svx/sxroaitm.hxx>
+#include <svx/sxrooitm.hxx>
+#include <svx/sxsaitm.hxx>
+#include <svx/sxsalitm.hxx>
+#include <svx/sxsiitm.hxx>
+#include <svx/sxsoitm.hxx>
+#include <svx/sxtraitm.hxx>
+
+#endif //_SVDATTRX_HXX
diff --git a/svx/inc/svx/svdcrtv.hxx b/svx/inc/svx/svdcrtv.hxx
new file mode 100644
index 000000000000..15640bb17cba
--- /dev/null
+++ b/svx/inc/svx/svdcrtv.hxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDCRTV_HXX
+#define _SVDCRTV_HXX
+
+#include <svx/svddrgv.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class XLineAttrSetItem;
+class XFillAttrSetItem;
+class SdrEdgeObj;
+class SdrObjConnection;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@ @@@@@ @@@@@ @@@@ @@@@@@ @@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@ @@@@@ @@@@ @@@@@@ @@ @@@@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@ @@ @@ @@@@@ @@ @@ @@ @@@@@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+class ImplConnectMarkerOverlay;
+class ImpSdrCreateViewExtraData;
+
+class SVX_DLLPUBLIC SdrCreateView: public SdrDragView
+{
+ friend class SdrPageView;
+
+protected:
+ SdrObject* pAktCreate; // Aktuell in Erzeugung befindliches Objekt
+ SdrPageView* pCreatePV; // Hier wurde die Erzeugung gestartet
+ ImplConnectMarkerOverlay* mpCoMaOverlay;
+
+ // for migrating stuff from XOR, use ImpSdrCreateViewExtraData ATM to not need to
+ // compile the apps all the time
+ ImpSdrCreateViewExtraData* mpCreateViewExtraData;
+
+ Pointer aAktCreatePointer;
+
+ INT32 nAutoCloseDistPix;
+ INT32 nFreeHandMinDistPix;
+ UINT32 nAktInvent; // Aktuell eingestelltes
+ UINT16 nAktIdent; // Obj fuer Neuerzeugung
+
+ unsigned bAutoTextEdit : 1; // Textedit nach dem erzeugen eines Textrahmens starten
+ unsigned b1stPointAsCenter : 1;
+ unsigned bUseIncompatiblePathCreateInterface : 1;
+ unsigned bAutoClosePolys : 1;
+
+ void ImpClearConnectMarker();
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+ SVX_DLLPRIVATE void ImpMakeCreateAttr();
+ SVX_DLLPRIVATE void ImpDelCreateAttr();
+
+protected:
+ sal_Bool ImpBegCreateObj(sal_uInt32 nInvent, sal_uInt16 nIdent, const Point& rPnt, OutputDevice* pOut,
+ sal_Int16 nMinMov, SdrPageView* pPV, const Rectangle& rLogRect, SdrObject* pPreparedFactoryObject);
+
+ void ShowCreateObj(/*OutputDevice* pOut, BOOL bFull*/);
+ void HideCreateObj(/*OutputDevice* pOut, BOOL bFull*/);
+ BOOL CheckEdgeMode();
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrCreateView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrCreateView();
+
+public:
+ virtual BOOL IsAction() const;
+ virtual void MovAction(const Point& rPnt);
+ virtual void EndAction();
+ virtual void BckAction();
+ virtual void BrkAction();
+ virtual void TakeActionRect(Rectangle& rRect) const;
+
+ virtual BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
+
+ void SetActiveLayer(const String& rName) { aAktLayer=rName; }
+ const String& GetActiveLayer() const { return aAktLayer; }
+ void SetMeasureLayer(const String& rName) { aMeasureLayer=rName; }
+ const String& GetMeasureLayer() const { return aMeasureLayer; }
+
+ // Ist der MeasureLayer nicht gesetzt (Leerstring), so
+ // wird der ActiveLayer auch fuer Bemassung verwendet.
+ void SetEditMode(SdrViewEditMode eMode) { SdrDragView::SetEditMode(eMode); CheckEdgeMode(); }
+ void SetEditMode(BOOL bOn=TRUE) { SdrDragView::SetEditMode(bOn); CheckEdgeMode(); }
+ void SetCreateMode(BOOL bOn=TRUE) { SdrDragView::SetCreateMode(bOn); CheckEdgeMode(); }
+ void SetGluePointEditMode(BOOL bOn=TRUE) { SdrDragView::SetGluePointEditMode(bOn); CheckEdgeMode(); }
+
+ // Feststellen, ob Textwerkzeug aktiviert
+ BOOL IsTextTool() const;
+
+ // Feststellen, ob Objektverbinderwerkzeug aktiviert
+ BOOL IsEdgeTool() const;
+
+ // Feststellen, ob Bemassungswerkzeug aktiviert
+ BOOL IsMeasureTool() const;
+
+ void SetCurrentObj(UINT16 nIdent, UINT32 nInvent=SdrInventor);
+ void TakeCurrentObj(UINT16& nIdent, UINT32& nInvent) const { nInvent=nAktInvent; nIdent=nAktIdent; }
+ UINT32 GetCurrentObjInventor() const { return nAktInvent; }
+ UINT16 GetCurrentObjIdentifier() const { return nAktIdent; }
+
+ // Starten des normalen Create
+ BOOL BegCreateObj(const Point& rPnt, OutputDevice* pOut=NULL, short nMinMov=-3, SdrPageView* pPV=NULL);
+ sal_Bool BegCreatePreparedObject(const Point& rPnt, sal_Int16 nMinMov, SdrObject* pPreparedFactoryObject);
+ void MovCreateObj(const Point& rPnt);
+ BOOL EndCreateObj(SdrCreateCmd eCmd);
+ void BckCreateObj(); // z.B. wieder 1 Polygonpunkt zurueck.
+ void BrkCreateObj();
+ BOOL IsCreateObj() const { return pAktCreate!=NULL; }
+ SdrObject* GetCreateObj() const { return pAktCreate; }
+
+ // BegCreateCaptionObj() erzeugt ein SdrCaptionObj (Legendenobjekt).
+ // rObjSiz ist die anfaengliche Groesse des Legenden-Textrahmens.
+ // gedraggd wird lediglich die Laenge des Zipfel.
+ BOOL BegCreateCaptionObj(const Point& rPnt, const Size& rObjSiz, OutputDevice* pOut=NULL, short nMinMov=-3, SdrPageView* pPV=NULL);
+
+ // Wenn TextEditAfterCreate auf TRUE steht (das ist der Default),
+ // dann wird nach dem erzeugen eines Textrahmenobjekts (OBJ_TEXT,
+ // OBJ_TEXTEXT, OBJ_OUTLINERTEXT, OBJ_TITLETEXT, OBJ_CAPTION)
+ // automatisch ein TextEdit (SdrObjEditView::SdrBeginTextEdit) gestartet.
+ BOOL IsTextEditAfterCreate() const { return bAutoTextEdit; }
+ void SetTextEditAfterCreate(BOOL bOn) { bAutoTextEdit = bOn; }
+
+ // Erzeugen eines Kreises/Rechtecks/Textrahmens wobei der 1. Punkt
+ // nicht die linke obere Ecke, sondern das Zentrum des Objekts vorgibt.
+ // Persistentes Flag. Default=FALSE.
+ BOOL IsCreate1stPointAsCenter() const { return b1stPointAsCenter; }
+ void SetCreate1stPointAsCenter(BOOL bOn) { b1stPointAsCenter = bOn; }
+
+ // Fuer Polylines (OBJ_PLIN) und Freihandlinien (OBJ_FREELINE). Ist dieses
+ // Flag TRUE, werden diese beiden Objekttypen implizit geschlossen und in
+ // Polygon (OBJ_POLY) bzw. Freihandflaeche (OBJ_FREEFILL) gewandelt falls
+ // zum Ende des Create die Distanz zwischen Startpunkt und Endpunkt des
+ // Objekts <=n Pixel ist, wobei SetAutoCloseDistPix vorgegeben wird.
+ // Default=TRUE.
+ BOOL IsAutoClosePolys() const { return bAutoClosePolys; }
+ void SetAutoClosePolys(BOOL bOn) { bAutoClosePolys=bOn; }
+
+ // Default=5 Pixel.
+ USHORT GetAutoCloseDistPix() const { return USHORT(nAutoCloseDistPix); }
+ void SetAutoCloseDistPix(USHORT nVal) { nAutoCloseDistPix=nVal; }
+
+ // Vorgabe des minimalen Pixelabstands zwischen 2 Bezierpunkten bei der
+ // Erzeugung einer Freihandlinie.
+ // Default=10 Pixel.
+ USHORT GetFreeHandMinDistPix() const { return USHORT(nFreeHandMinDistPix); }
+ void SetFreeHandMinDistPix(USHORT nVal) { nFreeHandMinDistPix=nVal; }
+
+ // Wer das (zur restlichen Create-Funktionalitaet von SvDraw) inkompatible
+ // Create-Interface am PathObj beibehalten moechte muss das nachfolgende
+ // Flag setzen. Dieses wirkt sich aus bei den Objekttypen:
+ // OBJ_POLY, OBJ_PLIN, OBJ_PATHLINE, OBJ_PATHFILL
+ // Dieses Flag hat nur voruebergehenden Character. Die betroffenen
+ // Applikationen sollten alsbald umgestellt werden.
+ // Default=FALSE;
+ BOOL IsUseIncompatiblePathCreateInterface() const { return bUseIncompatiblePathCreateInterface; }
+ void SetUseIncompatiblePathCreateInterface(BOOL bOn) { bUseIncompatiblePathCreateInterface = bOn; }
+ void SetConnectMarker(const SdrObjConnection& rCon, const SdrPageView& rPV);
+ void HideConnectMarker();
+
+ // Attribute des ggf. gerade in der Erzeugung befindlichen Objekts
+ /* new interface src537 */
+ BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
+
+ BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
+ SfxStyleSheet* GetStyleSheet() const; // SfxStyleSheet* GetStyleSheet(BOOL& rOk) const;
+ BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+};
+
+#endif //_SVDCRTV_HXX
+
diff --git a/svx/inc/svx/svddef.hxx b/svx/inc/svx/svddef.hxx
new file mode 100644
index 000000000000..a9e5d175680c
--- /dev/null
+++ b/svx/inc/svx/svddef.hxx
@@ -0,0 +1,313 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDDEF_HXX
+#define _SVDDEF_HXX
+
+#include <svx/xdef.hxx>
+
+/*************************************************************************/
+// SdrItemPool V2, 09-11-1995:
+// 7 neue Items fuer XLineAttrSetItem
+// 7 neue Items fuer XFillAttrSetItem
+// 8 neue Items fuer SdrShadowSetItem
+// 5 neue Items fuer SdrCaptionSetItem
+// 25 neue Items fuer SdrMiscSetItem
+// 6 neue Items fuer SdrNotPersist
+// SdrItemPool V3, 29-02-1996
+// 17 neue Items fuer XFillAttrSetItem (Bitmapfuellungen) (von KA)
+// SdrItemPool V4, 10-08-1996
+// 45 neue Items fuer Edge und Measure (Verbinder und Bemassungsobjekt) (von Joe)
+// SdrItemPool V4+, 18-10-1996
+// 8 neue Items fuer CircItems
+// 18 neue Items fuer NotPersist+Umbau dort
+// SdrItemPool V4++, 13-11-1996
+// 2 neue Items fuer NotPersist+(MoveX/Y)
+// SdrItemPool V4+++, 07-06-1999
+// 15 neue Items fuer NotPersist (Reserve)
+// 15 neue Items fuer GrafItems
+//
+// WhichMapping:
+// V1 Range = 1000..1065 (66)
+// V2 Range = 1000..1123 (124) (58 neue Whiches)
+// V3 Range = 1000..1140 (141) (17 neue Whiches)
+// V4 Range = 1000..1185 (186) (45 neue Whiches)
+// Map V2: 10 6 20 4 11 6 9
+// V1: 1000..1009, 1010..1015, 1016..1035, 1036..1039, 1040..1050, 1051..1056 1057..1065
+// V2: 1000..1009, 1017..1022, 1030..1049, 1050..1053, 1062..1072, 1078..1083, 1109..1117, und hinten noch 6 neue dran
+// |<------------ XOut ------------>| |<----------- SvDraw ----------->
+// Map V3:
+// V2: 1000..1029, 1030..1123
+// V3: 1000..1029, 1047..1140
+// Map V4:
+// V3: 1000..1126, 1127..1140
+// V4: 1000..1126, 1172..1185
+
+#define SDRATTR_START XATTR_START /* 1000 */
+ /* Pool V4*/ /* Pool V3*/ /* Pool V2*/
+#define SDRATTR_SHADOW_FIRST (XATTR_END + 1) /* 1067 */ /* 1067 */ /* 1050 */ /* Pool V1: 1036 */
+#define SDRATTR_SHADOW (SDRATTR_SHADOW_FIRST+ 0) /* 1067 */ /* 1067 */ /* 1050 */
+#define SDRATTR_SHADOWCOLOR (SDRATTR_SHADOW_FIRST+ 1) /* 1068 */ /* 1068 */ /* 1051 */
+#define SDRATTR_SHADOWXDIST (SDRATTR_SHADOW_FIRST+ 2) /* 1069 */ /* 1069 */ /* 1052 */
+#define SDRATTR_SHADOWYDIST (SDRATTR_SHADOW_FIRST+ 3) /* 1070 */ /* 1070 */ /* 1053 */
+#define SDRATTR_SHADOWTRANSPARENCE (SDRATTR_SHADOW_FIRST+ 4) /* 1071 */ /* 1071 */ /* 1054 */ /* Pool V2 */
+#define SDRATTR_SHADOW3D (SDRATTR_SHADOW_FIRST+ 5) /* 1072 */ /* 1072 */ /* 1055 */ /* Pool V2 */
+#define SDRATTR_SHADOWPERSP (SDRATTR_SHADOW_FIRST+ 6) /* 1073 */ /* 1073 */ /* 1056 */ /* Pool V2 */
+#define SDRATTR_SHADOW_LAST (SDRATTR_SHADOWPERSP) /* 1078 */ /* 1078 */ /* 1061 */ /* Pool V1: 1039 */
+
+#define SDRATTR_CAPTION_FIRST (SDRATTR_SHADOW_LAST + 1) /* 1080 */ /* 1080 */ /* 1063 */ /* Pool V1: 1041 */
+#define SDRATTR_CAPTIONTYPE (SDRATTR_CAPTION_FIRST+ 0) /* 1080 */ /* 1080 */ /* 1063 */
+#define SDRATTR_CAPTIONFIXEDANGLE (SDRATTR_CAPTION_FIRST+ 1) /* 1081 */ /* 1081 */ /* 1064 */
+#define SDRATTR_CAPTIONANGLE (SDRATTR_CAPTION_FIRST+ 2) /* 1082 */ /* 1082 */ /* 1065 */
+#define SDRATTR_CAPTIONGAP (SDRATTR_CAPTION_FIRST+ 3) /* 1083 */ /* 1083 */ /* 1066 */
+#define SDRATTR_CAPTIONESCDIR (SDRATTR_CAPTION_FIRST+ 4) /* 1084 */ /* 1084 */ /* 1067 */
+#define SDRATTR_CAPTIONESCISREL (SDRATTR_CAPTION_FIRST+ 5) /* 1085 */ /* 1085 */ /* 1068 */
+#define SDRATTR_CAPTIONESCREL (SDRATTR_CAPTION_FIRST+ 6) /* 1086 */ /* 1086 */ /* 1069 */
+#define SDRATTR_CAPTIONESCABS (SDRATTR_CAPTION_FIRST+ 7) /* 1087 */ /* 1087 */ /* 1070 */
+#define SDRATTR_CAPTIONLINELEN (SDRATTR_CAPTION_FIRST+ 8) /* 1088 */ /* 1088 */ /* 1071 */
+#define SDRATTR_CAPTIONFITLINELEN (SDRATTR_CAPTION_FIRST+ 9) /* 1089 */ /* 1089 */ /* 1072 */
+#define SDRATTR_CAPTION_LAST (SDRATTR_CAPTIONFITLINELEN) /* 1094 */ /* 1094 */ /* 1077 */ /* Pool V1: 1050 */
+
+#define SDRATTR_MISC_FIRST (SDRATTR_CAPTION_LAST + 1) /* 1097 */ /* 1097 */ /* 1080 */ /* Pool V1: 1053 */
+#define SDRATTR_ECKENRADIUS (SDRATTR_MISC_FIRST + 0) /* 1097 */ /* 1097 */ /* 1080 long, def=0 */
+#define SDRATTR_TEXT_MINFRAMEHEIGHT (SDRATTR_MISC_FIRST + 1) /* 1098 */ /* 1098 */ /* 1081 long, def=0 */
+#define SDRATTR_TEXT_AUTOGROWHEIGHT (SDRATTR_MISC_FIRST + 2) /* 1099 */ /* 1099 */ /* 1082 BOOL, def=TRUE */
+#define SDRATTR_TEXT_FITTOSIZE (SDRATTR_MISC_FIRST + 3) /* 1100 */ /* 1100 */ /* 1083 enum, def=SDRTEXTFIT_NONE */
+#define SDRATTR_TEXT_LEFTDIST (SDRATTR_MISC_FIRST + 4) /* 1101 */ /* 1101 */ /* 1084 long, def=0 */ /* Pool V2 */
+#define SDRATTR_TEXT_RIGHTDIST (SDRATTR_MISC_FIRST + 5) /* 1102 */ /* 1102 */ /* 1085 long, def=0 */ /* Pool V2 */
+#define SDRATTR_TEXT_UPPERDIST (SDRATTR_MISC_FIRST + 6) /* 1103 */ /* 1103 */ /* 1086 long, def=0 */ /* Pool V2 */
+#define SDRATTR_TEXT_LOWERDIST (SDRATTR_MISC_FIRST + 7) /* 1104 */ /* 1104 */ /* 1087 long, def=0 */ /* Pool V2 */
+#define SDRATTR_TEXT_VERTADJUST (SDRATTR_MISC_FIRST + 8) /* 1105 */ /* 1105 */ /* 1088 enum, def=SDRTEXTVERTADJUST_TOP */ /* Pool V2 */
+#define SDRATTR_TEXT_MAXFRAMEHEIGHT (SDRATTR_MISC_FIRST + 9) /* 1106 */ /* 1106 */ /* 1089 long, def=0 - Pool V2 */
+#define SDRATTR_TEXT_MINFRAMEWIDTH (SDRATTR_MISC_FIRST +10) /* 1107 */ /* 1107 */ /* 1090 long, def=0 - Pool V2 */
+#define SDRATTR_TEXT_MAXFRAMEWIDTH (SDRATTR_MISC_FIRST +11) /* 1108 */ /* 1108 */ /* 1091 long, def=0 - Pool V2 */
+#define SDRATTR_TEXT_AUTOGROWWIDTH (SDRATTR_MISC_FIRST +12) /* 1109 */ /* 1109 */ /* 1092 BOOL, def=FALSE - Pool V2 */
+#define SDRATTR_TEXT_HORZADJUST (SDRATTR_MISC_FIRST +13) /* 1110 */ /* 1110 */ /* 1093 enum, def=SDRTEXTHORZADJUST_LEFT */ /* Pool V2+ (04-12-1995) */
+#define SDRATTR_TEXT_ANIKIND (SDRATTR_MISC_FIRST +14) /* 1111 */ /* 1111 */ /* 1094 enum, def=SDRTEXTANI_NONE - Pool V2/V4 */
+#define SDRATTR_TEXT_ANIDIRECTION (SDRATTR_MISC_FIRST +15) /* 1112 */ /* 1112 */ /* 1095 enum, def=SDRTEXTANI_LEFT - Pool V2/V4 */
+#define SDRATTR_TEXT_ANISTARTINSIDE (SDRATTR_MISC_FIRST +16) /* 1113 */ /* 1113 */ /* 1096 BOOL, def=FALSE - Pool V2/V4 */
+#define SDRATTR_TEXT_ANISTOPINSIDE (SDRATTR_MISC_FIRST +17) /* 1114 */ /* 1114 */ /* 1097 BOOL, def=FALSE - Pool V2/V4 */
+#define SDRATTR_TEXT_ANICOUNT (SDRATTR_MISC_FIRST +18) /* 1115 */ /* 1115 */ /* 1098 USHORT, def=0 - Pool V2/V4 */
+#define SDRATTR_TEXT_ANIDELAY (SDRATTR_MISC_FIRST +19) /* 1116 */ /* 1116 */ /* 1099 USHORT, def=0 - Pool V2/V4 */
+#define SDRATTR_TEXT_ANIAMOUNT (SDRATTR_MISC_FIRST +20) /* 1117 */ /* 1117 */ /* 1100 USHORT, def=0 - Pool V2/V4 */
+#define SDRATTR_TEXT_CONTOURFRAME (SDRATTR_MISC_FIRST +21) /* 1118 */ /* 1118 */ /* 1101 */ /* Pool V2 */
+#define SDRATTR_CUSTOMSHAPE_ADJUSTMENT (SDRATTR_MISC_FIRST +22) /* 1119 */ /* 1119 */ /* 1102 */ /* Pool V2 */
+#define SDRATTR_XMLATTRIBUTES (SDRATTR_MISC_FIRST +23) /* 1120 */ /* 1120 */ /* 1103 */ /* Pool V2 */
+#define SDRATTR_TEXT_USEFIXEDCELLHEIGHT (SDRATTR_MISC_FIRST +24) /* 1121 */ /* 1121 */ /* 1104 */ /* Pool V2 */
+#define SDRATTR_TEXT_WORDWRAP (SDRATTR_MISC_FIRST +25) /* 1122 */ /* 1122 */ /* 1105 */ /* Pool V2 */
+#define SDRATTR_TEXT_AUTOGROWSIZE (SDRATTR_MISC_FIRST +26) /* 1123 */ /* 1123 */ /* 1106 */ /* Pool V2 */
+#define SDRATTR_MISC_LAST (SDRATTR_TEXT_AUTOGROWSIZE) /* 1125 */ /* 1125 */ /* 1108 */ /* Pool V1: 1056 */
+
+#define SDRATTR_EDGE_FIRST (SDRATTR_MISC_LAST + 1) /* 1127 */ /* Pool V4 */
+#define SDRATTR_EDGEKIND (SDRATTR_EDGE_FIRST + 0) /* 1127 */ /* Pool V4 */
+#define SDRATTR_EDGENODE1HORZDIST (SDRATTR_EDGE_FIRST + 1) /* 1128 */ /* Pool V4 */
+#define SDRATTR_EDGENODE1VERTDIST (SDRATTR_EDGE_FIRST + 2) /* 1129 */ /* Pool V4 */
+#define SDRATTR_EDGENODE2HORZDIST (SDRATTR_EDGE_FIRST + 3) /* 1130 */ /* Pool V4 */
+#define SDRATTR_EDGENODE2VERTDIST (SDRATTR_EDGE_FIRST + 4) /* 1131 */ /* Pool V4 */
+#define SDRATTR_EDGENODE1GLUEDIST (SDRATTR_EDGE_FIRST + 5) /* 1132 */ /* Pool V4 */
+#define SDRATTR_EDGENODE2GLUEDIST (SDRATTR_EDGE_FIRST + 6) /* 1133 */ /* Pool V4 */
+#define SDRATTR_EDGELINEDELTAANZ (SDRATTR_EDGE_FIRST + 7) /* 1134 */ /* Pool V4 */
+#define SDRATTR_EDGELINE1DELTA (SDRATTR_EDGE_FIRST + 8) /* 1135 */ /* Pool V4 */
+#define SDRATTR_EDGELINE2DELTA (SDRATTR_EDGE_FIRST + 9) /* 1136 */ /* Pool V4 */
+#define SDRATTR_EDGELINE3DELTA (SDRATTR_EDGE_FIRST +10) /* 1137 */ /* Pool V4 */
+#define SDRATTR_EDGE_LAST (SDRATTR_EDGELINE3DELTA) /* 1145 */ /* Pool V4 */
+
+#define SDRATTR_MEASURE_FIRST (SDRATTR_EDGE_LAST + 1) /* 1147 */ /* Pool V4 */
+#define SDRATTR_MEASUREKIND (SDRATTR_MEASURE_FIRST+ 0) /* 1147 */ /* Pool V4 */
+#define SDRATTR_MEASURETEXTHPOS (SDRATTR_MEASURE_FIRST+ 1) /* 1148 */ /* Pool V4 */
+#define SDRATTR_MEASURETEXTVPOS (SDRATTR_MEASURE_FIRST+ 2) /* 1149 */ /* Pool V4 */
+#define SDRATTR_MEASURELINEDIST (SDRATTR_MEASURE_FIRST+ 3) /* 1150 */ /* Pool V4 */
+#define SDRATTR_MEASUREHELPLINEOVERHANG (SDRATTR_MEASURE_FIRST+ 4) /* 1151 */ /* Pool V4 */
+#define SDRATTR_MEASUREHELPLINEDIST (SDRATTR_MEASURE_FIRST+ 5) /* 1152 */ /* Pool V4 */
+#define SDRATTR_MEASUREHELPLINE1LEN (SDRATTR_MEASURE_FIRST+ 6) /* 1153 */ /* Pool V4 */
+#define SDRATTR_MEASUREHELPLINE2LEN (SDRATTR_MEASURE_FIRST+ 7) /* 1154 */ /* Pool V4 */
+#define SDRATTR_MEASUREBELOWREFEDGE (SDRATTR_MEASURE_FIRST+ 8) /* 1155 */ /* Pool V4 */
+#define SDRATTR_MEASURETEXTROTA90 (SDRATTR_MEASURE_FIRST+ 9) /* 1156 */ /* Pool V4 */
+#define SDRATTR_MEASURETEXTUPSIDEDOWN (SDRATTR_MEASURE_FIRST+10) /* 1157 */ /* Pool V4 */
+#define SDRATTR_MEASUREOVERHANG (SDRATTR_MEASURE_FIRST+11) /* 1158 */ /* Pool V4 */
+#define SDRATTR_MEASUREUNIT (SDRATTR_MEASURE_FIRST+12) /* 1159 */ /* Pool V4 */
+#define SDRATTR_MEASURESCALE (SDRATTR_MEASURE_FIRST+13) /* 1160 */ /* Pool V4 */
+#define SDRATTR_MEASURESHOWUNIT (SDRATTR_MEASURE_FIRST+14) /* 1161 */ /* Pool V4 */
+#define SDRATTR_MEASUREFORMATSTRING (SDRATTR_MEASURE_FIRST+15) /* 1162 */ /* Pool V4 */
+#define SDRATTR_MEASURETEXTAUTOANGLE (SDRATTR_MEASURE_FIRST+16) /* 1163 */ /* Pool V4, Nachtrag 25-9-1996 */
+#define SDRATTR_MEASURETEXTAUTOANGLEVIEW (SDRATTR_MEASURE_FIRST+17) /* 1164 */ /* Pool V4, Nachtrag 25-9-1996 */
+#define SDRATTR_MEASURETEXTISFIXEDANGLE (SDRATTR_MEASURE_FIRST+18) /* 1165 */ /* Pool V4, Nachtrag 25-9-1996 */
+#define SDRATTR_MEASURETEXTFIXEDANGLE (SDRATTR_MEASURE_FIRST+19) /* 1166 */ /* Pool V4, Nachtrag 25-9-1996 */
+#define SDRATTR_MEASUREDECIMALPLACES (SDRATTR_MEASURE_FIRST+20) /* 1167 */ /* Pool V4 */
+#define SDRATTR_MEASURE_LAST (SDRATTR_MEASUREDECIMALPLACES) /* 1170 */ /* Pool V4 */
+
+#define SDRATTR_CIRC_FIRST (SDRATTR_MEASURE_LAST+ 1) /* 1172 */ /* Pool V4+ */
+#define SDRATTR_CIRCKIND (SDRATTR_CIRC_FIRST+ 0) /* 1172 */ /* Pool V4+ */
+#define SDRATTR_CIRCSTARTANGLE (SDRATTR_CIRC_FIRST+ 1) /* 1173 */ /* Pool V4+ */
+#define SDRATTR_CIRCENDANGLE (SDRATTR_CIRC_FIRST+ 2) /* 1174 */ /* Pool V4+ */
+#define SDRATTR_CIRC_LAST (SDRATTR_CIRCENDANGLE) /* 1178 */ /* Pool V4+ */
+
+// Nur fuer Interfaceing, not implemented yet. /* V4+ */
+#define SDRATTR_NOTPERSIST_FIRST (SDRATTR_CIRC_LAST + 1) /* 1180 */ /* 1172 */ /* 1127 */ /* 1110 */ /* Pool V1: 1058 */
+#define SDRATTR_OBJMOVEPROTECT (SDRATTR_NOTPERSIST_FIRST+ 0) /* 1180 BOOL, def=FALSE */
+#define SDRATTR_OBJSIZEPROTECT (SDRATTR_NOTPERSIST_FIRST+ 1) /* 1181 BOOL, def=FALSE */
+#define SDRATTR_OBJPRINTABLE (SDRATTR_NOTPERSIST_FIRST+ 2) /* 1182 BOOL, def=TRUE */
+#define SDRATTR_LAYERID (SDRATTR_NOTPERSIST_FIRST+ 3) /* 1183 USHORT, def=0 */
+#define SDRATTR_LAYERNAME (SDRATTR_NOTPERSIST_FIRST+ 4) /* 1184 String, def="" */
+#define SDRATTR_OBJECTNAME (SDRATTR_NOTPERSIST_FIRST+ 5) /* 1185 String, def="" */
+#define SDRATTR_ALLPOSITIONX (SDRATTR_NOTPERSIST_FIRST+ 6) /* 1186 long, def=0 */
+#define SDRATTR_ALLPOSITIONY (SDRATTR_NOTPERSIST_FIRST+ 7) /* 1187 long, def=0 */
+#define SDRATTR_ALLSIZEWIDTH (SDRATTR_NOTPERSIST_FIRST+ 8) /* 1188 long, def=0 */
+#define SDRATTR_ALLSIZEHEIGHT (SDRATTR_NOTPERSIST_FIRST+ 9) /* 1189 long, def=0 */
+#define SDRATTR_ONEPOSITIONX (SDRATTR_NOTPERSIST_FIRST+10) /* 1190 long, def=0 */
+#define SDRATTR_ONEPOSITIONY (SDRATTR_NOTPERSIST_FIRST+11) /* 1191 long, def=0 */
+#define SDRATTR_ONESIZEWIDTH (SDRATTR_NOTPERSIST_FIRST+12) /* 1192 long, def=0 */
+#define SDRATTR_ONESIZEHEIGHT (SDRATTR_NOTPERSIST_FIRST+13) /* 1193 long, def=0 */
+#define SDRATTR_LOGICSIZEWIDTH (SDRATTR_NOTPERSIST_FIRST+14) /* 1194 long, def=0 */
+#define SDRATTR_LOGICSIZEHEIGHT (SDRATTR_NOTPERSIST_FIRST+15) /* 1195 long, def=0 */
+#define SDRATTR_ROTATEANGLE (SDRATTR_NOTPERSIST_FIRST+16) /* 1196 long, def=0 */
+#define SDRATTR_SHEARANGLE (SDRATTR_NOTPERSIST_FIRST+17) /* 1197 long, def=0 */
+#define SDRATTR_MOVEX (SDRATTR_NOTPERSIST_FIRST+18) /* 1198 long, def=0 */
+#define SDRATTR_MOVEY (SDRATTR_NOTPERSIST_FIRST+19) /* 1199 long, def=0 */
+#define SDRATTR_RESIZEXONE (SDRATTR_NOTPERSIST_FIRST+20) /* 1200 long, def=0 */
+#define SDRATTR_RESIZEYONE (SDRATTR_NOTPERSIST_FIRST+21) /* 1201 long, def=0 */
+#define SDRATTR_ROTATEONE (SDRATTR_NOTPERSIST_FIRST+22) /* 1202 long, def=0 */
+#define SDRATTR_HORZSHEARONE (SDRATTR_NOTPERSIST_FIRST+23) /* 1203 long, def=0 */
+#define SDRATTR_VERTSHEARONE (SDRATTR_NOTPERSIST_FIRST+24) /* 1204 long, def=0 */
+#define SDRATTR_RESIZEXALL (SDRATTR_NOTPERSIST_FIRST+25) /* 1205 long, def=0 */
+#define SDRATTR_RESIZEYALL (SDRATTR_NOTPERSIST_FIRST+26) /* 1206 long, def=0 */
+#define SDRATTR_ROTATEALL (SDRATTR_NOTPERSIST_FIRST+27) /* 1207 long, def=0 */
+#define SDRATTR_HORZSHEARALL (SDRATTR_NOTPERSIST_FIRST+28) /* 1208 long, def=0 */
+#define SDRATTR_VERTSHEARALL (SDRATTR_NOTPERSIST_FIRST+29) /* 1209 long, def=0 */
+#define SDRATTR_TRANSFORMREF1X (SDRATTR_NOTPERSIST_FIRST+30) /* 1210 long, def=0 */
+#define SDRATTR_TRANSFORMREF1Y (SDRATTR_NOTPERSIST_FIRST+31) /* 1211 long, def=0 */
+#define SDRATTR_TRANSFORMREF2X (SDRATTR_NOTPERSIST_FIRST+32) /* 1212 long, def=0 */
+#define SDRATTR_TRANSFORMREF2Y (SDRATTR_NOTPERSIST_FIRST+33) /* 1213 long, def=0 */
+#define SDRATTR_TEXTDIRECTION (SDRATTR_NOTPERSIST_FIRST+34) /* 1214 V4+++ long, def=0 */
+#define SDRATTR_OBJVISIBLE (SDRATTR_NOTPERSIST_FIRST+35)
+#define SDRATTR_NOTPERSIST_LAST (SDRATTR_OBJVISIBLE) /* 1228 V4+++*/ /* 1213*/ /* 1085 */ /* 1040 */ /* 1123 */ /* Pool V1: 1065 */
+// kein SetItem hierfuer
+
+#define SDRATTR_GRAF_FIRST (SDRATTR_NOTPERSIST_LAST+1) /* 1229 V4+++*/
+#define SDRATTR_GRAFRED (SDRATTR_GRAF_FIRST+0) /* 1229 V4+++*/
+#define SDRATTR_GRAFGREEN (SDRATTR_GRAF_FIRST+1) /* 1230 V4+++*/
+#define SDRATTR_GRAFBLUE (SDRATTR_GRAF_FIRST+2) /* 1231 V4+++*/
+#define SDRATTR_GRAFLUMINANCE (SDRATTR_GRAF_FIRST+3) /* 1232 V4+++*/
+#define SDRATTR_GRAFCONTRAST (SDRATTR_GRAF_FIRST+4) /* 1233 V4+++*/
+#define SDRATTR_GRAFGAMMA (SDRATTR_GRAF_FIRST+5) /* 1234 V4+++*/
+#define SDRATTR_GRAFTRANSPARENCE (SDRATTR_GRAF_FIRST+6) /* 1235 V4+++*/
+#define SDRATTR_GRAFINVERT (SDRATTR_GRAF_FIRST+7) /* 1236 V4+++*/
+#define SDRATTR_GRAFMODE (SDRATTR_GRAF_FIRST+8) /* 1237 V4+++*/
+#define SDRATTR_GRAFCROP (SDRATTR_GRAF_FIRST+9) /* 1238 V4+++*/
+#define SDRATTR_GRAF_LAST (SDRATTR_GRAFCROP) /* 1242 V4+++*/
+
+#define SDRATTR_3D_FIRST (SDRATTR_GRAF_LAST + 1) /* 1244 V4+++*/
+
+#define SDRATTR_3DOBJ_FIRST (SDRATTR_3D_FIRST) /* 1244 V4+++*/
+#define SDRATTR_3DOBJ_PERCENT_DIAGONAL (SDRATTR_3DOBJ_FIRST + 0) /* 1244 V4+++*/
+#define SDRATTR_3DOBJ_BACKSCALE (SDRATTR_3DOBJ_FIRST + 1) /* 1245 V4+++*/
+#define SDRATTR_3DOBJ_DEPTH (SDRATTR_3DOBJ_FIRST + 2) /* 1246 V4+++*/
+#define SDRATTR_3DOBJ_HORZ_SEGS (SDRATTR_3DOBJ_FIRST + 3) /* 1247 V4+++*/
+#define SDRATTR_3DOBJ_VERT_SEGS (SDRATTR_3DOBJ_FIRST + 4) /* 1248 V4+++*/
+#define SDRATTR_3DOBJ_END_ANGLE (SDRATTR_3DOBJ_FIRST + 5) /* 1249 V4+++*/
+#define SDRATTR_3DOBJ_DOUBLE_SIDED (SDRATTR_3DOBJ_FIRST + 6) /* 1250 V4+++*/
+#define SDRATTR_3DOBJ_NORMALS_KIND (SDRATTR_3DOBJ_FIRST + 7) /* 1251 V4+++*/
+#define SDRATTR_3DOBJ_NORMALS_INVERT (SDRATTR_3DOBJ_FIRST + 8) /* 1252 V4+++*/
+#define SDRATTR_3DOBJ_TEXTURE_PROJ_X (SDRATTR_3DOBJ_FIRST + 9) /* 1253 V4+++*/
+#define SDRATTR_3DOBJ_TEXTURE_PROJ_Y (SDRATTR_3DOBJ_FIRST + 10) /* 1254 V4+++*/
+#define SDRATTR_3DOBJ_SHADOW_3D (SDRATTR_3DOBJ_FIRST + 11) /* 1255 V4+++*/
+#define SDRATTR_3DOBJ_MAT_COLOR (SDRATTR_3DOBJ_FIRST + 12) /* 1256 V4+++*/
+#define SDRATTR_3DOBJ_MAT_EMISSION (SDRATTR_3DOBJ_FIRST + 13) /* 1257 V4+++*/
+#define SDRATTR_3DOBJ_MAT_SPECULAR (SDRATTR_3DOBJ_FIRST + 14) /* 1258 V4+++*/
+#define SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY (SDRATTR_3DOBJ_FIRST + 15) /* 1259 V4+++*/
+#define SDRATTR_3DOBJ_TEXTURE_KIND (SDRATTR_3DOBJ_FIRST + 16) /* 1260 V4+++*/
+#define SDRATTR_3DOBJ_TEXTURE_MODE (SDRATTR_3DOBJ_FIRST + 17) /* 1261 V4+++*/
+#define SDRATTR_3DOBJ_TEXTURE_FILTER (SDRATTR_3DOBJ_FIRST + 18) /* 1262 V4+++*/
+
+// #107245# New items for 3d objects use former range SDRATTR_3DOBJ_RESERVED_01
+// up to SDRATTR_3DOBJ_RESERVED_05
+#define SDRATTR_3DOBJ_SMOOTH_NORMALS (SDRATTR_3DOBJ_FIRST + 19) /* 1263 V4+++*/
+#define SDRATTR_3DOBJ_SMOOTH_LIDS (SDRATTR_3DOBJ_FIRST + 20) /* 1264 V4+++*/
+#define SDRATTR_3DOBJ_CHARACTER_MODE (SDRATTR_3DOBJ_FIRST + 21) /* 1265 V4+++*/
+#define SDRATTR_3DOBJ_CLOSE_FRONT (SDRATTR_3DOBJ_FIRST + 22) /* 1266 V4+++*/
+#define SDRATTR_3DOBJ_CLOSE_BACK (SDRATTR_3DOBJ_FIRST + 23) /* 1267 V4+++*/
+
+// #i28528#
+// Added extra Item (Bool) for chart2 to be able to show reduced line geometry
+#define SDRATTR_3DOBJ_REDUCED_LINE_GEOMETRY (SDRATTR_3DOBJ_FIRST + 24) /* 1268 V4+++*/
+
+#define SDRATTR_3DOBJ_LAST (SDRATTR_3DOBJ_REDUCED_LINE_GEOMETRY) /* 1282 V4+++*/
+
+#define SDRATTR_3DSCENE_FIRST (SDRATTR_3DOBJ_LAST + 1) /* 1283 V4+++*/
+#define SDRATTR_3DSCENE_PERSPECTIVE (SDRATTR_3DSCENE_FIRST + 0) /* 1283 V4+++*/
+#define SDRATTR_3DSCENE_DISTANCE (SDRATTR_3DSCENE_FIRST + 1) /* 1284 V4+++*/
+#define SDRATTR_3DSCENE_FOCAL_LENGTH (SDRATTR_3DSCENE_FIRST + 2) /* 1285 V4+++*/
+#define SDRATTR_3DSCENE_TWO_SIDED_LIGHTING (SDRATTR_3DSCENE_FIRST + 3) /* 1286 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_1 (SDRATTR_3DSCENE_FIRST + 4) /* 1287 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_2 (SDRATTR_3DSCENE_FIRST + 5) /* 1288 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_3 (SDRATTR_3DSCENE_FIRST + 6) /* 1289 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_4 (SDRATTR_3DSCENE_FIRST + 7) /* 1290 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_5 (SDRATTR_3DSCENE_FIRST + 8) /* 1291 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_6 (SDRATTR_3DSCENE_FIRST + 9) /* 1292 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_7 (SDRATTR_3DSCENE_FIRST + 10) /* 1293 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTCOLOR_8 (SDRATTR_3DSCENE_FIRST + 11) /* 1294 V4+++*/
+#define SDRATTR_3DSCENE_AMBIENTCOLOR (SDRATTR_3DSCENE_FIRST + 12) /* 1295 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_1 (SDRATTR_3DSCENE_FIRST + 13) /* 1296 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_2 (SDRATTR_3DSCENE_FIRST + 14) /* 1297 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_3 (SDRATTR_3DSCENE_FIRST + 15) /* 1298 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_4 (SDRATTR_3DSCENE_FIRST + 16) /* 1299 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_5 (SDRATTR_3DSCENE_FIRST + 17) /* 1300 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_6 (SDRATTR_3DSCENE_FIRST + 18) /* 1301 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_7 (SDRATTR_3DSCENE_FIRST + 19) /* 1302 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTON_8 (SDRATTR_3DSCENE_FIRST + 20) /* 1303 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_1 (SDRATTR_3DSCENE_FIRST + 21) /* 1304 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_2 (SDRATTR_3DSCENE_FIRST + 22) /* 1305 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_3 (SDRATTR_3DSCENE_FIRST + 23) /* 1306 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_4 (SDRATTR_3DSCENE_FIRST + 24) /* 1307 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_5 (SDRATTR_3DSCENE_FIRST + 25) /* 1308 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_6 (SDRATTR_3DSCENE_FIRST + 26) /* 1309 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_7 (SDRATTR_3DSCENE_FIRST + 27) /* 1310 V4+++*/
+#define SDRATTR_3DSCENE_LIGHTDIRECTION_8 (SDRATTR_3DSCENE_FIRST + 28) /* 1311 V4+++*/
+#define SDRATTR_3DSCENE_SHADOW_SLANT (SDRATTR_3DSCENE_FIRST + 29) /* 1312 V4+++*/
+#define SDRATTR_3DSCENE_SHADE_MODE (SDRATTR_3DSCENE_FIRST + 30) /* 1313 V4+++*/
+#define SDRATTR_3DSCENE_LAST (SDRATTR_3DSCENE_SHADE_MODE) /* 1333 V4+++*/
+#define SDRATTR_3D_LAST (SDRATTR_3DSCENE_LAST) /* 1333 V4+++*/
+
+#define SDRATTR_CUSTOMSHAPE_FIRST (SDRATTR_3D_LAST + 1) /* 1334 V4+++*/
+#define SDRATTR_CUSTOMSHAPE_ENGINE (SDRATTR_CUSTOMSHAPE_FIRST + 0) /* 1334 V4+++*/
+#define SDRATTR_CUSTOMSHAPE_DATA (SDRATTR_CUSTOMSHAPE_FIRST + 1) /* 1335 V4+++*/
+#define SDRATTR_CUSTOMSHAPE_GEOMETRY (SDRATTR_CUSTOMSHAPE_FIRST + 2) /* 1336 V4+++*/
+#define SDRATTR_CUSTOMSHAPE_REPLACEMENT_URL (SDRATTR_CUSTOMSHAPE_FIRST + 3) /* 1337 V4+++*/
+#define SDRATTR_CUSTOMSHAPE_LAST (SDRATTR_CUSTOMSHAPE_REPLACEMENT_URL) /* 1357 V4+++*/
+
+#define SDRATTR_TABLE_FIRST (SDRATTR_CUSTOMSHAPE_LAST+1)
+#define SDRATTR_TABLE_BORDER (SDRATTR_TABLE_FIRST+0)
+#define SDRATTR_TABLE_BORDER_INNER (SDRATTR_TABLE_FIRST+1)
+#define SDRATTR_TABLE_BORDER_TLBR (SDRATTR_TABLE_FIRST+2)
+#define SDRATTR_TABLE_BORDER_BLTR (SDRATTR_TABLE_FIRST+3)
+
+#define SDRATTR_TABLE_LAST (SDRATTR_TABLE_BORDER_BLTR)
+
+#define SDRATTR_END SDRATTR_TABLE_LAST /* 1357 */ /* 1333 V4+++*/ /* 1243 V4+++*/ /*1213*/ /*1085*/ /*1040*/ /*Pool V2: 1123,V1: 1065 */
+
+#endif // _SVDDEF_HXX
+
diff --git a/svx/inc/svx/svddrag.hxx b/svx/inc/svx/svddrag.hxx
new file mode 100644
index 000000000000..4b24c69bafcd
--- /dev/null
+++ b/svx/inc/svx/svddrag.hxx
@@ -0,0 +1,192 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDDRAG_HXX
+#define _SVDDRAG_HXX
+
+
+#include <tools/contnr.hxx>
+#include <tools/gen.hxx>
+#include <tools/fract.hxx>
+#include "svx/svxdllapi.h"
+
+// Statushalter fuer objektspeziefisches Draggen. Damit das Model
+// Statusfrei bleibt werden die Statusdaten an der View gehalten
+// und dem Objekt zu gegebener Zeit als Parameter uebergeben.
+// Ausserdem auch Statushalter fuer den Vorgang der Interaktiven
+// Objekterzeugung. pHdl ist in diesem Fall NULL.
+class SdrHdl;
+class SdrView;
+class SdrPageView;
+class SdrDragMethod;
+
+struct SVX_DLLPUBLIC SdrDragStatUserData
+{
+};
+
+class SVX_DLLPUBLIC SdrDragStat {
+protected:
+ SdrHdl* pHdl; // Der Handle an dem der User zottelt
+ SdrView* pView;
+ SdrPageView* pPageView;
+ Container aPnts; // Alle bisherigen Punkte: [0]=Start, [Count()-2]=Prev
+ Point aRef1; // Referenzpunkt: Resize-Fixpunkt, (Drehachse,
+ Point aRef2; // Spiegelachse, ...)
+ Point aPos0; // Position beim letzten Event
+ Point aRealPos0; // Position beim letzten Event
+ Point aRealNow; // Aktuelle Dragposition ohne Snap, Ortho und Limit
+ Point aRealLast; // RealPos des letzten Punkts (fuer MinMoved)
+ Rectangle aActionRect;
+
+ // Reserve fuer kompatible Erweiterungen, die sonst inkompatibel wuerden.
+ Point aReservePoint1;
+ Point aReservePoint2;
+ Point aReservePoint3;
+ Point aReservePoint4;
+ Rectangle aReserveRect1;
+ Rectangle aReserveRect2;
+ FASTBOOL bEndDragChangesAttributes;
+ FASTBOOL bEndDragChangesGeoAndAttributes;
+ FASTBOOL bMouseIsUp;
+ FASTBOOL aReserveBool3;
+ FASTBOOL aReserveBool4;
+ long aReserveLong1;
+ long aReserveLong2;
+ long aReserveLong3;
+ long aReserveLong4;
+ void* aReservePtr1;
+ void* aReservePtr2;
+ void* aReservePtr3;
+ void* aReservePtr4;
+
+ FASTBOOL bShown; // Xor sichrbar?
+ USHORT nMinMov; // Soviel muss erstmal minimal bewegt werden
+ FASTBOOL bMinMoved; // MinMove durchbrochen?
+
+ FASTBOOL bHorFixed; // nur Vertikal draggen
+ FASTBOOL bVerFixed; // nur Horizontal draggen
+ FASTBOOL bWantNoSnap; // TRUE=Fuer die Entscheidung ob fuer pObj->MovCreate() NoSnapPos verwendet
+ // werden soll. Entsprechend wird auch NoSnapPos in den Buffer geschrieben.
+ FASTBOOL bOrtho4;
+ FASTBOOL bOrtho8;
+
+ SdrDragMethod* pDragMethod;
+
+protected:
+ void Clear(FASTBOOL bLeaveOne);
+ Point& Pnt(ULONG nNum) { return *((Point*)aPnts.GetObject(nNum)); }
+//public:
+ SdrDragStatUserData* pUser; // Userdata
+public:
+ SdrDragStat(): aPnts(1024,16,16) { pUser=NULL; Reset(); }
+ ~SdrDragStat() { Clear(FALSE); }
+ void Reset();
+ SdrView* GetView() const { return pView; }
+ void SetView(SdrView* pV) { pView=pV; }
+ SdrPageView* GetPageView() const { return pPageView; }
+ void SetPageView(SdrPageView* pPV) { pPageView=pPV; }
+ const Point& GetPoint(ULONG nNum) const { return *((Point*)aPnts.GetObject(nNum)); }
+ ULONG GetPointAnz() const { return aPnts.Count(); }
+ const Point& GetStart() const { return GetPoint(0); }
+ Point& Start() { return Pnt(0); }
+ const Point& GetPrev() const { return GetPoint(GetPointAnz()-(GetPointAnz()>=2 ? 2:1)); }
+ Point& Prev() { return Pnt(GetPointAnz()-(GetPointAnz()>=2 ? 2:1)); }
+ const Point& GetPos0() const { return aPos0; }
+ Point& Pos0() { return aPos0; }
+ const Point& GetNow() const { return GetPoint(GetPointAnz()-1); }
+ Point& Now() { return Pnt(GetPointAnz()-1); }
+ const Point& GetRealNow() const { return aRealNow; }
+ Point& RealNow() { return aRealNow; }
+ const Point& GetRef1() const { return aRef1; }
+ Point& Ref1() { return aRef1; }
+ const Point& GetRef2() const { return aRef2; }
+ Point& Ref2() { return aRef2; }
+ const SdrHdl* GetHdl() const { return pHdl; }
+ void SetHdl(SdrHdl* pH) { pHdl=pH; }
+ SdrDragStatUserData* GetUser() const { return pUser; }
+ void SetUser(SdrDragStatUserData* pU) { pUser=pU; }
+ FASTBOOL IsShown() const { return bShown; }
+ void SetShown(FASTBOOL bOn) { bShown=bOn; }
+
+ FASTBOOL IsMinMoved() const { return bMinMoved; }
+ void SetMinMoved() { bMinMoved=TRUE; }
+ void ResetMinMoved() { bMinMoved=FALSE; }
+ void SetMinMove(USHORT nDist) { nMinMov=nDist; if (nMinMov<1) nMinMov=1; }
+ USHORT GetMinMove() const { return nMinMov; }
+
+ FASTBOOL IsHorFixed() const { return bHorFixed; }
+ void SetHorFixed(FASTBOOL bOn) { bHorFixed=bOn; }
+ FASTBOOL IsVerFixed() const { return bVerFixed; }
+ void SetVerFixed(FASTBOOL bOn) { bVerFixed=bOn; }
+
+ // Hier kann das Obj sagen: "Ich will keinen Koordinatenfang!"
+ // z.B. fuer den Winkel des Kreisbogen...
+ FASTBOOL IsNoSnap() const { return bWantNoSnap; }
+ void SetNoSnap(FASTBOOL bOn=TRUE) { bWantNoSnap=bOn; }
+
+ // Und hier kann das Obj sagen welches Ortho (wenn ueberhaupt eins)
+ // sinnvoll auf ihm angewendet werden kann.
+ // Ortho4 bedeutet Ortho in 4 Richtungen (fuer Rect und Cirt)
+ FASTBOOL IsOrtho4Possible() const { return bOrtho4; }
+ void SetOrtho4Possible(FASTBOOL bOn=TRUE) { bOrtho4=bOn; }
+ // Ortho8 bedeutet Ortho in 8 Richtungen (fuer Linien)
+ FASTBOOL IsOrtho8Possible() const { return bOrtho8; }
+ void SetOrtho8Possible(FASTBOOL bOn=TRUE) { bOrtho8=bOn; }
+
+ // Wird vom gedraggten Objekt gesetzt
+ FASTBOOL IsEndDragChangesAttributes() const { return bEndDragChangesAttributes; }
+ void SetEndDragChangesAttributes(FASTBOOL bOn) { bEndDragChangesAttributes=bOn; }
+ FASTBOOL IsEndDragChangesGeoAndAttributes() const { return bEndDragChangesGeoAndAttributes; }
+ void SetEndDragChangesGeoAndAttributes(FASTBOOL bOn) { bEndDragChangesGeoAndAttributes=bOn; }
+
+ // Wird von der View gesetzt und kann vom Obj ausgewertet werden
+ FASTBOOL IsMouseDown() const { return !bMouseIsUp; }
+ void SetMouseDown(FASTBOOL bDown) { bMouseIsUp=!bDown; }
+
+ Point KorregPos(const Point& rNow, const Point& rPrev) const;
+ void Reset(const Point& rPnt);
+ void NextMove(const Point& rPnt);
+ void NextPoint(FASTBOOL bSaveReal=FALSE);
+ void PrevPoint();
+ FASTBOOL CheckMinMoved(const Point& rPnt);
+ long GetDX() const { return GetNow().X()-GetPrev().X(); }
+ long GetDY() const { return GetNow().Y()-GetPrev().Y(); }
+ Fraction GetXFact() const;
+ Fraction GetYFact() const;
+
+ SdrDragMethod* GetDragMethod() const { return pDragMethod; }
+ void SetDragMethod(SdrDragMethod* pMth) { pDragMethod=pMth; }
+
+ const Rectangle& GetActionRect() const { return aActionRect; }
+ void SetActionRect(const Rectangle& rR) { aActionRect=rR; }
+
+ // Unter Beruecksichtigung von 1stPointAsCenter
+ void TakeCreateRect(Rectangle& rRect) const;
+};
+
+#endif //_SVDDRAG_HXX
+
diff --git a/svx/inc/svx/svddrgmt.hxx b/svx/inc/svx/svddrgmt.hxx
new file mode 100644
index 000000000000..9a32905bf37c
--- /dev/null
+++ b/svx/inc/svx/svddrgmt.hxx
@@ -0,0 +1,324 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDDRGMT_HXX
+#define _SVDDRGMT_HXX
+
+#include <svx/svddrgv.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/sdr/contact/objectcontact.hxx>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@@@@ @@@@ @@@@ @@ @@ @@@@@ @@@@@@ @@ @@ @@@@ @@@@@ @@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@@@@ @@@@@@ @@ @@@ @@@@@@@ @@@@ @@ @@@@@@ @@ @@ @@ @@ @@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@ @@ @@ @@ @@@@@ @@ @@ @@@@@ @@ @@ @@ @@@@ @@@@@ @@@@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SdrDragView;
+class SdrDragStat;
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SdrDragEntry
+{
+private:
+ // bitfield
+ unsigned mbAddToTransparent : 1;
+
+protected:
+ // access for derived classes
+ void setAddToTransparent(bool bNew) { mbAddToTransparent = bNew; }
+
+public:
+ SdrDragEntry();
+ virtual ~SdrDragEntry();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequenceInCurrentState(SdrDragMethod& rDragMethod) = 0;
+
+ // data read access
+ bool getAddToTransparent() const { return mbAddToTransparent; }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrDragEntryPolyPolygon : public SdrDragEntry
+{
+private:
+ basegfx::B2DPolyPolygon maOriginalPolyPolygon;
+
+public:
+ SdrDragEntryPolyPolygon(const basegfx::B2DPolyPolygon& rOriginalPolyPolygon);
+ virtual ~SdrDragEntryPolyPolygon();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequenceInCurrentState(SdrDragMethod& rDragMethod);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SdrDragEntrySdrObject : public SdrDragEntry
+{
+private:
+ const SdrObject& maOriginal;
+ SdrObject* mpClone;
+ sdr::contact::ObjectContact& mrObjectContact;
+ bool mbModify;
+
+public:
+ SdrDragEntrySdrObject(const SdrObject& rOriginal, sdr::contact::ObjectContact& rObjectContact, bool bModify);
+ virtual ~SdrDragEntrySdrObject();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequenceInCurrentState(SdrDragMethod& rDragMethod);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SdrDragEntryPrimitive2DSequence : public SdrDragEntry
+{
+private:
+ drawinglayer::primitive2d::Primitive2DSequence maPrimitive2DSequence;
+
+public:
+ SdrDragEntryPrimitive2DSequence(
+ const drawinglayer::primitive2d::Primitive2DSequence& rSequence,
+ bool bAddToTransparent);
+ virtual ~SdrDragEntryPrimitive2DSequence();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequenceInCurrentState(SdrDragMethod& rDragMethod);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SdrDragEntryPointGlueDrag : public SdrDragEntry
+{
+private:
+ std::vector< basegfx::B2DPoint > maPositions;
+ bool mbIsPointDrag;
+
+public:
+ SdrDragEntryPointGlueDrag(const std::vector< basegfx::B2DPoint >& rPositions, bool bIsPointDrag);
+ virtual ~SdrDragEntryPointGlueDrag();
+
+ virtual drawinglayer::primitive2d::Primitive2DSequence createPrimitive2DSequenceInCurrentState(SdrDragMethod& rDragMethod);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrDragMethod
+{
+private:
+ std::vector< SdrDragEntry* > maSdrDragEntries;
+ sdr::overlay::OverlayObjectList maOverlayObjectList;
+ SdrDragView& mrSdrDragView;
+
+ // bitfield
+ unsigned mbMoveOnly : 1;
+ unsigned mbSolidDraggingActive : 1;
+
+protected:
+ // access for derivated classes to maSdrDragEntries
+ void clearSdrDragEntries() { for(sal_uInt32 a(0); a < maSdrDragEntries.size(); a++) { delete maSdrDragEntries[a]; } maSdrDragEntries.clear(); }
+ void addSdrDragEntry(SdrDragEntry* pNew) { if(pNew) { maSdrDragEntries.push_back(pNew); }}
+ virtual void createSdrDragEntries();
+ virtual void createSdrDragEntryForSdrObject(const SdrObject& rOriginal, sdr::contact::ObjectContact& rObjectContact, bool bModify);
+
+ // access for derivated classes to maOverlayObjectList
+ void clearOverlayObjectList() { maOverlayObjectList.clear(); }
+ void addToOverlayObjectList(sdr::overlay::OverlayObject& rNew) { maOverlayObjectList.append(rNew); }
+ basegfx::B2DRange getB2DRangeFromOverlayObjectList() const { return maOverlayObjectList.getBaseRange(); }
+
+ // access for derivated classes to mrSdrDragView
+ SdrDragView& getSdrDragView() { return mrSdrDragView; }
+ const SdrDragView& getSdrDragView() const { return mrSdrDragView; }
+
+ // access for derivated classes for bools
+ void setMoveOnly(bool bNew) { mbMoveOnly = bNew; }
+ void setSolidDraggingActive(bool bNew) { mbSolidDraggingActive = bNew; }
+
+ // internal helpers for creation of standard drag entries
+ void createSdrDragEntries_SolidDrag();
+ void createSdrDragEntries_PolygonDrag();
+ void createSdrDragEntries_PointDrag();
+ void createSdrDragEntries_GlueDrag();
+
+ // old call forwarders to the SdrDragView
+ void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, sal_uInt16 nVal=0) const;
+ SdrHdl* GetDragHdl() const { return getSdrDragView().pDragHdl; }
+ SdrHdlKind GetDragHdlKind() const { return getSdrDragView().eDragHdl; }
+ SdrDragStat& DragStat() { return getSdrDragView().aDragStat; }
+ const SdrDragStat& DragStat() const { return getSdrDragView().aDragStat; }
+ Point& Ref1() const { return mrSdrDragView.aRef1; }
+ Point& Ref2() const { return mrSdrDragView.aRef2; }
+ const SdrHdlList& GetHdlList() const { return getSdrDragView().aHdl; }
+ void AddUndo(SdrUndoAction* pUndo) { getSdrDragView().AddUndo(pUndo); }
+ bool IsDragLimit() { return getSdrDragView().bDragLimit; }
+ const Rectangle& GetDragLimitRect() { return getSdrDragView().aDragLimit; }
+ const SdrMarkList& GetMarkedObjectList() { return getSdrDragView().GetMarkedObjectList(); }
+ Point GetSnapPos(const Point& rPt) const { return getSdrDragView().GetSnapPos(rPt,getSdrDragView().pMarkedPV); }
+ sal_uInt16 SnapPos(Point& rPt) const { return getSdrDragView().SnapPos(rPt,getSdrDragView().pMarkedPV); }
+ inline const Rectangle& GetMarkedRect() const;
+ SdrPageView* GetDragPV() const;
+ SdrObject* GetDragObj() const;
+ OutputDevice* GetDragWin() const { return getSdrDragView().pDragWin; }
+ bool IsDraggingPoints() const { return getSdrDragView().IsDraggingPoints(); }
+ bool IsDraggingGluePoints() const { return getSdrDragView().IsDraggingGluePoints(); }
+
+ bool DoAddConnectorOverlays();
+ drawinglayer::primitive2d::Primitive2DSequence AddConnectorOverlays();
+
+public:
+ TYPEINFO();
+
+ void resetSdrDragEntries();
+ basegfx::B2DRange getCurrentRange() const;
+
+ // #i58950# also moved constructor implementation to cxx
+ SdrDragMethod(SdrDragView& rNewView);
+
+ // #i58950# virtual destructor was missing
+ virtual ~SdrDragMethod();
+
+ void Show();
+ void Hide();
+ virtual void TakeSdrDragComment(String& rStr) const=0;
+ virtual bool BeginSdrDrag()=0;
+ virtual void MoveSdrDrag(const Point& rPnt)=0;
+ virtual bool EndSdrDrag(bool bCopy)=0;
+ virtual void CancelSdrDrag();
+ virtual Pointer GetSdrDragPointer() const=0;
+
+ virtual void CreateOverlayGeometry(sdr::overlay::OverlayManager& rOverlayManager);
+ void destroyOverlayGeometry();
+
+ virtual basegfx::B2DHomMatrix getCurrentTransformation();
+ virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget);
+ virtual void applyCurrentTransformationToPolyPolygon(basegfx::B2DPolyPolygon& rTarget);
+
+ // data read access
+ bool getMoveOnly() const { return mbMoveOnly; }
+ bool getSolidDraggingActive() const { return mbSolidDraggingActive; }
+};
+
+inline const Rectangle& SdrDragMethod::GetMarkedRect() const
+{
+ return getSdrDragView().eDragHdl==HDL_POLY ? getSdrDragView().GetMarkedPointsRect() :
+ getSdrDragView().eDragHdl==HDL_GLUE ? getSdrDragView().GetMarkedGluePointsRect() :
+ getSdrDragView().GetMarkedObjRect();
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// SdrDragMove
+
+class SVX_DLLPUBLIC SdrDragMove : public SdrDragMethod
+{
+private:
+ long nBestXSnap;
+ long nBestYSnap;
+ bool bXSnapped;
+ bool bYSnapped;
+
+ void ImpCheckSnap(const Point& rPt);
+
+protected:
+ virtual void createSdrDragEntryForSdrObject(const SdrObject& rOriginal, sdr::contact::ObjectContact& rObjectContact, bool bModify);
+
+public:
+ TYPEINFO();
+ SdrDragMove(SdrDragView& rNewView);
+
+ virtual void TakeSdrDragComment(String& rStr) const;
+ virtual bool BeginSdrDrag();
+ virtual void MoveSdrDrag(const Point& rPnt);
+ virtual bool EndSdrDrag(bool bCopy);
+ virtual Pointer GetSdrDragPointer() const;
+
+ virtual basegfx::B2DHomMatrix getCurrentTransformation();
+ virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// SdrDragResize
+
+class SVX_DLLPUBLIC SdrDragResize : public SdrDragMethod
+{
+protected:
+ Fraction aXFact;
+ Fraction aYFact;
+
+public:
+ TYPEINFO();
+ SdrDragResize(SdrDragView& rNewView);
+
+ virtual void TakeSdrDragComment(String& rStr) const;
+ virtual bool BeginSdrDrag();
+ virtual void MoveSdrDrag(const Point& rPnt);
+ virtual bool EndSdrDrag(bool bCopy);
+ virtual Pointer GetSdrDragPointer() const;
+
+ virtual basegfx::B2DHomMatrix getCurrentTransformation();
+ virtual void applyCurrentTransformationToSdrObject(SdrObject& rTarget);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// SdrDragObjOwn
+
+class SVX_DLLPUBLIC SdrDragObjOwn : public SdrDragMethod
+{
+private:
+ // SdrDragObjOwn always works on a clone since it has no transformation
+ // mechanism to modify wireframe visualisations, but uses the
+ // SdrObject::applySpecialDrag() method to change a clone of the
+ // SdrObject
+ SdrObject* mpClone;
+
+protected:
+ virtual void createSdrDragEntries();
+
+public:
+ TYPEINFO();
+ SdrDragObjOwn(SdrDragView& rNewView);
+ virtual ~SdrDragObjOwn();
+
+ virtual void TakeSdrDragComment(String& rStr) const;
+ virtual bool BeginSdrDrag();
+ virtual void MoveSdrDrag(const Point& rPnt);
+ virtual bool EndSdrDrag(bool bCopy);
+ virtual Pointer GetSdrDragPointer() const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+#endif //_SVDDRGMT_HXX
+
+// eof
diff --git a/svx/inc/svx/svddrgv.hxx b/svx/inc/svx/svddrgv.hxx
new file mode 100644
index 000000000000..9ad7a412dcc3
--- /dev/null
+++ b/svx/inc/svx/svddrgv.hxx
@@ -0,0 +1,321 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDDRGV_HXX
+#define _SVDDRGV_HXX
+
+#include "svx/svxdllapi.h"
+#include <svx/svdxcgv.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrUndoGeoObj;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@@@@ @@@@ @@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@ @@ @@@@@ @@@@@@ @@ @@@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@@ @@ @@ @@ @@ @@@@@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class ImpSdrDragViewExtraData;
+
+class SVX_DLLPUBLIC SdrDragView: public SdrExchangeView
+{
+ friend class SdrPageView;
+ friend class SdrDragMethod;
+
+protected:
+ SdrHdl* pDragHdl;
+ SdrDragMethod* mpCurrentSdrDragMethod;
+ SdrUndoGeoObj* pInsPointUndo;
+ Rectangle aDragLimit;
+ XubString aInsPointUndoStr;
+ SdrMarkList aFollowingEdges; // Wenn Knoten gedraggd werden, sollen alle Kanten als Xor folgen
+ SdrHdlKind eDragHdl;
+
+ ULONG nDragXorPolyLimit;
+ ULONG nDragXorPointLimit;
+ USHORT nRubberEdgeDraggingLimit;
+ USHORT nDetailedEdgeDraggingLimit;
+
+ unsigned bFramDrag : 1; // z.Zt. FrameDrag
+ unsigned bDragSpecial : 1; // z.Zt. Special Obj-Dragging
+ unsigned bMarkedHitMovesAlways : 1; // Persistent
+ unsigned bDragLimit : 1; // Limit auf SnapRect statt BoundRect
+ unsigned bDragHdl : 1; // TRUE: RefPt wird verschoben
+ unsigned bDragStripes : 1; // Persistent
+ unsigned bMirrRefDragObj : 1; // Persistent - Waehrend des Draggens der Spiegelachse die gespiegelten Objekte als Xor zeigen
+ unsigned mbSolidDragging : 1; // allow solid create/drag of objects
+ unsigned bMouseHideWhileDraggingPoints : 1;
+ unsigned bResizeAtCenter : 1;
+ unsigned bCrookAtCenter : 1;
+ unsigned bDragWithCopy : 1;
+ unsigned bInsGluePoint : 1;
+ unsigned bInsObjPointMode : 1;
+ unsigned bInsGluePointMode : 1;
+ unsigned bNoDragXorPolys : 1;
+ unsigned bAutoVertexCon : 1; // Automatische Konnektorgenerierung an den Scheitelpunkten
+ unsigned bAutoCornerCon : 1; // Automatische Konnektorgenerierung an den Eckpunkten
+ unsigned bRubberEdgeDragging : 1;
+ unsigned bDetailedEdgeDragging : 1;
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+ SVX_DLLPRIVATE void ImpMakeDragAttr();
+ SVX_DLLPRIVATE void ImpDelDragAttr();
+
+protected:
+ virtual void SetMarkHandles();
+ void ShowDragObj();
+ void HideDragObj();
+ sal_Bool ImpBegInsObjPoint(sal_Bool bIdxZwang, sal_uInt32 nIdx, const Point& rPnt, sal_Bool bNewObj, OutputDevice* pOut);
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrDragView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrDragView();
+
+public:
+ virtual BOOL IsAction() const;
+ virtual void MovAction(const Point& rPnt);
+ virtual void EndAction();
+ virtual void BckAction();
+ virtual void BrkAction();
+ virtual void TakeActionRect(Rectangle& rRect) const;
+
+ // Spezialimplementation fuer den Writer:
+ // TakeDragObjAnchorPos() liefert die Position an der ein Objekt
+ // beim Draggen einer Einfachselektion ungefaehr landet wenn es
+ // "losgelassen" wird (EndDrag).
+ // In der Regel ist das die linke obere Ecke des zu erwartenden neuen
+ // SnapRects. Ausnahme: CaptionObj. Dort ist es die Position des
+ // "Schwanzendes".
+ // Bei Returncode FALSE konnte ich die Position nicht bestimmen
+ // (z.B. Punktverschiebung, Mehrfachselektion, Schieben der
+ // Spiegelschse, ...)
+ BOOL TakeDragObjAnchorPos(Point& rPos, BOOL bTopRight = FALSE ) const;
+
+ // Wird pForcedMeth uebergeben, so wird pHdl, ... nicht ausgewerten, sondern diese
+ // Drag-Methode verwendet. Die Instanz geht dabei ins Eigentum der View ueber und
+ // wird zum Ende des Draggings destruiert.
+ virtual BOOL BegDragObj(const Point& rPnt, OutputDevice* pOut=NULL, SdrHdl* pHdl=NULL, short nMinMov=-3, SdrDragMethod* pForcedMeth=NULL);
+ void MovDragObj(const Point& rPnt);
+ BOOL EndDragObj(BOOL bCopy=FALSE);
+ void BrkDragObj();
+ BOOL IsDragObj() const { return mpCurrentSdrDragMethod && !bInsPolyPoint && !bInsGluePoint; }
+ SdrHdl* GetDragHdl() const { return pDragHdl; }
+ SdrDragMethod* GetDragMethod() const { return mpCurrentSdrDragMethod; }
+ BOOL IsDraggingPoints() const { return eDragHdl==HDL_POLY; }
+ BOOL IsDraggingGluePoints() const { return eDragHdl==HDL_GLUE; }
+
+ // Wer das beim BegDrag oder mittendrin schon festlegen will.
+ // (Wird bei jedem BegDrag auf FALSE zurueckgesetzt, also nach
+ // BegDrag setzen.)
+ void SetDragWithCopy(BOOL bOn) { bDragWithCopy = bOn; }
+ BOOL IsDragWithCopy() const { return bDragWithCopy; }
+
+ void SetInsertGluePoint(BOOL bOn) { bInsGluePoint = bOn; }
+ BOOL IsInsertGluePoint() const { return bInsGluePoint; }
+
+ // Interaktives einfuegen eines neuen Punktes. nIdx=0 => vor dem ersten Punkt.
+ BOOL IsInsObjPointPossible() const;
+ BOOL IsInsPointPossible() const { return IsInsObjPointPossible(); }
+ sal_Bool BegInsObjPoint(const Point& rPnt, sal_Bool bNewObj) { return ImpBegInsObjPoint(sal_False, 0L, rPnt, bNewObj, 0L); }
+ void MovInsObjPoint(const Point& rPnt) { MovDragObj(rPnt); }
+ BOOL EndInsObjPoint(SdrCreateCmd eCmd);
+ void BrkInsObjPoint() { BrkDragObj(); }
+ BOOL IsInsObjPoint() const { return mpCurrentSdrDragMethod && bInsPolyPoint; }
+
+ // Fuer die App zum Verwalten des Status. GetPreferedPointer() wird
+ // spaeter vielleicht einen passenden Pointer dafuer liefern
+ void SetInsObjPointMode(BOOL bOn) { bInsObjPointMode = bOn; }
+ BOOL IsInsObjPointMode() const { return bInsObjPointMode; }
+
+ BOOL IsInsGluePointPossible() const;
+ BOOL BegInsGluePoint(const Point& rPnt);
+ void MovInsGluePoint(const Point& rPnt) { MovDragObj(rPnt); }
+ BOOL EndInsGluePoint() { return EndDragObj(); }
+ void BrkInsGluePoint() { BrkDragObj(); }
+ BOOL IsInsGluePoint() const { return mpCurrentSdrDragMethod && bInsGluePoint; }
+
+ // Fuer die App zum Verwalten des Status. GetPreferedPointer() wird
+ // spaeter vielleicht einen passenden Pointer dafuer liefern
+ void SetInsGluePointMode(BOOL bOn) { bInsGluePointMode = bOn; }
+ BOOL IsInsGluePointMode() const { return bInsGluePointMode; }
+
+ // Begrenzungslinien ueber's gesamte Win waehrend des Draggens
+ // Persistent. Default=FALSE.
+ void SetDragStripes(BOOL bOn);
+ BOOL IsDragStripes() const { return bDragStripes; }
+
+ // Handles waehrend des Draggens verstecken
+ //HMHvoid SetDragHdlHide(BOOL bOn);
+ //HMHBOOL IsDragHdlHide() const { return bNoDragHdl; }
+
+ // Beim Draggen von Polygonpunkten und Klebepunkten
+ // die Maus verstecken. Default=FALSE
+ void SetMouseHideWhileDraggingPoints(BOOL bOn) { bMouseHideWhileDraggingPoints = bOn; }
+ BOOL IsMouseHideWhileDraggingPoints() const { return bMouseHideWhileDraggingPoints; }
+
+ // Beim Draggen werden i.d.R. die Konturen der markierten Objekte
+ // als Xor-Polygone dargestellt. Wird dieses Flag hier gesetzt,
+ // wird (z.B. bei Mehrfachselektion) nur ein Xor-Frame gezeichnet.
+ // Bei objektspeziefischem Dragging (Polygonpunkte,Eckenradius,...
+ // hat diese Einstellung keine Auswirkung.
+ // Auch waerend des Draggens umschaltbar.
+ // Default=Off
+ void SetNoDragXorPolys(BOOL bOn);
+ BOOL IsNoDragXorPolys() const { return bNoDragXorPolys; }
+
+ // Uebersteigt die Anzahl der markierten Objekte den hier eingestellten
+ // Wert, wird implizit (temporaer) auf NoDragPolys geschaltet.
+ // PolyPolygone etc werden entsprechend als mehrere Objekte gewertet.
+ // Default=100
+ void SetDragXorPolyLimit(ULONG nObjAnz) { nDragXorPolyLimit=nObjAnz; }
+ ULONG GetDragXorPolyLimit() const { return nDragXorPolyLimit; }
+
+ // Wie DragXorPolyLimit, jedoch bezogen auf die Gesamtpunktanzahl
+ // aller Polygone. Default=500.
+ // Auf NoDragPolys wird (temporaer) geschaltet, wenn eins der Limits
+ // ueberstiegen wird.
+ void SetDragXorPointLimit(ULONG nPntAnz) { nDragXorPointLimit=nPntAnz; }
+ ULONG GetDragXorPointLimit() const { return nDragXorPointLimit; }
+
+ void SetSolidDragging(bool bOn);
+ bool IsSolidDragging() const;
+
+ // Dragging/Creating von Verbindern:
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Verbinder an Objektscheitelpunkte ankleben
+ // Default=TRUE=Ja
+ void SetAutoVertexConnectors(BOOL bOn) { bAutoVertexCon = bOn; }
+ BOOL IsAutoVertexConnectors() const { return bAutoVertexCon; }
+
+ // Verbinder an Objektecken ankleben
+ // Default=FALSE=Nein
+ void SetAutoCornerConnectors(BOOL bOn) { bAutoCornerCon = bOn; }
+ BOOL IsAutoCornerConnectors() const { return bAutoCornerCon; }
+
+ // Dragging von verbundenen Objekten (Nodes):
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // DetailedEdgeDraggingLimit: Wie RubberEdgeDraggingLimit, jedoch bezieht
+ // sich dieses Limit auf die detalierte Darstellung, d.h. nicht nur
+ // Gummibaender sondern komplette Neuberechnunen sind beim Draggen sichtbar.
+ // Diese detalierte Darstellung ist eh nur beim MoveDrag moeglich.
+ // Defaultwert ist 10
+ void SetDetailedEdgeDragging(BOOL bOn); // Default an
+ BOOL IsDetailedEdgeDragging() const { return bDetailedEdgeDragging; }
+
+ void SetDetailedEdgeDraggingLimit(USHORT nEdgeObjAnz);
+ USHORT GetDetailedEdgeDraggingLimit() const { return nDetailedEdgeDraggingLimit; }
+
+ // EdgeDraggingLimit: Sind mehr als nEdgeObjAnz Kanten betroffen, werden
+ // diese beim interaktiven Draggen nicht mit angezeigt.
+ // Gemeint sind hier die "Gummibaender", die weniger Rechenzeit benoetigen
+ // als die kompletten Neuberechnungen beim DetailedEdgeDragging.
+ // Defaultwert ist 100
+ void SetRubberEdgeDragging(BOOL bOn); // Default an
+ BOOL IsRubberEdgeDragging() const { return bRubberEdgeDragging; }
+
+ void SetRubberEdgeDraggingLimit(USHORT nEdgeObjAnz);
+ USHORT GetRubberEdgeDraggingLimit() const { return nRubberEdgeDraggingLimit; }
+
+ // Verbinderhandling also zu deutsch wie folgt (bei Defaulteinstellungen):
+ // - Sind bis max 10 Verbinder betroffen werden diese bei jedem
+ // MouseMove neu berechnet
+ // - Sind zwischen 11 und 100 Verbinder betroffen werden die
+ // Verbindungen beim Draggen als gerade Linien dargestellt.
+ // - Bei mehr als 100 betroffenen Verbindern wird beim Draggen nichts
+ // mehr gezeichnet was auf Verbinder hinweist.
+
+ // Ist ein spezieller Dragmode eingeschaltet, wie Rotate, Mirror oder Crook,
+ // dann leitet ein Hit auf das markierte Objekt genau dieses Dragging ein.
+ // Setzt man MarkedHitMovesAlways auf TRUE, so leitet ein Hit auf das
+ // markierte Objekt immer ein Moven ein, unabhaengig vom gesetzten DragMode.
+ // Dieses Flag ist persistent und sollte von der App fuer den Anwender
+ // konfigurierbar sein!
+ void SetMarkedHitMovesAlways(BOOL bOn) { bMarkedHitMovesAlways = bOn; }
+ BOOL IsMarkedHitMovesAlways() const { return bMarkedHitMovesAlways; }
+
+ // Beim Draggen der Spiegelachse das Spiegelbild der markierten Objekte
+ // als Xor darstellen? Persistent. Noch nicht implementiert. Default TRUE.
+ void SetMirrRefDragObj(BOOL bOn) { bMirrRefDragObj = bOn; }
+ BOOL IsMirrRefDragObj() const { return bMirrRefDragObj; }
+
+ BOOL IsOrthoDesired() const;
+
+ // Beim Resize die Mitte als Referenz
+ // Default=FALSE.
+ BOOL IsResizeAtCenter() const { return bResizeAtCenter; }
+ void SetResizeAtCenter(BOOL bOn) { bResizeAtCenter = bOn; }
+
+ // Symmetrisches Crook
+ // Default=FALSE.
+ BOOL IsCrookAtCenter() const { return bCrookAtCenter; }
+ void SetCrookAtCenter(BOOL bOn) { bCrookAtCenter = bOn; }
+
+ // Begrenzung des Arbeitsbereichs. Die Begrenzung bezieht sich auf die
+ // View, nicht auf die einzelnen PageViews. Von der View wird diese
+ // Begrenzung nur bei Interaktionen wie Dragging und Create ausgewertet.
+ // Bei von der App algorithmisch oder UI-gesteuerte Aktionen (SetGeoAttr,
+ // MoveMarkedObj, ...) muss die App dieses Limit selbst beruecksichtigen.
+ // Ferner ist dieses Limit als Grob-Limit zu sehen. U.U. koennen Objekte
+ // (z.B. beim Drehen) nicht exakt bis an dieses Limit herangedraggt werden,
+ // koennen Objekte durch Rundungsfehler doch etwas ueberstehen, ... .
+ // Default=EmptyRect=keine Begrenzung.
+ // erst z.T. impl.
+ // (besser in die DragView?)
+ void SetWorkArea(const Rectangle& rRect) { aMaxWorkArea=rRect; }
+ const Rectangle& GetWorkArea() const { return aMaxWorkArea; }
+
+
+ // Das DragLimit ist bezogen auf die Page des Objekts.
+ // (Oder auf die View??? Muss ich mal^^^^recherchieren. Joe.)
+ // FALSE=Kein Limit.
+ // Das Rueckgabe-Rect muss absolute Koordinaten enthalten. Der Maximale
+ // Dragbereich wird von der View dann so gewaehlt, dass das SnapRect des
+ // Objekts bis Maximal auf die Kante des LimitRects gemoved bzw. gesized
+ // wird. Bei Objekten wie Bezierkurven, gedrehten Rechtecken ist zu beachten
+ // das durch anschliessende Neuberechnung des SnapRects (bei Resize)
+ // Rundungsfehler auftreten koennen, wodurch das LimitRect minnimal
+ // ueberschritten werden koennte...
+ // Implementiert fuer Move und Resize.
+ virtual BOOL TakeDragLimit(SdrDragMode eMode, Rectangle& rRect) const;
+};
+
+#endif //_SVDDRGV_HXX
+
diff --git a/svx/inc/svx/svdedtv.hxx b/svx/inc/svx/svdedtv.hxx
new file mode 100644
index 000000000000..98e76bf28969
--- /dev/null
+++ b/svx/inc/svx/svdedtv.hxx
@@ -0,0 +1,473 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDEDTV_HXX
+#define _SVDEDTV_HXX
+
+#include <svx/svdmrkv.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/svdmodel.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SfxUndoAction;
+class SdrUndoAction;
+class SdrUndoGroup;
+class SfxStyleSheet;
+class SdrLayer;
+class SvdProgressInfo;
+
+//************************************************************
+// Defines
+//************************************************************
+
+enum SdrHorAlign {
+ SDRHALIGN_NONE,
+ SDRHALIGN_LEFT,
+ SDRHALIGN_RIGHT,
+ SDRHALIGN_CENTER
+};
+
+enum SdrVertAlign {
+ SDRVALIGN_NONE,
+ SDRVALIGN_TOP,
+ SDRVALIGN_BOTTOM,
+ SDRVALIGN_CENTER
+};
+
+enum SdrMergeMode {
+ SDR_MERGE_MERGE,
+ SDR_MERGE_SUBSTRACT,
+ SDR_MERGE_INTERSECT
+};
+
+// Optionen fuer InsertObject()
+#define SDRINSERT_DONTMARK 0x0001 /* Obj wird nicht markiert (aktuelle Markierung bleibt bestehen) */
+#define SDRINSERT_ADDMARK 0x0002 /* Das Obj wird zu einer ggf. bereits bestehenden Selektion hinzumarkiert */
+#define SDRINSERT_SETDEFATTR 0x0004 /* Die aktuellen Attribute (+StyleSheet) werden dem Obj zugewiesen */
+#define SDRINSERT_SETDEFLAYER 0x0008 /* Der aktuelle Layer wird dem Obj zugewiesen */
+#define SDRINSERT_NOBROADCAST 0x0010 /* Einfuegen mit NbcInsertObject() fuer SolidDragging */
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@@@@ @@ @@@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@@@ @@ @@ @@ @@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@@ @@@@@ @@ @@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrEditView: public SdrMarkView
+{
+ friend class SdrPageView;
+ friend class SdrDragDistort;
+ friend class SdrDragCrook;
+
+protected:
+
+ // Die Transformationsnachfragen, etc. etwas cachen
+ unsigned bPossibilitiesDirty : 1;
+ unsigned bReadOnly : 1;
+ unsigned bGroupPossible : 1;
+ unsigned bUnGroupPossible : 1;
+ unsigned bGrpEnterPossible : 1;
+ unsigned bDeletePossible : 1;
+ unsigned bToTopPossible : 1;
+ unsigned bToBtmPossible : 1;
+ unsigned bReverseOrderPossible : 1;
+ unsigned bImportMtfPossible : 1;
+ unsigned bCombinePossible : 1;
+ unsigned bDismantlePossible : 1;
+ unsigned bCombineNoPolyPolyPossible : 1;
+ unsigned bDismantleMakeLinesPossible : 1;
+ unsigned bOrthoDesiredOnMarked : 1;
+ unsigned bMoreThanOneNotMovable : 1; // Es ist mehr als ein Objekt nicht verschiebbar
+ unsigned bOneOrMoreMovable : 1; // Wenigstens 1 Obj verschiebbar
+ unsigned bMoreThanOneNoMovRot : 1; // Es ist mehr als ein Objekt nicht verschieb- und drehbar (Crook)
+ unsigned bContortionPossible : 1; // Alles Polygone (ggf. gruppiert)
+ unsigned bAllPolys : 1; // Alles Polygone (nicht gruppiert)
+ unsigned bOneOrMorePolys : 1; // Mindestens 1 Polygon (nicht gruppiert)
+ unsigned bMoveAllowed : 1;
+ unsigned bResizeFreeAllowed : 1;
+ unsigned bResizePropAllowed : 1;
+ unsigned bRotateFreeAllowed : 1;
+ unsigned bRotate90Allowed : 1;
+ unsigned bMirrorFreeAllowed : 1;
+ unsigned bMirror45Allowed : 1;
+ unsigned bMirror90Allowed : 1;
+ unsigned bShearAllowed : 1;
+ unsigned bEdgeRadiusAllowed : 1;
+ unsigned bTransparenceAllowed : 1;
+ unsigned bGradientAllowed : 1;
+ unsigned bCanConvToPath : 1;
+ unsigned bCanConvToPoly : 1;
+ unsigned bCanConvToContour : 1;
+ unsigned bCanConvToPathLineToArea : 1;
+ unsigned bCanConvToPolyLineToArea : 1;
+ unsigned bMoveProtect : 1;
+ unsigned bResizeProtect : 1;
+ // Z-Order von virtuellen Objekten zusammenhalten (Writer)
+ unsigned bBundleVirtObj : 1;
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+ SVX_DLLPRIVATE void ImpResetPossibilityFlags();
+
+protected:
+ void ImpBroadcastEdgesOfMarkedNodes();
+
+ // Konvertierung der markierten Objekte in Poly bzw. Bezier.
+ void ImpConvertTo(BOOL bPath, BOOL bLineToArea);
+
+ // Konvertiert ein Obj, wirft bei Erfolg das alte as seiner Liste und
+ // fuegt das neue an dessen Position ein. Inkl Undo. Es wird weder ein
+ // MarkEntry noch ein ModelChgBroadcast generiert.
+ SdrObject* ImpConvertOneObj(SdrObject* pObj, BOOL bPath, BOOL bLineToArea);
+
+ // Setzen der beiden Flags bToTopPossible und bToBtmPossible.
+ // bToTopPossibleDirty und bToBtmPossibleDirty werden dabei gleichzeitig
+ // zurueckgesetzt.
+ void ImpCheckToTopBtmPossible();
+
+ // fuer den Writer werden virtuelle Objekte buendig zusammengehalten (Z-Order)
+ void ImpBundleVirtObjOfMarkList();
+
+ // fuer CombineMarkedObjects und DismantleMarkedObjects
+ void ImpCopyAttributes(const SdrObject* pSource, SdrObject* pDest) const;
+
+ // fuer CombineMarkedObjects
+ sal_Bool ImpCanConvertForCombine1(const SdrObject* pObj) const;
+ sal_Bool ImpCanConvertForCombine(const SdrObject* pObj) const;
+ basegfx::B2DPolyPolygon ImpGetPolyPolygon1(const SdrObject* pObj, sal_Bool bCombine) const;
+ basegfx::B2DPolyPolygon ImpGetPolyPolygon(const SdrObject* pObj, sal_Bool bCombine) const;
+ basegfx::B2DPolygon ImpCombineToSinglePolygon(const basegfx::B2DPolyPolygon& rPolyPolygon) const;
+
+ // fuer DismantleMarkedObjects
+ sal_Bool ImpCanDismantle(const basegfx::B2DPolyPolygon& rPpolyPpolygon, sal_Bool bMakeLines) const;
+ sal_Bool ImpCanDismantle(const SdrObject* pObj, sal_Bool bMakeLines) const;
+ void ImpDismantleOneObject(const SdrObject* pObj, SdrObjList& rOL, ULONG& rPos, SdrPageView* pPV, BOOL bMakeLines);
+ void ImpCrookObj(SdrObject* pO, const Point& rRef, const Point& rRad, SdrCrookMode eMode,
+ BOOL bVertical, BOOL bNoContortion, BOOL bRotate, const Rectangle& rMarkRect);
+ void ImpDistortObj(SdrObject* pO, const Rectangle& rRef, const XPolygon& rDistortedRect, BOOL bNoContortion);
+ BOOL ImpDelLayerCheck(SdrObjList* pOL, SdrLayerID nDelID) const;
+ void ImpDelLayerDelObjs(SdrObjList* pOL, SdrLayerID nDelID);
+
+ // Entfernt alle Obj der MarkList aus ihren ObjLists inkl Undo.
+ // Die Eintraege in rMark bleiben erhalten.
+ void DeleteMarkedList(const SdrMarkList& rMark); // DeleteMarked -> DeleteMarkedList
+
+ // Die Transformationsnachfragen etwas cachen
+ //void ImpCheckMarkTransform() const; veraltet
+ // Checken, was man so mit den markierten Objekten alles machen kann
+ virtual void CheckPossibilities();
+ void ForcePossibilities() const { if (bPossibilitiesDirty || bSomeObjChgdFlag) ((SdrEditView*)this)->CheckPossibilities(); }
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrEditView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrEditView();
+
+public:
+ // Jeder Aufruf einer undofaehigen Methode an der View generiert eine
+ // UndoAction. Moechte man mehrere
+ // Methodenaufrufe zu einer UndoAction zusammenfassen, so kann man diese
+ // mit BegUndo() / EndUndo() klammern (beliebig tief). Als Kommentar der
+ // UndoAction wird der des ersten BegUndo(String) aller Klammerungen
+ // verwendet. NotifyNewUndoAction() wird in diesem Fall erst beim letzten
+ // EndUndo() gerufen. NotifyNewUndoAction() wird nicht gerufen bei einer
+ // leeren Klammerung.
+#ifndef WIN
+ void BegUndo() { pMod->BegUndo(); } // Undo-Klammerung auf
+ void BegUndo(const String& rComment) { pMod->BegUndo(rComment); } // Undo-Klammerung auf
+ void BegUndo(const String& rComment, const String& rObjDescr, SdrRepeatFunc eFunc=SDRREPFUNC_OBJ_NONE) { pMod->BegUndo(rComment,rObjDescr,eFunc); } // Undo-Klammerung auf
+ void BegUndo(SdrUndoGroup* pUndoGrp) { pMod->BegUndo(pUndoGrp); } // Undo-Klammerung auf
+ void EndUndo(); // Undo-Klammerung zu (inkl BroadcastEdges)
+ void AddUndo(SdrUndoAction* pUndo) { pMod->AddUndo(pUndo); } // Action hinzufuegen
+ // nur nach dem 1. BegUndo oder vor dem letzten EndUndo:
+ void SetUndoComment(const String& rComment) { pMod->SetUndoComment(rComment); }
+ void SetUndoComment(const String& rComment, const String& rObjDescr) { pMod->SetUndoComment(rComment,rObjDescr); }
+#else // ifndef WIN
+ void BegUndo();
+ void BegUndo(const String& rComment);
+ void BegUndo(const String& rComment, const String& rObjDescr, SdrRepeatFunc eFunc=SDRREPFUNC_OBJ_NONE);
+ void BegUndo(SdrUndoGroup* pUndoGrp);
+ void EndUndo(); // Undo-Klammerung zu (inkl BroadcastEdges)
+ void AddUndo(SdrUndoAction* pUndo);
+ // nur nach dem 1. BegUndo oder vor dem letzten EndUndo:
+ void SetUndoComment(const String& rComment);
+ void SetUndoComment(const String& rComment, const String& rObjDescr);
+#endif
+ bool IsUndoEnabled() const;
+
+ std::vector< SdrUndoAction* > CreateConnectorUndo( SdrObject& rO );
+ void AddUndoActions( std::vector< SdrUndoAction* >& );
+
+ // Layerverwaltung. Mit Undo.
+ SdrLayer* InsertNewLayer(const String& rName, USHORT nPos=0xFFFF);
+ // Loeschen eines Layer inkl. aller darauf befindlichen Objekte
+ void DeleteLayer(const String& rName);
+ // Verschieben eines Layer (Layerreihenfolge aendern)
+ void MoveLayer(const String& rName, USHORT nNewPos);
+
+ // Markierte Objekte die ausserhalb ihrer Page liegen
+ // werden ggf. einer anderen Page zugewiesen
+ // z.Zt. noch ohne Undo!!!
+ void ForceMarkedObjToAnotherPage();
+ void ForceMarkedToAnotherPage() { ForceMarkedObjToAnotherPage(); }
+
+ BOOL IsReadOnly() const { ForcePossibilities(); return bReadOnly; }
+
+ // Loeschen aller markierten Objekte
+ void DeleteMarkedObj();
+ BOOL IsDeleteMarkedObjPossible() const { ForcePossibilities(); return bDeletePossible; }
+
+ // Logisch- umschliessendes Rect aller markierten Objekte setzen.
+ // Das das wirklich geschieht ist nicht garantiert, denn eine
+ // waagerechte Linie hat z.B. immer eine Hoehe von 0.
+ void SetMarkedObjRect(const Rectangle& rRect, BOOL bCopy=FALSE);
+ void MoveMarkedObj(const Size& rSiz, bool bCopy=false);
+ void ResizeMarkedObj(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bCopy=false);
+ long GetMarkedObjRotate() const;
+ void RotateMarkedObj(const Point& rRef, long nWink, bool bCopy=false);
+ void MirrorMarkedObj(const Point& rRef1, const Point& rRef2, bool bCopy=false);
+ void MirrorMarkedObjHorizontal(BOOL bCopy=FALSE);
+ void MirrorMarkedObjVertical(BOOL bCopy=FALSE);
+ long GetMarkedObjShear() const;
+ void ShearMarkedObj(const Point& rRef, long nWink, bool bVShear=false, bool bCopy=false);
+ void CrookMarkedObj(const Point& rRef, const Point& rRad, SdrCrookMode eMode, bool bVertical=false, bool bNoContortion=false, bool bCopy=false);
+ void DistortMarkedObj(const Rectangle& rRef, const XPolygon& rDistortedRect, bool bNoContortion=false, bool bCopy=false);
+
+ // Markierte Objekte kopieren und anstelle der alten markieren
+ void CopyMarkedObj();
+ void SetAllMarkedRect(const Rectangle& rRect, BOOL bCopy=FALSE) { SetMarkedObjRect(rRect,bCopy); }
+ void MoveAllMarked(const Size& rSiz, BOOL bCopy=FALSE) { MoveMarkedObj (rSiz,bCopy); }
+ void ResizeAllMarked(const Point& rRef, const Fraction& xFact, const Fraction& yFact, BOOL bCopy=FALSE) { ResizeMarkedObj (rRef,xFact,yFact,bCopy); }
+ long GetAllMarkedRotate() const { return GetMarkedObjRotate(); }
+ void RotateAllMarked(const Point& rRef, long nWink, BOOL bCopy=FALSE) { RotateMarkedObj(rRef,nWink,bCopy); }
+ void MirrorAllMarked(const Point& rRef1, const Point& rRef2, BOOL bCopy=FALSE) { MirrorMarkedObj(rRef1,rRef2,bCopy); }
+ void MirrorAllMarkedHorizontal(BOOL bCopy=FALSE) { MirrorMarkedObjHorizontal(bCopy); }
+ void MirrorAllMarkedVertical(BOOL bCopy=FALSE) { MirrorMarkedObjVertical(bCopy); }
+ long GetAllMarkedShear() const { return GetMarkedObjShear(); }
+ void ShearAllMarked(const Point& rRef, long nWink, BOOL bVShear=FALSE, BOOL bCopy=FALSE) { ShearMarkedObj(rRef,nWink,bVShear,bCopy); }
+ void CrookAllMarked(const Point& rRef, const Point& rRad, SdrCrookMode eMode, BOOL bVertical=FALSE, BOOL bNoContortion=FALSE, BOOL bCopy=FALSE) { CrookMarkedObj(rRef,rRad,eMode,bVertical,bNoContortion,bCopy); }
+ void CopyMarked() { CopyMarkedObj(); }
+ BOOL IsMoveAllowed() const { ForcePossibilities(); return bMoveAllowed && !bMoveProtect; }
+ BOOL IsResizeAllowed(BOOL bProp=FALSE) const;
+ BOOL IsRotateAllowed(BOOL b90Deg=FALSE) const;
+ BOOL IsMirrorAllowed(BOOL b45Deg=FALSE, BOOL b90Deg=FALSE) const;
+ BOOL IsTransparenceAllowed() const;
+ BOOL IsGradientAllowed() const;
+ BOOL IsShearAllowed() const;
+ BOOL IsEdgeRadiusAllowed() const;
+ BOOL IsCrookAllowed(BOOL bNoContortion=FALSE) const;
+ BOOL IsDistortAllowed(BOOL bNoContortion=FALSE) const;
+
+ // Vereinigen mehrerer Objekte zu einem PolyPolygon:
+ // - Rechtecke/Kreise/Text... werden implizit gewandelt.
+ // - Polylines werden automatisch geschlossen.
+ // - Die Attribute und der Layer werden vom Ersten der markierten Objekte
+ // uebernommen (also vom untersten der Z-Order).
+ // - Gruppenobjekte werden miteinbezogen, wenn alle! Memberobjekte der
+ // Gruppe wandelbar sind. Beinhaltet eine Gruppe also beispielsweise
+ // eine Bitmap oder ein OLE-Objekt, wird die gesamte Gruppe nicht
+ // beruecksichtigt.
+ // bNoPolyPoly=TRUE: Alles wird zu einem einzigen Polygon zusammengefasst
+ void CombineMarkedObjects(sal_Bool bNoPolyPoly = sal_True);
+
+ // for combining multiple polygons, with direct support of the modes
+ // SID_POLY_MERGE, SID_POLY_SUBSTRACT, SID_POLY_INTERSECT
+ void MergeMarkedObjects(SdrMergeMode eMode);
+
+ // for distribution dialog function
+ void DistributeMarkedObjects();
+
+ // Markierte Polypolygonobjekte in Polygone zerlegen
+ // Gruppenobjekte werden durchsucht und zerlegt, wenn es sich bei allen
+ // Memberobjekten um PathObjs handelt.
+ // bMakeLines=TRUE: alle Polygone werden in einzelne Linien bzw.
+ // Beziersegmente zerlegt
+ void DismantleMarkedObjects(BOOL bMakeLines=FALSE);
+ BOOL IsCombinePossible(BOOL bNoPolyPoly=FALSE) const;
+ BOOL IsDismantlePossible(BOOL bMakeLines=FALSE) const;
+
+ // Ein neues bereits fertig konstruiertes Obj einfuegen. Das Obj gehoert
+ // anschliessend dem Model. Nach dem Einfuegen wird das neue Objekt
+ // markiert (wenn dies nicht via nOptions unterbunden wird).
+ // U.U. wird das Obj jedoch nicht eingefuegt, sondern deleted, naemlich
+ // wenn der Ziel-Layer gesperrt oder nicht sichtbar ist. In diesem Fall
+ // returniert die Methode mit FALSE.
+ // Die Methode generiert u.a. auch eine Undo-Action.
+ BOOL InsertObjectAtView(SdrObject* pObj, SdrPageView& rPV, ULONG nOptions=0);
+
+ // Ein Zeichenobjekt durch ein neues ersetzen. *pNewObj gehoert
+ // anschliessend mir, *pOldObj wandert ins Undo.
+ // Sollte in jedem Fall mit einer Undo-Klammerung versehen werden, z.B.:
+ // aStr+=" ersetzen";
+ // BegUndo(aStr);
+ // ReplaceObject(...);
+ // ...
+ // EndUndo();
+ void ReplaceObjectAtView(SdrObject* pOldObj, SdrPageView& rPV, SdrObject* pNewObj, BOOL bMark=TRUE);
+
+ void SetNotPersistAttrToMarked(const SfxItemSet& rAttr, BOOL bReplaceAll);
+ void MergeNotPersistAttrFromMarked(SfxItemSet& rAttr, BOOL bOnlyHardAttr) const;
+ void MergeAttrFromMarked(SfxItemSet& rAttr, BOOL bOnlyHardAttr) const;
+ SfxItemSet GetAttrFromMarked(BOOL bOnlyHardAttr) const;
+ void SetAttrToMarked(const SfxItemSet& rAttr, BOOL bReplaceAll);
+
+ // Geometrische Attribute (Position, Groesse, Drehwinkel)
+ // Bei der Position wird ein evtl. gesetzter PageOrigin beruecksichtigt.
+ SfxItemSet GetGeoAttrFromMarked() const;
+ void SetGeoAttrToMarked(const SfxItemSet& rAttr);
+
+ // Returnt NULL wenn:
+ // - Nix markiert,
+ // - kein StyleSheet an den markierten Objekten gesetzt
+ // - Bei Mehrfachselektion die markierten Objekte auf unterschiedliche
+ // StyleSheets verweisen.
+ SfxStyleSheet* GetStyleSheetFromMarked() const;
+
+ // z.Zt. noch ohne Undo :(
+ void SetStyleSheetToMarked(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+
+ /* new interface src537 */
+ BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr) const;
+
+ BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
+ SfxStyleSheet* GetStyleSheet() const; // SfxStyleSheet* GetStyleSheet(BOOL& rOk) const;
+ BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+
+ // Alle markierten Objekte zu einer Gruppe zusammenfassen.
+ // Anschliessend wird die neue Gruppe markiert. Bei einer
+ // seitenuebergreifenden Markierung wird eine Gruppe je Seite erzeugt.
+ // Alle erzeugten Gruppen sind anschliessend markiert.
+ // Ueber pUserGrp kann ein eigenes Gruppenobjekt vorgegeben werden. Dieses
+ // wird jedoch nicht direkt verwendet, sondern via Clone kopiert.
+ // Wird NULL uebergeben, macht sich die Methode SdrObjGroup-Instanzen.
+ void GroupMarked(const SdrObject* pUserGrp=NULL);
+
+ // Alle markierten Objektgruppen werden aufgeloesst (1 Level).
+ // Anschliessend sind statt der Gruppenobjekte alle ehemaligen
+ // Memberobjekte der aufgeloesten Gruppen markiert. Waren zum auch Objekte
+ // markiert, die keine Gruppenobjekte sind, so bleiben diese weiterhin
+ // zusaetzlich markiert.
+ void UnGroupMarked();
+
+ BOOL IsGroupPossible() const { ForcePossibilities(); return bGroupPossible; }
+ BOOL IsUnGroupPossible() const { ForcePossibilities(); return bUnGroupPossible; }
+ BOOL IsGroupEnterPossible() const { ForcePossibilities(); return bGrpEnterPossible; }
+
+ // Markierte Objekte in Polygone/Bezierkurven verwandeln. Die BOOL-
+ // Funktionen returnen TRUE, wenn wenigstens eins der markierten
+ // Objekte gewandelt werden kann. Memberobjekte von Gruppenobjekten
+ // werden ebenfalls gewandelt. Naehere Beschreibung siehe SdrObj.HXX.
+ BOOL IsConvertToPathObjPossible(BOOL bLineToArea) const { ForcePossibilities(); return BOOL(bLineToArea ? bCanConvToPathLineToArea : bCanConvToPath); }
+ BOOL IsConvertToPolyObjPossible(BOOL bLineToArea) const { ForcePossibilities(); return BOOL(bLineToArea ? bCanConvToPolyLineToArea : bCanConvToPoly); }
+ BOOL IsConvertToContourPossible() const { ForcePossibilities(); return bCanConvToContour; }
+ void ConvertMarkedToPathObj(BOOL bLineToArea);
+ void ConvertMarkedToPolyObj(BOOL bLineToArea);
+
+ // Alle markierten Objekte untereinander ausrichten. Normalerweise werden
+ // das SnapRect der Obj verwendet. Ist bBoundRects=TRUE, werden stattdessen
+ // die BoundRects ausgerichtet.
+ void AlignMarkedObjects(SdrHorAlign eHor, SdrVertAlign eVert, BOOL bBoundRects=FALSE);
+ BOOL IsAlignPossible() const;
+
+ // Markierte Objekte etwas nach "oben" holen
+ void MovMarkedToTop();
+
+ // Markierte Objekte etwas nach "unten" holen
+ void MovMarkedToBtm();
+
+ // Markierte Objekte ganz nach "oben" stellen
+ void PutMarkedToTop();
+
+ // Markierte Objekte ganz nach "unten" stellen
+ void PutMarkedToBtm();
+
+ // Markierte direkt vor das uebergebene Objekt stellen
+ // NULL -> wie PutMarkedToTop();
+ void PutMarkedInFrontOfObj(const SdrObject* pRefObj);
+
+ // Markierte direkt hinter das uebergebene Objekt stellen
+ // NULL -> wie PutMarkedToBtm();
+ void PutMarkedBehindObj(const SdrObject* pRefObj);
+
+ // Z-Order der markierten Objekte vertauschen
+ void ReverseOrderOfMarked();
+
+ // Feststellen, ob nach vorn/hinten stellen moeglich ist
+ // GetMaxToTop/BtmObj() wird von diesen Methoden nur begrenzt
+ // beruecksichtigt, d.h. es kann vorkommen dass IsToTopPossible()
+ // TRUE liefert, MovMarkedToTop() jedoch nichts aendert (z.B. bei
+ // Mehrfachselektion), weil eine von der abgeleiteten View ueber
+ // GetMaxToTopObj() auferlegte Restriktion dies verhindert.
+ BOOL IsToTopPossible() const { ForcePossibilities(); return bToTopPossible; }
+ BOOL IsToBtmPossible() const { ForcePossibilities(); return bToBtmPossible; }
+ BOOL IsReverseOrderPossible() const { ForcePossibilities(); return bReverseOrderPossible; }
+
+ // Ueber diese Methoden stellt die View fest, wie weit ein Objekt
+ // nach vorn bzw. nach hinten gestellt werden darf (Z-Order). Das
+ // zurueckgegebene Objekt wird dann nicht "ueberholt". Bei Rueckgabe
+ // von NULL (Defaultverhalten) bestehen keine Restriktionen.
+ virtual SdrObject* GetMaxToTopObj(SdrObject* pObj) const;
+ virtual SdrObject* GetMaxToBtmObj(SdrObject* pObj) const;
+
+ // Folgende Methode wird gerufen, wenn z.B. durch ToTop, ToBtm, ... die
+ // Reihenfolgen der Objekte geaendert wurde. Der Aufruf erfolgt dann nach
+ // jedem SdrObjList::SetObjectOrdNum(nOldPos,nNewPos);
+ virtual void ObjOrderChanged(SdrObject* pObj, ULONG nOldPos, ULONG nNewPos);
+
+ // Falls ein oder mehrere Objekte des Types SdrGrafObj oder SdrOle2Obj
+ // markiert sind und diese in der Lage sind ein StarView-Metafile zu
+ // liefern, konvertiert diese Methode das Metafile in Drawingobjekte.
+ // Die SdrGrafObjs/SdrOle2Objs werden dann durch die neue Objekte ersetzt.
+ void DoImportMarkedMtf(SvdProgressInfo *pProgrInfo=NULL);
+ BOOL IsImportMtfPossible() const { ForcePossibilities(); return bImportMtfPossible; }
+
+ // Wird der Modus VirtualObjectBundling eingeschaltet, werden beim
+ // ToTop/ToBtm virtuelle Objekte die dasselbe Objekt referenzieren
+ // in ihrer Z-Order buendig zusammengehalten (Writer).
+ // Defaulteinstellung ist FALSE=ausgeschaltet.
+ void SetVirtualObjectBundling(BOOL bOn) { bBundleVirtObj=bOn; }
+ BOOL IsVirtualObjectBundling() const { return bBundleVirtObj; }
+
+ // von der SdrMarkView ueberladen fuer den internen gebrauch
+ virtual void MarkListHasChanged();
+ virtual void ModelHasChanged();
+};
+
+#endif //_SVDEDTV_HXX
+
diff --git a/svx/inc/svx/svdedxv.hxx b/svx/inc/svx/svdedxv.hxx
new file mode 100644
index 000000000000..505c52f8064a
--- /dev/null
+++ b/svx/inc/svx/svdedxv.hxx
@@ -0,0 +1,306 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDEDXV_HXX
+#define _SVDEDXV_HXX
+
+#include <rtl/ref.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/svdglev.hxx>
+
+#include <svx/selectioncontroller.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+#include <boost/shared_ptr.hpp>
+
+class SdrOutliner;
+class OutlinerView;
+class EditStatus;
+class EditFieldInfo;
+class ImpSdrEditPara;
+struct PasteOrDropInfos;
+
+namespace com { namespace sun { namespace star { namespace uno {
+ class Any;
+} } } }
+
+namespace sdr {
+ class SelectionController;
+}
+
+//************************************************************
+// Defines
+//************************************************************
+
+enum SdrEndTextEditKind {SDRENDTEXTEDIT_UNCHANGED, // Textobjekt unveraendert
+ SDRENDTEXTEDIT_CHANGED, // Textobjekt wurde geaendert
+ SDRENDTEXTEDIT_DELETED, // Textobjekt implizit geloescht
+ SDRENDTEXTEDIT_SHOULDBEDELETED}; // Fuer Writer: Textobjekt sollte geloescht werden
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@ @@@@@ @@@@@@ @@@@@ @@@@@ @@ @@@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@ @@ @@@@@ @@ @@@@ @@ @@ @@ @@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@ @@@@@ @@@@ @@@@@ @@@@@ @@ @@ @ @@ @@@@@ @@ @@
+//
+// - Allgemeines Edit fuer objektspeziefische Eigenschaften
+// - Textedit fuer alle vom SdrTextObj abgeleiteten Zeichenobjekte
+// - Macromodus
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrObjEditView: public SdrGlueEditView
+{
+ friend class SdrPageView;
+ friend class ImpSdrEditPara;
+
+protected:
+ // TextEdit
+ SdrObjectWeakRef mxTextEditObj; // Aktuell im TextEdit befindliches Obj
+ SdrPageView* pTextEditPV;
+ SdrOutliner* pTextEditOutliner; // Na eben der Outliner fuers TextEdit
+ OutlinerView* pTextEditOutlinerView; // die aktuelle View des Outliners
+ Window* pTextEditWin; // passendes Win zu pTextEditOutlinerView
+ Cursor* pTextEditCursorMerker; // Zum Restaurieren des Cursors am jeweiligen Win
+ ImpSdrEditPara* pEditPara; // Da hau' ich erstmal alles rein um kompatibel zu bleiben...
+ SdrObject* pMacroObj;
+ SdrPageView* pMacroPV;
+ Window* pMacroWin;
+
+ Rectangle aTextEditArea;
+ Rectangle aMinTextEditArea;
+ Link aOldCalcFieldValueLink; // Zum rufen des alten Handlers
+ Point aMacroDownPos;
+
+ USHORT nMacroTol;
+
+ unsigned bTextEditDontDelete : 1; // Outliner und View bei SdrEndTextEdit nicht deleten (f. Rechtschreibpruefung)
+ unsigned bTextEditOnlyOneView : 1; // Nur eine OutlinerView (f. Rechtschreibpruefung)
+ unsigned bTextEditNewObj : 1; // Aktuell editiertes Objekt wurde gerade neu erzeugt
+ unsigned bQuickTextEditMode : 1; // persistent(->CrtV). Default=TRUE
+ unsigned bMacroMode : 1; // persistent(->CrtV). Default=TRUE
+ unsigned bMacroDown : 1;
+
+ rtl::Reference< sdr::SelectionController > mxSelectionController;
+ rtl::Reference< sdr::SelectionController > mxLastSelectionController;
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+
+protected:
+ OutlinerView* ImpFindOutlinerView(Window* pWin) const;
+
+ // Eine neue OutlinerView auf dem Heap anlegen und alle erforderlichen Parameter setzen.
+ // pTextEditObj, pTextEditPV und pTextEditOutliner muessen initiallisiert sein.
+ OutlinerView* ImpMakeOutlinerView(Window* pWin, BOOL bNoPaint, OutlinerView* pGivenView) const;
+ void ImpPaintOutlinerView(OutlinerView& rOutlView, const Rectangle& rRect) const;
+ void ImpInvalidateOutlinerView(OutlinerView& rOutlView) const;
+
+ // Feststellen, ob der gesamte Text markiert ist. Liefert auch TRUE wenn
+ // kein Text vorhanden ist.
+ BOOL ImpIsTextEditAllSelected() const;
+ void ImpMakeTextCursorAreaVisible();
+
+ // Handler fuer AutoGrowing Text bei aktivem Outliner
+ DECL_LINK(ImpOutlinerStatusEventHdl,EditStatus*);
+ DECL_LINK(ImpOutlinerCalcFieldValueHdl,EditFieldInfo*);
+
+ void ImpMacroUp(const Point& rUpPos);
+ void ImpMacroDown(const Point& rDownPos);
+
+ DECL_LINK( BeginPasteOrDropHdl, PasteOrDropInfos* );
+ DECL_LINK( EndPasteOrDropHdl, PasteOrDropInfos* );
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrObjEditView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrObjEditView();
+
+public:
+ // Actionhandling fuer Macromodus
+ virtual BOOL IsAction() const;
+ virtual void MovAction(const Point& rPnt);
+ virtual void EndAction();
+ virtual void BrkAction();
+ virtual void BckAction();
+ virtual void TakeActionRect(Rectangle& rRect) const;
+
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ virtual void ModelHasChanged();
+
+ //************************************************************************
+ // TextEdit ueber einen Outliner
+ //************************************************************************
+ // QuickTextEditMode bedeutet, dass Objekte mit Text sofort beim Anklicken
+ // editiert werden sollen. Default=TRUE. Persistent.
+ void SetQuickTextEditMode(BOOL bOn) { bQuickTextEditMode=bOn; }
+ BOOL IsQuickTextEditMode() const { return bQuickTextEditMode; }
+
+ // Starten des TextEditMode. Ist pWin==NULL, wird das erste an der View
+ // angemeldete Win verwendet.
+ // Der Cursor des Fensters an dem Editiert wird wird bei
+ // SdrBeginTextEdit() gemerkt und bei SdrEndTextEdit() wieder restauriert.
+ // Die App muss sicherstellen, das die zum Zeitpunkt des BegEdit am
+ // Windows angemeldete Cursorinstanz beim SdrEndTextEdit noch gueltig ist.
+ // Ueber den Parameter pEditOutliner kann die Applikation einen eigenen
+ // Outliner vorgeben, der zum Editieren verwendet wird. Dieser gehoert
+ // nach Aufruf von SdrBeginTextEdit der SdrObjEditView und wird von dieser
+ // spaeter via delete zerstoert (falls bDontDeleteOutliner=FALSE). Die
+ // SdrObjEditView setzt dann das Modusflag (EditEngine/Outliner) an
+ // dieser Instanz und ausserdem auch den StatusEventHdl.
+ // Ebenso kann eine spezifische OutlinerView vorgegeben werden.
+
+ virtual sal_Bool SdrBeginTextEdit(SdrObject* pObj, SdrPageView* pPV = 0L, ::Window* pWin = 0L, sal_Bool bIsNewObj = sal_False,
+ SdrOutliner* pGivenOutliner = 0L, OutlinerView* pGivenOutlinerView = 0L,
+ sal_Bool bDontDeleteOutliner = sal_False, sal_Bool bOnlyOneView = sal_False, sal_Bool bGrabFocus = sal_True);
+ // bDontDeleteReally ist ein Spezialparameter fuer den Writer.
+ // Ist dieses Flag gesetzt, dann wird ein evtl. leeres Textobjekt
+ // nicht geloescht. Stattdessen gibt es dann einen Returncode
+ // SDRENDTEXTEDIT_SHOULDBEDELETED (anstelle von SDRENDTEXTEDIT_BEDELETED)
+ // der besagt, dass das Objekt geloescht werden sollte.
+ virtual SdrEndTextEditKind SdrEndTextEdit(sal_Bool bDontDeleteReally = sal_False);
+ virtual bool IsTextEdit() const;
+
+ // TRUE=Es wird ein Textrahmen (OBJ_TEXT,OBJ_OUTLINETEXT,...) editiert
+ // ansonsten handelt es sich um ein beschriftetes Zeichenobjekt, an dem
+ // der Text ja bekanntlich hor. und vert. zentriert wird.
+ BOOL IsTextEditFrame() const;
+
+ // Diese Methode liefert TRUE, wenn der Punkt rHit innerhalb der
+ // des Objektbereichs oder der OutlinerView liegt.
+ BOOL IsTextEditHit(const Point& rHit, short nTol) const;
+
+ // Diese Methode liefert TRUE, wenn der Punkt rHit innerhalb des
+ // Handle-dicken Rahmens liegt, der die OutlinerView bei TextFrames
+ // umschliesst.
+ BOOL IsTextEditFrameHit(const Point& rHit) const;
+
+ // Bei aktiver Selektion, also zwischen MouseButtonDown und
+ // MouseButtonUp liefert diese Methode immer TRUE.
+ BOOL IsTextEditInSelectionMode() const;
+
+ // Folgende Methode addiert einen passenden Offset zum MouseEvent
+ // um diesen an den Outliner weiterzureichen.
+ void AddTextEditOfs(MouseEvent& rMEvt) const;
+
+ // Wer das z.Zt. im TextEdit befindliche Objekt braucht:
+ SdrObject* GetTextEditObject() const { return mxTextEditObj.get(); }
+
+ // info about TextEditPageView. Default is 0L.
+ virtual SdrPageView* GetTextEditPageView() const;
+
+ // Das aktuelle Win des Outliners
+ Window* GetTextEditWin() const { return pTextEditWin; }
+ void SetTextEditWin(Window* pWin);
+
+ // An den hier abgeholten Outliner kann man schliesslich
+ // Events versenden, Attribute setzen, Cut/Copy/Paste rufen,
+ // Undo/Redo rufen, etc.
+ const SdrOutliner* GetTextEditOutliner() const { return pTextEditOutliner; }
+ SdrOutliner* GetTextEditOutliner() { return pTextEditOutliner; }
+ const OutlinerView* GetTextEditOutlinerView() const { return pTextEditOutlinerView; }
+ OutlinerView* GetTextEditOutlinerView() { return pTextEditOutlinerView; }
+
+ virtual BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt, Window* pWin);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt, Window* pWin);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
+ virtual BOOL Command(const CommandEvent& rCEvt, Window* pWin);
+ BOOL Cut(ULONG nFormat=SDR_ANYFORMAT);
+ BOOL Yank(ULONG nFormat=SDR_ANYFORMAT);
+ BOOL Paste(Window* pWin=NULL, ULONG nFormat=SDR_ANYFORMAT);
+
+ // #97766# make virtual to change implementation e.g. for SdOutlineView
+ virtual sal_uInt16 GetScriptType() const;
+
+ /* new interface src537 */
+ BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
+
+ BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
+ SfxStyleSheet* GetStyleSheet() const; // SfxStyleSheet* GetStyleSheet(BOOL& rOk) const;
+ BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+
+ // Intern: Beim Splitteraufziehen neue OutlinerView...
+ virtual void AddWindowToPaintView(OutputDevice* pNewWin);
+ virtual void DeleteWindowFromPaintView(OutputDevice* pOldWin);
+
+ //************************************************************************
+ // Object-MacroModus (z.B. Rect als Button oder sowas):
+ //************************************************************************
+ // Persistent. Default TRUE. SvDraw wertet das Flag u.a. bei
+ // SdrView::GetPreferedPointer() aus. Hat nur Wirkung, wenn das Dokument
+ // Draw-Objekte mit Macrofunktionalitaet hat (SdrObject::HasMacro()==TRUE).
+ void SetMacroMode(BOOL bOn) { bMacroMode=bOn; }
+ BOOL IsMacroMode() const { return bMacroMode; }
+ BOOL BegMacroObj(const Point& rPnt, short nTol, SdrObject* pObj, SdrPageView* pPV, Window* pWin);
+ BOOL BegMacroObj(const Point& rPnt, SdrObject* pObj, SdrPageView* pPV, Window* pWin) { return BegMacroObj(rPnt,-2,pObj,pPV,pWin); }
+ void MovMacroObj(const Point& rPnt);
+ void BrkMacroObj();
+ BOOL EndMacroObj();
+ BOOL IsMacroObj() const { return pMacroObj!=NULL; }
+ BOOL IsMacroObjDown() const { return bMacroDown; }
+
+ /** fills the given any with a XTextCursor for the current text selection.
+ Leaves the any untouched if there currently is no text selected */
+ void getTextSelection( ::com::sun::star::uno::Any& rSelection );
+
+ virtual void MarkListHasChanged();
+
+ rtl::Reference< sdr::SelectionController > getSelectionController() const { return mxSelectionController; }
+
+ /** returns true if the shape identified by its inventor and identifier supports format paint brush operation */
+ virtual bool SupportsFormatPaintbrush( UINT32 nObjectInventor, UINT16 nObjectIdentifier ) const;
+
+ /** returns a format paint brush set from the current selection */
+ virtual bool TakeFormatPaintBrush( boost::shared_ptr< SfxItemSet >& rFormatSet );
+
+ /** applies a format paint brush set from the current selection.
+ if bNoCharacterFormats is true, no character attributes are changed.
+ if bNoParagraphFormats is true, no paragraph attributes are changed.
+ */
+ virtual void ApplyFormatPaintBrush( SfxItemSet& rFormatSet, bool bNoCharacterFormats, bool bNoParagraphFormats );
+
+ /** helper function for selections with multiple SdrText for one SdrTextObj (f.e. tables ) */
+ void ApplyFormatPaintBrushToText( SfxItemSet& rFormatSet, SdrTextObj& rTextObj, SdrText* pText, bool bNoCharacterFormats, bool bNoParagraphFormats );
+
+protected:
+ virtual void OnBeginPasteOrDrop( PasteOrDropInfos* pInfos );
+ virtual void OnEndPasteOrDrop( PasteOrDropInfos* pInfos );
+
+};
+
+#endif //_SVDEDXV_HXX
+
diff --git a/svx/inc/svx/svdetc.hxx b/svx/inc/svx/svdetc.hxx
new file mode 100644
index 000000000000..527c1ac17bf8
--- /dev/null
+++ b/svx/inc/svx/svdetc.hxx
@@ -0,0 +1,356 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDETC_HXX
+#define _SVDETC_HXX
+
+#include <tools/string.hxx>
+#include <tools/contnr.hxx>
+
+#ifndef _OUTDEV_HXX //autogen
+#include <vcl/outdev.hxx>
+#endif
+#include <tools/shl.hxx>
+#include <editeng/outliner.hxx>
+#include "svx/svxdllapi.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// ExchangeFormat-Id der DrawingEngine holen. Daten koennen dann per
+// static BOOL CopyData(pData,nLen,nFormat);
+// bereitgestellt werden, wobei pData/nLen einen SvMemoryStream beschreiben in
+// dem ein SdrModel gestreamt wird an dem fuer die Zeitdauer des Streamens das
+// Flag SdrModel::SetStreamingSdrModel(TRUE) gesetzt wird.
+// ULONG SdrGetExchangeFormat(); -- JP 18.01.99 - dafuer gibt es ein define
+
+class SdrOutliner;
+class SdrModel;
+class SvtSysLocale;
+class CharClass;
+class LocaleDataWrapper;
+
+namespace com { namespace sun { namespace star { namespace lang {
+ struct Locale;
+}}}}
+
+// Einen Outliner mit den engineglobalen
+// Defaulteinstellungen auf dem Heap erzeugen.
+// Ist pMod<>NULL, dann wird der MapMode des uebergebenen
+// Models verwendet. Die resultierende Default-Fonthoehe bleibt
+// jedoch dieselbe (die logische Fonthoehe wird umgerechnet).
+SVX_DLLPUBLIC SdrOutliner* SdrMakeOutliner( USHORT nOutlinerMode, SdrModel* pMod );
+
+// Globale Defaulteinstellungen fuer die DrawingEngine.
+// Diese Einstellungen sollte man direkt beim Applikationsstart
+// vornehmen, noch bevor andere Methoden der Engine gerufen werden.
+class SVX_DLLPUBLIC SdrEngineDefaults
+{
+friend class SdrAttrObj;
+ String aFontName;
+ FontFamily eFontFamily;
+ Color aFontColor;
+ ULONG nFontHeight;
+ MapUnit eMapUnit;
+ Fraction aMapFraction;
+
+private:
+ static SdrEngineDefaults& GetDefaults();
+
+public:
+ SdrEngineDefaults();
+ // Default Fontname ist "Times New Roman"
+ static void SetFontName(const String& rFontName) { GetDefaults().aFontName=rFontName; }
+ static String GetFontName() { return GetDefaults().aFontName; }
+ // Default FontFamily ist FAMILY_ROMAN
+ static void SetFontFamily(FontFamily eFam) { GetDefaults().eFontFamily=eFam; }
+ static FontFamily GetFontFamily() { return GetDefaults().eFontFamily; }
+ // Default FontColor ist COL_BLACK
+ static void SetFontColor(const Color& rColor) { GetDefaults().aFontColor=rColor; }
+ static Color GetFontColor() { return GetDefaults().aFontColor; }
+ // Default FontHeight ist 847. Die Fonthoehe wird in logischen Einheiten
+ // (MapUnit/MapFraction (siehe unten)) angegeben. Die Defaulteinstellung
+ // 847/100mm entspricht also ca. 24 Point. Verwendet man stattdessen
+ // beispielsweise Twips (SetMapUnit(MAP_TWIP)) (20 Twip = 1 Point) muss
+ // man als Fonthoehe 480 angeben um 24 Point als default zu erhalten.
+ static void SetFontHeight(ULONG nHeight) { GetDefaults().nFontHeight=nHeight; }
+ static ULONG GetFontHeight() { return GetDefaults().nFontHeight; }
+ // Der MapMode wird fuer den globalen Outliner benoetigt.
+ // Gleichzeitig bekommt auch jedes neu instanziierte SdrModel
+ // diesen MapMode default zugewiesen.
+ // Default MapUnit ist MAP_100TH_MM
+ static void SetMapUnit(MapUnit eMap) { GetDefaults().eMapUnit=eMap; }
+ static MapUnit GetMapUnit() { return GetDefaults().eMapUnit; }
+ // Default MapFraction ist 1/1.
+ static void SetMapFraction(const Fraction& rMap) { GetDefaults().aMapFraction=rMap; }
+ static Fraction GetMapFraction() { return GetDefaults().aMapFraction; }
+ // Der Aufruf der folgenden Methode veranlasst die Engine
+ // ihre sprachabhaengigen Resourcen neu zu initiallisieren.
+ // Bereits bestehende Undotexte, etc. bleiben jedoch in der
+ // sprache erhalten, in der sie erzeugt wurden.
+ static void LanguageHasChanged();
+
+
+ // Einen Outliner mit den engineglobalen
+ // Defaulteinstellungen auf dem Heap erzeugen.
+ // Ist pMod<>NULL, dann wird der MapMode des uebergebenen
+ // Models verwendet. Die resultierende Default-Fonthoehe bleibt
+ // jedoch dieselbe (die logische Fonthoehe wird umgerechnet).
+ friend SVX_DLLPUBLIC SdrOutliner* SdrMakeOutliner( USHORT nOutlinerMode, SdrModel* pMod );
+};
+
+class SfxItemSet;
+// Liefert eine Ersatzdarstellung fuer einen XFillStyle
+// Bei XFILL_NONE gibt's FALSE und rCol bleibt unveraendert.
+SVX_DLLPUBLIC FASTBOOL GetDraftFillColor(const SfxItemSet& rSet, Color& rCol);
+
+// Ein Container fuer USHORTs (im Prinzip ein dynamisches Array)
+class UShortCont {
+ Container aArr;
+public:
+ UShortCont(USHORT nBlock, USHORT nInit, USHORT nResize): aArr(nBlock,nInit,nResize) {}
+ void Clear() { aArr.Clear(); }
+ void Insert(USHORT nElem, ULONG nPos=CONTAINER_APPEND) { aArr.Insert((void*)ULONG(nElem),nPos); }
+ void Remove(ULONG nPos) { aArr.Remove(nPos); }
+ void Replace(USHORT nElem, ULONG nPos) { aArr.Replace((void*)ULONG(nElem),nPos); }
+ USHORT GetObject(ULONG nPos) const { return USHORT(ULONG(aArr.GetObject(nPos))); }
+ ULONG GetPos(USHORT nElem) const { return aArr.GetPos((void*)(ULONG)nElem); }
+ ULONG GetCount() const { return aArr.Count(); }
+ void Sort();
+};
+
+class ContainerSorter {
+protected:
+ Container& rCont;
+private:
+//#if 0 // _SOLAR__PRIVATE
+ void ImpSubSort(long nL, long nR) const;
+//#endif // __PRIVATE
+public:
+ ContainerSorter(Container& rNewCont): rCont(rNewCont) {}
+ void DoSort(ULONG a=0, ULONG b=0xFFFFFFFF) const;
+#ifdef This_Is_Just_For_A_Comment
+ Compare() muss returnieren:
+ -1 falls *pElem1<*pElem2
+ 0 falls *pElem1=*pElem2
+ +1 falls *pElem1>*pElem2
+#endif
+ virtual int Compare(const void* pElem1, const void* pElem2) const=0;
+private: // damit keiner vergessen wird
+virtual
+ void
+ Is1stLessThan2nd(const void* pElem1, const void* pElem2) const;
+// virtual FASTBOOL Is1stLessThan2nd(const void* pElem1, const void* pElem2) const=NULL;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//#if 0 // _SOLAR__PRIVATE
+#define SDRHDC_SAVEPEN 1 /* Save Linecolor */
+#define SDRHDC_SAVEBRUSH 2 /* Save Fillcolorn */
+#define SDRHDC_SAVEFONT 4 /* Save Font */
+#define SDRHDC_SAVEPENANDBRUSH 3 /* Save Line- and FillColor */
+#define SDRHDC_SAVEPENANDBRUSHANDFONT 7 /* Save Font, Line- and fillcolor */
+#define SDRHDC_SAVECLIPPING 8 /* Save Clipping */
+#define SDRHDC_SAVEALL 15 /* Save Clipping, Font, fill- and linecolor */
+
+class ImpClipMerk;
+class ImpColorMerk;
+class ImpSdrHdcMerk
+{
+ ImpColorMerk* pFarbMerk;
+ ImpClipMerk* pClipMerk;
+ Color* pLineColorMerk;
+ USHORT nMode;
+public:
+ ImpSdrHdcMerk(const OutputDevice& rOut, USHORT nNewMode=SDRHDC_SAVEALL, FASTBOOL bAutoMerk=TRUE);
+ ~ImpSdrHdcMerk();
+ void Save(const OutputDevice& rOut);
+ FASTBOOL IsSaved() const { return pFarbMerk!=NULL || pClipMerk!=NULL || pLineColorMerk!=NULL; }
+ void Restore(OutputDevice& rOut, USHORT nMask=SDRHDC_SAVEALL) const;
+};
+//#endif // __PRIVATE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Ein ItemSet auf Outliner- bzw. EditEngine-Items durchsuchen
+// Liefert TRUE, wenn der Set solchen Items enthaelt.
+BOOL SearchOutlinerItems(const SfxItemSet& rSet, BOOL bInklDefaults, BOOL* pbOnlyEE=NULL);
+
+// zurueck erhaelt man einen neuen WhichTable den
+// man dann irgendwann mit delete platthauen muss.
+USHORT* RemoveWhichRange(const USHORT* pOldWhichTable, USHORT nRangeBeg, USHORT nRangeEnd);
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class Link;
+
+// Hilfsklasse zur kommunikation zwischen dem Dialog
+// zum aufbrechen von Metafiles (sd/source/ui/dlg/brkdlg.cxx),
+// SdrEditView::DoImportMarkedMtf() und
+// ImpSdrGDIMetaFileImport::DoImport()
+class SVX_DLLPUBLIC SvdProgressInfo
+{
+private:
+ ULONG nSumActionCount; // Summe aller Actions
+ ULONG nSumCurAction; // Summe aller bearbeiteten Actions
+
+ ULONG nActionCount; // Anzahl der Actions im akt. Obj.
+ ULONG nCurAction; // Anzahl bearbeiteter Act. im akt. Obj.
+
+ ULONG nInsertCount; // Anzahl einzufuegender Act. im akt. Obj.
+ ULONG nCurInsert; // Anzahl bereits eingefuegter Actions
+
+ ULONG nObjCount; // Anzahl der selektierten Objekte
+ ULONG nCurObj; // Aktuelles Objekt
+
+ Link *pLink;
+
+public:
+ SvdProgressInfo( Link *_pLink );
+
+ void Init( ULONG _nSumActionCount, ULONG _nObjCount );
+
+ BOOL SetNextObject();
+
+ void SetActionCount( ULONG _nActionCount );
+ void SetInsertCount( ULONG _nInsertCount );
+
+ BOOL ReportActions( ULONG nAnzActions );
+ BOOL ReportInserts( ULONG nAnzInserts );
+
+ ULONG GetSumActionCount() const { return nSumActionCount; };
+ ULONG GetSumCurAction() const { return nSumCurAction; };
+ ULONG GetObjCount() const { return nObjCount; };
+ ULONG GetCurObj() const { return nCurObj; };
+
+ ULONG GetActionCount() const { return nActionCount; };
+ ULONG GetCurAction() const { return nCurAction; };
+
+ ULONG GetInsertCount() const { return nInsertCount; };
+ ULONG GetCurInsert() const { return nCurInsert; };
+
+ void ReportError();
+ BOOL ReportRescales( ULONG nAnzRescales );
+};
+
+
+
+class SdrLinkList
+{
+ Container aList;
+protected:
+ unsigned FindEntry(const Link& rLink) const;
+public:
+ SdrLinkList(): aList(1024,4,4) {}
+ ~SdrLinkList() { Clear(); }
+ SVX_DLLPUBLIC void Clear();
+ unsigned GetLinkCount() const { return (unsigned)aList.Count(); }
+ Link& GetLink(unsigned nNum) { return *((Link*)(aList.GetObject(nNum))); }
+ const Link& GetLink(unsigned nNum) const { return *((Link*)(aList.GetObject(nNum))); }
+ void InsertLink(const Link& rLink, unsigned nPos=0xFFFF);
+ void RemoveLink(const Link& rLink);
+ FASTBOOL HasLink(const Link& rLink) const { return FindEntry(rLink)!=0xFFFF; }
+};
+
+// Fuer die Factory in SvdObj.CXX
+SdrLinkList& ImpGetUserMakeObjHdl();
+SdrLinkList& ImpGetUserMakeObjUserDataHdl();
+
+class SdrOle2Obj;
+class AutoTimer;
+
+class OLEObjCache : public Container
+{
+ ULONG nSize;
+ AutoTimer* pTimer;
+
+ void UnloadOnDemand();
+ BOOL UnloadObj( SdrOle2Obj* pObj );
+ DECL_LINK( UnloadCheckHdl, AutoTimer* );
+
+public:
+ OLEObjCache();
+ SVX_DLLPUBLIC ~OLEObjCache();
+
+ void SetSize(ULONG nNewSize);
+ void InsertObj(SdrOle2Obj* pObj);
+ void RemoveObj(SdrOle2Obj* pObj);
+};
+
+
+class SVX_DLLPUBLIC SdrGlobalData
+{
+ const SvtSysLocale* pSysLocale; // follows always locale settings
+ const CharClass* pCharClass; // follows always SysLocale
+ const LocaleDataWrapper* pLocaleData; // follows always SysLocale
+public:
+ SdrLinkList aUserMakeObjHdl;
+ SdrLinkList aUserMakeObjUserDataHdl;
+ SdrOutliner* pOutliner;
+ SdrEngineDefaults* pDefaults;
+ ResMgr* pResMgr;
+ ULONG nExchangeFormat;
+ OLEObjCache aOLEObjCache;
+
+
+ const SvtSysLocale* GetSysLocale(); // follows always locale settings
+ const CharClass* GetCharClass(); // follows always SysLocale
+ const LocaleDataWrapper* GetLocaleData(); // follows always SysLocale
+public:
+ SdrGlobalData();
+ ~SdrGlobalData();
+
+ OLEObjCache& GetOLEObjCache() { return aOLEObjCache; }
+};
+
+inline SdrGlobalData& GetSdrGlobalData()
+{
+ void** ppAppData=GetAppData(SHL_SVD);
+ if (*ppAppData==NULL) {
+ *ppAppData=new SdrGlobalData;
+ }
+ return *((SdrGlobalData*)*ppAppData);
+}
+
+namespace sdr
+{
+
+SVX_DLLPUBLIC String GetResourceString(sal_uInt16 nResID);
+
+}
+
+/////////////////////////////////////////////////////////////////////
+// #i101872# isolated GetTextEditBackgroundColor for tooling
+class SdrObjEditView;
+
+SVX_DLLPUBLIC Color GetTextEditBackgroundColor(const SdrObjEditView& rView);
+
+/////////////////////////////////////////////////////////////////////
+
+#endif //_SVDETC_HXX
diff --git a/svx/inc/svx/svdfield.hxx b/svx/inc/svx/svdfield.hxx
new file mode 100644
index 000000000000..cf79131a72cd
--- /dev/null
+++ b/svx/inc/svx/svdfield.hxx
@@ -0,0 +1,36 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDFIELD_HXX
+#define _SVDFIELD_HXX
+
+#include "svx/svxdllapi.h"
+
+void SVX_DLLPUBLIC SdrRegisterFieldClasses();
+
+#endif //_SVDFIELD_HXX
+
diff --git a/svx/inc/svx/svdglev.hxx b/svx/inc/svx/svdglev.hxx
new file mode 100644
index 000000000000..88cd48974f9c
--- /dev/null
+++ b/svx/inc/svx/svdglev.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDGLEV_HXX
+#define _SVDGLEV_HXX
+
+#include "svx/svxdllapi.h"
+#include <svx/svdpoev.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrGluePoint;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@ @@ @@ @@ @@@@@ @@@@@ @@@@@ @@ @@@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@ @@@ @@ @@ @@ @@@@ @@@@ @@ @@ @@ @@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@@ @@@@@ @@@@ @@@@@ @@@@@ @@@@@ @@ @@ @ @@ @@@@@ @@ @@
+//
+// Editieren von Klebepunkten an den Objekten (Klebepunkte fuer Verbinder)
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrGlueEditView: public SdrPolyEditView
+{
+ void ImpClearVars();
+
+ // Markierte Klebepunkte kopieren und anstelle der alten markieren
+ void ImpCopyMarkedGluePoints();
+ typedef void (*PGlueDoFunc)(SdrGluePoint&, const SdrObject* pObj, const void*, const void*, const void*, const void*, const void*);
+ typedef void (*PGlueTrFunc)(Point&, const void*, const void*, const void*, const void*, const void*);
+ void ImpDoMarkedGluePoints(PGlueDoFunc pDoFunc, BOOL bConst, const void* p1=NULL, const void* p2=NULL, const void* p3=NULL, const void* p4=NULL, const void* p5=NULL);
+ void ImpTransformMarkedGluePoints(PGlueTrFunc pTrFunc, const void* p1=NULL, const void* p2=NULL, const void* p3=NULL, const void* p4=NULL, const void* p5=NULL);
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrGlueEditView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrGlueEditView();
+
+public:
+ // Durch den Parameter nThisEsc uebergibt man die Richtung, die man
+ // checken bzw. setzen/loeschen will.
+ // Moegliche Werte fuer nThisEsc sind z.Zt.
+ // SDRESC_LEFT, SDRESC_RIGHT, SDRESC_TOP und SDRESC_BOTTOM
+ TRISTATE IsMarkedGluePointsEscDir(USHORT nThisEsc) const;
+ void SetMarkedGluePointsEscDir(USHORT nThisEsc, BOOL bOn);
+ BOOL IsSetMarkedGluePointsEscDirPossible() const { return !IsReadOnly() && HasMarkedGluePoints(); }
+
+ // Checken/setzen, ob die Klebepunktpositionen relativ zur
+ // Objektgroesse sind (Percent=TRUE) oder nicht (Percent=FALSE)
+ TRISTATE IsMarkedGluePointsPercent() const;
+ void SetMarkedGluePointsPercent(BOOL bOn);
+ BOOL IsSetMarkedGluePointsPercentPossible() const { return !IsReadOnly() && HasMarkedGluePoints(); }
+
+ // bVert=FALSE: Horizontales Alignment checken/setzen
+ // SDRHORZALIGN_CENTER
+ // SDRHORZALIGN_LEFT
+ // SDRHORZALIGN_RIGHT
+ // SDRHORZALIGN_DONTCARE (nur bei Get())
+ // bVert=TRUE: Vertikales Alignment checken/setzen
+ // SDRVERTALIGN_CENTER
+ // SDRVERTALIGN_TOP
+ // SDRVERTALIGN_BOTTOM
+ // SDRVERTALIGN_DONTCARE (nur bei Get())
+ USHORT GetMarkedGluePointsAlign(BOOL bVert) const;
+ void SetMarkedGluePointsAlign(BOOL bVert, USHORT nAlign);
+ BOOL IsSetMarkedGluePointsAlignPossible() const { return !IsReadOnly() && HasMarkedGluePoints(); }
+
+ // Alle merkierten Klebepunkte entfernen
+ void DeleteMarkedGluePoints();
+ BOOL IsDeleteMarkedGluePointsPossible() const;
+
+ void MoveMarkedGluePoints (const Size& rSiz, bool bCopy=false);
+ void ResizeMarkedGluePoints(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bCopy=false);
+ void RotateMarkedGluePoints(const Point& rRef, long nWink, bool bCopy=false);
+ void MirrorMarkedGluePoints(const Point& rRef1, const Point& rRef2, BOOL bCopy=FALSE);
+ void MirrorMarkedGluePointsHorizontal(BOOL bCopy=FALSE);
+ void MirrorMarkedGluePointsVertical(BOOL bCopy=FALSE);
+ void ShearMarkedGluePoints(const Point& rRef, long nWink, BOOL bVShear=FALSE, BOOL bCopy=FALSE);
+ void CrookMarkedGluePoints(const Point& rRef, const Point& rRad, SdrCrookMode eMode, BOOL bVertical=FALSE, BOOL bNoContortion=FALSE, BOOL bCopy=FALSE);
+ void DistortMarkedGluePoints(const Rectangle& rRef, const XPolygon& rDistortedRect, BOOL bNoContortion=FALSE, BOOL bCopy=FALSE);
+
+ void AlignMarkedGluePoints(SdrHorAlign eHor, SdrVertAlign eVert);
+};
+
+#endif //_SVDGLEV_HXX
+
diff --git a/svx/inc/svx/svdglue.hxx b/svx/inc/svx/svdglue.hxx
new file mode 100644
index 000000000000..965aaf25225e
--- /dev/null
+++ b/svx/inc/svx/svdglue.hxx
@@ -0,0 +1,151 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDGLUE_HXX
+#define _SVDGLUE_HXX
+
+class Window;
+class OutputDevice;
+class SvStream;
+class SdrObject;
+
+#include <tools/contnr.hxx>
+#include <tools/gen.hxx>
+#include "svx/svxdllapi.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define SDRESC_SMART 0x0000
+#define SDRESC_LEFT 0x0001
+#define SDRESC_RIGHT 0x0002
+#define SDRESC_TOP 0x0004
+#define SDRESC_BOTTOM 0x0008
+#define SDRESC_LO 0x0010 /* ni */
+#define SDRESC_LU 0x0020 /* ni */
+#define SDRESC_RO 0x0040 /* ni */
+#define SDRESC_RU 0x0080 /* ni */
+#define SDRESC_HORZ (SDRESC_LEFT|SDRESC_RIGHT)
+#define SDRESC_VERT (SDRESC_TOP|SDRESC_BOTTOM)
+#define SDRESC_ALL 0x00FF
+
+#define SDRHORZALIGN_CENTER 0x0000
+#define SDRHORZALIGN_LEFT 0x0001
+#define SDRHORZALIGN_RIGHT 0x0002
+#define SDRHORZALIGN_DONTCARE 0x0010
+#define SDRVERTALIGN_CENTER 0x0000
+#define SDRVERTALIGN_TOP 0x0100
+#define SDRVERTALIGN_BOTTOM 0x0200
+#define SDRVERTALIGN_DONTCARE 0x1000
+
+class SVX_DLLPUBLIC SdrGluePoint {
+ // Bezugspunkt ist SdrObject::GetSnapRect().Center()
+ // bNoPercent=FALSE: Position ist -5000..5000 (1/100)% bzw. 0..10000 (je nach Align)
+ // bNoPercent=TRUE : Position ist in log Einh, rel zum Bezugspunkt
+ Point aPos;
+ USHORT nEscDir;
+ USHORT nId;
+ USHORT nAlign;
+ FASTBOOL bNoPercent:1;
+ FASTBOOL bReallyAbsolute:1; // Temporaer zu setzen fuer Transformationen am Bezugsobjekt
+ FASTBOOL bUserDefined:1; // #i38892#
+public:
+ SdrGluePoint(): nEscDir(SDRESC_SMART),nId(0),nAlign(0) { bNoPercent=FALSE; bReallyAbsolute=FALSE; bUserDefined=TRUE; }
+ SdrGluePoint(const Point& rNewPos, FASTBOOL bNewPercent=TRUE, USHORT nNewAlign=0): aPos(rNewPos),nEscDir(SDRESC_SMART),nId(0),nAlign(nNewAlign) { bNoPercent=!bNewPercent; bReallyAbsolute=FALSE; bUserDefined=TRUE; }
+ bool operator==(const SdrGluePoint& rCmpGP) const { return aPos==rCmpGP.aPos && nEscDir==rCmpGP.nEscDir && nId==rCmpGP.nId && nAlign==rCmpGP.nAlign && bNoPercent==rCmpGP.bNoPercent && bReallyAbsolute==rCmpGP.bReallyAbsolute && bUserDefined==rCmpGP.bUserDefined; }
+ bool operator!=(const SdrGluePoint& rCmpGP) const { return !operator==(rCmpGP); }
+ const Point& GetPos() const { return aPos; }
+ void SetPos(const Point& rNewPos) { aPos=rNewPos; }
+ USHORT GetEscDir() const { return nEscDir; }
+ void SetEscDir(USHORT nNewEsc) { nEscDir=nNewEsc; }
+ USHORT GetId() const { return nId; }
+ void SetId(USHORT nNewId) { nId=nNewId; }
+ bool IsPercent() const { return !bNoPercent; }
+ void SetPercent(FASTBOOL bOn) { bNoPercent=!bOn; }
+ // Temporaer zu setzen fuer Transformationen am Bezugsobjekt
+ FASTBOOL IsReallyAbsolute() const { return bReallyAbsolute; }
+ void SetReallyAbsolute(FASTBOOL bOn, const SdrObject& rObj);
+
+ // #i38892#
+ FASTBOOL IsUserDefined() const { return bUserDefined; }
+ void SetUserDefined(FASTBOOL bNew) { bUserDefined = bNew; }
+
+ USHORT GetAlign() const { return nAlign; }
+ void SetAlign(USHORT nAlg) { nAlign=nAlg; }
+ USHORT GetHorzAlign() const { return nAlign&0x00FF; }
+ void SetHorzAlign(USHORT nAlg) { nAlign=(nAlign&0xFF00)|(nAlg&0x00FF); }
+ USHORT GetVertAlign() const { return nAlign&0xFF00; }
+ void SetVertAlign(USHORT nAlg) { nAlign=(nAlign&0x00FF)|(nAlg&0xFF00); }
+ void Draw(OutputDevice& rOut, const SdrObject* pObj) const;
+ FASTBOOL IsHit(const Point& rPnt, const OutputDevice& rOut, const SdrObject* pObj) const;
+ void Invalidate(Window& rWin, const SdrObject* pObj) const;
+ Point GetAbsolutePos(const SdrObject& rObj) const;
+ void SetAbsolutePos(const Point& rNewPos, const SdrObject& rObj);
+ long GetAlignAngle() const;
+ void SetAlignAngle(long nWink);
+ long EscDirToAngle(USHORT nEsc) const;
+ USHORT EscAngleToDir(long nWink) const;
+ void Rotate(const Point& rRef, long nWink, double sn, double cs, const SdrObject* pObj);
+ void Mirror(const Point& rRef1, const Point& rRef2, const SdrObject* pObj);
+ void Mirror(const Point& rRef1, const Point& rRef2, long nWink, const SdrObject* pObj);
+ void Shear (const Point& rRef, long nWink, double tn, FASTBOOL bVShear, const SdrObject* pObj);
+};
+
+#define SDRGLUEPOINT_NOTFOUND 0xFFFF
+
+class SVX_DLLPUBLIC SdrGluePointList {
+ Container aList;
+protected:
+ SdrGluePoint* GetObject(USHORT i) const { return (SdrGluePoint*)(aList.GetObject(i)); }
+public:
+ SdrGluePointList(): aList(1024,4,4) {}
+ SdrGluePointList(const SdrGluePointList& rSrcList): aList(1024,4,4) { *this=rSrcList; }
+ ~SdrGluePointList() { Clear(); }
+ void Clear();
+ void operator=(const SdrGluePointList& rSrcList);
+ USHORT GetCount() const { return USHORT(aList.Count()); }
+ // Beim Insert wird dem Objekt (also dem GluePoint) automatisch eine Id zugewiesen.
+ // ReturnCode ist der Index des neuen GluePoints in der Liste
+ USHORT Insert(const SdrGluePoint& rGP);
+ void Delete(USHORT nPos) { delete (SdrGluePoint*)aList.Remove(nPos); }
+ SdrGluePoint& operator[](USHORT nPos) { return *GetObject(nPos); }
+ const SdrGluePoint& operator[](USHORT nPos) const { return *GetObject(nPos); }
+ USHORT FindGluePoint(USHORT nId) const;
+ USHORT HitTest(const Point& rPnt, const OutputDevice& rOut, const SdrObject* pObj, FASTBOOL bBack=FALSE, FASTBOOL bNext=FALSE, USHORT nId0=0) const;
+ void Invalidate(Window& rWin, const SdrObject* pObj) const;
+ // Temporaer zu setzen fuer Transformationen am Bezugsobjekt
+ void SetReallyAbsolute(FASTBOOL bOn, const SdrObject& rObj);
+ void Rotate(const Point& rRef, long nWink, double sn, double cs, const SdrObject* pObj);
+ void Mirror(const Point& rRef1, const Point& rRef2, const SdrObject* pObj);
+ void Mirror(const Point& rRef1, const Point& rRef2, long nWink, const SdrObject* pObj);
+ void Shear (const Point& rRef, long nWink, double tn, FASTBOOL bVShear, const SdrObject* pObj);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDGLUE_HXX
+
diff --git a/svx/inc/svx/svdhdl.hxx b/svx/inc/svx/svdhdl.hxx
new file mode 100644
index 000000000000..f96b650d2be4
--- /dev/null
+++ b/svx/inc/svx/svdhdl.hxx
@@ -0,0 +1,534 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDHDL_HXX
+#define _SVDHDL_HXX
+
+#include <tools/gen.hxx>
+
+#ifndef _POINTR_HXX //autogen
+#include <vcl/pointr.hxx>
+#endif
+#include <tools/contnr.hxx>
+
+#ifndef _SOLAR_HRC
+#include <svl/solar.hrc>
+#endif
+
+#include <svx/xpoly.hxx>
+#include <svx/svdoedge.hxx>
+#include <svx/sdr/overlay/overlayobjectlist.hxx>
+#include "svx/svxdllapi.h"
+
+#include <svx/xpoly.hxx>
+#include <svx/svdoedge.hxx>
+
+class VirtualDevice;
+class OutputDevice;
+class Region;
+class Window;
+class SdrHdlList;
+class SdrMarkView;
+class SdrObject;
+class SdrPageView;
+class MouseEvent;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Jedes Objekt muss in der Lage seine Handles zu erzeugen. Diese werden dann
+// bei einer Selektion abgeholt, bei der View angemeldet und sichtbar gemacht.
+// Wird ein Handle von der Maus beruehrt (IsHit()), so wird von der View der
+// entsprechende Mauszeiger vom Handle abgeholt und der App auf Anfrage zum
+// reinschalten uebergeben.
+// Handles wie z.B. der Rotationsmittelpunkt oder die Spiegelachse werden von
+// der View generiert, wenn vom Controller der entsprechende Transformations-
+// Modus selektiert wird.
+// HDL_MOVE...HDL_LWRGT muessen im enum immer zusammen stehen bleiben!
+
+enum SdrHdlKind
+{
+ HDL_MOVE, // Handle zum Verschieben des Objekts
+ HDL_UPLFT, // Oben links
+ HDL_UPPER, // Oben
+ HDL_UPRGT, // Oben rechts
+ HDL_LEFT, // Links
+ HDL_RIGHT, // Rechts
+ HDL_LWLFT, // Unten links
+ HDL_LOWER, // Unten
+ HDL_LWRGT, // Unten rechts
+ HDL_POLY, // Punktselektion an Polygon oder Bezierkurve
+ HDL_BWGT, // Gewicht an einer Bezierkurve
+ HDL_CIRC, // Winkel an Kreissegmenten, Eckenradius am Rect
+ HDL_REF1, // Referenzpunkt 1, z.B. Rotationsmitte
+ HDL_REF2, // Referenzpunkt 2, z.B. Endpunkt der Spiegelachse
+ HDL_MIRX, // Die Spiegelachse selbst
+ HDL_GLUE, // GluePoint
+ HDL_ANCHOR, // anchor symbol (SD, SW)
+ HDL_TRNS, // interactive transparence
+ HDL_GRAD, // interactive gradient
+ HDL_COLR, // interactive color
+ HDL_USER,
+ HDL_ANCHOR_TR, // #101688# Anchor handle with (0,0) at top right for SW
+
+ // for SJ and the CustomShapeHandles:
+ HDL_CUSTOMSHAPE1,
+
+ HDL_SMARTTAG
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+enum BitmapColorIndex
+{
+ LightGreen,
+ Cyan,
+ LightCyan,
+ Red,
+ LightRed,
+ Yellow
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+enum BitmapMarkerKind
+{
+ Rect_7x7,
+ Rect_9x9,
+ Rect_11x11,
+ Rect_13x13,
+ Circ_7x7,
+ Circ_9x9,
+ Circ_11x11,
+ Elli_7x9,
+ Elli_9x11,
+ Elli_9x7,
+ Elli_11x9,
+ RectPlus_7x7,
+ RectPlus_9x9,
+ RectPlus_11x11,
+ Crosshair,
+ Glue,
+ Anchor,
+
+ // #98388# add AnchorPressed to be able to aninate anchor control, too.
+ AnchorPressed,
+
+ // #101688# AnchorTR for SW
+ AnchorTR,
+ AnchorPressedTR,
+
+ // for SJ and the CustomShapeHandles:
+ Customshape1
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrHdl
+{
+ friend class SdrMarkView; // fuer den Zugriff auf nObjHdlNum
+ friend class SdrHdlList;
+
+ // #101928#
+ BitmapEx ImpGetBitmapEx(BitmapMarkerKind eKindOfMarker, sal_uInt16 nInd, sal_Bool bFine, sal_Bool bIsHighContrast);
+
+protected:
+ SdrObject* pObj; // Gehoert das Handle zu einem Objekt?
+ SdrPageView* pPV; // Gehoert das Handle zu einem Objekt in einer bestimmten PageView?
+ SdrHdlList* pHdlList; // Zum Feststelen der Handlegroesse
+
+ // OVERLAYMANAGER
+ ::sdr::overlay::OverlayObjectList maOverlayGroup;
+
+ Point aPos;
+
+ SdrHdlKind eKind;
+
+ long nDrehWink; // Handles bzw. Mauszeiger drehen
+ sal_uInt32 nObjHdlNum; // wird von der MarkView benoetigt
+ sal_uInt32 nPolyNum; // Polygonpunktes
+ sal_uInt32 nPPntNum; // Punktnummer des Polygons
+ sal_uInt32 nSourceHdlNum; // ist noch vollstaendig zu implementieren
+
+ unsigned bSelect : 1; // Ein selektierter Polygonpunkt?
+ unsigned b1PixMore : 1; // True=Handle wird 1 Pixel groesser dargestellt
+ unsigned bPlusHdl : 1; // u.a. fuer Hld-Paint Optimierung bei MarkPoint/UnmarkPoint, ...
+
+ bool mbMoveOutside; // forces this handle to be moved outside of the selection rectangle
+
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+ // cleanup marker if one exists
+ void GetRidOfIAObject();
+
+private:
+ bool mbMouseOver; // is true if the mouse is over this handle
+
+protected:
+ ::sdr::overlay::OverlayObject* CreateOverlayObject(
+ const basegfx::B2DPoint& rPos,
+ BitmapColorIndex eColIndex, BitmapMarkerKind eKindOfMarker, Point aMoveOutsideOffset = Point());
+ BitmapMarkerKind GetNextBigger(BitmapMarkerKind eKnd) const;
+
+public:
+ SdrHdl();
+ SdrHdl(const Point& rPnt, SdrHdlKind eNewKind=HDL_MOVE);
+ virtual ~SdrHdl();
+
+ const ::sdr::overlay::OverlayObjectList& getOverlayObjectList() const { return maOverlayGroup; }
+
+ void SetHdlList(SdrHdlList* pList);
+ SdrHdlKind GetKind() const { return eKind; }
+ void Touch();
+
+ const Point& GetPos() const { return aPos; }
+ void SetPos(const Point& rPnt);
+
+ SdrPageView* GetPageView() const { return pPV; }
+ void SetPageView(SdrPageView* pNewPV) { pPV=pNewPV; }
+
+ SdrObject* GetObj() const { return pObj; }
+ void SetObj(SdrObject* pNewObj);
+
+ BOOL IsSelected() const { return bSelect; }
+ void SetSelected(BOOL bJa=TRUE);
+
+ void Set1PixMore(BOOL bJa=TRUE);
+ void SetDrehWink(long n);
+
+ BOOL IsCornerHdl() const { return eKind==HDL_UPLFT || eKind==HDL_UPRGT || eKind==HDL_LWLFT || eKind==HDL_LWRGT; }
+ BOOL IsVertexHdl() const { return eKind==HDL_UPPER || eKind==HDL_LOWER || eKind==HDL_LEFT || eKind==HDL_RIGHT; }
+
+ void SetObjHdlNum(sal_uInt32 nNum) { nObjHdlNum=nNum; }
+ sal_uInt32 GetObjHdlNum() const { return nObjHdlNum; }
+
+ void SetPolyNum(sal_uInt32 nNum) { nPolyNum=nNum; }
+ sal_uInt32 GetPolyNum() const { return nPolyNum; }
+
+ void SetPointNum(sal_uInt32 nNum) { nPPntNum=nNum; }
+ sal_uInt32 GetPointNum() const { return nPPntNum; }
+
+ void SetPlusHdl(BOOL bOn) { bPlusHdl=bOn; }
+ BOOL IsPlusHdl() const { return bPlusHdl; }
+
+ void SetSourceHdlNum(sal_uInt32 nNum) { nSourceHdlNum=nNum; }
+ sal_uInt32 GetSourceHdlNum() const { return nSourceHdlNum; }
+
+ virtual Pointer GetPointer() const;
+ bool IsHdlHit(const Point& rPnt) const;
+
+ // #97016# II
+ virtual BOOL IsFocusHdl() const;
+
+ void SetMoveOutside( bool bMoveOutside );
+
+ /** is called when the mouse enters the area of this handle. If the handle changes his
+ visualisation during mouse over it must override this method and call Touch(). */
+ virtual void onMouseEnter(const MouseEvent& rMEvt);
+
+ /** is called when the mouse leaves the area of this handle. If the handle changes his
+ visualisation during mouse over it must override this method and call Touch(). */
+ virtual void onMouseLeave();
+
+ bool isMouseOver() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define SDR_HANDLE_COLOR_SIZE_NORMAL Size(13, 13)
+#define SDR_HANDLE_COLOR_SIZE_SELECTED Size(17, 17)
+
+class SVX_DLLPUBLIC SdrHdlColor : public SdrHdl
+{
+private:
+ // size of colr markers
+ Size aMarkerSize;
+
+ // color
+ Color aMarkerColor;
+
+ // callback link when value changed
+ Link aColorChangeHdl;
+
+ // use luminance values only
+ unsigned bUseLuminance : 1;
+
+ // create marker for this kind
+ SVX_DLLPRIVATE virtual void CreateB2dIAObject();
+
+ // help functions
+ SVX_DLLPRIVATE Bitmap CreateColorDropper(Color aCol);
+ SVX_DLLPRIVATE Color GetLuminance(const Color& rCol);
+ SVX_DLLPRIVATE void CallColorChangeLink();
+
+public:
+ SdrHdlColor(const Point& rRef, Color aCol = Color(COL_BLACK), const Size& rSize = Size(11, 11), BOOL bLum = FALSE);
+ virtual ~SdrHdlColor();
+
+ BOOL IsUseLuminance() const { return bUseLuminance; }
+
+ Color GetColor() const { return aMarkerColor; }
+ void SetColor(Color aNew, BOOL bCallLink = FALSE);
+
+ const Size& GetSize() const { return aMarkerSize; }
+ void SetSize(const Size& rNew);
+
+ void SetColorChangeHdl(const Link& rLink) { aColorChangeHdl = rLink; }
+ const Link& GetColorChangeHdl() const { return aColorChangeHdl; }
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SdrHdlGradient : public SdrHdl
+{
+private:
+ // pointer to used color handles
+ SdrHdlColor* pColHdl1;
+ SdrHdlColor* pColHdl2;
+
+ // 2nd position
+ Point a2ndPos;
+
+ // is this a gradient or a transparence
+ unsigned bGradient : 1;
+
+ // select which handle to move
+ unsigned bMoveSingleHandle : 1;
+ unsigned bMoveFirstHandle : 1;
+
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+public:
+ SdrHdlGradient(const Point& rRef1, const Point& rRef2, BOOL bGrad = TRUE);
+ virtual ~SdrHdlGradient();
+
+ BOOL IsGradient() const { return bGradient; }
+
+ // set the associated color handles
+ void SetColorHandles(SdrHdlColor* pL1, SdrHdlColor* pL2) { pColHdl1 = pL1; pColHdl2 = pL2; }
+ SdrHdlColor* GetColorHdl1() const { return pColHdl1; }
+ SdrHdlColor* GetColorHdl2() const { return pColHdl2; }
+
+ const Point& Get2ndPos() const { return a2ndPos; }
+ void Set2ndPos(const Point& rPnt);
+
+ // the link called by the color handles
+ DECL_LINK(ColorChangeHdl, SdrHdl*);
+
+ // transformation call, create gradient from this handle
+ void FromIAOToItem(SdrObject* pObj, BOOL bSetItemOnObject, BOOL bUndo);
+
+ // selection flags for interaction
+ BOOL IsMoveSingleHandle() const { return bMoveSingleHandle; }
+ void SetMoveSingleHandle(BOOL bNew) { bMoveSingleHandle = bNew; }
+ BOOL IsMoveFirstHandle() const { return bMoveFirstHandle; }
+ void SetMoveFirstHandle(BOOL bNew) { bMoveFirstHandle = bNew; }
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Spiegelachse
+class SdrHdlLine: public SdrHdl
+{
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+protected:
+ SdrHdl* pHdl1;
+ SdrHdl* pHdl2;
+
+public:
+ SdrHdlLine(SdrHdl& rHdl1, SdrHdl& rHdl2, SdrHdlKind eNewKind=HDL_MIRX) { eKind=eNewKind; pHdl1=&rHdl1; pHdl2=&rHdl2; }
+ virtual ~SdrHdlLine();
+
+ virtual Pointer GetPointer() const;
+};
+
+// Ein SdrHdlBezWgt hat Kenntnis von seinem "BasisHandle". Seine Draw-Methode
+// zeichnet zusaetzlich eine Linie von seiner Position zur Position dieses
+// BasisHandles.
+class SdrHdlBezWgt: public SdrHdl
+{
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+protected:
+ const SdrHdl* pHdl1;
+
+public:
+ // das ist kein Copy-Ctor!!!
+ SdrHdlBezWgt(const SdrHdl* pRefHdl1, SdrHdlKind eNewKind=HDL_BWGT) { eKind=eNewKind; pHdl1=pRefHdl1; }
+ virtual ~SdrHdlBezWgt();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class E3dVolumeMarker : public SdrHdl
+{
+ basegfx::B2DPolyPolygon aWireframePoly;
+
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+public:
+ E3dVolumeMarker(const basegfx::B2DPolyPolygon& rWireframePoly);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class ImpEdgeHdl: public SdrHdl
+{
+ SdrEdgeLineCode eLineCode;
+
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+public:
+ ImpEdgeHdl(const Point& rPnt, SdrHdlKind eNewKind): SdrHdl(rPnt,eNewKind),eLineCode(MIDDLELINE) {}
+ virtual ~ImpEdgeHdl();
+
+ void SetLineCode(SdrEdgeLineCode eCode);
+ SdrEdgeLineCode GetLineCode() const { return eLineCode; }
+ BOOL IsHorzDrag() const;
+ virtual Pointer GetPointer() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class ImpMeasureHdl: public SdrHdl
+{
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+public:
+ ImpMeasureHdl(const Point& rPnt, SdrHdlKind eNewKind): SdrHdl(rPnt,eNewKind) {}
+ virtual ~ImpMeasureHdl();
+
+ virtual Pointer GetPointer() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class ImpTextframeHdl: public SdrHdl
+{
+ const Rectangle maRect;
+
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+public:
+ explicit ImpTextframeHdl(const Rectangle& rRect);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// #97016# II
+class ImplHdlListData;
+
+class SVX_DLLPUBLIC SdrHdlList
+{
+protected:
+ ULONG mnFocusIndex;
+ SdrMarkView* pView;
+ Container aList;
+ USHORT nHdlSize;
+
+ unsigned bRotateShear : 1;
+ unsigned bDistortShear : 1;
+ unsigned bMoveOutside : 1; // Handles nach aussen ruecken (fuer TextEdit)
+ unsigned bFineHandles : 1;
+
+private:
+ SVX_DLLPRIVATE SdrHdlList(const SdrHdlList&): aList(1024,64,64) {}
+ SVX_DLLPRIVATE void operator=(const SdrHdlList&) {}
+ SVX_DLLPRIVATE BOOL operator==(const SdrHdlList&) const { return FALSE; }
+ SVX_DLLPRIVATE BOOL operator!=(const SdrHdlList&) const { return FALSE; }
+
+public:
+ SdrHdlList(SdrMarkView* pV);
+ ~SdrHdlList();
+ void Clear();
+
+ // #97016# II
+ void TravelFocusHdl(sal_Bool bForward);
+ SdrHdl* GetFocusHdl() const;
+ void SetFocusHdl(SdrHdl* pNew);
+ void ResetFocusHdl();
+
+ // Access to View
+ SdrMarkView* GetView() const;
+
+ // Sortierung: 1.Level Erst Refpunkt-Handles, dann normale Handles, dann Glue, dann User, dann Plushandles
+ // 2.Level PageView (Pointer)
+ // 3.Level Position (x+y)
+ void Sort();
+ ULONG GetHdlCount() const { return aList.Count(); }
+ SdrHdl* GetHdl(ULONG nNum) const { return (SdrHdl*)(aList.GetObject(nNum)); }
+ ULONG GetHdlNum(const SdrHdl* pHdl) const;
+ void SetHdlSize(USHORT nSiz);
+ USHORT GetHdlSize() const { return nHdlSize; }
+ void SetMoveOutside(BOOL bOn);
+ BOOL IsMoveOutside() const { return bMoveOutside; }
+ void SetRotateShear(BOOL bOn);
+ BOOL IsRotateShear() const { return bRotateShear; }
+ void SetDistortShear(BOOL bOn);
+ BOOL IsDistortShear() const { return bDistortShear; }
+ void SetFineHdl(BOOL bOn);
+ BOOL IsFineHdl() const { return bFineHandles; }
+
+ // AddHdl uebernimmt das Handle in sein Eigentum. Es muss
+ // also auf dem Heap stehen, da Clear() ein delete macht.
+ void AddHdl(SdrHdl* pHdl, BOOL bAtBegin=FALSE);
+ SdrHdl* RemoveHdl(ULONG nNum);
+
+ // Zuletzt eingefuegte Handles werden am ehesten getroffen
+ // (wenn Handles uebereinander liegen).
+ SdrHdl* IsHdlListHit(const Point& rPnt, BOOL bBack=FALSE, BOOL bNext=FALSE, SdrHdl* pHdl0=NULL) const;
+ SdrHdl* GetHdl(SdrHdlKind eKind1) const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrCropHdl : public SdrHdl
+{
+public:
+ SdrCropHdl(const Point& rPnt, SdrHdlKind eNewKind);
+
+protected:
+ // create marker for this kind
+ virtual void CreateB2dIAObject();
+
+ BitmapEx GetBitmapForHandle( const BitmapEx& rBitmap, int nSize );
+
+ static BitmapEx GetHandlesBitmap( bool bIsFineHdl, bool bIsHighContrast );
+};
+
+#endif //_SVDHDL_HXX
+
diff --git a/svx/inc/svx/svdhlpln.hxx b/svx/inc/svx/svdhlpln.hxx
new file mode 100644
index 000000000000..1d5677ec95f6
--- /dev/null
+++ b/svx/inc/svx/svdhlpln.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDHLPLN_HXX
+#define _SVDHLPLN_HXX
+
+#include <sal/types.h>
+#include <tools/color.hxx>
+#include <tools/gen.hxx>
+
+#ifndef _POINTR_HXX //autogen
+#include <vcl/pointr.hxx>
+#endif
+#include <tools/contnr.hxx>
+#include "svx/svxdllapi.h"
+
+class OutputDevice;
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+enum SdrHelpLineKind {SDRHELPLINE_POINT,SDRHELPLINE_VERTICAL,SDRHELPLINE_HORIZONTAL};
+#define SDRHELPLINE_MIN SDRHELPLINE_POINT
+#define SDRHELPLINE_MAX SDRHELPLINE_HORIZONTAL
+
+#define SDRHELPLINE_POINT_PIXELSIZE 15 /* Tatsaechliche Groesse= PIXELSIZE*2+1 */
+
+class SdrHelpLine {
+ Point aPos; // je nach Wert von eKind ist X oder Y evtl. belanglos
+ SdrHelpLineKind eKind;
+
+ // #i27493#
+ // Helper method to draw a hor or ver two-colored dashed line
+ void ImpDrawDashedTwoColorLine(OutputDevice& rOut, sal_Int32 nStart, sal_Int32 nEnd, sal_Int32 nFixPos,
+ sal_Int32 nStepWidth, Color aColA, Color aColB, sal_Bool bHorizontal) const;
+
+public:
+ SdrHelpLine(SdrHelpLineKind eNewKind=SDRHELPLINE_POINT): eKind(eNewKind) {}
+ SdrHelpLine(SdrHelpLineKind eNewKind, const Point& rNewPos): aPos(rNewPos), eKind(eNewKind) {}
+ bool operator==(const SdrHelpLine& rCmp) const { return aPos==rCmp.aPos && eKind==rCmp.eKind; }
+ bool operator!=(const SdrHelpLine& rCmp) const { return !operator==(rCmp); }
+
+ void SetKind(SdrHelpLineKind eNewKind) { eKind=eNewKind; }
+ SdrHelpLineKind GetKind() const { return eKind; }
+ void SetPos(const Point& rPnt) { aPos=rPnt; }
+ const Point& GetPos() const { return aPos; }
+
+ Pointer GetPointer() const;
+ FASTBOOL IsHit(const Point& rPnt, USHORT nTolLog, const OutputDevice& rOut) const;
+ // OutputDevice wird benoetigt, da Fangpunkte eine feste Pixelgroesse haben
+ Rectangle GetBoundRect(const OutputDevice& rOut) const;
+
+ /* returns true if this and the given help line would be rendered at the same pixel position
+ of the given OutputDevice. This can be used to avoid drawing multiple help lines with xor
+ on same position which could render them invisible */
+ bool IsVisibleEqual( const SdrHelpLine& rHelpLine, const OutputDevice& rOut ) const;
+};
+
+#define SDRHELPLINE_NOTFOUND 0xFFFF
+
+class SVX_DLLPUBLIC SdrHelpLineList {
+ Container aList;
+protected:
+ SdrHelpLine* GetObject(USHORT i) const { return (SdrHelpLine*)(aList.GetObject(i)); }
+public:
+ SdrHelpLineList(): aList(1024,4,4) {}
+ SdrHelpLineList(const SdrHelpLineList& rSrcList): aList(1024,4,4) { *this=rSrcList; }
+ ~SdrHelpLineList() { Clear(); }
+ void Clear();
+ void operator=(const SdrHelpLineList& rSrcList);
+ bool operator==(const SdrHelpLineList& rCmp) const;
+ bool operator!=(const SdrHelpLineList& rCmp) const { return !operator==(rCmp); }
+ USHORT GetCount() const { return USHORT(aList.Count()); }
+ void Insert(const SdrHelpLine& rHL, USHORT nPos=0xFFFF) { aList.Insert(new SdrHelpLine(rHL),nPos); }
+ void Delete(USHORT nPos) { delete (SdrHelpLine*)aList.Remove(nPos); } // #i24900#
+ void Move(USHORT nPos, USHORT nNewPos) { aList.Insert(aList.Remove(nPos),nNewPos); }
+ SdrHelpLine& operator[](USHORT nPos) { return *GetObject(nPos); }
+ const SdrHelpLine& operator[](USHORT nPos) const { return *GetObject(nPos); }
+ USHORT HitTest(const Point& rPnt, USHORT nTolLog, const OutputDevice& rOut) const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDHLPLN_HXX
+
diff --git a/svx/inc/svx/svdlayer.hxx b/svx/inc/svx/svdlayer.hxx
new file mode 100644
index 000000000000..492df9a12212
--- /dev/null
+++ b/svx/inc/svx/svdlayer.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDLAYER_HXX
+#define _SVDLAYER_HXX
+
+#include <tools/string.hxx>
+#include <tools/stream.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtypes.hxx> // fuer typedef SdrLayerID
+#include "svx/svxdllapi.h"
+
+class SdrModel;
+
+class SVX_DLLPUBLIC SdrLayer
+{
+friend class SdrLayerAdmin;
+protected:
+ String aName;
+ String maTitle;
+ String maDescription;
+ SdrModel* pModel; // zum Broadcasten
+ UINT16 nType; // 0=Userdefined,1=Standardlayer
+ SdrLayerID nID;
+protected:
+ SdrLayer(SdrLayerID nNewID, const String& rNewName) { nID=nNewID; aName=rNewName; nType=0; pModel=NULL; }
+ void SetID(SdrLayerID nNewID) { nID=nNewID; }
+public:
+ SdrLayer(): pModel(NULL),nType(0),nID(0) {}
+ bool operator==(const SdrLayer& rCmpLayer) const;
+ bool operator!=(const SdrLayer& rCmpLayer) const { return !operator==(rCmpLayer); }
+
+ void SetName(const String& rNewName);
+ const String& GetName() const { return aName; }
+
+ void SetTitle(const String& rTitle) { maTitle = rTitle; }
+ const String& GetTitle() const { return maTitle; }
+
+ void SetDescription(const String& rDesc) { maDescription = rDesc; }
+ const String& GetDescription() const { return maDescription; }
+
+ SdrLayerID GetID() const { return nID; }
+ void SetModel(SdrModel* pNewModel) { pModel=pNewModel; }
+ SdrModel* GetModel() const { return pModel; }
+ // Einem SdrLayer kann man sagen dass er ein (der) Standardlayer sein soll.
+ // Es wird dann laenderspeziefisch der passende Name gesetzt. SetName()
+ // setzt das Flag "StandardLayer" ggf. zurueck auf "Userdefined".
+ void SetStandardLayer(FASTBOOL bStd=TRUE);
+ FASTBOOL IsStandardLayer() const { return nType==1; }
+};
+
+// Beim Aendern von Layerdaten muss man derzeit
+// noch selbst das Modify-Flag am Model setzen.
+#define SDRLAYER_MAXCOUNT 255
+class SVX_DLLPUBLIC SdrLayerAdmin {
+friend class SdrView;
+friend class SdrModel;
+friend class SdrPage;
+
+protected:
+ Container aLayer;
+ Container aLSets;
+ SdrLayerAdmin* pParent; // Der Admin der Seite kennt den Admin des Docs
+ SdrModel* pModel; // zum Broadcasten
+ String aControlLayerName;
+protected:
+ // Eine noch nicht verwendete LayerID raussuchen. Sind bereits alle
+ // verbraucht, so gibt's 'ne 0. Wer sicher gehen will, muss vorher
+ // GetLayerCount()<SDRLAYER_MAXCOUNT abfragen, denn sonst sind alle
+ // vergeben.
+ SdrLayerID GetUniqueLayerID() const;
+ void Broadcast() const;
+public:
+ SdrLayerAdmin(SdrLayerAdmin* pNewParent=NULL);
+ SdrLayerAdmin(const SdrLayerAdmin& rSrcLayerAdmin);
+ ~SdrLayerAdmin();
+ const SdrLayerAdmin& operator=(const SdrLayerAdmin& rSrcLayerAdmin);
+ bool operator==(const SdrLayerAdmin& rCmpLayerAdmin) const;
+ bool operator!=(const SdrLayerAdmin& rCmpLayerAdmin) const { return !operator==(rCmpLayerAdmin); }
+ SdrLayerAdmin* GetParent() const { return pParent; }
+ void SetParent(SdrLayerAdmin* pNewParent) { pParent=pNewParent; }
+ void SetModel(SdrModel* pNewModel);
+ SdrModel* GetModel() const { return pModel; }
+ void InsertLayer(SdrLayer* pLayer, USHORT nPos=0xFFFF) { aLayer.Insert(pLayer,nPos); pLayer->SetModel(pModel); Broadcast(); }
+ SdrLayer* RemoveLayer(USHORT nPos);
+ // Alle Layer loeschen
+ void ClearLayer();
+ // Neuer Layer wird angelegt und eingefuegt
+ SdrLayer* NewLayer(const String& rName, USHORT nPos=0xFFFF);
+ void DeleteLayer(SdrLayer* pLayer) { aLayer.Remove(pLayer); delete pLayer; Broadcast(); }
+ void MoveLayer(SdrLayer* pLayer, USHORT nNewPos=0xFFFF);
+ SdrLayer* MoveLayer(USHORT nPos, USHORT nNewPos);
+ // Neuer Layer, Name wird aus der Resource geholt
+ SdrLayer* NewStandardLayer(USHORT nPos=0xFFFF);
+
+ // Iterieren ueber alle Layer
+ USHORT GetLayerCount() const { return USHORT(aLayer.Count()); }
+ SdrLayer* GetLayer(USHORT i) { return (SdrLayer*)(aLayer.GetObject(i)); }
+ const SdrLayer* GetLayer(USHORT i) const { return (SdrLayer*)(aLayer.GetObject(i)); }
+
+ USHORT GetLayerPos(SdrLayer* pLayer) const;
+
+ SdrLayer* GetLayer(const String& rName, FASTBOOL bInherited) { return (SdrLayer*)(((const SdrLayerAdmin*)this)->GetLayer(rName,bInherited)); }
+ const SdrLayer* GetLayer(const String& rName, FASTBOOL bInherited) const;
+ SdrLayerID GetLayerID(const String& rName, FASTBOOL bInherited) const;
+ SdrLayer* GetLayerPerID(USHORT nID) { return (SdrLayer*)(((const SdrLayerAdmin*)this)->GetLayerPerID(nID)); }
+ const SdrLayer* GetLayerPerID(USHORT nID) const;
+
+ void SetControlLayerName(const String& rNewName) { aControlLayerName=rNewName; }
+ const String& GetControlLayerName() const { return aControlLayerName; }
+};
+
+/*
+Anmerkung zu den Layer - Gemischt symbolisch/ID-basierendes Interface
+ Einen neuen Layer macht man sich mit:
+ pLayerAdmin->NewLayer("Der neue Layer");
+ Der Layer wird dann automatisch an das Ende der Liste angehaengt.
+ Entsprechdes gilt fuer Layersets gleichermassen.
+ Das Interface am SdrLayerSet basiert auf LayerID's. Die App muss sich
+ dafuer am SdrLayerAdmin eine ID abholen:
+ SdrLayerID nLayerID=pLayerAdmin->GetLayerID("Der neue Layer");
+ Wird der Layer nicht gefunden, so liefert die Methode SDRLAYER_NOTFOUND
+ zurueck. Die Methoden mit ID-Interface fangen diesen Wert jedoch i.d.R
+ sinnvoll ab.
+ Hat man nicht nur den Namen, sondern gar einen SdrLayer*, so kann man
+ sich die ID natuerlich wesentlich schneller direkt vom Layer abholen.
+bInherited:
+ TRUE: Wird der Layer/LayerSet nicht gefunden, so wird im Parent-LayerAdmin
+ nachgesehen, ob es dort einen entsprechende Definition gibt.
+ FALSE: Es wird nur dieser LayerAdmin durchsucht.
+ Jeder LayerAdmin einer Seite hat einen Parent-LayerAdmin, nämlich den des
+ Model. Das Model selbst hat keinen Parent.
+*/
+
+#endif //_SVDLAYER_HXX
+
diff --git a/svx/inc/svx/svdmark.hxx b/svx/inc/svx/svdmark.hxx
new file mode 100644
index 000000000000..d67704b19c7d
--- /dev/null
+++ b/svx/inc/svx/svdmark.hxx
@@ -0,0 +1,412 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDMARK_HXX
+#define _SVDMARK_HXX
+
+#include <tools/contnr.hxx>
+#include <tools/string.hxx>
+#include <tools/list.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/sdrobjectuser.hxx>
+
+#include <set>
+
+class Rectangle;
+class SdrPage;
+class SdrObjList;
+class SdrObject;
+class SdrPageView;
+
+// Ein Container fuer USHORTs (im Prinzip ein dynamisches Array)
+class SVX_DLLPUBLIC SdrUShortCont
+{
+ Container maArray;
+ sal_Bool mbSorted;
+
+private:
+ void CheckSort(ULONG nPos);
+
+public:
+ SdrUShortCont(sal_uInt16 nBlock, sal_uInt16 nInit, sal_uInt16 nResize)
+ : maArray(nBlock, nInit, nResize),
+ mbSorted(sal_True)
+ {}
+
+ SdrUShortCont(const SdrUShortCont& rCont)
+ : maArray(rCont.maArray),
+ mbSorted(rCont.mbSorted)
+ {}
+
+ /** helper to migrate to stl containers */
+ std::set< sal_uInt16 > getContainer();
+
+ SdrUShortCont& operator=(const SdrUShortCont& rCont)
+ {
+ maArray = rCont.maArray;
+ mbSorted = rCont.mbSorted;
+ return *this;
+ }
+
+ sal_Bool operator==(const SdrUShortCont& rCont) const
+ {
+ return maArray == rCont.maArray;
+ }
+
+ sal_Bool operator!=(const SdrUShortCont& rCont) const
+ {
+ return maArray != rCont.maArray;
+ }
+
+ void Clear()
+ {
+ maArray.Clear();
+ mbSorted = sal_True;
+ }
+
+ void Sort() const;
+
+ void ForceSort() const
+ {
+ if(!mbSorted)
+ {
+ Sort();
+ }
+ }
+
+ void Insert(sal_uInt16 nElem, ULONG nPos = CONTAINER_APPEND)
+ {
+ maArray.Insert((void*)ULONG(nElem),nPos);
+
+ if(mbSorted)
+ {
+ CheckSort(nPos);
+ }
+ }
+
+ void Remove(ULONG nPos)
+ {
+ maArray.Remove(nPos);
+ }
+
+ void Replace(sal_uInt16 nElem, ULONG nPos)
+ {
+ maArray.Replace((void*)ULONG(nElem), nPos);
+
+ if(mbSorted)
+ {
+ CheckSort(nPos);
+ }
+ }
+
+ sal_uInt16 GetObject(ULONG nPos) const
+ {
+ return sal_uInt16(sal_uIntPtr(maArray.GetObject(nPos)));
+ }
+
+ ULONG GetPos(sal_uInt16 nElem) const
+ {
+ return maArray.GetPos((void*)(ULONG)nElem);
+ }
+
+ ULONG GetCount() const
+ {
+ return maArray.Count();
+ }
+
+ sal_Bool Exist(sal_uInt16 nElem) const
+ {
+ return (CONTAINER_ENTRY_NOTFOUND != maArray.GetPos((void*)(ULONG)nElem));
+ }
+};
+
+// Alles was eine View ueber ein markiertes Objekt wissen muss
+class SVX_DLLPUBLIC SdrMark : public sdr::ObjectUser
+{
+protected:
+ SdrObject* mpSelectedSdrObject; // the seleceted object
+ SdrPageView* mpPageView;
+ SdrUShortCont* mpPoints; // Markierte Punkte
+ SdrUShortCont* mpLines; // Markierte Linienabschnitte
+ SdrUShortCont* mpGluePoints; // Markierte Klebepunkte (deren Id's)
+ sal_Bool mbCon1; // fuer Connectoren
+ sal_Bool mbCon2; // fuer Connectoren
+ sal_uInt16 mnUser; // z.B. fuer CopyObjects, mitkopieren von Edges
+
+public:
+ SdrMark(SdrObject* pNewObj = 0L, SdrPageView* pNewPageView = 0L);
+ SdrMark(const SdrMark& rMark);
+ virtual ~SdrMark();
+
+ // derived from ObjectUser
+ virtual void ObjectInDestruction(const SdrObject& rObject);
+
+ SdrMark& operator=(const SdrMark& rMark);
+ sal_Bool operator==(const SdrMark& rMark) const;
+ sal_Bool operator!=(const SdrMark& rMark) const
+ {
+ return !(operator==(rMark));
+ }
+
+ void SetMarkedSdrObj(SdrObject* pNewObj);
+ SdrObject* GetMarkedSdrObj() const;
+
+ SdrPage* GetPage() const;
+ SdrObjList* GetObjList() const;
+ SdrPageView* GetPageView() const
+ {
+ return mpPageView;
+ }
+
+ void SetPageView(SdrPageView* pNewPageView)
+ {
+ mpPageView = pNewPageView;
+ }
+
+ void SetCon1(sal_Bool bOn)
+ {
+ mbCon1 = bOn;
+ }
+
+ sal_Bool IsCon1() const
+ {
+ return mbCon1;
+ }
+
+ void SetCon2(sal_Bool bOn)
+ {
+ mbCon2 = bOn;
+ }
+
+ sal_Bool IsCon2() const
+ {
+ return mbCon2;
+ }
+
+ void SetUser(sal_uInt16 nVal)
+ {
+ mnUser = nVal;
+ }
+
+ sal_uInt16 GetUser() const
+ {
+ return mnUser;
+ }
+
+ const SdrUShortCont* GetMarkedPoints() const
+ {
+ return mpPoints;
+ }
+
+ const SdrUShortCont* GetMarkedLines() const
+ {
+ return mpLines;
+ }
+
+ const SdrUShortCont* GetMarkedGluePoints() const
+ {
+ return mpGluePoints;
+ }
+
+ SdrUShortCont* GetMarkedPoints()
+ {
+ return mpPoints;
+ }
+
+ SdrUShortCont* GetMarkedLines()
+ {
+ return mpLines;
+ }
+
+ SdrUShortCont* GetMarkedGluePoints()
+ {
+ return mpGluePoints;
+ }
+
+ SdrUShortCont* ForceMarkedPoints()
+ {
+ if(!mpPoints)
+ mpPoints = new SdrUShortCont(1024, 32, 32);
+
+ return mpPoints;
+ }
+
+ SdrUShortCont* ForceMarkedLines()
+ {
+ if(!mpLines)
+ mpLines = new SdrUShortCont(1024, 32, 32);
+
+ return mpLines;
+ }
+
+ SdrUShortCont* ForceMarkedGluePoints()
+ {
+ if(!mpGluePoints)
+ mpGluePoints = new SdrUShortCont(1024, 32, 32);
+
+ return mpGluePoints;
+ }
+};
+
+class SVX_DLLPUBLIC SdrMarkList
+{
+protected:
+ Container maList;
+
+ String maMarkName;
+ String maPointName;
+ String maGluePointName;
+
+ sal_Bool mbPointNameOk;
+ sal_Bool mbGluePointNameOk;
+ sal_Bool mbNameOk;
+ sal_Bool mbSorted;
+
+private:
+ SVX_DLLPRIVATE sal_Bool operator==(const SdrMarkList& rCmpMarkList) const;
+ SVX_DLLPRIVATE void ImpForceSort();
+
+private:
+ SVX_DLLPRIVATE const XubString& GetPointMarkDescription(sal_Bool bGlue) const;
+
+public:
+ SdrMarkList()
+ : maList(1024, 64, 64),
+ mbPointNameOk(sal_False),
+ mbGluePointNameOk(sal_False),
+ mbNameOk(sal_False),
+ mbSorted(sal_True)
+ {
+ }
+
+ SdrMarkList(const SdrMarkList& rLst)
+ : maList(1024, 64, 64)
+ {
+ *this = rLst;
+ }
+
+ ~SdrMarkList()
+ {
+ Clear();
+ }
+
+ void Clear();
+ void ForceSort() const;
+ void SetUnsorted()
+ {
+ mbSorted = sal_False;
+ }
+
+ ULONG GetMarkCount() const
+ {
+ return maList.Count();
+ }
+
+ SdrMark* GetMark(ULONG nNum) const
+ {
+ return (SdrMark*)(maList.GetObject(nNum));
+ }
+
+ ULONG FindObject(const SdrObject* pObj) const;
+ void InsertEntry(const SdrMark& rMark, sal_Bool bChkSort = sal_True);
+ void DeleteMark(ULONG nNum);
+ void ReplaceMark(const SdrMark& rNewMark, ULONG nNum);
+ void Merge(const SdrMarkList& rSrcList, sal_Bool bReverse = sal_False);
+ sal_Bool DeletePageView(const SdrPageView& rPV);
+ sal_Bool InsertPageView(const SdrPageView& rPV);
+
+ void SetNameDirty()
+ {
+ mbNameOk = sal_False;
+ mbPointNameOk = sal_False;
+ mbGluePointNameOk = sal_False;
+ }
+
+ // Eine verbale Beschreibung der markierten Objekte z.B.:
+ // "27 Linien", "12 Objekte", "Polygon" oder auch "Kein Objekt"
+ const String& GetMarkDescription() const;
+ const String& GetPointMarkDescription() const
+ {
+ return GetPointMarkDescription(sal_False);
+ }
+
+ const String& GetGluePointMarkDescription() const
+ {
+ return GetPointMarkDescription(sal_True);
+ }
+
+ // pPage=0L: Die Markierungen aller! Seiten beruecksichtigen
+ sal_Bool TakeBoundRect(SdrPageView* pPageView, Rectangle& rRect) const;
+ sal_Bool TakeSnapRect(SdrPageView* pPageView, Rectangle& rRect) const;
+
+ // Es werden saemtliche Entries kopiert!
+ void operator=(const SdrMarkList& rLst);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// migrate selections
+
+namespace sdr
+{
+ class SVX_DLLPUBLIC ViewSelection
+ {
+ SdrMarkList maMarkedObjectList;
+ SdrMarkList maEdgesOfMarkedNodes;
+ SdrMarkList maMarkedEdgesOfMarkedNodes;
+ List maAllMarkedObjects;
+
+ // bitfield
+ unsigned mbEdgesOfMarkedNodesDirty : 1;
+
+ SVX_DLLPRIVATE void ImpForceEdgesOfMarkedNodes();
+ SVX_DLLPRIVATE void ImplCollectCompleteSelection(SdrObject* pObj);
+
+ public:
+ ViewSelection();
+
+ void SetEdgesOfMarkedNodesDirty();
+
+ const SdrMarkList& GetMarkedObjectList() const
+ {
+ return maMarkedObjectList;
+ }
+
+ const SdrMarkList& GetEdgesOfMarkedNodes() const;
+ const SdrMarkList& GetMarkedEdgesOfMarkedNodes() const;
+ const List& GetAllMarkedObjects() const;
+
+ SdrMarkList& GetMarkedObjectListWriteAccess()
+ {
+ return maMarkedObjectList;
+ }
+ };
+} // end of namespace sdr
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDMARK_HXX
+// eof
diff --git a/svx/inc/svx/svdmodel.hxx b/svx/inc/svx/svdmodel.hxx
new file mode 100644
index 000000000000..fc8d401f94e7
--- /dev/null
+++ b/svx/inc/svx/svdmodel.hxx
@@ -0,0 +1,767 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDMODEL_HXX
+#define _SVDMODEL_HXX
+
+#include <com/sun/star/uno/Sequence.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <sot/storage.hxx>
+#include <tools/link.hxx>
+#include <tools/contnr.hxx>
+#include <tools/weakbase.hxx>
+#include <vcl/mapmod.hxx>
+#include <svl/brdcst.hxx>
+#include <tools/string.hxx>
+#include <tools/datetime.hxx>
+#include <svl/hint.hxx>
+
+#include <svl/style.hxx>
+#include <svx/pageitem.hxx>
+#include <vcl/field.hxx>
+
+#include <boost/shared_ptr.hpp>
+
+class OutputDevice;
+#include <svx/svdtypes.hxx> // fuer enum RepeatFuncts
+#include <vcl/field.hxx>
+#include "svx/svxdllapi.h"
+
+#include <vos/ref.hxx>
+
+#if defined(UNX) || defined(WIN) || defined(WNT)
+#define DEGREE_CHAR ((sal_Unicode)176) /* 0xB0 = Ansi */
+#endif
+
+#if defined(DOS) || defined(OS2)
+#define DEGREE_CHAR ((sal_Unicode)248) /* 0xF8 = IBM PC (Erw. ASCII) */
+#endif
+
+#ifndef DEGREE_CHAR
+#error unbekannte Plattrorm
+#endif
+
+class SdrOutliner;
+class SdrLayerAdmin;
+class SdrObjList;
+class SdrObject;
+class SdrPage;
+class SdrPageView;
+class SdrTextObj;
+class SdrUndoAction;
+class SdrUndoGroup;
+class AutoTimer;
+class SfxItemPool;
+class SfxItemSet;
+class SfxRepeatTarget;
+class SfxStyleSheet;
+class SfxUndoAction;
+class SfxUndoManager;
+class XBitmapList;
+class XBitmapTable;
+class XColorTable;
+class XDashList;
+class XDashTable;
+class XGradientList;
+class XGradientTable;
+class XHatchList;
+class XHatchTable;
+class XLineEndList;
+class XLineEndTable;
+class SvxForbiddenCharactersTable;
+class SvNumberFormatter;
+class SotStorage;
+class SdrOutlinerCache;
+class SotStorageRef;
+class SdrUndoFactory;
+namespace comphelper{
+ class IEmbeddedHelper;
+}
+namespace sfx2{
+ class LinkManager;
+}
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define SDR_SWAPGRAPHICSMODE_NONE 0x00000000
+#define SDR_SWAPGRAPHICSMODE_TEMP 0x00000001
+#define SDR_SWAPGRAPHICSMODE_DOC 0x00000002
+#define SDR_SWAPGRAPHICSMODE_PURGE 0x00000100
+#define SDR_SWAPGRAPHICSMODE_DEFAULT (SDR_SWAPGRAPHICSMODE_TEMP|SDR_SWAPGRAPHICSMODE_DOC|SDR_SWAPGRAPHICSMODE_PURGE)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+enum SdrHintKind
+{
+ HINT_UNKNOWN, // Unbekannt
+ HINT_LAYERCHG, // Layerdefinition geaendert
+ HINT_LAYERORDERCHG, // Layerreihenfolge geaendert (Insert/Remove/ChangePos)
+ HINT_PAGEORDERCHG, // Reihenfolge der Seiten (Zeichenseiten oder Masterpages) geaendert (Insert/Remove/ChangePos)
+ HINT_OBJCHG, // Objekt geaendert
+ HINT_OBJINSERTED, // Neues Zeichenobjekt eingefuegt
+ HINT_OBJREMOVED, // Zeichenobjekt aus Liste entfernt
+ HINT_MODELCLEARED, // gesamtes Model geloescht (keine Pages mehr da). not impl.
+ HINT_REFDEVICECHG, // RefDevice geaendert
+ HINT_DEFAULTTABCHG, // Default Tabulatorweite geaendert
+ HINT_DEFFONTHGTCHG, // Default FontHeight geaendert
+ HINT_MODELSAVED, // Dokument wurde gesichert
+ HINT_SWITCHTOPAGE, // #94278# UNDO/REDO at an object evtl. on another page
+ HINT_BEGEDIT, // Is called after the object has entered text edit mode
+ HINT_ENDEDIT // Is called after the object has left text edit mode
+};
+
+class SVX_DLLPUBLIC SdrHint: public SfxHint
+{
+public:
+ Rectangle maRectangle;
+ const SdrPage* mpPage;
+ const SdrObject* mpObj;
+ const SdrObjList* mpObjList;
+ SdrHintKind meHint;
+
+public:
+ TYPEINFO();
+
+ SdrHint();
+ SdrHint(SdrHintKind eNewHint);
+ SdrHint(const SdrObject& rNewObj);
+ SdrHint(const SdrObject& rNewObj, const Rectangle& rRect);
+
+ void SetPage(const SdrPage* pNewPage);
+ void SetObjList(const SdrObjList* pNewOL);
+ void SetObject(const SdrObject* pNewObj);
+ void SetKind(SdrHintKind eNewKind);
+ void SetRect(const Rectangle& rNewRect);
+
+ const SdrPage* GetPage() const;
+ const SdrObjList* GetObjList() const;
+ const SdrObject* GetObject() const;
+ SdrHintKind GetKind() const;
+ const Rectangle& GetRect() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Flag um nach dem Laden des Pools Aufzuraeumen (d.h. die RefCounts
+// neu zu bestimmen und unbenutztes wegzuwerfen). FALSE == aktiv
+#define LOADREFCOUNTS (FALSE)
+
+struct SdrDocumentStreamInfo
+{
+ FASTBOOL mbDeleteAfterUse;
+ String maUserData;
+ com::sun::star::uno::Reference < com::sun::star::embed::XStorage > mxStorageRef;
+ BOOL mbDummy1 : 1;
+};
+
+struct SdrModelImpl;
+
+class SVX_DLLPUBLIC SdrModel : public SfxBroadcaster, public tools::WeakBase< SdrModel >
+{
+protected:
+ DateTime aReadDate; // Datum des Einstreamens
+ Container maMaPag; // StammSeiten (Masterpages)
+ Container maPages;
+ Link aUndoLink; // Link fuer einen NotifyUndo-Handler
+ Link aIOProgressLink;
+ String aTablePath;
+ Size aMaxObjSize; // z.B. fuer Autogrowing Text
+ Fraction aObjUnit; // Beschreibung der Koordinateneinheiten fuer ClipBoard, Drag&Drop, ...
+ MapUnit eObjUnit; // see above
+ FieldUnit eUIUnit; // Masseinheit, Masstab (z.B. 1/1000) fuer die UI (Statuszeile) wird von ImpSetUIUnit() gesetzt
+ Fraction aUIScale; // see above
+ String aUIUnitStr; // see above
+ Fraction aUIUnitFact; // see above
+ int nUIUnitKomma; // see above
+ FASTBOOL bUIOnlyKomma; // see above
+
+ SdrLayerAdmin* pLayerAdmin;
+ SfxItemPool* pItemPool;
+ FASTBOOL bMyPool; // zum Aufraeumen von pMyPool ab 303a
+ comphelper::IEmbeddedHelper*
+ m_pEmbeddedHelper; // helper for embedded objects to get rid of the SfxObjectShell
+ SdrOutliner* pDrawOutliner; // ein Outliner zur Textausgabe
+ SdrOutliner* pHitTestOutliner;// ein Outliner fuer den HitTest
+ ULONG nDefTextHgt; // Default Texthoehe in logischen Einheiten
+ OutputDevice* pRefOutDev; // ReferenzDevice fuer die EditEngine
+ ULONG nProgressAkt; // fuer den
+ ULONG nProgressMax; // ProgressBar-
+ ULONG nProgressOfs; // -Handler
+ rtl::Reference< SfxStyleSheetBasePool > mxStyleSheetPool;
+ SfxStyleSheet* pDefaultStyleSheet;
+ sfx2::LinkManager* pLinkManager; // LinkManager
+ Container* pUndoStack;
+ Container* pRedoStack;
+ SdrUndoGroup* pAktUndoGroup; // Fuer mehrstufige
+ USHORT nUndoLevel; // Undo-Klammerung
+ bool mbUndoEnabled; // If false no undo is recorded or we are during the execution of an undo action
+ USHORT nProgressPercent; // fuer den ProgressBar-Handler
+ USHORT nLoadVersion; // Versionsnummer der geladenen Datei
+ FASTBOOL bExtColorTable; // Keinen eigenen ColorTable
+ sal_Bool mbChanged;
+ FASTBOOL bInfoChanged;
+ FASTBOOL bPagNumsDirty;
+ FASTBOOL bMPgNumsDirty;
+ FASTBOOL bPageNotValid; // TRUE=Doc ist nur ObjektTraeger. Page ist nicht gueltig.
+ FASTBOOL bSavePortable; // Metafiles portabel speichern
+ FASTBOOL bNoBitmapCaching; // Bitmaps fuer Screenoutput cachen
+ FASTBOOL bReadOnly;
+ FASTBOOL bTransparentTextFrames;
+ FASTBOOL bSaveCompressed;
+ FASTBOOL bSwapGraphics;
+ FASTBOOL bPasteResize; // Objekte werden gerade resized wegen Paste mit anderem MapMode
+ FASTBOOL bSaveOLEPreview; // save preview metafile of OLE objects
+ UINT16 nStreamCompressMode; // Komprimiert schreiben?
+ UINT16 nStreamNumberFormat;
+ UINT16 nDefaultTabulator;
+ UINT32 nMaxUndoCount;
+ FASTBOOL bSaveNative;
+ BOOL bStarDrawPreviewMode;
+
+
+//////////////////////////////////////////////////////////////////////////////
+// sdr::Comment interface
+private:
+ // the next unique comment ID, used for counting added comments. Initialized
+ // to 0. UI shows one more due to the fact that 0 is a no-no for users.
+ sal_uInt32 mnUniqueCommentID;
+
+public:
+ // create a new, unique comment ID
+ sal_uInt32 GetNextUniqueCommentID();
+
+ // get the author name
+ ::rtl::OUString GetDocumentAuthorName() const;
+
+ // for export
+ sal_uInt32 GetUniqueCommentID() const { return mnUniqueCommentID; }
+
+ // for import
+ void SetUniqueCommentID(sal_uInt32 nNewID) { if(nNewID != mnUniqueCommentID) { mnUniqueCommentID = nNewID; } }
+ /** cl: added this for OJ to complete his reporting engine, does not work
+ correctly so only enable it for his model */
+ bool IsAllowShapePropertyChangeListener() const;
+ void SetAllowShapePropertyChangeListener( bool bAllow );
+
+ UINT16 nStarDrawPreviewMasterPageNum;
+ // Reserven fuer kompatible Erweiterungen
+//-/ SfxItemPool* pUndoItemPool;
+ SotStorage* pModelStorage;
+ SvxForbiddenCharactersTable* mpForbiddenCharactersTable;
+ ULONG nSwapGraphicsMode;
+
+ SdrOutlinerCache* mpOutlinerCache;
+ SdrModelImpl* mpImpl;
+ UINT16 mnCharCompressType;
+ UINT16 nReserveUInt5;
+ UINT16 nReserveUInt6;
+ UINT16 nReserveUInt7;
+ FASTBOOL mbModelLocked;
+ FASTBOOL mbKernAsianPunctuation;
+ FASTBOOL mbAddExtLeading;
+ FASTBOOL mbInDestruction;
+
+ // Zeiger auf Paletten, Listen und Tabellen
+ XColorTable* pColorTable;
+ XDashList* pDashList;
+ XLineEndList* pLineEndList;
+ XHatchList* pHatchList;
+ XGradientList* pGradientList;
+ XBitmapList* pBitmapList;
+
+ // New src638: NumberFormatter for drawing layer and
+ // method for getting it. It is constructed on demand
+ // and destroyed when destroying the SdrModel.
+ SvNumberFormatter* mpNumberFormatter;
+public:
+ const SvNumberFormatter& GetNumberFormatter() const;
+protected:
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > createUnoModel();
+
+private:
+ // Nicht implementiert:
+ SVX_DLLPRIVATE SdrModel(const SdrModel& rSrcModel);
+ SVX_DLLPRIVATE void operator=(const SdrModel& rSrcModel);
+ SVX_DLLPRIVATE FASTBOOL operator==(const SdrModel& rCmpModel) const;
+//#if 0 // _SOLAR__PRIVATE
+ SVX_DLLPRIVATE void ImpPostUndoAction(SdrUndoAction* pUndo);
+ SVX_DLLPRIVATE void ImpSetUIUnit();
+ SVX_DLLPRIVATE void ImpSetOutlinerDefaults( SdrOutliner* pOutliner, BOOL bInit = FALSE );
+ SVX_DLLPRIVATE void ImpReformatAllTextObjects();
+ SVX_DLLPRIVATE void ImpReformatAllEdgeObjects(); // #103122#
+ SVX_DLLPRIVATE void ImpCreateTables();
+ SVX_DLLPRIVATE void ImpCtor(SfxItemPool* pPool, ::comphelper::IEmbeddedHelper* pPers, bool bUseExtColorTable,
+ bool bLoadRefCounts = true);
+
+//#endif // __PRIVATE
+
+ // this is a weak reference to a possible living api wrapper for this model
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxUnoModel;
+
+public:
+//#if 0 // _SOLAR__PRIVATE
+ FASTBOOL IsPasteResize() const { return bPasteResize; }
+ void SetPasteResize(FASTBOOL bOn) { bPasteResize=bOn; }
+//#endif // __PRIVATE
+ TYPEINFO();
+ // Steckt man hier seinen eigenen Pool rein, so wird die Klasse auch
+ // Aktionen an ihm vornehmen (Put(),Remove()). Bei Zerstoerung von
+ // SdrModel wird dieser Pool ver delete geloescht!
+ // Gibt man den Konstruktor stattdessen eine NULL mit, so macht sich
+ // die Klasse einen eigenen Pool (SdrItemPool), den sie dann auch im
+ // Destruktor zerstoert.
+ // Bei Verwendung eines eigenen Pools ist darauf zu achten, dass dieser
+ // von SdrItemPool abgeleitet ist, falls man von SdrAttrObj abgeleitete
+ // Zeichenobjekte verwenden moechte. Setzt man degegen nur vom abstrakten
+ // Basisobjekt SdrObject abgeleitete Objekte ein, so ist man frei in der
+ // Wahl des Pools.
+ SdrModel(SfxItemPool* pPool=NULL, ::comphelper::IEmbeddedHelper* pPers=NULL, sal_Bool bLoadRefCounts = LOADREFCOUNTS);
+ SdrModel(const String& rPath, SfxItemPool* pPool=NULL, ::comphelper::IEmbeddedHelper* pPers=NULL, sal_Bool bLoadRefCounts = LOADREFCOUNTS);
+ SdrModel(SfxItemPool* pPool, ::comphelper::IEmbeddedHelper* pPers, FASTBOOL bUseExtColorTable, sal_Bool bLoadRefCounts = LOADREFCOUNTS);
+ SdrModel(const String& rPath, SfxItemPool* pPool, ::comphelper::IEmbeddedHelper* pPers, FASTBOOL bUseExtColorTable, sal_Bool bLoadRefCounts = LOADREFCOUNTS);
+ virtual ~SdrModel();
+ void ClearModel(sal_Bool bCalledFromDestructor);
+
+ // Hier kann man erfragen, ob das Model gerade eingrstreamt wird
+ FASTBOOL IsLoading() const { return sal_False /*BFS01 bLoading */; }
+ // Muss z.B. ueberladen werden, um das Swappen/LoadOnDemand von Grafiken
+ // zu ermoeglichen. Wird rbDeleteAfterUse auf TRUE gesetzt, so wird
+ // die SvStream-Instanz vom Aufrufer nach Gebrauch destruiert.
+ // Wenn diese Methode NULL liefert, wird zum Swappen eine temporaere
+ // Datei angelegt.
+ // Geliefert werden muss der Stream, aus dem das Model geladen wurde
+ // bzw. in den es zuletzt gespeichert wurde.
+ virtual SvStream* GetDocumentStream( SdrDocumentStreamInfo& rStreamInfo ) const;
+ // Die Vorlagenattribute der Zeichenobjekte in harte Attribute verwandeln.
+ void BurnInStyleSheetAttributes();
+ // Wer sich von SdrPage ableitet muss sich auch von SdrModel ableiten
+ // und diese beiden VM AllocPage() und AllocModel() ueberladen...
+ virtual SdrPage* AllocPage(FASTBOOL bMasterPage);
+ virtual SdrModel* AllocModel() const;
+
+ // Aenderungen an den Layern setzen das Modified-Flag und broadcasten am Model!
+ const SdrLayerAdmin& GetLayerAdmin() const { return *pLayerAdmin; }
+ SdrLayerAdmin& GetLayerAdmin() { return *pLayerAdmin; }
+
+ const SfxItemPool& GetItemPool() const { return *pItemPool; }
+ SfxItemPool& GetItemPool() { return *pItemPool; }
+
+ SdrOutliner& GetDrawOutliner(const SdrTextObj* pObj=NULL) const;
+
+ /** returns a new created and non shared outliner.
+ The outliner will not get updated when the SdrModel is changed.
+ */
+ boost::shared_ptr< SdrOutliner > CreateDrawOutliner(const SdrTextObj* pObj=NULL);
+
+ SdrOutliner& GetHitTestOutliner() const { return *pHitTestOutliner; }
+ const SdrTextObj* GetFormattingTextObj() const;
+ // Die TextDefaults (Font,Hoehe,Farbe) in ein Set putten
+ void SetTextDefaults() const;
+ static void SetTextDefaults( SfxItemPool* pItemPool, ULONG nDefTextHgt );
+
+ // ReferenzDevice fuer die EditEngine
+ void SetRefDevice(OutputDevice* pDev);
+ OutputDevice* GetRefDevice() const { return pRefOutDev; }
+ // Wenn ein neuer MapMode am RefDevice gesetzt wird o.ae.
+ void RefDeviceChanged(); // noch nicht implementiert
+ // Default-Schrifthoehe in logischen Einheiten
+ void SetDefaultFontHeight(ULONG nVal);
+ ULONG GetDefaultFontHeight() const { return nDefTextHgt; }
+ // Default-Tabulatorweite fuer die EditEngine
+ void SetDefaultTabulator(USHORT nVal);
+ USHORT GetDefaultTabulator() const { return nDefaultTabulator; }
+
+ // Der DefaultStyleSheet wird jedem Zeichenobjekt verbraten das in diesem
+ // Model eingefuegt wird und kein StyleSheet gesetzt hat.
+ SfxStyleSheet* GetDefaultStyleSheet() const { return pDefaultStyleSheet; }
+ void SetDefaultStyleSheet(SfxStyleSheet* pDefSS) { pDefaultStyleSheet = pDefSS; }
+
+ sfx2::LinkManager* GetLinkManager() { return pLinkManager; }
+ void SetLinkManager( sfx2::LinkManager* pLinkMgr ) { pLinkManager = pLinkMgr; }
+
+ ::comphelper::IEmbeddedHelper* GetPersist() const { return m_pEmbeddedHelper; }
+ void ClearPersist() { m_pEmbeddedHelper = 0; }
+ void SetPersist( ::comphelper::IEmbeddedHelper *p ) { m_pEmbeddedHelper = p; }
+
+ // Masseinheit fuer die Zeichenkoordinaten.
+ // Default ist 1 logische Einheit = 1/100mm (Unit=MAP_100TH_MM, Fract=(1,1)).
+ // Beispiele:
+ // MAP_POINT, Fraction(72,1) : 1 log Einh = 72 Point = 1 Inch
+ // MAP_POINT, Fraction(1,20) : 1 log Einh = 1/20 Point = 1 Twip
+ // MAP_TWIP, Fraction(1,1) : 1 log Einh = 1 Twip
+ // MAP_100TH_MM, Fraction(1,10) : 1 log Einh = 1/1000mm
+ // MAP_MM, Fraction(1000,1) : 1 log Einh = 1000mm = 1m
+ // MAP_CM, Fraction(100,1) : 1 log Einh = 100cm = 1m
+ // MAP_CM, Fraction(100,1) : 1 log Einh = 100cm = 1m
+ // MAP_CM, Fraction(100000,1): 1 log Einh = 100000cm = 1km
+ // (PS: Lichtjahre sind somit also nicht darstellbar).
+ // Die Skalierungseinheit wird benoetigt, damit die Engine das Clipboard
+ // mit den richtigen Groessen beliefern kann.
+ MapUnit GetScaleUnit() const { return eObjUnit; }
+ void SetScaleUnit(MapUnit eMap);
+ const Fraction& GetScaleFraction() const { return aObjUnit; }
+ void SetScaleFraction(const Fraction& rFrac);
+ // Beides gleichzeitig setzen ist etwas performanter
+ void SetScaleUnit(MapUnit eMap, const Fraction& rFrac);
+
+ // Maximale Groesse z.B. fuer Autogrowing-Texte
+ const Size& GetMaxObjSize() const { return aMaxObjSize; }
+ void SetMaxObjSize(const Size& rSiz) { aMaxObjSize=rSiz; }
+
+ // Damit die View! in der Statuszeile vernuenftige Zahlen anzeigen kann:
+ // Default ist mm.
+ void SetUIUnit(FieldUnit eUnit);
+ FieldUnit GetUIUnit() const { return eUIUnit; }
+ // Der Masstab der Zeichnung. Default 1/1.
+ void SetUIScale(const Fraction& rScale);
+ const Fraction& GetUIScale() const { return aUIScale; }
+ // Beides gleichzeitig setzen ist etwas performanter
+ void SetUIUnit(FieldUnit eUnit, const Fraction& rScale);
+
+ const Fraction& GetUIUnitFact() const { return aUIUnitFact; }
+ const String& GetUIUnitStr() const { return aUIUnitStr; }
+ int GetUIUnitKomma() const { return nUIUnitKomma; }
+ FASTBOOL IsUIOnlyKomma() const { return bUIOnlyKomma; }
+
+ static void TakeUnitStr(FieldUnit eUnit, String& rStr);
+ void TakeMetricStr(long nVal, String& rStr, FASTBOOL bNoUnitChars=FALSE, sal_Int32 nNumDigits = -1) const;
+ void TakeWinkStr(long nWink, String& rStr, FASTBOOL bNoDegChar=FALSE) const;
+ void TakePercentStr(const Fraction& rVal, String& rStr, FASTBOOL bNoPercentChar=FALSE) const;
+
+ // RecalcPageNums wird idR. nur von der Page gerufen.
+ FASTBOOL IsPagNumsDirty() const { return bPagNumsDirty; };
+ FASTBOOL IsMPgNumsDirty() const { return bMPgNumsDirty; };
+ void RecalcPageNums(FASTBOOL bMaster);
+ // Nach dem Insert gehoert die Page dem SdrModel.
+ virtual void InsertPage(SdrPage* pPage, USHORT nPos=0xFFFF);
+ virtual void DeletePage(USHORT nPgNum);
+ // Remove bedeutet Eigentumsuebereignung an den Aufrufer (Gegenteil von Insert)
+ virtual SdrPage* RemovePage(USHORT nPgNum);
+ virtual void MovePage(USHORT nPgNum, USHORT nNewPos);
+ const SdrPage* GetPage(sal_uInt16 nPgNum) const;
+ SdrPage* GetPage(sal_uInt16 nPgNum);
+ sal_uInt16 GetPageCount() const;
+ // #109538#
+ virtual void PageListChanged();
+
+ // Masterpages
+ virtual void InsertMasterPage(SdrPage* pPage, USHORT nPos=0xFFFF);
+ virtual void DeleteMasterPage(USHORT nPgNum);
+ // Remove bedeutet Eigentumsuebereignung an den Aufrufer (Gegenteil von Insert)
+ virtual SdrPage* RemoveMasterPage(USHORT nPgNum);
+ virtual void MoveMasterPage(USHORT nPgNum, USHORT nNewPos);
+ const SdrPage* GetMasterPage(sal_uInt16 nPgNum) const;
+ SdrPage* GetMasterPage(sal_uInt16 nPgNum);
+ sal_uInt16 GetMasterPageCount() const;
+ // #109538#
+ virtual void MasterPageListChanged();
+
+ // Modified-Flag. Wird automatisch gesetzt, wenn an den Pages oder
+ // Zeichenobjekten was geaendert wird. Zuruecksetzen muss man es
+ // jedoch selbst (z.B. bei Save() ...).
+ sal_Bool IsChanged() const { return mbChanged; }
+ virtual void SetChanged(sal_Bool bFlg = sal_True);
+
+ // PageNotValid bedeutet, dass das Model lediglich Objekte traegt die zwar
+ // auf einer Page verankert sind, die Page aber nicht gueltig ist. Diese
+ // Kennzeichnung wird fuers Clipboard/Drag&Drop benoetigt.
+ FASTBOOL IsPageNotValid() const { return bPageNotValid; }
+ void SetPageNotValid(FASTBOOL bJa=TRUE) { bPageNotValid=bJa; }
+
+ // Schaltet man dieses Flag auf TRUE, so werden Grafikobjekte
+ // portabel gespeichert. Es findet dann beim Speichern ggf.
+ // eine implizite Wandlung von Metafiles statt.
+ // Default=FALSE. Flag ist nicht persistent.
+ FASTBOOL IsSavePortable() const { return bSavePortable; }
+ void SetSavePortable(FASTBOOL bJa=TRUE) { bSavePortable=bJa; }
+
+ // Schaltet man dieses Flag auf TRUE, so werden
+ // Pixelobjekte (stark) komprimiert gespeichert.
+ // Default=FALSE. Flag ist nicht persistent.
+ FASTBOOL IsSaveCompressed() const { return bSaveCompressed; }
+ void SetSaveCompressed(FASTBOOL bJa=TRUE) { bSaveCompressed=bJa; }
+
+ // Schaltet man dieses Flag auf TRUE, so werden
+ // Grafikobjekte mit gesetztem Native-Link
+ // native gespeichert.
+ // Default=FALSE. Flag ist nicht persistent.
+ FASTBOOL IsSaveNative() const { return bSaveNative; }
+ void SetSaveNative(FASTBOOL bJa=TRUE) { bSaveNative=bJa; }
+
+ // Schaltet man dieses Flag auf TRUE, so werden die Grafiken
+ // von Grafikobjekten:
+ // - beim Laden eines Dokuments nicht sofort mitgeladen,
+ // sondern erst wenn sie gebraucht (z.B. angezeigt) werden.
+ // - ggf. wieder aus dem Speicher geworfen, falls Sie gerade
+ // nicht benoetigt werden.
+ // Damit das funktioniert, muss die virtuelle Methode
+ // GetDocumentStream() ueberladen werden.
+ // Default=FALSE. Flag ist nicht persistent.
+ FASTBOOL IsSwapGraphics() const { return bSwapGraphics; }
+ void SetSwapGraphics(FASTBOOL bJa=TRUE);
+ void SetSwapGraphicsMode(ULONG nMode) { nSwapGraphicsMode = nMode; }
+ ULONG GetSwapGraphicsMode() const { return nSwapGraphicsMode; }
+
+ FASTBOOL IsSaveOLEPreview() const { return bSaveOLEPreview; }
+ void SetSaveOLEPreview( FASTBOOL bSet) { bSaveOLEPreview = bSet; }
+
+ // Damit die Bildschirmausgabe von Bitmaps (insbesondere bei gedrehten)
+ // etwas schneller wird, werden sie gecachet. Diesen Cache kann man mit
+ // diesem Flag ein-/ausschalten. Beim naechsten Paint wird an den Objekten
+ // dann ggf. ein Image gemerkt bzw. freigegeben. Wandert ein Bitmapobjekt
+ // in's Undo, so wird der Cache fuer dieses Objekt sofort ausgeschaltet
+ // (Speicher sparen).
+ // Default=Cache eingeschaltet. Flag ist nicht persistent.
+ FASTBOOL IsBitmapCaching() const { return !bNoBitmapCaching; }
+ void SetBitmapCaching(FASTBOOL bJa=TRUE) { bNoBitmapCaching=!bJa; }
+
+ // Defaultmaessig (FALSE) kann man Textrahmen ohne Fuellung durch
+ // Mausklick selektieren. Nach Aktivierung dieses Flags trifft man sie
+ // nur noch in dem Bereich, wo sich auch tatsaechlich Text befindet.
+ FASTBOOL IsPickThroughTransparentTextFrames() const { return bTransparentTextFrames; }
+ void SetPickThroughTransparentTextFrames(FASTBOOL bOn) { bTransparentTextFrames=bOn; }
+
+ // Darf denn das Model ueberhaupt veraendert werden?
+ // Wird nur von den Possibility-Methoden der View ausgewerdet.
+ // Direkte Manipulationen am Model, ... berueksichtigen dieses Flag nicht.
+ // Sollte ueberladen werden und entsprechend des ReadOnly-Status des Files
+ // TRUE oder FALSE liefern (Methode wird oeffters gerufen, also ein Flag
+ // verwenden!).
+ virtual FASTBOOL IsReadOnly() const;
+ virtual void SetReadOnly(FASTBOOL bYes);
+
+ // Vermischen zweier SdrModel. Zu beachten sei, dass rSourceModel nicht
+ // const ist. Die Pages werden beim einfuegen nicht kopiert, sondern gemoved.
+ // rSourceModel ist anschliessend u.U. weitgehend leer.
+ // nFirstPageNum,nLastPageNum: Die aus rSourceModel zu uebernehmenden Seiten
+ // nDestPos..................: Einfuegeposition
+ // bMergeMasterPages.........: TRUE =benoetigte MasterPages werden aus
+ // rSourceModel ebenfalls uebernommen
+ // FALSE=Die MasterPageDescriptoren der Seiten
+ // aus rSourceModel werden auf die
+ // vorhandenen MasterPages gemappt.
+ // bUndo.....................: Fuer das Merging wird eine UndoAction generiert.
+ // Undo ist nur fuer das ZielModel, nicht fuer
+ // rSourceModel.
+ // bTreadSourceAsConst.......: TRUE=Das SourceModel wird nicht veraendert,.
+ // d.h die Seiten werden kopiert.
+ virtual void Merge(SdrModel& rSourceModel,
+ USHORT nFirstPageNum=0, USHORT nLastPageNum=0xFFFF,
+ USHORT nDestPos=0xFFFF,
+ FASTBOOL bMergeMasterPages=FALSE, FASTBOOL bAllMasterPages=FALSE,
+ FASTBOOL bUndo=TRUE, FASTBOOL bTreadSourceAsConst=FALSE);
+
+ // Ist wie Merge(SourceModel=DestModel,nFirst,nLast,nDest,FALSE,FALSE,bUndo,!bMoveNoCopy);
+ void CopyPages(USHORT nFirstPageNum, USHORT nLastPageNum,
+ USHORT nDestPos,
+ FASTBOOL bUndo=TRUE, FASTBOOL bMoveNoCopy=FALSE);
+
+ // Mit BegUndo() / EndUndo() ist es moeglich beliebig viele UndoActions
+ // beliebig tief zu klammern. Als Kommentar der
+ // UndoAction wird der des ersten BegUndo(String) aller Klammerungen
+ // verwendet. Der NotifyUndoActionHdl wird in diesem Fall erst beim letzten
+ // EndUndo() gerufen. Bei einer leeren Klammerung wird keine UndoAction
+ // generiert.
+ // Alle direkten Aktionen am SdrModel erzeugen keine UndoActions, die
+ // Aktionen an der SdrView dagegen generieren solche.
+ void BegUndo(); // Undo-Klammerung auf
+ void BegUndo(const String& rComment); // Undo-Klammerung auf
+ void BegUndo(const String& rComment, const String& rObjDescr, SdrRepeatFunc eFunc=SDRREPFUNC_OBJ_NONE); // Undo-Klammerung auf
+ void BegUndo(SdrUndoGroup* pUndoGrp); // Undo-Klammerung auf
+ void EndUndo(); // Undo-Klammerung zu
+ void AddUndo(SdrUndoAction* pUndo);
+ USHORT GetUndoBracketLevel() const { return nUndoLevel; }
+ const SdrUndoGroup* GetAktUndoGroup() const { return pAktUndoGroup; }
+ // nur nach dem 1. BegUndo oder vor dem letzten EndUndo:
+ void SetUndoComment(const String& rComment);
+ void SetUndoComment(const String& rComment, const String& rObjDescr);
+
+ // Das Undo-Managment findet nur statt, wenn kein NotifyUndoAction-Handler
+ // gesetzt ist.
+ // Default ist 16. Minimaler MaxUndoActionCount ist 1!
+ void SetMaxUndoActionCount(ULONG nAnz);
+ ULONG GetMaxUndoActionCount() const { return nMaxUndoCount; }
+ void ClearUndoBuffer();
+ // UndoAction(0) ist die aktuelle (also die zuletzt eingegangene)
+ ULONG GetUndoActionCount() const { return pUndoStack!=NULL ? pUndoStack->Count() : 0; }
+ const SfxUndoAction* GetUndoAction(ULONG nNum) const { return (SfxUndoAction*)(pUndoStack!=NULL ? pUndoStack->GetObject(nNum) : NULL); }
+ // RedoAction(0) ist die aktuelle (also die des letzten Undo)
+ ULONG GetRedoActionCount() const { return pRedoStack!=NULL ? pRedoStack->Count() : 0; }
+ const SfxUndoAction* GetRedoAction(ULONG nNum) const { return (SfxUndoAction*)(pRedoStack!=NULL ? pRedoStack->GetObject(nNum) : NULL); }
+
+ FASTBOOL Undo();
+ FASTBOOL Redo();
+ FASTBOOL Repeat(SfxRepeatTarget&);
+
+ // Hier kann die Applikation einen Handler setzen, der die auflaufenden
+ // UndoActions einsammelt. Der Handler hat folgendes Aussehen:
+ // void __EXPORT NotifyUndoActionHdl(SfxUndoAction* pUndoAction);
+ // Beim Aufruf des Handlers findet eine Eigentumsuebereignung statt; die
+ // UndoAction gehoert somit dem Handler, nicht mehr dem SdrModel.
+ void SetNotifyUndoActionHdl(const Link& rLink) { aUndoLink=rLink; }
+ const Link& GetNotifyUndoActionHdl() const { return aUndoLink; }
+
+ /** application can set it's own undo manager, BegUndo, EndUndo and AddUndoAction
+ calls are routet to this interface if given */
+ void SetSdrUndoManager( SfxUndoManager* pUndoManager );
+
+ /** applications can set their own undo factory to overide creation of
+ undo actions. The SdrModel will become owner of the given SdrUndoFactory
+ and delete it upon its destruction. */
+ void SetSdrUndoFactory( SdrUndoFactory* pUndoFactory );
+
+ /** returns the models undo factory. This must be used to create
+ undo actions for this model. */
+ SdrUndoFactory& GetSdrUndoFactory() const;
+
+ // Hier kann man einen Handler setzen der beim Streamen mehrfach gerufen
+ // wird und ungefaehre Auskunft ueber den Fortschreitungszustand der
+ // Funktion gibt. Der Handler muss folgendes Aussehen haben:
+ // void __EXPORT class::IOProgressHdl(const USHORT& nPercent);
+ // Der erste Aufruf des Handlers erfolgt grundsaetzlich mit 0, der letzte
+ // mit 100. Dazwischen erfolgen maximal 99 Aufrufe mit Werten 1...99.
+ // Man kann also durchaus bei 0 den Progressbar Initiallisieren und bei
+ // 100 wieder schliessen. Zu beachten sei, dass der Handler auch gerufen
+ // wird, wenn die App Draw-Daten im officeweiten Draw-Exchange-Format
+ // bereitstellt, denn dies geschieht durch streamen in einen MemoryStream.
+ void SetIOProgressHdl(const Link& rLink) { aIOProgressLink=rLink; }
+ const Link& GetIOProgressHdl() const { return aIOProgressLink; }
+
+ // Zugriffsmethoden fuer Paletten, Listen und Tabellen
+ void SetColorTable(XColorTable* pTable) { pColorTable=pTable; }
+ XColorTable* GetColorTable() const { return pColorTable; }
+ void SetDashList(XDashList* pList) { pDashList=pList; }
+ XDashList* GetDashList() const { return pDashList; }
+ void SetLineEndList(XLineEndList* pList) { pLineEndList=pList; }
+ XLineEndList* GetLineEndList() const { return pLineEndList; }
+ void SetHatchList(XHatchList* pList) { pHatchList=pList; }
+ XHatchList* GetHatchList() const { return pHatchList; }
+ void SetGradientList(XGradientList* pList) { pGradientList=pList; }
+ XGradientList* GetGradientList() const { return pGradientList; }
+ void SetBitmapList(XBitmapList* pList) { pBitmapList=pList; }
+ XBitmapList* GetBitmapList() const { return pBitmapList; }
+
+ // Der StyleSheetPool wird der DrawingEngine nur bekanntgemacht.
+ // Zu loeschen hat ihn schliesslich der, der ihn auch konstruiert hat.
+ SfxStyleSheetBasePool* GetStyleSheetPool() const { return mxStyleSheetPool.get(); }
+ void SetStyleSheetPool(SfxStyleSheetBasePool* pPool) { mxStyleSheetPool=pPool; }
+
+ // Diese Methode fuert einen Konsistenzcheck auf die Struktur des Models
+ // durch. Geprueft wird insbesondere die Verkettung von Verschachtelten
+ // Gruppenobjekten, aber auch Stati wie bInserted sowie Model* und Page*
+ // der Objects, SubLists und Pages. Bei korrekter Struktur liefert die
+ // Methode TRUE, andernfalls FALSE.
+ // Dieser Check steht nur zur Verfuegung, wenn die Engine mit DBG_UTIL
+ // uebersetzt wurde. Andernfalls liefert die Methode immer TRUE. (ni)
+ FASTBOOL CheckConsistence() const;
+
+ void SetStarDrawPreviewMode(BOOL bPreview);
+ BOOL IsStarDrawPreviewMode() { return bStarDrawPreviewMode; }
+
+ SotStorage* GetModelStorage() const { return pModelStorage; }
+ void SetModelStorage( SotStorage* pStor ) { pModelStorage = pStor; }
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getUnoModel();
+ void setUnoModel( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xModel );
+
+ // these functions are used by the api to disable repaints during a
+ // set of api calls.
+ BOOL isLocked() const { return (BOOL)mbModelLocked; }
+ void setLock( BOOL bLock );
+
+ void SetForbiddenCharsTable( vos::ORef<SvxForbiddenCharactersTable> xForbiddenChars );
+ vos::ORef<SvxForbiddenCharactersTable> GetForbiddenCharsTable() const;
+
+ void SetCharCompressType( UINT16 nType );
+ UINT16 GetCharCompressType() const { return mnCharCompressType; }
+
+ void SetKernAsianPunctuation( sal_Bool bEnabled );
+ sal_Bool IsKernAsianPunctuation() const { return (sal_Bool)mbKernAsianPunctuation; }
+
+ void SetAddExtLeading( sal_Bool bEnabled );
+ sal_Bool IsAddExtLeading() const { return (sal_Bool)mbAddExtLeading; }
+
+ void ReformatAllTextObjects();
+
+ FASTBOOL HasTransparentObjects( BOOL bCheckForAlphaChannel = FALSE ) const;
+
+ SdrOutliner* createOutliner( USHORT nOutlinerMode );
+ void disposeOutliner( SdrOutliner* pOutliner );
+
+ sal_Bool IsWriter() const { return !bMyPool; }
+
+ /** returns the numbering type that is used to format page fields in drawing shapes */
+ virtual SvxNumType GetPageNumType() const;
+
+ /** copies the items from the source set to the destination set. Both sets must have
+ same ranges but can have different pools. If pNewModel is optional. If it is null,
+ this model is used. */
+
+ void MigrateItemSet( const SfxItemSet* pSourceSet, SfxItemSet* pDestSet, SdrModel* pNewModel );
+
+ bool IsInDestruction() const;
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelImplementationId();
+
+ /** enables (true) or disables (false) recording of undo actions
+ If undo actions are added while undo is disabled, they are deleted.
+ Disabling undo does not clear the current undo buffer! */
+ void EnableUndo( bool bEnable );
+
+ /** returns true if undo is currently enabled
+ This returns false if undo was disabled using EnableUndo( false ) and
+ also during the runtime of the Undo() and Redo() methods. */
+ bool IsUndoEnabled() const;
+
+};
+
+typedef tools::WeakReference< SdrModel > SdrModelWeakRef;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDMODEL_HXX
+
+/* /////////////////////////////////////////////////////////////////////////////////////////////////
+ +-----------+
+ | SdrModel |
+ +--+------+-+
+ | +-----------+
+ +----+-----+ |
+ | ... | |
+ +----+---+ +----+---+ +-----+--------+
+ |SdrPage | |SdrPage | |SdrLayerAdmin |
+ +---+----+ +-+--+--++ +---+-------+--+
+ | | | | | +-------------------+
+ +----+----+ +-----+-----+ +-------+-------+
+ | ... | | ... | | ... |
++---+---+ +---+---+ +----+----+ +----+----+ +-----+------+ +------+-----+
+|SdrObj | |SdrObj | |SdrLayer | |SdrLayer | |SdrLayerSet | |SdrLayerSet |
++-------+ +-------+ +---------+ +---------+ +------------+ +------------+
+Die Klasse SdrModel ist der Kopf des Datenmodells der StarView Drawing-Engine.
+
+///////////////////////////////////////////////////////////////////////////////////////////////// */
+
diff --git a/svx/inc/svx/svdmrkv.hxx b/svx/inc/svx/svdmrkv.hxx
new file mode 100644
index 000000000000..fc136b8e5a3c
--- /dev/null
+++ b/svx/inc/svx/svdmrkv.hxx
@@ -0,0 +1,539 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDMRKV_HXX
+#define _SVDMRKV_HXX
+
+#include <svx/svdmark.hxx>
+#include <svx/svdhdl.hxx>
+#include <svx/svdsnpv.hxx>
+#include <svx/svdtypes.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Defines
+//************************************************************
+
+// folgendes ist noch nicht bzw. erst zum Teil implementiert:
+#define SDRSEARCH_DEEP 0x0001 /* rekursiv in Gruppenobjekte hinein */
+#define SDRSEARCH_ALSOONMASTER 0x0002 /* MasterPages werden auch durchsucht */
+#define SDRSEARCH_WHOLEPAGE 0x0004 /* Nicht nur die ObjList der PageView */
+#define SDRSEARCH_TESTMARKABLE 0x0008 /* nur markierbare Objekte/Punkte/Handles/... */
+#define SDRSEARCH_TESTMACRO 0x0010 /* Nur Objekte mit Macro */
+#define SDRSEARCH_TESTTEXTEDIT 0x0020 /* Nur TextEdit-faehige Objekte */
+#define SDRSEARCH_WITHTEXT 0x0040 /* Nur Objekte mit Text */
+#define SDRSEARCH_TESTTEXTAREA 0x0080 /* Den Textbereich von Objekten mit Text (TextEditHit) */
+#define SDRSEARCH_BACKWARD 0x0100 /* Rueckwaertssuche */
+#define SDRSEARCH_NEXT 0x0200 /* Suche startet hinter dem uebergebenen Objekt/Punkt/... */
+#define SDRSEARCH_MARKED 0x0400 /* Nur markierte Objekte/Punkte/... */
+#define SDRSEARCH_PASS2BOUND 0x0800 /* Wenn nix gefunden, dann neuer 2. Versuch mit BoundRectHit */
+#define SDRSEARCH_PASS3NEAREST 0x1000 /* Wenn nix gefunden, dann neuer 3. Versuch mit NearestBoundRectHit */
+
+#define SDRSEARCH_PICKMARKABLE (SDRSEARCH_TESTMARKABLE)
+#define SDRSEARCH_PICKTEXTEDIT (SDRSEARCH_DEEP|SDRSEARCH_TESTMARKABLE|SDRSEARCH_TESTTEXTEDIT)
+#define SDRSEARCH_PICKMACRO (SDRSEARCH_DEEP|SDRSEARCH_ALSOONMASTER|SDRSEARCH_WHOLEPAGE|SDRSEARCH_TESTMACRO)
+
+// SDRSEARCHPASS_... ist Rueckgabeparameterwert bei PickObj().
+#define SDRSEARCHPASS_DIRECT 0x0000 /* Objekt durch direkten Hit getroffen */
+#define SDRSEARCHPASS_INACTIVELIST 0x0001 /* Obj auf der Page, nicht jedoch in der AktGroup (bei WHOLEPAGE) */
+#define SDRSEARCHPASS_MASTERPAGE 0x0002 /* Objekt auf der MasterPage gefunden */
+#define SDRSEARCHPASS_BOUND 0x0010 /* Objekt erst beim Bound-Check gefunden */
+#define SDRSEARCHPASS_NEAREST 0x0020 /* Objekt erst beim Nearest-Check gefunden */
+
+enum SdrHitKind {SDRHIT_NONE, // Nicht getroffen, Schnaps gesoffen
+ SDRHIT_OBJECT, // Treffer versenkt
+ SDRHIT_BOUNDRECT, // Treffer am BoundRect
+ SDRHIT_BOUNDTL, // Treffer am BoundRect TopLeft
+ SDRHIT_BOUNDTC, // Treffer am BoundRect TopCenter
+ SDRHIT_BOUNDTR, // Treffer am BoundRect TopRight
+ SDRHIT_BOUNDCL, // Treffer am BoundRect CenterLeft
+ SDRHIT_BOUNDCR, // Treffer am BoundRect CenterRight
+ SDRHIT_BOUNDBL, // Treffer am BoundRect BottomLeft
+ SDRHIT_BOUNDBC, // Treffer am BoundRect BottomCenter
+ SDRHIT_BOUNDBR,/*,*/ // Treffer am BoundRect BottomRight
+ /*SDRHIT_REFPOINT*/ // Referenzpunkt (Rotationsachse,Spiegelachse) getroffen
+ // ab hier neu am 01-07-1996:
+ SDRHIT_HANDLE, // Markierungshandle
+ SDRHIT_HELPLINE, // Hilfslinie
+ SDRHIT_GLUEPOINT, // Klebepunkt
+ SDRHIT_TEXTEDIT, // Offene OutlinerView getroffen
+ SDRHIT_TEXTEDITOBJ, // Objekt fuer SdrBeginTextEdit (Textbereich)
+ SDRHIT_URLFIELD, // Feld im TextObj getroffen (wird gerade nicht editiert)
+ SDRHIT_MACRO, // Objekt fuer BegMacroObj
+ SDRHIT_MARKEDOBJECT, // Markiertes Objekt (z.B. zum Draggen)
+ SDRHIT_UNMARKEDOBJECT, // nichtmarkiertes Objekt (z.B. zum markieren)
+ SDRHIT_CELL}; // hit on a cell inside a table shape (outside of the cells text area)
+
+enum SdrViewEditMode {SDREDITMODE_EDIT, // Auch bekannt aus Pfeil- oder Zeigermodus
+ SDREDITMODE_CREATE, // Objekterzeugungswerkzeug
+ SDREDITMODE_GLUEPOINTEDIT}; // Klebepunkteditiermodus
+
+#define IMPSDR_MARKOBJDESCRIPTION 0x0000
+#define IMPSDR_POINTSDESCRIPTION 0x0001
+#define IMPSDR_GLUEPOINTSDESCRIPTION 0x0002
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@ @@ @@@@ @@@@@ @@ @@ @@ @@ @@ @@@@@ @@ @@
+// @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@@@@@@ @@@@@@ @@@@@ @@@@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+class ImplMarkingOverlay;
+
+class SVX_DLLPUBLIC SdrMarkView : public SdrSnapView
+{
+ friend class SdrPageView;
+
+ // #114409#-3 Migrate selections
+ ImplMarkingOverlay* mpMarkObjOverlay;
+ ImplMarkingOverlay* mpMarkPointsOverlay;
+ ImplMarkingOverlay* mpMarkGluePointsOverlay;
+
+protected:
+ SdrObject* pMarkedObj; // Wenn nur ein Objekt markiert ist.
+ SdrPageView* pMarkedPV; // Wenn alle markierten Objekt auf derselben PageView liegen.
+
+ Point aRef1; // Persistent - Drehmittelpunkt/Spiegelachse
+ Point aRef2; // Persistent
+ Point aLastCrookCenter; // Persistent
+ SdrHdlList aHdl;
+ sdr::ViewSelection* mpSdrViewSelection;
+
+ Rectangle aMarkedObjRect;
+ Rectangle aMarkedPointsRect;
+ Rectangle aMarkedGluePointsRect;
+
+ USHORT nFrameHandlesLimit;
+ ULONG mnInsPointNum; // Nummer des InsPoint
+ ULONG nMarkableObjCount;
+
+ SdrDragMode eDragMode; // Persistent
+ SdrViewEditMode eEditMode; // Persistent
+ SdrViewEditMode eEditMode0; // Persistent
+
+ //HMHunsigned bHdlShown : 1;
+ unsigned bRefHdlShownOnly : 1; // Spiegelachse waerend Dragging (ni)
+ unsigned bDesignMode : 1; // DesignMode fuer SdrUnoObj
+ unsigned bForceFrameHandles : 1; // Persistent - FrameDrag auch bei Einzelobjekten
+ unsigned bPlusHdlAlways : 1; // Persistent
+ unsigned bMarkHdlWhenTextEdit : 1; // Persistent, default=FALSE
+ unsigned bInsPolyPoint : 1; // z.Zt InsPolyPointDragging
+ unsigned bMarkedObjRectDirty : 1;
+ unsigned bMrkPntDirty : 1;
+ unsigned bMarkedPointsRectsDirty : 1;
+ unsigned bMarkableObjCountDirty : 1;
+
+ // flag to completely disable handles at the view
+ unsigned mbMarkHandlesHidden : 1;
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+ SVX_DLLPRIVATE void ImpSetPointsRects() const;
+ void UndirtyMrkPnt() const;
+
+protected:
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ virtual void ModelHasChanged(); // Wird von der PaintView gerufen
+ virtual void SetMarkHandles(); // aHdl (Liste der Handles) fuellen
+ virtual void SetMarkRects(); // Rects an den PageViews
+ virtual void CheckMarked(); // MarkList nach Del und Lock Layer durchsuchen...
+ virtual void AddDragModeHdl(SdrDragMode eMode);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
+
+ // add custom handles (used by other apps, e.g. AnchorPos)
+ virtual void AddCustomHdl();
+
+ void ForceRefToMarked();
+ void ForceUndirtyMrkPnt() const { if (bMrkPntDirty) UndirtyMrkPnt(); }
+
+ //HMHvoid ImpShowMarkHdl(bool bNoRefHdl);
+ virtual SdrObject* CheckSingleSdrObjectHit(const Point& rPnt, USHORT nTol, SdrObject* pObj, SdrPageView* pPV, ULONG nOptions, const SetOfByte* pMVisLay) const;
+ virtual SdrObject* CheckSingleSdrObjectHit(const Point& rPnt, USHORT nTol, SdrObjList* pOL, SdrPageView* pPV, ULONG nOptions, const SetOfByte* pMVisLay, SdrObject*& rpRootObj) const;
+ BOOL ImpIsFrameHandles() const;
+ void ImpTakeDescriptionStr(USHORT nStrCacheID, String& rStr, USHORT nVal=0, USHORT nOpt=0) const;
+
+ // Macht aus einer Winkelangabe in 1/100deg einen String inkl. Grad-Zeichen
+ BOOL ImpMarkPoint(SdrHdl* pHdl, SdrMark* pMark, BOOL bUnmark);
+ virtual BOOL MarkPoints(const Rectangle* pRect, BOOL bUnmark);
+ BOOL MarkGluePoints(const Rectangle* pRect, BOOL bUnmark);
+
+ void SetMoveOutside(BOOL bOn);
+ BOOL IsMoveOutside() const;
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrMarkView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrMarkView();
+
+public:
+ virtual BOOL IsAction() const;
+ virtual void MovAction(const Point& rPnt);
+ virtual void EndAction();
+ virtual void BckAction();
+ virtual void BrkAction();
+ virtual void TakeActionRect(Rectangle& rRect) const;
+
+ virtual void ClearPageView();
+ virtual void HideSdrPage();
+ virtual BOOL IsObjMarkable(SdrObject* pObj, SdrPageView* pPV) const;
+
+ // Liefert TRUE wenn Objekte, Punkte oder Klebepunkte durch Rahmenaufziehen
+ // selektiert werden (solange wie der Rahmen aufgezogen wird).
+ sal_Bool IsMarking() const { return IsMarkObj() || IsMarkPoints() || IsMarkGluePoints(); }
+
+ // Objekte durch Aufziehen eines Selektionsrahmens markieren
+ sal_Bool BegMarkObj(const Point& rPnt, sal_Bool bUnmark = sal_False);
+ void MovMarkObj(const Point& rPnt);
+ sal_Bool EndMarkObj();
+ void BrkMarkObj();
+ sal_Bool IsMarkObj() const { return (0L != mpMarkObjOverlay); }
+
+ // DragModes: SDRDRAG_CREATE,SDRDRAG_MOVE,SDRDRAG_RESIZE,SDRDRAG_ROTATE,SDRDRAG_MIRROR,SDRDRAG_SHEAR,SDRDRAG_CROOK
+ // Move==Resize
+ // Das Interface wird hier evtl noch geaendert wg. Ortho-Drag
+ void SetDragMode(SdrDragMode eMode);
+ SdrDragMode GetDragMode() const { return eDragMode; }
+ BOOL ChkDragMode(SdrDragMode eMode) const;
+ void SetFrameHandles(BOOL bOn);
+ BOOL IsFrameHandles() const { return bForceFrameHandles; }
+
+ // Limit, ab wann implizit auf FrameHandles umgeschaltet wird. default=50.
+ void SetFrameHandlesLimit(USHORT nAnz) { nFrameHandlesLimit=nAnz; }
+ USHORT GetFrameHandlesLimit() const { return nFrameHandlesLimit; }
+
+ void SetEditMode(SdrViewEditMode eMode);
+ SdrViewEditMode GetEditMode() const { return eEditMode; }
+
+ void SetEditMode(BOOL bOn=TRUE) { SetEditMode(bOn?SDREDITMODE_EDIT:SDREDITMODE_CREATE); }
+ BOOL IsEditMode() const { return eEditMode==SDREDITMODE_EDIT; }
+ void SetCreateMode(BOOL bOn=TRUE) { SetEditMode(bOn?SDREDITMODE_CREATE:SDREDITMODE_EDIT); }
+ BOOL IsCreateMode() const { return eEditMode==SDREDITMODE_CREATE; }
+ void SetGluePointEditMode(BOOL bOn=TRUE) { SetEditMode(bOn?SDREDITMODE_GLUEPOINTEDIT:eEditMode0); }
+ BOOL IsGluePointEditMode() const { return eEditMode==SDREDITMODE_GLUEPOINTEDIT;; }
+
+ void SetDesignMode(BOOL bOn=TRUE);
+ BOOL IsDesignMode() const { return bDesignMode; }
+
+ void SetFrameDragSingles(BOOL bOn=TRUE) { SetFrameHandles(bOn); }
+ BOOL IsFrameDragSingles() const { return IsFrameHandles(); }
+
+ // Feststellen, ob und wo ein Objekt bzw. ob ein Referenzpunkt
+ // (Rotationsmittelpunkt,Spiegelachse) getroffen wird (SW special).
+ SdrHitKind PickSomething(const Point& rPnt, short nTol=-2) const;
+ BOOL HasMarkableObj() const;
+ ULONG GetMarkableObjCount() const;
+ //HMHvoid ShowMarkHdl(bool bNoRefHdl = false);
+ //HMHvoid HideMarkHdl(bool bNoRefHdl = false);
+ //HMHBOOL IsMarkHdlShown() const { return bHdlShown; }
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// migrate selections
+
+protected:
+ // all available changing methods
+ SdrMarkList& GetMarkedObjectListWriteAccess() { return mpSdrViewSelection->GetMarkedObjectListWriteAccess(); }
+ void SetEdgesOfMarkedNodesDirty() { mpSdrViewSelection->SetEdgesOfMarkedNodesDirty(); }
+
+public:
+ // all available const methods for read access to selection
+ const SdrMarkList& GetMarkedObjectList() const { return mpSdrViewSelection->GetMarkedObjectList(); }
+ ULONG TryToFindMarkedObject(const SdrObject* pObj) const { return GetMarkedObjectList().FindObject(pObj); }
+ SdrPageView* GetSdrPageViewOfMarkedByIndex(ULONG nNum) const { return GetMarkedObjectList().GetMark(nNum)->GetPageView(); }
+ SdrMark* GetSdrMarkByIndex(ULONG nNum) const { return GetMarkedObjectList().GetMark(nNum); }
+ SdrObject* GetMarkedObjectByIndex(ULONG nNum) const { return (GetMarkedObjectList().GetMark(nNum))->GetMarkedSdrObj(); }
+ ULONG GetMarkedObjectCount() const { return GetMarkedObjectList().GetMarkCount(); }
+ void SortMarkedObjects() const { GetMarkedObjectList().ForceSort(); }
+ sal_Bool AreObjectsMarked() const { return (0L != GetMarkedObjectList().GetMarkCount()); }
+ String GetDescriptionOfMarkedObjects() const { return GetMarkedObjectList().GetMarkDescription(); }
+ String GetDescriptionOfMarkedPoints() const { return GetMarkedObjectList().GetPointMarkDescription(); }
+ String GetDescriptionOfMarkedGluePoints() const { return GetMarkedObjectList().GetGluePointMarkDescription(); }
+ sal_Bool GetBoundRectFromMarkedObjects(SdrPageView* pPageView, Rectangle& rRect) const { return GetMarkedObjectList().TakeBoundRect(pPageView, rRect); }
+ sal_Bool GetSnapRectFromMarkedObjects(SdrPageView* pPageView, Rectangle& rRect) const { return GetMarkedObjectList().TakeSnapRect(pPageView, rRect); }
+
+ // Eine Liste aller an markierten Knoten gebundenen Kanten holen,
+ // die selbst jedoch nicht markiert sind.
+ const SdrMarkList& GetEdgesOfMarkedNodes() const { return mpSdrViewSelection->GetEdgesOfMarkedNodes(); }
+ const SdrMarkList& GetMarkedEdgesOfMarkedNodes() const { return mpSdrViewSelection->GetMarkedEdgesOfMarkedNodes(); }
+ const List& GetTransitiveHullOfMarkedObjects() const { return mpSdrViewSelection->GetAllMarkedObjects(); }
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ // mechanism to complete disable handles at the view. Handles will be hidden and deleted
+ // when set, no new ones created, no interaction allowed. Handles will be recreated and shown
+ // when reset. Default is false.
+ void hideMarkHandles();
+ void showMarkHandles();
+ bool areMarkHandlesHidden() const { return mbMarkHandlesHidden; }
+
+ BOOL IsMarkedHit(const Point& rPnt, short nTol=-2) const { return IsMarkedObjHit(rPnt,nTol); }
+ BOOL IsMarkedObjHit(const Point& rPnt, short nTol=-2) const;
+
+ // Pick: Unterstuetzte Optionen fuer nOptions sind SEARCH_NEXT, SEARCH_BACKWARD (ni)
+ SdrHdl* PickHandle(const Point& rPnt, ULONG nOptions=0, SdrHdl* pHdl0=NULL) const;
+
+ // Pick: Unterstuetzte Optionen fuer nOptions sind:
+ // SDRSEARCH_DEEP SDRSEARCH_ALSOONMASTER SDRSEARCH_TESTMARKABLE SDRSEARCH_TESTTEXTEDIT
+ // SDRSEARCH_WITHTEXT SDRSEARCH_TESTTEXTAREA SDRSEARCH_BACKWARD SDRSEARCH_MARKED
+ // SDRSEARCH_WHOLEPAGE
+ virtual BOOL PickObj(const Point& rPnt, short nTol, SdrObject*& rpObj, SdrPageView*& rpPV, ULONG nOptions, SdrObject** ppRootObj, ULONG* pnMarkNum=NULL, USHORT* pnPassNum=NULL) const;
+ virtual BOOL PickObj(const Point& rPnt, short nTol, SdrObject*& rpObj, SdrPageView*& rpPV, ULONG nOptions=0) const;
+ // BOOL PickObj(const Point& rPnt, SdrObject*& rpObj, SdrPageView*& rpPV, ULONG nOptions=0) const { return PickObj(rPnt,nHitTolLog,rpObj,rpPV,nOptions); }
+ BOOL MarkObj(const Point& rPnt, short nTol=-2, BOOL bToggle=FALSE, BOOL bDeep=FALSE);
+
+ // Pick: Unterstuetzte Optionen fuer nOptions sind SDRSEARCH_PASS2BOUND und SDRSEARCH_PASS3NEAREST
+ BOOL PickMarkedObj(const Point& rPnt, SdrObject*& rpObj, SdrPageView*& rpPV, ULONG* pnMarkNum=NULL, ULONG nOptions=0) const;
+
+ // Sucht sich das Oberste der markierten Objekte (O1) und sucht von dort
+ // aus in Richtung nach Unten dann das erste nichtmarkierte Objekt (O2).
+ // Bei Erfolg wird die Markierung von O1 entfernt, an O2 gesetzt und TRUE
+ // returniert. Mit dem Parameter bPrev=TRUE geht die Suche genau in die
+ // andere Richtung.
+ BOOL MarkNextObj(BOOL bPrev=FALSE);
+
+ // Sucht sich das Oberste der markierten Objekte (O1) das von rPnt/nTol
+ // getroffen wird und sucht von dort aus in Richtung nach Unten dann das
+ // erste nichtmarkierte Objekt (O2). Bei Erfolg wird die Markierung von
+ // O1 entfernt, an O2 gesetzt und TRUE returniert.
+ // Mit dem Parameter bPrev=TRUE geht die Suche genau in die andere Richtung.
+ BOOL MarkNextObj(const Point& rPnt, short nTol=-2, BOOL bPrev=FALSE);
+
+ // Alle Objekte innerhalb eines rechteckigen Bereichs markieren
+ // Markiert werden nur Objekte, die vollstaendig eingeschlossen sind.
+ BOOL MarkObj(const Rectangle& rRect, BOOL bUnmark=FALSE);
+ void MarkObj(SdrObject* pObj, SdrPageView* pPV, BOOL bUnmark=FALSE, BOOL bImpNoSetMarkHdl=FALSE);
+ void MarkAllObj(SdrPageView* pPV=NULL); // pPage=NULL => alle angezeigten Seiten
+ void UnmarkAllObj(SdrPageView* pPV=NULL); // pPage=NULL => alle angezeigten Seiten
+
+ // Diese Funktion kostet etwas Zeit, da die MarkList durchsucht werden muss.
+ BOOL IsObjMarked(SdrObject* pObj) const;
+ // void MarkAll(SdrPageView* pPV=NULL) { MarkAllObj(pPV); } -> replace with inline
+ void UnMarkAll(SdrPageView* pPV=NULL) { UnmarkAllObj(pPV); }
+
+ // Groesse der Markierungs-Handles abfragen/setzen. Angabe in Pixel.
+ // Der Wert ist als Kantenlaenge zu betrachten. Gerade Werte werden
+ // auf Ungerade aufgerundet: 3->3, 4->5, 5->5, 6->7, 7->7, ...
+ // Defaultwert ist 7, Mindestwert 3 Pixel.
+ USHORT GetMarkHdlSizePixel() const;
+ void SetMarkHdlSizePixel(USHORT nSiz);
+
+ // Die Groesse der Markierungs-Handles wird ueber die jeweilige Aufloesung
+ // und die Groesse des Bereichs der markierten Objekte so angepasst, dass
+ // sie sich bei einer Frame-Selektion moeglichst nicht ueberschneiden.
+ // Dazu muessen die Handles ggf. verkleinert dargestellt werden. Mit der
+ // MinMarkHdlSize kann man hierfuer eine Mindestgroesse angeben.
+ // Defaultwert ist 3, Mindestwert 3 Pixel.
+ BOOL IsSolidMarkHdl() const { return aHdl.IsFineHdl(); }
+ void SetSolidMarkHdl(BOOL bOn);
+
+ virtual BOOL HasMarkablePoints() const;
+ virtual ULONG GetMarkablePointCount() const;
+ virtual BOOL HasMarkedPoints() const;
+ virtual ULONG GetMarkedPointCount() const;
+
+ // Nicht alle Punkte lassen sich markieren:
+ virtual BOOL IsPointMarkable(const SdrHdl& rHdl) const;
+ virtual BOOL MarkPoint(SdrHdl& rHdl, BOOL bUnmark=FALSE);
+
+ /** should only be used from outside svx for special ui elements */
+ BOOL MarkPointHelper(SdrHdl* pHdl, SdrMark* pMark, BOOL bUnmark);
+
+ // alle Punkte innerhalb dieses Rechtecks markieren (Viewkoordinaten)
+ BOOL MarkPoints(const Rectangle& rRect, BOOL bUnmark=FALSE) { return MarkPoints(&rRect,bUnmark); }
+ BOOL UnmarkPoint(SdrHdl& rHdl) { return MarkPoint(rHdl,TRUE); }
+ BOOL UnMarkPoint(SdrHdl& rHdl) { return MarkPoint(rHdl,TRUE); }
+ BOOL IsPointMarked(const SdrHdl& rHdl) const { ForceUndirtyMrkPnt(); return &rHdl!=NULL && rHdl.IsSelected(); }
+ BOOL MarkAllPoints() { return MarkPoints(NULL,FALSE); }
+ BOOL UnmarkAllPoints() { return MarkPoints(NULL,TRUE); }
+ BOOL UnMarkAllPoints() { return MarkPoints(NULL,TRUE); }
+
+ // Sucht sich den ersten markierten Punkt (P1) und sucht von dort
+ // aus in den ersten nichtmarkierte Punkt (P2).
+ // Bei Erfolg wird die Markierung von P1 entfernt, an P2 gesetzt und TRUE
+ // returniert. Mit dem Parameter bPrev=TRUE geht die Suche genau in die
+ // andere Richtung.
+ BOOL MarkNextPoint(BOOL bPrev=FALSE);
+
+ // Sucht sich den ersten markierten Punkt (P1) das von rPnt
+ // getroffen wird und sucht von dort aus den
+ // ersten nichtmarkierten Punkt (P2). Bei Erfolg wird die Markierung von
+ // P1 entfernt, an P2 gesetzt und TRUE returniert.
+ // Mit dem Parameter bPrev=TRUE geht die Suche genau in die andere Richtung.
+ BOOL MarkNextPoint(const Point& rPnt, BOOL bPrev=FALSE);
+
+ // Die Nummer des passenden Handles raussuchen. Nicht gefunden
+ // liefert CONTAINER_ENTRY_NOTFOUND.
+ ULONG GetHdlNum(SdrHdl* pHdl) const { return aHdl.GetHdlNum(pHdl); }
+ SdrHdl* GetHdl(ULONG nHdlNum) const { return aHdl.GetHdl(nHdlNum); }
+ const SdrHdlList& GetHdlList() const { return aHdl; }
+
+ // Selektionsrahmen fuer Punktmarkierung aufziehen.
+ // Wird nur gestartet, wenn HasMarkablePoints() TRUE liefert.
+ // BOOL BegMarkPoints(const Point& rPnt, OutputDevice* pOut);
+ sal_Bool BegMarkPoints(const Point& rPnt, sal_Bool bUnmark = sal_False);
+ void MovMarkPoints(const Point& rPnt);
+ sal_Bool EndMarkPoints();
+ void BrkMarkPoints();
+ sal_Bool IsMarkPoints() const { return (0L != mpMarkPointsOverlay); }
+
+ // Zusatzhandles dauerhaft sichtbar schalten
+ void SetPlusHandlesAlwaysVisible(BOOL bOn);
+ BOOL IsPlusHandlesAlwaysVisible() const { return bPlusHdlAlways; }
+
+ // Handles sichrbar waerend TextEdit (in doppelter Groesse)?
+ // Persistent, default=FALSE
+ void SetMarkHdlWhenTextEdit(BOOL bOn) { bMarkHdlWhenTextEdit=bOn; }
+ BOOL IsMarkHdlWhenTextEdit() const { return bMarkHdlWhenTextEdit; }
+
+ BOOL HasMarkableGluePoints() const;
+ ULONG GetMarkableGluePointCount() const;
+ BOOL HasMarkedGluePoints() const;
+ ULONG GetMarkedGluePointCount() const;
+
+ // Ein Klebepunkt wird eindeutig identifiziert durch das SdrObject
+ // (dem er zugehoert) sowie einem USHORT nId (da jedes SdrObject je
+ // mehrere Klebepunkte haben kann. Hier an der View kommt zudem noch
+ // eine SdrPageView, die stets korrekt gesetzt sein sollte.
+ // Alternativ kann ein Klebepunkt durch ein SdrHdl bezeichnet werden.
+ // Die SdrHdl-Instanz beinhaltet dann aller erforderlichen Informationen.
+ // Der Klebepunkt ist in diesem Fall dann zwangslaeufig markiert (nur auf
+ // markierten Klebepunkten sitzen Anfasser).
+ // Achtung: Bei jeder Aenderung des Klebepunktmarkierungsstatus wird die
+ // Handleliste erneut berechnet. Alle vorher gemerkten SdrHdl* sind
+ // damit ungueltig, ebenso die Punkt-Id's!
+ // Pick: Unterstuetzte Optionen fuer nOptions sind SEARCH_NEXT, SEARCH_BACKWARD
+ BOOL PickGluePoint(const Point& rPnt, SdrObject*& rpObj, USHORT& rnId, SdrPageView*& rpPV, ULONG nOptions=0) const;
+ BOOL MarkGluePoint(const SdrObject* pObj, USHORT nId, const SdrPageView* pPV, BOOL bUnmark=FALSE);
+ BOOL UnmarkGluePoint(const SdrObject* pObj, USHORT nId, const SdrPageView* pPV) { return MarkGluePoint(pObj,nId,pPV,TRUE); }
+ BOOL IsGluePointMarked(const SdrObject* pObj, USHORT nId) const;
+ BOOL UnmarkGluePoint(const SdrHdl& rHdl);
+
+ // Hdl eines markierten GluePoints holen. Nicht markierte
+ // GluePoints haben keine Handles
+ SdrHdl* GetGluePointHdl(const SdrObject* pObj, USHORT nId) const;
+ BOOL IsGluePoint(const SdrHdl& rHdl) const { return &rHdl!=NULL && rHdl.GetKind()==HDL_GLUE; }
+
+ // alle Punkte innerhalb dieses Rechtecks markieren (Viewkoordinaten)
+ BOOL MarkGluePoints(const Rectangle& rRect) { return MarkGluePoints(&rRect,FALSE); }
+ BOOL UnmarkGluePoints(const Rectangle& rRect) { return MarkGluePoints(&rRect,TRUE); }
+ BOOL MarkAllGluePoints() { return MarkGluePoints(NULL,FALSE); }
+ BOOL UnmarkAllGluePoints() { return MarkGluePoints(NULL,TRUE); }
+
+ // Sucht sich den ersten markierten Klebepunkt (P1) und sucht von dort
+ // aus in den ersten nichtmarkierte Klebepunkt (P2).
+ // Bei Erfolg wird die Markierung von P1 entfernt, an P2 gesetzt und TRUE
+ // returniert. Mit dem Parameter bPrev=TRUE geht die Suche genau in die
+ // andere Richtung.
+ BOOL MarkNextGluePoint(BOOL bPrev=FALSE);
+
+ // Sucht sich den ersten markierten Klebepunkt (P1) das von rPnt
+ // getroffen wird und sucht von dort aus den
+ // ersten nichtmarkierten Klebepunkt (P2). Bei Erfolg wird die Markierung
+ // von P1 entfernt, an P2 gesetzt und TRUE returniert.
+ // Mit dem Parameter bPrev=TRUE geht die Suche genau in die andere Richtung.
+ BOOL MarkNextGluePoint(const Point& rPnt, BOOL bPrev=FALSE);
+
+ // Selektionsrahmen fuer Klebepunktmarkierung aufziehen.
+ // Wird nur gestartet, wenn HasMarkableGluePoints() TRUE liefert.
+ // Der GlueEditMode TRUE wird nicht abgefragt.
+ // BOOL BegMarkGluePoints(const Point& rPnt, OutputDevice* pOut);
+ sal_Bool BegMarkGluePoints(const Point& rPnt, sal_Bool bUnmark = sal_False);
+ void MovMarkGluePoints(const Point& rPnt);
+ sal_Bool EndMarkGluePoints();
+ void BrkMarkGluePoints();
+ sal_Bool IsMarkGluePoints() const { return (0L != mpMarkGluePointsOverlay); }
+
+ // bRestraintPaint=FALSE bewirkt, dass die Handles nicht sofort wieder gemalt werden.
+ // AdjustMarkHdl wird eh' nur gerufen, wenn was geaendert wurde; was idR ein Invalidate
+ // zur Folge hat. Am Ende von des Redraw werden die Handles automatisch gezeichnet.
+ // Der Zweck ist, unnoetiges Flackern zu vermeiden. -> Funkt noch nich, deshalb TRUE!
+ void AdjustMarkHdl(); //HMHBOOL bRestraintPaint=TRUE);
+
+ const Rectangle& GetMarkedObjRect() const; // SnapRects der Objekte, ohne Strichstaerke
+ Rectangle GetMarkedObjBoundRect() const; // inkl. Strichstaerke, ueberstehende Fetzen, ...
+ const Rectangle& GetMarkedPointsRect() const; // Umschliessendes Rechteck aller markierten Punkte
+ const Rectangle& GetMarkedGluePointsRect() const; // Umschliessendes Rechteck aller markierten Klebepunkte
+ const Rectangle& GetAllMarkedRect() const { return GetMarkedObjRect(); }
+ Rectangle GetAllMarkedBoundRect() const { return GetMarkedObjBoundRect(); }
+ const Rectangle& GetAllMarkedPointsRect() const { return GetMarkedPointsRect(); }
+
+ // Wird immer dann gerufen, wenn sich die Liste der markierten Objekte
+ // moeglicherweise geaendert hat. Wer ueberlaed muss unbedingt auch die
+ // Methode der Basisklasse rufen!
+ virtual void MarkListHasChanged();
+
+ // Betreten (Editieren) einer evtl markierten Objektgruppe. Sind mehrere
+ // Objektgruppen markiert, so wird die Oberste genommen. Anschliessend
+ // liegen alle Memberobjekte der Gruppe im direkten Zugriff. Alle anderen
+ // Objekte koennen waerendessen nicht bearbeitet werden (bis zum naechsten
+ // LeaveGroup()). Bei einer seitenuebergreifenden Markierung wird jede Page
+ // separat abgearbeitet. Die Methode liefert TRUE, wenn wenigstens eine
+ // Gruppe betreten wurde.
+ BOOL EnterMarkedGroup();
+
+ // Den Mittelpunkt des letzten Crook-Dragging abholen. Den kann man
+ // bei einem anschliessenden Rotate sinnvoll als Drehmittelpunkt setzen.
+ const Point& GetLastCrookCenter() const { return aLastCrookCenter; }
+
+ // Wird automatisch von der DragView beim beenden eines Crook-Drag gesetzt.
+ void SetLastCrookCenter(const Point& rPt) { aLastCrookCenter=rPt; }
+
+ // Rotationsmittelpunkt bzw. Startpunkt der Spiegelachse
+ const Point& GetRef1() const { return aRef1; }
+ void SetRef1(const Point& rPt);
+
+ // Endpunkt der Spiegelachse
+ const Point& GetRef2() const { return aRef1; }
+ void SetRef2(const Point& rPt);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// - Hit-Toleranzen:
+// Die muessen natuerlich immer in logischen Koordinaten angegeben werden. Also
+// immer brav den gewuenschten Pixelwert mit PixelToLogic in Logischen umrechnen.
+// Angenommen ein Wert 100 (logisch)
+// - Bei einer waagerechten Haarlinie (Objekt mit Hoehe 0) waere dann +/-100,
+// also ein vertikaler Bereich von 200 logischen Einheiten sensitiv.
+// - Bei Polygonen wird ein Rect mit der Groesse (200,200) generiert und ein
+// Touch-Test zwischen Poly und diesem Rect durchgefuehrt.
+// - Eine Sonderbehandlung erfahren Objekte, die bei SdrObject::HasEdit()==TRUE
+// liefern (z.B. Textrahmen). Hierbei wird ein weiterer sensitiver Bereich mit
+// einer Breite von 2*Tol (in diesem Beispiel also 200 Einheiten) um das Objekt
+// herumgelegt. Waerend ein Hit direkt ins Objekt die Edit-Methode ruft,
+// ermoeglicht ein Hit in den umliegenden sensitiven Bereich ein Dragging.
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDMRKV_HXX
+
diff --git a/svx/inc/svx/svdoashp.hxx b/svx/inc/svx/svdoashp.hxx
new file mode 100644
index 000000000000..6d19b3f6ade0
--- /dev/null
+++ b/svx/inc/svx/svdoashp.hxx
@@ -0,0 +1,265 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOASHP_HXX
+#define _SVDOASHP_HXX
+
+#include <svx/svdobj.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdhdl.hxx>
+#include <vector>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/drawing/XCustomShapeEngine.hpp>
+#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrObjList;
+class SdrObjListIter;
+class SfxItemSet;
+
+namespace sdr
+{
+ namespace properties
+ {
+ class CustomShapeProperties;
+ } // end of namespace properties
+} // end of namespace sdr
+
+class SdrAShapeObjGeoData : public SdrTextObjGeoData
+{
+ public:
+
+ sal_Bool bMirroredX;
+ sal_Bool bMirroredY;
+ double fObjectRotation;
+
+ com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue >
+ aAdjustmentSeq;
+};
+
+#define CUSTOMSHAPE_HANDLE_RESIZE_FIXED 1
+#define CUSTOMSHAPE_HANDLE_CREATE_FIXED 2
+#define CUSTOMSHAPE_HANDLE_RESIZE_ABSOLUTE_X 4
+#define CUSTOMSHAPE_HANDLE_RESIZE_ABSOLUTE_Y 8
+#define CUSTOMSHAPE_HANDLE_MOVE_SHAPE 16
+#define CUSTOMSHAPE_HANDLE_ORTHO4 32
+
+struct SdrCustomShapeInteraction
+{
+ com::sun::star::uno::Reference< com::sun::star::drawing::XCustomShapeHandle > xInteraction;
+ com::sun::star::awt::Point aPosition;
+ sal_Int32 nMode;
+};
+
+//************************************************************
+// SdrObjCustomShape
+//************************************************************
+
+class SVX_DLLPUBLIC SdrObjCustomShape : public SdrTextObj
+{
+private:
+ // fObjectRotation is containing the object rotation in degrees.
+ double fObjectRotation;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+public:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ // to allow sdr::properties::CustomShapeProperties access
+ friend class sdr::properties::CustomShapeProperties;
+
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mXRenderedCustomShape;
+
+ // #i37011# render geometry shadow
+ SdrObject* mpLastShadowGeometry;
+
+ static com::sun::star::uno::Reference< com::sun::star::drawing::XCustomShapeEngine > GetCustomShapeEngine( const SdrObjCustomShape* pCustomShape );
+
+// SVX_DLLPRIVATE com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::drawing::XCustomShapeHandle > >
+// SdrObjCustomShape::GetInteraction( const SdrObjCustomShape* pCustomShape ) const;
+// #i47293#
+// SVX_DLLPRIVATE std::vector< com::sun::star::uno::Reference< com::sun::star::drawing::XCustomShapeHandle > > GetFixedInteractionHandle() const;
+
+ SVX_DLLPRIVATE std::vector< SdrCustomShapeInteraction > GetInteractionHandles( const SdrObjCustomShape* pCustomShape ) const;
+
+ SVX_DLLPRIVATE void DragCreateObject( SdrDragStat& rDrag );
+
+ SVX_DLLPRIVATE void DragResizeCustomShape( const Rectangle& rNewRect, SdrObjCustomShape* pObj ) const;
+ SVX_DLLPRIVATE void DragMoveCustomShapeHdl( const Point aDestination, const sal_uInt16 nCustomShapeHdlNum, SdrObjCustomShape* pObj ) const;
+
+ // #i37011# centralize throw-away of render geometry
+ void InvalidateRenderGeometry();
+
+ // #i38892#
+ void ImpCheckCustomGluePointsAreAdded();
+
+ // returns the new text rect that corresponds to the current logic rect, the return value can be empty if nothing changed.
+ Rectangle ImpCalculateTextFrame( const FASTBOOL bHgt, const FASTBOOL bWdt );
+
+public:
+ // #i37011#
+ const SdrObject* GetSdrObjectFromCustomShape() const;
+ const SdrObject* GetSdrObjectShadowFromCustomShape() const;
+ sal_Bool GetTextBounds( Rectangle& rTextBound ) const;
+ sal_Bool IsTextPath() const;
+ static basegfx::B2DPolyPolygon GetLineGeometry( const SdrObjCustomShape* pCustomShape, const sal_Bool bBezierAllowed );
+
+protected:
+
+ String aName;
+
+public:
+
+ sal_Bool UseNoFillStyle() const;
+
+ sal_Bool IsMirroredX() const;
+ sal_Bool IsMirroredY() const;
+ void SetMirroredX( const sal_Bool bMirroredX );
+ void SetMirroredY( const sal_Bool bMirroredY );
+
+ double GetObjectRotation() const;
+ double GetExtraTextRotation() const;
+
+ TYPEINFO();
+ SdrObjCustomShape();
+ virtual ~SdrObjCustomShape();
+
+ /* is merging default attributes from type-shype into the SdrCustomShapeGeometryItem. If pType
+ is NULL then the type is being taken from the "Type" property of the SdrCustomShapeGeometryItem.
+ MergeDefaultAttributes is called when creating CustomShapes via UI and after importing */
+ void MergeDefaultAttributes( const rtl::OUString* pType = NULL );
+
+ /* the method is checking if the geometry data is unchanged/default, in this case the data might not be stored */
+ enum DefaultType
+ {
+ DEFAULT_PATH,
+ DEFAULT_VIEWBOX,
+ DEFAULT_SEGMENTS,
+ DEFAULT_GLUEPOINTS,
+ DEFAULT_STRETCHX,
+ DEFAULT_STRETCHY,
+ DEFAULT_EQUATIONS,
+ DEFAULT_HANDLES,
+ DEFAULT_TEXTFRAMES
+ };
+ sal_Bool IsDefaultGeometry( const DefaultType eDefaultType ) const;
+
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+
+ virtual void SetModel(SdrModel* pNewModel);
+
+ virtual void RecalcSnapRect();
+
+ virtual const Rectangle& GetSnapRect() const;
+ virtual const Rectangle& GetCurrentBoundRect() const;
+ virtual const Rectangle& GetLogicRect() const;
+
+ virtual void Move(const Size& rSiz);
+ virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void Shear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual void SetSnapRect(const Rectangle& rRect);
+ virtual void SetLogicRect(const Rectangle& rRect);
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+
+ virtual SdrGluePoint GetVertexGluePoint(USHORT nNum) const;
+
+ virtual void NbcSetStyleSheet( SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr );
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+
+ virtual FASTBOOL BegCreate( SdrDragStat& rStat );
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat); // #i37448#
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+
+ virtual FASTBOOL AdjustTextFrameWidthAndHeight(Rectangle& rR, FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE) const;
+ virtual FASTBOOL NbcAdjustTextFrameWidthAndHeight(FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE);
+ virtual FASTBOOL AdjustTextFrameWidthAndHeight(FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE);
+ virtual FASTBOOL IsAutoGrowHeight() const;
+ virtual FASTBOOL IsAutoGrowWidth() const;
+ virtual void SetVerticalWriting( sal_Bool bVertical );
+ virtual sal_Bool BegTextEdit( SdrOutliner& rOutl );
+ virtual void TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const;
+ virtual void EndTextEdit( SdrOutliner& rOutl );
+ virtual void TakeTextAnchorRect( Rectangle& rAnchorRect ) const;
+ virtual void TakeTextRect( SdrOutliner& rOutliner, Rectangle& rTextRect, FASTBOOL bNoEditText=FALSE,
+ Rectangle* pAnchorRect=NULL, BOOL bLineWidth=TRUE ) const;
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly( const SdrDragStat& rDrag) const;
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual basegfx::B2DPolyPolygon TakeContour() const;
+
+ virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual void SetPage( SdrPage* pNewPage );
+
+ virtual SdrObjGeoData *NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData &rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData &rGeo);
+
+ // need to take fObjectRotation instead of aGeo.nWink, replace it temporary
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+ virtual const SdrGluePointList* GetGluePointList() const;
+ //virtual SdrGluePointList* GetGluePointList();
+ virtual SdrGluePointList* ForceGluePointList();
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl( sal_uInt32 nHdlNum ) const;
+
+ // #i33136#
+ static bool doConstructOrthogonal(const ::rtl::OUString& rName);
+
+ using SdrTextObj::NbcSetOutlinerParaObject;
+};
+
+#endif //_SVDOASHP_HXX
+
diff --git a/svx/inc/svx/svdoattr.hxx b/svx/inc/svx/svdoattr.hxx
new file mode 100644
index 000000000000..9c50c633ad72
--- /dev/null
+++ b/svx/inc/svx/svdoattr.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOATTR_HXX
+#define _SVDOATTR_HXX
+
+#include <svx/xfillit0.hxx>
+#include <svx/xflasit.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xlnasit.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdattr.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SfxPoolItem;
+class SfxSetItem;
+class SdrOutliner;
+class SfxItemSet;
+class SfxItemPool;
+
+//************************************************************
+// SdrAttrObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrAttrObj : public SdrObject
+{
+private:
+ friend class SdrOutliner;
+
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ Rectangle maSnapRect;
+
+protected:
+ // Strichstaerke ermitteln. Keine Linie -> 0.
+ sal_Int32 ImpGetLineWdt() const;
+
+ // Zuhoeren, ob sich ein StyleSheet aendert
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ SdrAttrObj();
+ virtual ~SdrAttrObj();
+
+public:
+ TYPEINFO();
+
+ // Feststellen, ob bFilledObj && Fuellung!=FillNone
+ BOOL HasFill() const;
+
+ // Feststellen, ob Linie!=LineNone
+ BOOL HasLine() const;
+
+ virtual const Rectangle& GetSnapRect() const;
+
+ virtual void SetModel(SdrModel* pNewModel);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOATTR_HXX
+
diff --git a/svx/inc/svx/svdobj.hxx b/svx/inc/svx/svdobj.hxx
new file mode 100644
index 000000000000..40cc992e96d9
--- /dev/null
+++ b/svx/inc/svx/svdobj.hxx
@@ -0,0 +1,1186 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOBJ_HXX
+#define _SVDOBJ_HXX
+
+#include <memory>
+#include <cppuhelper/weakref.hxx>
+#include <vcl/mapmod.hxx>
+#include <tools/weakbase.hxx>
+#include <svl/lstner.hxx>
+#include <vcl/timer.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtypes.hxx> // fuer SdrLayerID
+#include <svx/svdglue.hxx> // Klebepunkte
+#include <svx/xdash.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xenum.hxx>
+#include <vcl/bitmapex.hxx>
+#include <svx/sdrobjectuser.hxx>
+#include "svx/svxdllapi.h"
+#include "svx/shapeproperty.hxx"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SfxBroadcaster;
+class Pointer;
+class AutoTimer;
+class OutlinerParaObject;
+class SdrOutliner;
+class SdrDragStat;
+class SdrHdl;
+class SdrHdlList;
+class SdrItemPool;
+class SdrModel;
+class SdrObjList;
+class SdrObject;
+class SdrPage;
+class SdrPageView;
+class SdrView;
+class SfxItemSet;
+class SfxSetItem;
+class SfxStyleSheet;
+class SfxUndoAction;
+class XFillAttrSetItem;
+class XLineAttrSetItem;
+class SfxItemPool;
+class PolyPolygon;
+class SfxPoolItem;
+class SdrVirtObj;
+class SdrDragView;
+
+namespace sdr
+{
+ namespace properties
+ {
+ class BaseProperties;
+ } // end of namespace properties
+} // end of namespace sdr
+
+// #110094#
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewContact;
+ } // end of namespace contact
+} // end of namespace sdr
+
+namespace svx
+{
+ class PropertyChangeNotifier;
+}
+
+//************************************************************
+// Defines
+//************************************************************
+
+enum SdrObjKind {OBJ_NONE = 0, // Abstraktes Objekt (SdrObject)
+ OBJ_GRUP = 1, // Objektgruppe
+ OBJ_LINE = 2, // Strecke
+ OBJ_RECT = 3, // Rechteck ww. mit runden Ecken
+ OBJ_CIRC = 4, // Kreis, Ellipse
+ OBJ_SECT = 5, // Kreissektor
+ OBJ_CARC = 6, // Kreisbogen
+ OBJ_CCUT = 7, // Kreisabschnitt
+ OBJ_POLY = 8, // Polygon, PolyPolygon
+ OBJ_PLIN = 9, // PolyLine
+ OBJ_PATHLINE =10, // Offene Bezierkurve
+ OBJ_PATHFILL =11, // Geschlossene Bezierkurve
+ OBJ_FREELINE =12, // Offene Freihandlinie
+ OBJ_FREEFILL =13, // Geschlossene Freihandlinie
+ OBJ_SPLNLINE =14, // Natuerlicher kubischer Spline (ni)
+ OBJ_SPLNFILL =15, // Periodischer kubischer Spline (ni)
+ OBJ_TEXT =16, // Textobjekt
+ OBJ_TEXTEXT =17, // Texterweiterungsrahmen (ni)
+ OBJ_wegFITTEXT, // FitToSize-Text (alle Zeilen gleich)
+ OBJ_wegFITALLTEXT, // FitToSize-Text (Zeilenweise) (ni)
+ OBJ_TITLETEXT =20, // Titeltext. Spezial-Textobjekt fuer StarDraw
+ OBJ_OUTLINETEXT=21, // OutlineText. Spezial-Textobjekt fuer StarDraw
+ OBJ_GRAF =22, // Fremdgrafik - (StarView Graphic)
+ OBJ_OLE2 =23, // OLE-Objekt
+ OBJ_EDGE =24, // Verbindungsobjekt fuer Konnektoren
+ OBJ_CAPTION =25, // Legendenobjekt
+ OBJ_PATHPOLY =26, // Polygon/PolyPolygon dargestellt durch SdrPathObj
+ OBJ_PATHPLIN =27, // Polyline dargestellt durch SdrPathObj
+ OBJ_PAGE =28, // Objekt, das eine SdrPage darstellt
+ OBJ_MEASURE =29, // Bemassungsobjekt
+ OBJ_DUMMY =30, // Dummyobjekt zum speichern von Luecken (zur anschliessenden Wiederherstellung der Surrogate)
+ OBJ_FRAME =31, // staendig aktives OLE (PlugIn-Frame oder sowas)
+ OBJ_UNO =32, // Universal Network Object im SvDraw-Obj eingepackt
+ OBJ_CUSTOMSHAPE=33, // CustomShape
+ OBJ_MEDIA =34, // Media shape
+ OBJ_TABLE =35, // Table
+ OBJ_MAXI};
+
+enum SdrUserCallType {SDRUSERCALL_MOVEONLY, // Nur verschoben, Groesse unveraendert
+ SDRUSERCALL_RESIZE, // Groesse und evtl. auch Pos veraendert
+ SDRUSERCALL_CHGATTR, // Attribute veraendert. Moeglicherweise neue Groesse wg. Linienbreite
+ SDRUSERCALL_DELETE, // Obj gibt es gleich nicht mehr. Schon keine Attr mehr.
+ SDRUSERCALL_COPY, // Zuweisungsoperator gerufen. Kann alles geaendert sein
+ SDRUSERCALL_INSERTED, // In eine Objektliste (z.B. Page) eingefuegt
+ SDRUSERCALL_REMOVED, // Aus der Objektliste entfernt
+ SDRUSERCALL_CHILD_MOVEONLY, // Ein Child einer Gruppe hat sich veraendert
+ SDRUSERCALL_CHILD_RESIZE, // Ein Child einer Gruppe hat sich veraendert
+ SDRUSERCALL_CHILD_CHGATTR, // Ein Child einer Gruppe hat sich veraendert
+ SDRUSERCALL_CHILD_DELETE, // Ein Child einer Gruppe hat sich veraendert
+ SDRUSERCALL_CHILD_COPY, // Ein Child einer Gruppe hat sich veraendert
+ SDRUSERCALL_CHILD_INSERTED, // Ein Child einer Gruppe hat sich veraendert
+ SDRUSERCALL_CHILD_REMOVED}; // Ein Child einer Gruppe hat sich veraendert
+
+/* nur voruebergehend, weil sonst MUSS-Aenderung */
+// #define nLayerID nLayerId
+
+//************************************************************
+// Hilfsklasse SdrObjUserCall
+//************************************************************
+
+class SVX_DLLPUBLIC SdrObjUserCall
+{
+public:
+ TYPEINFO();
+ virtual ~SdrObjUserCall();
+ virtual void Changed(const SdrObject& rObj, SdrUserCallType eType, const Rectangle& rOldBoundRect);
+};
+
+//************************************************************
+// Hilfsklasse SdrObjMacroHitRec
+//************************************************************
+
+class SdrObjMacroHitRec
+{
+public:
+ Point aPos;
+ Point aDownPos;
+ OutputDevice* pOut;
+ const SetOfByte* pVisiLayer;
+ const SdrPageView* pPageView;
+ USHORT nTol;
+ FASTBOOL bDown;
+
+public:
+ SdrObjMacroHitRec()
+ : pOut(NULL),
+ pVisiLayer(NULL),
+ pPageView(NULL),
+ nTol(0),
+ bDown(FALSE)
+ {}
+};
+
+//************************************************************
+// Hilfsklasse SdrObjUserData
+//
+// Anwenderdaten an einem Zeichenobjekt, z.B. applikationsspezifische Daten.
+// Jedes Zeichenobjekt kann beliebig viele dieser Records haben (SV-Liste).
+// Wer hier Daten halten will, muss sich ableiten und auch an der Factory
+// einen entsprechenden Link setzen.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrObjUserData
+{
+protected:
+ UINT32 nInventor;
+ UINT16 nIdentifier;
+ UINT16 nVersion;
+
+private:
+ SVX_DLLPRIVATE void operator=(const SdrObjUserData& rData); // nicht implementiert
+ SVX_DLLPRIVATE sal_Bool operator==(const SdrObjUserData& rData) const; // nicht implementiert
+ SVX_DLLPRIVATE sal_Bool operator!=(const SdrObjUserData& rData) const; // nicht implementiert
+
+public:
+ TYPEINFO();
+
+ SdrObjUserData(UINT32 nInv, UINT16 nId, UINT16 nVer)
+ : nInventor(nInv),
+ nIdentifier(nId),
+ nVersion(nVer)
+ {}
+ SdrObjUserData(const SdrObjUserData& rData)
+ : nInventor(rData.nInventor),
+ nIdentifier(rData.nIdentifier),
+ nVersion(rData.nVersion)
+ {}
+ virtual ~SdrObjUserData();
+
+ virtual SdrObjUserData* Clone(SdrObject* pObj1) const = 0; // #i71039# NULL -> 0
+ UINT32 GetInventor() const { return nInventor; }
+ UINT16 GetId() const { return nIdentifier; }
+
+ virtual FASTBOOL HasMacro (const SdrObject* pObj) const;
+ virtual SdrObject* CheckMacroHit (const SdrObjMacroHitRec& rRec, const SdrObject* pObj) const;
+ virtual Pointer GetMacroPointer (const SdrObjMacroHitRec& rRec, const SdrObject* pObj) const;
+ virtual void PaintMacro (OutputDevice& rOut, const Rectangle& rDirtyRect, const SdrObjMacroHitRec& rRec, const SdrObject* pObj) const;
+ virtual FASTBOOL DoMacro (const SdrObjMacroHitRec& rRec, SdrObject* pObj);
+ virtual XubString GetMacroPopupComment(const SdrObjMacroHitRec& rRec, const SdrObject* pObj) const;
+};
+
+//************************************************************
+// Hilfsklasse SdrObjUserDataList
+//************************************************************
+
+class SdrObjUserDataList
+{
+ Container aList;
+
+public:
+ SdrObjUserDataList()
+ : aList(1024,4,4)
+ {}
+ ~SdrObjUserDataList() { Clear(); }
+
+ void Clear();
+ USHORT GetUserDataCount() const { return USHORT(aList.Count()); }
+ SdrObjUserData* GetUserData(USHORT nNum) const { return (SdrObjUserData*)aList.GetObject(nNum); }
+ void InsertUserData(SdrObjUserData* pData, USHORT nPos=0xFFFF) { aList.Insert(pData,nPos); }
+ SdrObjUserData* RemoveUserData(USHORT nNum) { return (SdrObjUserData*)aList.Remove(nNum);}
+ void DeleteUserData(USHORT nNum) { delete RemoveUserData(nNum); }
+};
+
+//************************************************************
+// Hilfsklasse SdrObjGeoData
+//
+// Alle geometrischen Daten eines beliebigen Objektes zur Übergabe an's Undo/Redo
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrObjGeoData
+{
+public:
+ Rectangle aBoundRect;
+ Point aAnchor;
+ SdrGluePointList* pGPL;
+ BOOL bMovProt;
+ BOOL bSizProt;
+ BOOL bNoPrint;
+ BOOL bClosedObj;
+ bool mbVisible;
+ SdrLayerID mnLayerID;
+
+public:
+ SdrObjGeoData();
+ virtual ~SdrObjGeoData();
+};
+
+//************************************************************
+// Hilfsklasse SdrObjPlusData
+//
+// Bitsack fuer DrawObjekte
+//
+//************************************************************
+
+class SdrObjPlusData
+{
+ friend class SdrObject;
+
+public:
+ SfxBroadcaster* pBroadcast; // Broadcaster, falls dieses Obj referenziert wird (bVirtObj=TRUE). Auch fuer Konnektoren etc.
+ SdrObjUserDataList* pUserDataList; // applikationsspeziefische Daten
+ SdrGluePointList* pGluePoints; // Klebepunkte zum Ankleben von Objektverbindern
+ AutoTimer* pAutoTimer;
+
+ // #i68101#
+ // object name, title and description
+ String aObjName;
+ String aObjTitle;
+ String aObjDescription;
+
+ // Name to be used by applications
+ XubString aHTMLName;
+
+public:
+ TYPEINFO();
+ SdrObjPlusData();
+ virtual ~SdrObjPlusData();
+ virtual SdrObjPlusData* Clone(SdrObject* pObj1) const;
+};
+
+//************************************************************
+// Hilfsklasse SdrObjTransformInfoRec
+//
+// gibt Auskunft ueber verschiedene Eigenschaften eines ZObjects
+//
+//************************************************************
+
+class SdrObjTransformInfoRec
+{
+public:
+ unsigned bSelectAllowed : 1; // FALSE=Obj kann nicht selektiert werden
+ unsigned bMoveAllowed : 1; // FALSE=Obj kann nicht verschoben werden
+ unsigned bResizeFreeAllowed : 1; // FALSE=Obj kann nicht frei resized werden
+ unsigned bResizePropAllowed : 1; // FALSE=Obj kann nichtmal proportional resized werden
+ unsigned bRotateFreeAllowed : 1; // FALSE=Obj kann nicht frei gedreht werden
+ unsigned bRotate90Allowed : 1; // FALSE=Obj kann nichtmal im 90deg Raster gedreht werden
+ unsigned bMirrorFreeAllowed : 1; // FALSE=Obj kann nicht frei gespiegelt werden
+ unsigned bMirror45Allowed : 1; // FALSE=Obj kann nichtmal ueber Achse im 45deg Raster gespiegelt werden
+ unsigned bMirror90Allowed : 1; // FALSE=Obj kann ebenfalls nicht ueber Achse im 90deg Raster gespiegelt werden
+ unsigned bTransparenceAllowed : 1; // FALSE=Obj does not have an interactive transparence control
+ unsigned bGradientAllowed : 1; // FALSE=Obj dooes not have an interactive gradient control
+ unsigned bShearAllowed : 1; // FALSE=Obj kann nicht verzerrt werden
+ unsigned bEdgeRadiusAllowed : 1;
+ unsigned bNoOrthoDesired : 1; // TRUE bei Rect; ... FALSE bei BMP,MTF;
+ unsigned bNoContortion : 1; // FALSE=Kein verzerren (bei Crook) moeglich (nur TRUE bei PathObj und Gruppierten PathObjs)
+ unsigned bCanConvToPath : 1; // FALSE=Keine Konvertierung in PathObj moeglich
+ unsigned bCanConvToPoly : 1; // FALSE=Keine Konvertierung in PolyObj moeglich
+ unsigned bCanConvToContour : 1; // FALSE=no conversion down to whole contour possible
+ unsigned bCanConvToPathLineToArea : 1; // FALSE=Keine Konvertierung in PathObj moeglich mit Wandlung von LineToArea
+ unsigned bCanConvToPolyLineToArea : 1; // FALSE=Keine Konvertierung in PolyObj moeglich mit Wandlung von LineToArea
+
+public:
+ SdrObjTransformInfoRec()
+ : bSelectAllowed(TRUE),
+ bMoveAllowed(TRUE),
+ bResizeFreeAllowed(TRUE),
+ bResizePropAllowed(TRUE),
+ bRotateFreeAllowed(TRUE),
+ bRotate90Allowed(TRUE),
+ bMirrorFreeAllowed(TRUE),
+ bMirror45Allowed(TRUE),
+ bMirror90Allowed(TRUE),
+ bTransparenceAllowed(TRUE),
+ bGradientAllowed(TRUE),
+ bShearAllowed(TRUE),
+ bEdgeRadiusAllowed(TRUE),
+ bNoOrthoDesired(TRUE),
+ bNoContortion(TRUE),
+ bCanConvToPath(TRUE),
+ bCanConvToPoly(TRUE),
+ bCanConvToContour(FALSE),
+ bCanConvToPathLineToArea(TRUE),
+ bCanConvToPolyLineToArea(TRUE)
+ {}
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// To make things more safe, allow users of the object to register at it. The users need to be derived
+// from SdrObjectUser to get a call. The users do not need to call RemoveObjectUser() at the object
+// when they get called from PageInDestruction().
+class SdrObject;
+
+class SdrObjectUser
+{
+public:
+ virtual void ObjectInDestruction(const SdrObject& rObject) = 0;
+};
+
+// typedef for GetParentContacts()
+typedef ::std::vector< SdrObjectUser* > ObjectUserVector;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@ @@@@@ @@@@@@ @@@@@ @@@@ @@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@@@@ @@ @@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@ @@@@@ @@@@ @@@@@ @@@@ @@
+//
+// Abstraktes DrawObject
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SvxShape;
+class SVX_DLLPUBLIC SdrObject: public SfxListener, public tools::WeakBase< SdrObject >
+{
+private:
+ // ObjectUser section
+ sdr::ObjectUserVector maObjectUsers;
+
+public:
+ void AddObjectUser(sdr::ObjectUser& rNewUser);
+ void RemoveObjectUser(sdr::ObjectUser& rOldUser);
+
+ // BaseProperties section
+private:
+ sdr::properties::BaseProperties* mpProperties;
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+public:
+ virtual sdr::properties::BaseProperties& GetProperties() const;
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // #110094# DrawContact section
+private:
+ sdr::contact::ViewContact* mpViewContact;
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+public:
+ sdr::contact::ViewContact& GetViewContact() const;
+
+ // DrawContact support: Methods for handling Object changes
+ void ActionChanged() const;
+
+private:
+ friend class SdrObjListIter;
+ friend class SdrVirtObj;
+ friend class SdrRectObj;
+
+protected:
+ Rectangle aOutRect; // umschliessendes Rechteck fuer Paint (inkl. LineWdt, ...)
+ Point aAnchor; // Ankerposition (Writer)
+ SdrObjList* pObjList; // Liste, in dem das Obj eingefuegt ist.
+ SdrPage* pPage;
+ SdrModel* pModel;
+ SdrObjUserCall* pUserCall;
+ SdrObjPlusData* pPlusData; // Broadcaster, UserData, Konnektoren, ... (Das ist der Bitsack)
+
+ sal_uInt32 nOrdNum; // Rangnummer des Obj in der Liste
+
+ /** Position in the navigation order. SAL_MAX_UINT32 when not used.
+ */
+ sal_uInt32 mnNavigationPosition;
+ SdrLayerID mnLayerID;
+
+ // Objekt zeigt nur auf ein Anderes
+ unsigned bVirtObj : 1;
+ unsigned bSnapRectDirty : 1;
+ unsigned bNetLock : 1; // ni
+ unsigned bInserted : 1; // nur wenn TRUE gibt's RepaintBroadcast & SetModify
+ unsigned bGrouped : 1; // Member eines GroupObjektes?
+
+ // Die folgende Flags werden gestreamt
+ unsigned bMovProt : 1; // If true, the position is protected
+ unsigned bSizProt : 1; // If true, the size is protected
+ unsigned bNoPrint : 1; // If true, the object is not printed.
+ unsigned mbVisible : 1; // If false, the object is not visible on screen (but maybe on printer, depending on bNoprint
+ // Wenn bEmptyPresObj TRUE ist, handelt es sich um ein
+ // Praesentationsobjekt, dem noch kein Inhalt zugewiesen
+ // wurde. Default ist das Flag auf FALSE. Die Verwaltung
+ // uebernimmt die Applikation. Im Zuweisungsoperator sowie
+ // beim Clone wird das Flag nicht mitkopiert!
+ // Das Flag ist persistent.
+ unsigned bEmptyPresObj : 1; // Leeres Praesentationsobjekt (Draw)
+
+ // TRUE=Objekt ist als Objekt der MasterPage nicht sichtbar
+ unsigned bNotVisibleAsMaster : 1;
+
+ // TRUE=Es handelt sich hierbei um ein geschlossenes Objekt, also nicht Linie oder Kreisbogen ...
+ unsigned bClosedObj : 1;
+
+ unsigned bIsEdge : 1;
+ unsigned bIs3DObj : 1;
+ unsigned bMarkProt : 1; // Markieren verboten. Persistent
+ unsigned bIsUnoObj : 1;
+ unsigned bNotMasterCachable : 1;
+
+ // #i25616#
+ unsigned mbLineIsOutsideGeometry : 1;
+
+ // #i25616#
+ unsigned mbSupportTextIndentingOnLineWidthChange : 1;
+
+ // on import of OLE object from MS documents the BLIP size might be retrieved,
+ // in this case the following member is initialized as nonempty rectangle
+ Rectangle maBLIPSizeRectangle;
+
+ // global static ItemPool for not-yet-insetred items
+private:
+ static SdrItemPool* mpGlobalItemPool;
+public:
+ static SdrItemPool& GetGlobalDrawObjectItemPool();
+private:
+ SVX_DLLPRIVATE static void FreeGlobalDrawObjectItemPool();
+
+protected:
+ void ImpDeleteUserData();
+ SdrObjUserData* ImpGetMacroUserData() const;
+ Rectangle ImpDragCalcRect(const SdrDragStat& rDrag) const;
+
+ // Fuer GetDragComment
+ void ImpTakeDescriptionStr(USHORT nStrCacheID, String& rStr, USHORT nVal=0) const;
+
+ void ImpForcePlusData() { if (pPlusData==NULL) pPlusData=NewPlusData(); }
+
+ String GetWinkStr(long nWink, FASTBOOL bNoDegChar=FALSE) const;
+ String GetMetrStr(long nVal, MapUnit eWantMap=MAP_MM, FASTBOOL bNoUnitChars=FALSE) const;
+
+ // bNotMyself=TRUE bedeutet: Nur die ObjList auf Dirty setzen, nicht mich.
+ // Wird z.B. benoetigt fuer NbcMove, denn da movt man SnapRect und aOutRect
+ // i.d.R. gleich mit um die Neuberechnung zu sparen.
+public:
+ virtual void SetRectsDirty(sal_Bool bNotMyself = sal_False);
+protected:
+
+ // ueberladen, wenn man sich von SdrObjPlusData abgeleitet hat:
+ virtual SdrObjPlusData* NewPlusData() const;
+
+protected:
+ // Diese 3 Methoden muss ein abgeleitetes Objekt ueberladen, wenn es eigene
+ // geometrische Daten besitzt, die fuer den Undo-Fall gesichert werden
+ // sollen. NewGeoData() erzeugt lediglich eine leere Instanz auf eine von
+ // SdrObjGeoData abgeleitete Klasse.
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+protected:
+ virtual ~SdrObject();
+
+public:
+ TYPEINFO();
+ SdrObject();
+
+ /** fres the SdrObject pointed to by the argument
+
+ In case the object has an SvxShape, which has the ownership of the object, it
+ is actually *not* deleted.
+ */
+ static void Free( SdrObject*& _rpObject );
+
+ // This method is only for access from Property objects
+ virtual void SetBoundRectDirty();
+
+ virtual void SetObjList(SdrObjList* pNewObjList);
+ SdrObjList* GetObjList() const { return pObjList; }
+
+ virtual void SetPage(SdrPage* pNewPage);
+ SdrPage* GetPage() const { return pPage; }
+
+ virtual void SetModel(SdrModel* pNewModel);
+ SdrModel* GetModel() const { return pModel; }
+ SdrItemPool* GetObjectItemPool() const;
+
+ void AddListener(SfxListener& rListener);
+ void RemoveListener(SfxListener& rListener);
+ const SfxBroadcaster* GetBroadcaster() const { return pPlusData!=NULL ? pPlusData->pBroadcast : NULL; }
+
+ virtual void AddReference(SdrVirtObj& rVrtObj);
+ virtual void DelReference(SdrVirtObj& rVrtObj);
+ virtual UINT32 GetObjInventor() const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+
+ // Layer interface
+ virtual SdrLayerID GetLayer() const;
+ virtual void NbcSetLayer(SdrLayerID nLayer);
+ virtual void SetLayer(SdrLayerID nLayer);
+ // renaming GetLayerSet -> getMergedHierarchyLayerSet to make clear what happens here. rSet needs to be empty.
+ virtual void getMergedHierarchyLayerSet(SetOfByte& rSet) const;
+
+ // UserCall interface
+ void SetUserCall(SdrObjUserCall* pUser) { pUserCall=pUser; }
+ SdrObjUserCall* GetUserCall() const { return pUserCall; }
+ void SendUserCall(SdrUserCallType eUserCall, const Rectangle& rBoundRect) const;
+
+ // Ein solcher Referenzpunkt ist z.B. der Punkt eines Symbols, der
+ // der beim Einfuegen des Symbols auf das Raster gefangen werden soll
+ // oder der Fixpunkt eines Bildes innerhalb eines Animationsobjektes.
+ virtual FASTBOOL HasRefPoint() const;
+ virtual Point GetRefPoint() const;
+ virtual void SetRefPoint(const Point& rPnt);
+
+ // #i68101#
+ // An object may have a user-set Name (Get/SetName()), e.g SdrGrafObj, SdrObjGroup
+ // or SdrOle2Obj.
+ // It may also have a Title and a Description for accessibility purposes.
+ void SetName(const String& rStr);
+ String GetName() const;
+ void SetTitle(const String& rStr);
+ String GetTitle() const;
+ void SetDescription(const String& rStr);
+ String GetDescription() const;
+
+ // support for HTMLName
+ void SetHTMLName(const String& rStr);
+ String GetHTMLName() const;
+
+ // Fuer Gruppenobjekte
+ sal_Bool IsGroupObject() const { return GetSubList()!=NULL; }
+ virtual SdrObjList* GetSubList() const;
+ SdrObject* GetUpGroup() const;
+
+ // Ueber die Objekt-Ordnungsnummer kann man feststellen, ob ein Objekt vor
+ // oder hinter einem anderen liegt. Objekte mit kleinen Ordnungsnummern werden
+ // zuerst gezeichnet, Objekte mit grossen Ordnungsnummern zuletzt.
+ // Wird die Reihenfolge der Objekte in der Liste veraendert, so wird ein
+ // Dirty-Flag gesetzt (an der Page). Beim naechsten SdrObject::GetOrdNum()
+ // werden die Ordnungsnummer aller Objekte der Liste neu bestimmt.
+ UINT32 GetOrdNum() const;
+
+ // Diese Methode sollte nur verwendet werden, wenn man ganz genau weiss,
+ // was man macht:
+ UINT32 GetOrdNumDirect() const { return nOrdNum; }
+
+ // Das Setzen der Ordnungsnummer sollte nur vom Model bzw. von der Page
+ // geschehen.
+ void SetOrdNum(UINT32 nNum) { nOrdNum=nNum; }
+
+ /** Return the position in the navigation order for the called object.
+ Note that this method may update the navigation position of the
+ called and of other SdrObjects. Therefore this method can not be
+ const.
+ @return
+ If no navigation position has been explicitly defined then the
+ result of GetOrdNum() is returned.
+ */
+ sal_uInt32 GetNavigationPosition (void);
+
+ /** Set the position in the navigation position to the given value.
+ This method is typically used only by the model after a change to
+ the navigation order.
+ This method does not change the navigation position of other
+ objects.
+ Use SdrObjList::SetObjectNavigationPosition() instead.
+ */
+ void SetNavigationPosition (const sal_uInt32 nPosition);
+
+ const AutoTimer* GetAutoTimer() const { return pPlusData!=NULL ? pPlusData->pAutoTimer : NULL; }
+ AutoTimer* GetAutoTimer() { return pPlusData!=NULL ? pPlusData->pAutoTimer : NULL; }
+ AutoTimer* ForceAutoTimer();
+
+ // #111111#
+ // To make clearer that this method may trigger RecalcBoundRect and thus may be
+ // expensive and somtimes problematic (inside a bigger object change You will get
+ // non-useful BoundRects sometimes) i rename that method from GetBoundRect() to
+ // GetCurrentBoundRect().
+ virtual const Rectangle& GetCurrentBoundRect() const;
+
+ // #111111#
+ // To have a possibility to get the last calculated BoundRect e.g for producing
+ // the first rectangle for repaints (old and new need to be used) without forcing
+ // a RecalcBoundRect (which may be problematical and expensive sometimes) i add here
+ // a new method for accessing the last BoundRect.
+ virtual const Rectangle& GetLastBoundRect() const;
+
+ virtual void RecalcBoundRect();
+
+ void BroadcastObjectChange() const;
+
+ // Modified-Flag am Model setzen
+ virtual void SetChanged();
+
+ // Tooling for painting a single object to a OutputDevice. This will be needed as long
+ // as not all painting is changed to use DrawContact objects.
+ sal_Bool SingleObjectPainter(OutputDevice& rOut) const;
+ BOOL LineGeometryUsageIsNecessary() const;
+
+ // Clone() soll eine komplette Kopie des Objektes erzeugen.
+ virtual SdrObject* Clone() const;
+ virtual void operator=(const SdrObject& rObj);
+
+ // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ // Das Xor-Polygon wird von der View zu Draggen des Objektes benoetigt.
+ // Alle Polygone innerhalb des PolyPolygon werden als PolyLine interpretiert.
+ // Moechte man ein geschlossenes Polygon, so muss man es explizit schliessen.
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+
+ // Die Kontur fuer TextToContour
+ virtual basegfx::B2DPolyPolygon TakeContour() const;
+
+ // Ueber GetHdlCount gibt ein Objekt die Anzahl seiner Handles preis.
+ // Im Normalfall werden dies 8 sein, bei einer Strecke 2. Bei Polygonobjekten
+ // (Polygon,Spline,Bezier) kann die Handleanzahl wesentlich groesser werden.
+ // Polygonobjekten wird ausserdem die Moeglichkeit eingeraeumt einen Punkt
+ // eines selektierten Objekts zu selektieren. Das Handle dieses Punktes wird
+ // dann durch einen Satz neuer Handles ausgetauscht (PlusHdl). Bei einem
+ // Polygon wird das wohl ein einfacher Selektionshandle sein, bei einer
+ // Bezierkurve dagegen koennen das schon bis zu 3 Handles werden (inkl Gewichte).
+ // GetHdl() und GetPlusHdl() muessen Handleinstanzen mit new erzeugen!
+ // Ein Objekt, das bei HasSpacialDrag() TRUE liefert muss diese Methoden
+ // zur Verfuegung stellen (inkl. FillHdlList).
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+ virtual sal_uInt32 GetPlusHdlCount(const SdrHdl& rHdl) const;
+ virtual SdrHdl* GetPlusHdl(const SdrHdl& rHdl, sal_uInt32 nPlNum) const;
+ virtual void AddToHdlList(SdrHdlList& rHdlList) const;
+
+ // Die Standardtransformationen (Move,Resize,Rotate,Mirror,Shear) werden von der
+ // View uebernommen (TakeXorPoly(),...).
+ // Objektspeziefisches draggen wie z.B. Eckenradius bei Rechtecken,
+ // Stuetzstellen bei Splines, Gewichte bei Bezierkurven und Pointer von
+ // Labelobjekten muss vom Objekt selbst gehandled werden. Um das Model
+ // Statusfrei zu halten werden die Statusdaten an der View gehalten und dem
+ // Objekt dann uebergeben. EndDrag liefrt im Normalfall TRUE fuer Erfolg.
+ // FALSE kann zurueckgegeben werden, wenn das Dragging das Objekt nicht
+ // veraendert hat, wobei dir evtl. Tatsache das die Maus nicht bewegt wurde
+ // bereits von der View abgefangen wird.
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+ virtual basegfx::B2DPolyPolygon getSpecialDragPoly(const SdrDragStat& rDrag) const;
+
+ // FullDrag support. This is for standard interactions and for SdrObjOwn
+ // support. If supportsFullDrag() returns true, getFullDragClone has to
+ // return a cloned SdrObject (who's ownership it loses) at which modifications
+ // like Move(), Scale(), etc or applySpecialDrag() will be executed. That
+ // object will be visualized on overlay for full drag, but should not be
+ // part of the model, thus not changing anything since it's only a temporary
+ // helper object for interaction
+ virtual bool supportsFullDrag() const;
+ virtual SdrObject* getFullDragClone() const;
+
+ // Jedes Objekt muss in der Lage sein sich selbst interaktiv zu erzeugen.
+ // Beim MausDown wird zunaechst ein neues Objekt erzeugt und dann seine
+ // BegCreate()-Methode gerufen. Bei jedem MausMode wird dann MovCreate
+ // gerufen. BrkCreate() bedeutet, dass der User die interaktive Objekt-
+ // erzeugung abgebrochen hat. EndCreate() wird gerufen beim MouseUp-Event.
+ // Liefert EndCreate() ein TRUE, so ist die Objekterzeugung abgeschlossen;
+ // das Objekt wird in die entsprechende Liste eingefuegt. Andernfalls
+ // (EndCreate()==FALSE) gehe ich davon aus, dass weitere Punkte zur
+ // Objekterzeugung notwendig sind (Polygon,...). Der Parameter eCmd
+ // enthaelt die Anzahl der Mausklicks (so die App diese durchreicht).
+ // BckCreate() -> Letztes EndCreate() rueckgaengig machen (z.B. letzten
+ // Polygonpunkt wieder loeschen).
+ // RetrunCode: TRUE=Weiter gehts, FALSE=Create dadurch abgebrochen.
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat); // TRUE=Xor muss repainted werden
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+
+ // damit holt man sich den Pointer, der das Createn dieses Objekts symbolisiert
+ virtual Pointer GetCreatePointer() const;
+
+ // Polygon das waehrend des Erzeugens aufgezogen wird
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+
+ // Die Methoden Move, Resize, Rotate, Mirror, Shear, SetSnapRect und
+ // SetLogicRect rufen jeweils die entsprechenden Nbc-Methoden, versenden einen
+ // Repaint-Broadcast und setzen den Modified-Status am Model. Abgeleitete
+ // Objekte sollten i.d.R. nur die Nbc-Methoden ueberladen.
+ // Nbc bedeutet: 'NoBroadcast'.
+ virtual void NbcMove (const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear (const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ virtual void Move (const Size& rSiz);
+ virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void Rotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void Mirror(const Point& rRef1, const Point& rRef2);
+ virtual void Shear (const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ // Die relative Position eines Zeichenobjektes ist die Entfernung der
+ // linken oberen Eche des logisch umschliessenden Rechtecks (SnapRect)
+ // zum Anker.
+ virtual void NbcSetRelativePos(const Point& rPnt);
+ virtual void SetRelativePos(const Point& rPnt);
+ virtual Point GetRelativePos() const;
+ void ImpSetAnchorPos(const Point& rPnt) { aAnchor=rPnt; }
+ virtual void NbcSetAnchorPos(const Point& rPnt);
+ virtual void SetAnchorPos(const Point& rPnt);
+ virtual const Point& GetAnchorPos() const;
+
+ // Snap wird nicht auf dem BoundRect ausgefuehrt, sondern nach Moeglichkeit auf
+ // logischen Koordinaten (also ohne Beruecksichtigung von Strichstaerke, ... ).
+ // SetSnapRect() versucht das Objekt so hinzusizen, dass es in das uebergebene
+ // Rect passt (ohne Strichstaerke, ...)
+ virtual void RecalcSnapRect();
+ virtual const Rectangle& GetSnapRect() const;
+ virtual void SetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+
+ // Logic Rect: Beim Rect z.B. ohne Beruecksichtigung des Drehwinkels, Shear, ...
+ virtual const Rectangle& GetLogicRect() const;
+ virtual void SetLogicRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+
+ /** the defaul is to set the logic rect to the given rectangle rMaxRect. If the shape
+ has an intrinsic aspect ratio it may set the logic rect so the aspect
+ ratio is kept but still inside the rectangle rMaxRect.
+
+ If bShrinkOnly is set to true, the size of the current logic rect will not
+ be changed if it is smaller than the given rectangle rMaxRect. */
+ virtual void AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly = false );
+
+ // Drehwinkel und Shear
+ virtual long GetRotateAngle() const;
+ virtual long GetShearAngle(FASTBOOL bVertical=FALSE) const;
+
+ // Zum Fangen von/auf ausgezeichneten Punkten eines Obj (Polygonpunkte,
+ // Kreismittelpunkt, ...)
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ // Fuer Objekte, bei denen jeder einzelne Punkt verschoben werden kann,
+ // z.B. Polygone, Polylines, Linien, ... . Bei diesen Objekten werden
+ // Punkte selektiert (ggf. Mehrfachselektion), geloescht, eingefuegt,
+ // als Mehrfachselektion verschoben und gedreht, ...
+ // Nur solche Objekte koennen PlusHandles haben (z.B. die Gewichte an den
+ // Bezierkurven.
+ virtual sal_Bool IsPolyObj() const;
+ virtual sal_uInt32 GetPointCount() const;
+ virtual Point GetPoint(sal_uInt32 i) const;
+ void SetPoint(const Point& rPnt, sal_uInt32 i);
+ virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 i);
+
+ // Alle geometrischen Daten holen fuer's Undo/Redo
+ virtual SdrObjGeoData* GetGeoData() const;
+ virtual void SetGeoData(const SdrObjGeoData& rGeo);
+
+ // ItemSet access
+ const SfxItemSet& GetMergedItemSet() const;
+ void SetMergedItem(const SfxPoolItem& rItem);
+ void ClearMergedItem(const sal_uInt16 nWhich = 0);
+ void SetMergedItemSet(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+ const SfxPoolItem& GetMergedItem(const sal_uInt16 nWhich) const;
+
+ // internal versions
+protected:
+ const SfxItemSet& GetObjectItemSet() const;
+ void SetObjectItem(const SfxPoolItem& rItem);
+ void ClearObjectItem(const sal_uInt16 nWhich = 0);
+ void SetObjectItemSet(const SfxItemSet& rSet);
+ const SfxPoolItem& GetObjectItem(const sal_uInt16 nWhich) const;
+
+public:
+ // syntactical sugar for ItemSet accesses
+ void SetMergedItemSetAndBroadcast(const SfxItemSet& rSet, sal_Bool bClearAllItems = sal_False);
+
+ // NotPersistAttr fuer Layer, ObjName, geometrische Transformationen, ...
+ void TakeNotPersistAttr(SfxItemSet& rAttr, FASTBOOL bMerge) const;
+ void ApplyNotPersistAttr(const SfxItemSet& rAttr);
+ void NbcApplyNotPersistAttr(const SfxItemSet& rAttr);
+
+ // bDontRemoveHardAttr=FALSE: alle in der Vorlage gesetzten Attribute werden am
+ // Zeichenobjekt auf Default gesetzt; TRUE: alle harten Attribute bleiben erhalten.
+ void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+ virtual void NbcSetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
+ SfxStyleSheet* GetStyleSheet() const;
+
+ // TextEdit
+ virtual FASTBOOL HasTextEdit() const;
+
+ // Return==TRUE: TextEditMode gestartet
+ virtual sal_Bool BegTextEdit(SdrOutliner& rOutl);
+ virtual void EndTextEdit(SdrOutliner& rOutl);
+
+ // Text wird im Format des Outliners gehalten
+ // SetOutlinerParaObject: Eigentumsuebereignung von *pTextObject!
+ virtual void SetOutlinerParaObject(OutlinerParaObject* pTextObject);
+ virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
+ virtual OutlinerParaObject* GetOutlinerParaObject() const;
+ virtual void NbcReformatText();
+ virtual void ReformatText();
+
+ void BurnInStyleSheetAttributes();
+
+ // Macrofaehigkeit, z.B. ein Rechteck als PushButton.
+ virtual FASTBOOL HasMacro() const;
+ virtual SdrObject* CheckMacroHit (const SdrObjMacroHitRec& rRec) const;
+ virtual Pointer GetMacroPointer (const SdrObjMacroHitRec& rRec) const;
+ virtual void PaintMacro (OutputDevice& rOut, const Rectangle& rDirtyRect, const SdrObjMacroHitRec& rRec) const;
+ virtual FASTBOOL DoMacro (const SdrObjMacroHitRec& rRec);
+ virtual XubString GetMacroPopupComment(const SdrObjMacroHitRec& rRec) const;
+ sal_Bool IsMacroHit(const SdrObjMacroHitRec& rRec) const { return CheckMacroHit(rRec)!=NULL; }
+
+ // Konnektoren. (siehe auch Dokumentation in SvdoEdge.HXX, SdrEdgeObj
+ // sowie SvdGlue.HXX und SvdGlEV.HXX)
+ // Es gibt Knoten und Kanten. Eine Kante kann theoretisch auch Knoten
+ // sein, das ist jedoch in dieser Version noch nicht implementiert.
+ // Ein Knoten hat eine Anzahl von Klebepunkten, wo Kanten angeklebt
+ // werden koennen.
+ // Eine Kante kann
+ // - ohne Verbindungen sein
+ // - an einem Ende auf der Wiese stehen und am anderen Ende an
+ // genau einem Knoten gebunden sein
+ // - an beiden Enden mit jeweils genau einem Knoten verbunden sein.
+ // Die Kante ist Listener bei seinen bis zu 2 Knoten.
+ // Wird der Knoten verschoben oder Resized, folgen alle angebundenen
+ // Kanten. Ebenso bei SetGluePoint()... am Knoten.
+ // Beim Verschieben/Resizen der Kante wird dagegen die Verbindung
+ // geloesst.
+ // Objekt ist ein Knoten?
+ virtual FASTBOOL IsNode() const;
+
+ // Automatische Klebepunkte:
+ // je 4 Scheitelpunkt- und Eckpositionen muss ein Knotenobjekt liefern
+ // i.d.R. 0=oben, 1=rechts, 2=unten, 3=links
+ virtual SdrGluePoint GetVertexGluePoint(USHORT nNum) const;
+
+ // i.d.R. 0=linksoben, 1=rechtsoben, 2=rechtsunten, 3=linksunten
+ virtual SdrGluePoint GetCornerGluePoint(USHORT nNum) const;
+
+ // Liste aller Klebepunkte. Kann NULL sein.
+ virtual const SdrGluePointList* GetGluePointList() const;
+ //virtual SdrGluePointList* GetGluePointList();
+
+ // Nach veraendern der GluePointList muss man am Obj SendRepaintBroadcast rufen!
+ virtual SdrGluePointList* ForceGluePointList();
+
+ // Temporaer zu setzen fuer Transformationen am Bezugsobjekt
+ void SetGlueReallyAbsolute(FASTBOOL bOn);
+ void NbcRotateGluePoints(const Point& rRef, long nWink, double sn, double cs);
+ void NbcMirrorGluePoints(const Point& rRef1, const Point& rRef2);
+ void NbcShearGluePoints (const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ // Objekt ist eine Kante?
+ virtual FASTBOOL IsEdge() const;
+
+ // bTail1=TRUE: Linienanfang, sonst LinienEnde
+ // pObj=NULL: Disconnect
+ virtual void ConnectToNode(FASTBOOL bTail1, SdrObject* pObj);
+ virtual void DisconnectFromNode(FASTBOOL bTail1);
+ virtual SdrObject* GetConnectedNode(FASTBOOL bTail1) const;
+
+ /** sets the writing mode of the object's context
+
+ Objects which itself do not support different writing modes will ignore this call.
+
+ Objects which support different writing modes, but have an own, explicit writing mode set,
+ will also ignore this call.
+
+ Objects which support different writing modes, and whose own mode is set to css.text.WritingMode2.CONTEXT,
+ will use the given writing mode to calculate their "effective writing mode".
+
+ The behaviour of this method is undefined if you pass css.text.WritingMode2.CONTEXT.
+
+ @param _nContextWritingMode
+ the effective writing mode of the context of the object
+ */
+ virtual void SetContextWritingMode( const sal_Int16 _nContextWritingMode );
+
+ // Wenn ein Objekt in der Lage ist, sich in ein Polygon oder in eine
+ // Bezierkurve (oder beides) zu verwandeln, dann sollten die folgenden
+ // Methoden ueberladen werden.
+ // Z.B. Ein RectObj mit Strichstaerke 10, SOLID_PEN in Polygon wandeln:
+ // Im Modus bLineToArea=FALSE soll ein PolyObj mit 4 Stuetzstellen,
+ // Strichstaerke 10 und SOLiD_PEN erzeugt werden.
+ // Im Modus bLineToArea=TRUE dagegen soll das generierte Obj immer ein
+ // LinienAttribut NULL_PEN haben, und die Linie (auch Linienmuster) selbst
+ // durch Polygonflaechen emuliert werden, die dadurch anschliessend vom
+ // Anwender manipuliert werden koennen. Das RectObj kann sich somit also
+ // nur korrekt konvertieren, wenn es als Flaechenattribut NULL_BRUSH
+ // besitzt. Es muesste in diesem Fall dann:
+ // - SOLID_BRUSH mit der Farbe des gesetzten Pen setzen
+ // - NULL_PEN setzen
+ // - PolyPolygon mit 2 Polygonen zu je 4 Stuetzstellen generieren.
+ // Der Returnwert ist jeweils ein SdrObject*, da als Rueckgabe zur Not
+ // auch Gruppenobjekte erlaubt sind (z.B. fuer SdrTextObj).
+ // Bei der Konvertierung von TextObj nach PathObj wird es wohl so sein,
+ // dass beide Modi (bLineToArea=TRUE/FALSE) identisch sind.
+ // Defaulted sind diese Methoden auf "Ich kann das nicht" (FALSE/NULL).
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+ SdrObject* ConvertToPolyObj(BOOL bBezier, BOOL bLineToArea) const;
+
+ // convert this path object to contour object; bForceLineDash converts even
+ // when there is no filled new polygon created from line-to-polygon conversion,
+ // specially used for XLINE_DASH and 3D conversion
+ SdrObject* ConvertToContourObj(SdrObject* pRet, BOOL bForceLineDash = FALSE) const;
+ SdrObject* ImpConvertToContourObj(SdrObject* pRet, BOOL bForceLineDash = FALSE) const;
+
+ // TRUE: Referenz auf ein Obj
+ sal_Bool IsVirtualObj() const { return bVirtObj; }
+
+ // TRUE=Obj kann warsch. gefuellt werden; FALSE=Obj kann warsch. Linienenden haben.
+ // ungueltig, wenn es sich um ein GroupObj handelt.
+ sal_Bool IsClosedObj() const { return bClosedObj; }
+
+ sal_Bool IsEdgeObj() const { return bIsEdge; }
+ sal_Bool Is3DObj() const { return bIs3DObj; }
+ sal_Bool IsUnoObj() const { return bIsUnoObj; }
+ sal_Bool IsMasterCachable() const { return !bNotMasterCachable; }
+ sal_Bool ShareLock() { sal_Bool r=!bNetLock; bNetLock=TRUE; return r; }
+ void ShareUnlock() { bNetLock=FALSE; }
+ sal_Bool IsShareLock() const { return bNetLock; }
+ void SetMarkProtect(sal_Bool bProt) { bMarkProt=bProt; }
+ sal_Bool IsMarkProtect() const { return bMarkProt; }
+ void SetInserted(sal_Bool bIns);
+ sal_Bool IsInserted() const { return bInserted; }
+ void SetGrouped(sal_Bool bGrp) { bGrouped=bGrp; }
+ sal_Bool IsGrouped() const { return bGrouped; }
+ void SetMoveProtect(sal_Bool bProt);
+ sal_Bool IsMoveProtect() const { return bMovProt; }
+ void SetResizeProtect(sal_Bool bProt);
+ sal_Bool IsResizeProtect() const { return bSizProt; }
+ void SetPrintable(sal_Bool bPrn);
+ sal_Bool IsPrintable() const { return !bNoPrint; }
+ void SetVisible(sal_Bool bVisible);
+ sal_Bool IsVisible() const { return mbVisible; }
+ void SetEmptyPresObj(sal_Bool bEpt) { bEmptyPresObj=bEpt; }
+ sal_Bool IsEmptyPresObj() const { return bEmptyPresObj; }
+ void SetNotVisibleAsMaster(sal_Bool bFlg) { bNotVisibleAsMaster=bFlg; }
+ sal_Bool IsNotVisibleAsMaster() const { return bNotVisibleAsMaster; }
+
+ // #i25616#
+ sal_Bool LineIsOutsideGeometry() const { return mbLineIsOutsideGeometry; }
+
+ // #i25616#
+ sal_Bool DoesSupportTextIndentingOnLineWidthChange() const { return mbSupportTextIndentingOnLineWidthChange; }
+
+ // applikationsspeziefische Daten
+ USHORT GetUserDataCount() const;
+ SdrObjUserData* GetUserData(USHORT nNum) const;
+
+ // Insert uebernimmt den auf dem Heap angelegten Record in den Besitz
+ // des Zeichenobjekts
+ void InsertUserData(SdrObjUserData* pData, USHORT nPos=0xFFFF);
+
+ // Delete entfernt den Record aus der Liste und ruft
+ // ein delete (FreeMem+Dtor).
+ void DeleteUserData(USHORT nNum);
+
+ // ItemPool fuer dieses Objekt wechseln
+ void MigrateItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel = 0L);
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // access to the UNO representation of the shape
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getUnoShape();
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface > getWeakUnoShape() const { return maWeakUnoShape; }
+
+ static SdrObject* getSdrObjectFromXShape( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xInt );
+
+ // helper struct for granting access exclusive to SvxShape
+ struct GrantXShapeAccess
+ {
+ friend class SvxShape;
+ private:
+ GrantXShapeAccess() { }
+ };
+
+ // setting the UNO representation is allowed for the UNO representation itself only!
+ void setUnoShape(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxUnoShape,
+ GrantXShapeAccess /*aGrant*/
+ )
+ {
+ impl_setUnoShape( _rxUnoShape );
+ }
+
+ /** retrieves the instance responsible for notifying changes in the properties of the shape associated with
+ the SdrObject
+
+ @precond
+ There already exists an SvxShape instance associated with the SdrObject
+ @throws ::com::sun::star::uno::RuntimeException
+ if there does nt yet exists an SvxShape instance associated with the SdrObject.
+ */
+ ::svx::PropertyChangeNotifier&
+ getShapePropertyChangeNotifier();
+
+ /** notifies a change in the given property, to all applicable listeners registered at the associated SvxShape
+
+ This method is equivalent to calling getShapePropertyChangeNotifier().notifyPropertyChange( _eProperty ),
+ exception that it is allowed to be called when there does not yet exist an associated SvxShape - in which
+ case the method will silently return without doing anything.
+ */
+ void notifyShapePropertyChange( const ::svx::ShapeProperty _eProperty ) const;
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // transformation interface for StarOfficeAPI. This implements support for
+ // homogen 3x3 matrices containing the transformation of the SdrObject. At the
+ // moment it contains a shearX, rotation and translation, but for setting all linear
+ // transforms like Scale, ShearX, ShearY, Rotate and Translate are supported.
+ //
+ // gets base transformation and rectangle of object. If it's an SdrPathObj it fills the PolyPolygon
+ // with the base geometry and returns TRUE. Otherwise it returns FALSE.
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+
+ // sets the base geometry of the object using infos contained in the homogen 3x3 matrix.
+ // If it's an SdrPathObj it will use the provided geometry information. The Polygon has
+ // to use (0,0) as upper left and will be scaled to the given size in the matrix.
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+ sal_Bool IsTransparent( BOOL bCheckForAlphaChannel = FALSE ) const;
+
+ // #116168#
+ // Give info if object is in destruction
+ sal_Bool IsInDestruction() const;
+
+ // return if fill is != XFILL_NONE
+ bool HasFillStyle() const;
+ bool HasLineStyle() const;
+
+ // on import of OLE object from MS documents the BLIP size might be retrieved,
+ // the following methods are used to control it;
+ // usually this data makes no sence after the import is finished, since the object
+ // might be resized
+ Rectangle GetBLIPSizeRectangle() const;
+ void SetBLIPSizeRectangle( const Rectangle& aRect );
+
+protected:
+ void impl_setUnoShape( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxUnoShape );
+
+private:
+ /** only for internal use!
+ */
+ SvxShape* getSvxShape() const;
+
+ /** do not use directly, always use getSvxShape() if you have to! */
+ SvxShape* mpSvxShape;
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface >
+ maWeakUnoShape;
+};
+
+//************************************************************
+// SdrDummyObj
+//
+// Wer sich eigene Objekte schafft muss einen Link in der Klasse
+// SdrObjFactory setzen. Der Handler hat folgendes aussehen:
+// void Hdl(SdrObjFactory*)
+// Er muss sich aus der uebergebenen Instanz die Werte nInventor und
+// nIdentifier ansehen und entsprechend mit new eine Zeichenobjektinstanz
+// erzeugen. Einen Zeiger auf diese Instanz hat er in der Membervariablen
+// pNewObj zu hinterlassen.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrObjFactory
+{
+public:
+ UINT32 nInventor;
+ UINT16 nIdentifier;
+
+ // fuer MakeNewObj():
+ SdrPage* pPage;
+ SdrModel* pModel;
+ SdrObject* pNewObj;
+
+ // fuer MakeNewObjUserData():
+ SdrObject* pObj;
+ SdrObjUserData* pNewData;
+
+private:
+ SVX_DLLPRIVATE SdrObjFactory(UINT32 nInvent, UINT16 nIdent, SdrPage* pNewPage, SdrModel* pNewModel);
+ SVX_DLLPRIVATE SdrObjFactory(UINT32 nInvent, UINT16 nIdent, SdrObject* pObj1);
+
+public:
+ static SdrObject* MakeNewObject(UINT32 nInvent, UINT16 nIdent, SdrPage* pPage, SdrModel* pModel=NULL);
+ static void InsertMakeObjectHdl(const Link& rLink);
+ static void RemoveMakeObjectHdl(const Link& rLink);
+ static SdrObjUserData* MakeNewObjUserData(UINT32 nInvent, UINT16 nIdent, SdrObject* pObj);
+ static void InsertMakeUserDataHdl(const Link& rLink);
+ static void RemoveMakeUserDataHdl(const Link& rLink);
+};
+
+typedef tools::WeakReference< SdrObject > SdrObjectWeakRef;
+
+#endif //_SVDOBJ_HXX
+
diff --git a/svx/inc/svx/svdocapt.hxx b/svx/inc/svx/svdocapt.hxx
new file mode 100644
index 000000000000..24a11e6b51de
--- /dev/null
+++ b/svx/inc/svx/svdocapt.hxx
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDCAPT_HXX
+#define _SVDCAPT_HXX
+
+#include <svx/svdorect.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class ImpCaptParams;
+
+namespace sdr { namespace properties {
+ class CaptionProperties;
+}}
+
+#define SDRSETITEM_CAPTION_ATTR SDRSETITEM_ATTR_COUNT
+
+//************************************************************
+// Hilfsklasse SdrCaptObjGeoData
+//************************************************************
+
+// #109872#
+class SdrCaptObjGeoData : public SdrTextObjGeoData
+{
+public:
+ Polygon aTailPoly;
+};
+
+//************************************************************
+// SdrCaptionObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrCaptionObj : public SdrRectObj
+{
+private:
+ // to allow sdr::properties::CaptionProperties access to ImpRecalcTail()
+ friend class sdr::properties::CaptionProperties;
+ friend class SdrTextObj; // fuer ImpRecalcTail() bei AutoGrow
+
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+private:
+ Polygon aTailPoly; // das ganze Polygon des Schwanzes
+ sal_Bool mbSpecialTextBoxShadow; // for calc special shadow, default FALSE
+ sal_Bool mbFixedTail; // for calc note box fixed tail, default FALSE
+ Point maFixedTailPos; // for calc note box fixed tail position.
+
+private:
+ SVX_DLLPRIVATE void ImpGetCaptParams(ImpCaptParams& rPara) const;
+ SVX_DLLPRIVATE void ImpCalcTail1(const ImpCaptParams& rPara, Polygon& rPoly, Rectangle& rRect) const;
+ SVX_DLLPRIVATE void ImpCalcTail2(const ImpCaptParams& rPara, Polygon& rPoly, Rectangle& rRect) const;
+ SVX_DLLPRIVATE void ImpCalcTail3(const ImpCaptParams& rPara, Polygon& rPoly, Rectangle& rRect) const;
+ SVX_DLLPRIVATE void ImpCalcTail4(const ImpCaptParams& rPara, Polygon& rPoly, Rectangle& rRect) const;
+ SVX_DLLPRIVATE void ImpCalcTail (const ImpCaptParams& rPara, Polygon& rPoly, Rectangle& rRect) const;
+ SVX_DLLPRIVATE void ImpRecalcTail();
+
+public:
+ TYPEINFO();
+ SdrCaptionObj();
+ SdrCaptionObj(const Rectangle& rRect);
+ SdrCaptionObj(const Rectangle& rRect, const Point& rTail);
+ virtual ~SdrCaptionObj();
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void operator=(const SdrObject& rObj);
+
+ // for calc: special shadow only for text box
+ void SetSpecialTextBoxShadow() { mbSpecialTextBoxShadow = TRUE; }
+ sal_Bool GetSpecialTextBoxShadow() const { return mbSpecialTextBoxShadow; }
+
+ // for calc: fixed note tail position.
+ void SetFixedTail() { mbFixedTail = TRUE; }
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual void SetModel(SdrModel* pNewModel);
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+
+ virtual void NbcSetRelativePos(const Point& rPnt);
+ virtual Point GetRelativePos() const;
+ virtual void NbcSetAnchorPos(const Point& rPnt);
+ virtual const Point& GetAnchorPos() const;
+
+ virtual void RecalcSnapRect();
+ virtual const Rectangle& GetSnapRect() const;
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual const Rectangle& GetLogicRect() const;
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+protected:
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+public:
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ const Point& GetTailPos() const;
+ void SetTailPos(const Point& rPos);
+ void NbcSetTailPos(const Point& rPos);
+
+ // #i32599#
+ // Add own implementation for TRSetBaseGeometry to handle TailPos over changes
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+ inline const Point& GetFixedTailPos() const {return maFixedTailPos;}
+
+ // geometry access
+ ::basegfx::B2DPolygon getTailPolygon() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOCAPT_HXX
+
diff --git a/svx/inc/svx/svdocirc.hxx b/svx/inc/svx/svdocirc.hxx
new file mode 100644
index 000000000000..a39417925a1e
--- /dev/null
+++ b/svx/inc/svx/svdocirc.hxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOCIRC_HXX
+#define _SVDOCIRC_HXX
+
+#include <svx/svdorect.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+namespace sdr { namespace properties {
+ class CircleProperties;
+}}
+
+//************************************************************
+// Hilfsklasse SdrCircObjGeoData
+//************************************************************
+
+// #109872#
+class SdrCircObjGeoData : public SdrTextObjGeoData
+{
+public:
+ long nStartWink;
+ long nEndWink;
+};
+
+//************************************************************
+// SdrCircObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrCircObj : public SdrRectObj
+{
+private:
+ // to allow sdr::properties::CircleProperties access to ImpSetAttrToCircInfo()
+ friend class sdr::properties::CircleProperties;
+
+ // only for SdrCircleAttributes
+ SdrObjKind GetCircleKind() const { return meCircleKind; }
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ SdrObjKind meCircleKind;
+ long nStartWink;
+ long nEndWink;
+
+ // bitfield
+ unsigned mbPolygonIsLine : 1;
+
+private:
+ SVX_DLLPRIVATE basegfx::B2DPolygon ImpCalcXPolyCirc(const SdrObjKind eKind, const Rectangle& rRect1, long nStart, long nEnd) const;
+ SVX_DLLPRIVATE void ImpSetCreateParams(SdrDragStat& rStat) const;
+ SVX_DLLPRIVATE void ImpSetAttrToCircInfo(); // Werte vom Pool kopieren
+ SVX_DLLPRIVATE void ImpSetCircInfoToAttr(); // Werte in den Pool kopieren
+
+ // Liefert TRUE, wenn das Painten ein XPolygon erfordert.
+ SVX_DLLPRIVATE FASTBOOL PaintNeedsXPolyCirc() const; // PaintNeedsXPoly-> PaintNeedsXPolyCirc
+ SVX_DLLPRIVATE virtual void RecalcXPoly();
+
+protected:
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+public:
+ TYPEINFO();
+ SdrCircObj(SdrObjKind eNewKind); // Circ, CArc, Sect oder CCut
+ SdrCircObj(SdrObjKind eNewKind, const Rectangle& rRect);
+
+ // 0=0.00Deg=3h 9000=90.00Deg=12h 18000=180.00Deg=9h 27000=270.00Deg=6h
+ // Der Verlauf des Kreises von StartWink nach EndWink ist immer entgegen
+ // dem Uhrzeigersinn.
+ // Wenn nNewStartWink==nNewEndWink hat der Kreisbogen einen Verlaufswinkel
+ // von 0 Grad. Bei nNewStartWink+36000==nNewEndWink ist der Verlaufswinkel
+ // 360.00 Grad.
+ SdrCircObj(SdrObjKind eNewKind, const Rectangle& rRect, long nNewStartWink, long nNewEndWink);
+ virtual ~SdrCircObj();
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeUnrotatedSnapRect(Rectangle& rRect) const;
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual void operator=(const SdrObject& rObj);
+ virtual void RecalcSnapRect();
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+ virtual void NbcMove(const Size& aSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear (const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+protected:
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+public:
+ long GetStartWink() const { return nStartWink; }
+ long GetEndWink() const { return nEndWink; }
+
+};
+
+#endif //_SVDOCIRC_HXX
+
diff --git a/svx/inc/svx/svdoedge.hxx b/svx/inc/svx/svdoedge.hxx
new file mode 100644
index 000000000000..843c49424674
--- /dev/null
+++ b/svx/inc/svx/svdoedge.hxx
@@ -0,0 +1,436 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOEDGE_HXX
+#define _SVDOEDGE_HXX
+
+#include <svx/svdotext.hxx>
+#include <svx/svdglue.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrDragMethod;
+class SdrPageView;
+
+namespace sdr { namespace properties {
+ class ConnectorProperties;
+}}
+
+//************************************************************
+// Hilfsklasse SdrObjConnection
+//************************************************************
+
+class SdrObjConnection
+{
+ friend class SdrEdgeObj;
+ friend class ImpEdgeHdl;
+ friend class SdrCreateView;
+
+protected:
+ Point aObjOfs; // Wird beim Draggen eines Knotens gesetzt
+ SdrObject* pObj; // Referenziertes Objekt
+ long nXDist; // Hor. Objektabstand wenn bXDistOvr=TRUE
+ long nYDist; // Vert. Objektabstand wenn bYDistOvr=TRUE
+ USHORT nConId; // Konnektornummer
+
+ // bitfield
+ unsigned bBestConn : 1; // TRUE= es wird der guenstigste Konnektor gesucht
+ unsigned bBestVertex : 1; // TRUE= es wird der guenstigste Scheitelpunkt zum konnekten gesucht
+ unsigned bXDistOvr : 1; // TRUE= Hor. Objektabstand wurde gedragt (Overwrite)
+ unsigned bYDistOvr : 1; // TRUE= Vert. Objektabstand wurde gedragt (Overwrite)
+ unsigned bAutoVertex : 1; // AutoConnector am Scheitelpunkt nCon
+ unsigned bAutoCorner : 1; // AutoConnector am Eckpunkt nCon
+
+public:
+ SdrObjConnection() { ResetVars(); }
+ SVX_DLLPUBLIC ~SdrObjConnection();
+
+ void ResetVars();
+ FASTBOOL TakeGluePoint(SdrGluePoint& rGP, FASTBOOL bSetAbsolutePos) const;
+
+ inline void SetBestConnection( BOOL rB ) { bBestConn = rB; };
+ inline void SetBestVertex( BOOL rB ) { bBestVertex = rB; };
+ inline void SetAutoVertex( BOOL rB ) { bAutoVertex = rB; };
+ inline void SetConnectorId( USHORT nId ) { nConId = nId; };
+
+ inline BOOL IsBestConnection() const { return bBestConn; };
+ inline BOOL IsBestVertex() const { return bBestVertex; };
+ inline BOOL IsAutoVertex() const { return bAutoVertex; };
+ inline sal_uInt16 GetConnectorId() const { return nConId; };
+ inline SdrObject* GetObject() const { return pObj; }
+};
+
+//************************************************************
+// Hilfsklasse SdrEdgeInfoRec
+//************************************************************
+
+enum SdrEdgeLineCode {OBJ1LINE2,OBJ1LINE3,OBJ2LINE2,OBJ2LINE3,MIDDLELINE};
+
+class SdrEdgeInfoRec
+{
+public:
+ // Die 5 Distanzen werden beim draggen bzw. per SetAttr gesetzt und von
+ // ImpCalcEdgeTrack ausgewertet. Per Get/SetAttr/Get/SetStyleSh werden
+ // jedoch nur 0-3 longs transportiert.
+ Point aObj1Line2;
+ Point aObj1Line3;
+ Point aObj2Line2;
+ Point aObj2Line3;
+ Point aMiddleLine;
+
+ // Nachfolgende Werte werden von ImpCalcEdgeTrack gesetzt
+ long nAngle1; // Austrittswinkel am Obj1
+ long nAngle2; // Austrittswinkel am Obj2
+ USHORT nObj1Lines; // 1..3
+ USHORT nObj2Lines; // 1..3
+ USHORT nMiddleLine; // 0xFFFF=keine, sonst Punktnummer des Linienbeginns
+ char cOrthoForm; // Form des Ortho-Verbindes, z.B. 'Z','U',I','L','S',...
+
+public:
+ SdrEdgeInfoRec()
+ : nAngle1(0),
+ nAngle2(0),
+ nObj1Lines(0),
+ nObj2Lines(0),
+ nMiddleLine(0xFFFF),
+ cOrthoForm(0)
+ {}
+
+ Point& ImpGetLineVersatzPoint(SdrEdgeLineCode eLineCode);
+ const Point& ImpGetLineVersatzPoint(SdrEdgeLineCode eLineCode) const { return ((SdrEdgeInfoRec*)this)->ImpGetLineVersatzPoint(eLineCode); }
+ USHORT ImpGetPolyIdx(SdrEdgeLineCode eLineCode, const XPolygon& rXP) const;
+ FASTBOOL ImpIsHorzLine(SdrEdgeLineCode eLineCode, const XPolygon& rXP) const;
+ void ImpSetLineVersatz(SdrEdgeLineCode eLineCode, const XPolygon& rXP, long nVal);
+ long ImpGetLineVersatz(SdrEdgeLineCode eLineCode, const XPolygon& rXP) const;
+};
+
+//************************************************************
+// Hilfsklasse SdrEdgeObjGeoData
+//************************************************************
+
+class SdrEdgeObjGeoData : public SdrTextObjGeoData
+{
+public:
+ SdrObjConnection aCon1; // Verbindungszustand des Linienanfangs
+ SdrObjConnection aCon2; // Verbindungszustand des Linienendes
+ XPolygon* pEdgeTrack;
+ sal_Bool bEdgeTrackDirty;// TRUE=Verbindungsverlauf muss neu berechnet werden.
+ sal_Bool bEdgeTrackUserDefined;
+ SdrEdgeInfoRec aEdgeInfo;
+
+public:
+ SdrEdgeObjGeoData();
+ virtual ~SdrEdgeObjGeoData();
+};
+
+//************************************************************
+// Hilfsklasse SdrEdgeObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrEdgeObj : public SdrTextObj
+{
+private:
+ // to allow sdr::properties::ConnectorProperties access to ImpSetAttrToEdgeInfo()
+ friend class sdr::properties::ConnectorProperties;
+
+ friend class SdrCreateView;
+ friend class ImpEdgeHdl;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ SdrObjConnection aCon1; // Verbindungszustand des Linienanfangs
+ SdrObjConnection aCon2; // Verbindungszustand des Linienendes
+
+ XPolygon* pEdgeTrack;
+ sal_uInt16 nNotifyingCount; // Verrieglung
+ SdrEdgeInfoRec aEdgeInfo;
+
+ // bitfield
+ unsigned bEdgeTrackDirty : 1; // TRUE=Verbindungsverlauf muss neu berechnet werden.
+ unsigned bEdgeTrackUserDefined : 1;
+
+ // #109007#
+ // Bool to allow supporession of default connects at object
+ // inside test (HitTest) and object center test (see ImpFindConnector())
+ unsigned mbSuppressDefaultConnect : 1;
+
+ // #110649#
+ // Flag value for avoiding death loops when calculating BoundRects
+ // from circularly connected connectors. A coloring algorythm is used
+ // here. When the GetCurrentBoundRect() calculation of a SdrEdgeObj
+ // is running, the flag is set, else it is always sal_False.
+ unsigned mbBoundRectCalculationRunning : 1;
+
+public:
+ // #109007#
+ // Interface to default connect suppression
+ void SetSuppressDefaultConnect(sal_Bool bNew) { mbSuppressDefaultConnect = bNew; }
+ sal_Bool GetSuppressDefaultConnect() const { return mbSuppressDefaultConnect; }
+
+ // #110649#
+ sal_Bool IsBoundRectCalculationRunning() const { return mbBoundRectCalculationRunning; }
+
+protected:
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ XPolygon ImpCalcObjToCenter(const Point& rStPt, long nEscAngle, const Rectangle& rRect, const Point& rCenter) const;
+ void ImpRecalcEdgeTrack(); // Neuberechnung des Verbindungsverlaufs
+ XPolygon ImpCalcEdgeTrack(const XPolygon& rTrack0, SdrObjConnection& rCon1, SdrObjConnection& rCon2, SdrEdgeInfoRec* pInfo) const;
+ XPolygon ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rectangle& rBoundRect1, const Rectangle& rBewareRect1,
+ const Point& rPt2, long nAngle2, const Rectangle& rBoundRect2, const Rectangle& rBewareRect2,
+ ULONG* pnQuality, SdrEdgeInfoRec* pInfo) const;
+ static FASTBOOL ImpFindConnector(const Point& rPt, const SdrPageView& rPV, SdrObjConnection& rCon, const SdrEdgeObj* pThis, OutputDevice* pOut=NULL);
+ USHORT ImpCalcEscAngle(SdrObject* pObj, const Point& aPt2) const;
+ FASTBOOL ImpStripPolyPoints(XPolygon& rXP) const; // entfernen ueberfluessiger Punkte
+ void ImpSetTailPoint(FASTBOOL bTail1, const Point& rPt);
+ void ImpUndirtyEdgeTrack(); // eventuelle Neuberechnung des Verbindungsverlaufs
+ void ImpDirtyEdgeTrack(); // invalidate connector path, so it will be recalculated next time
+ void ImpSetAttrToEdgeInfo(); // Werte vom Pool nach aEdgeInfo kopieren
+ void ImpSetEdgeInfoToAttr(); // Werte vom aEdgeInfo in den Pool kopieren
+
+public:
+ TYPEINFO();
+
+ SdrEdgeObj();
+ virtual ~SdrEdgeObj();
+
+ SdrObjConnection& GetConnection(FASTBOOL bTail1) { return *(bTail1 ? &aCon1 : &aCon2); }
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual const Rectangle& GetCurrentBoundRect() const;
+ virtual const Rectangle& GetSnapRect() const;
+ virtual FASTBOOL IsNode() const;
+ virtual SdrGluePoint GetVertexGluePoint(USHORT nNum) const;
+ virtual SdrGluePoint GetCornerGluePoint(USHORT nNum) const;
+ virtual const SdrGluePointList* GetGluePointList() const;
+ virtual SdrGluePointList* ForceGluePointList();
+ virtual FASTBOOL IsEdge() const;
+
+ // bTail1=TRUE: Linienanfang, sonst LinienEnde
+ // pObj=NULL: Disconnect
+ void SetEdgeTrackDirty() { bEdgeTrackDirty=TRUE; }
+ void ConnectToNode(FASTBOOL bTail1, SdrObject* pObj);
+ void DisconnectFromNode(FASTBOOL bTail1);
+ SdrObject* GetConnectedNode(FASTBOOL bTail1) const;
+ const SdrObjConnection& GetConnection(FASTBOOL bTail1) const { return *(bTail1 ? &aCon1 : &aCon2); }
+ FASTBOOL CheckNodeConnection(FASTBOOL bTail1) const;
+
+ virtual void RecalcSnapRect();
+ virtual void TakeUnrotatedSnapRect(Rectangle& rRect) const;
+ virtual void operator=(const SdrObject& rObj);
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ void SetEdgeTrackPath( const basegfx::B2DPolyPolygon& rPoly );
+ basegfx::B2DPolyPolygon GetEdgeTrackPath() const;
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+
+ // FullDrag support
+ virtual SdrObject* getFullDragClone() const;
+
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcMove(const Size& aSize);
+ virtual void NbcResize(const Point& rRefPnt, const Fraction& aXFact, const Fraction& aYFact);
+
+ // #102344# Added missing implementation
+ virtual void NbcSetAnchorPos(const Point& rPnt);
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+ virtual sal_Bool IsPolyObj() const;
+ virtual sal_uInt32 GetPointCount() const;
+ virtual Point GetPoint(sal_uInt32 i) const;
+ virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 i);
+
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+ /** updates edges that are connected to the edges of this object
+ as if the connected objects send a repaint broadcast
+ #103122#
+ */
+ void Reformat();
+
+ // helper methods for the StarOffice api
+ Point GetTailPoint( BOOL bTail ) const;
+ void SetTailPoint( BOOL bTail, const Point& rPt );
+ void setGluePointIndex( sal_Bool bTail, sal_Int32 nId = -1 );
+ sal_Int32 getGluePointIndex( sal_Bool bTail );
+
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+ // for geometry access
+ ::basegfx::B2DPolygon getEdgeTrack() const;
+
+ // helper method for SdrDragMethod::AddConnectorOverlays. Adds a overlay polygon for
+ // this connector to rResult.
+ basegfx::B2DPolygon ImplAddConnectorOverlay(SdrDragMethod& rDragMethod, bool bTail1, bool bTail2, bool bDetail) const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Zur Bestimmung der Verlaufslinie werden folgende Item-Parameter des SdrItemPool verwendet:
+//
+// USHORT EdgeFlowAngle Default 9000 (=90.00 Deg), min 0, max 9000
+// Verlauffreiheitswinkel.
+// Der Winkel, in dem die Verbindungslinie verlaufen darf.
+//
+// USHORT EdgeEscAngle Default 9000 (=90.00 Deg), min 0, max 9000
+// Objektaustrittswinkel.
+// Der Winkel, in dem die Verbindungslinie aus dem Objekt austreten darf.
+//
+// BOOL EdgeEscAsRay Default FALSE
+// TRUE= die Verbindungslinie tritt aus dem Obj Strahlenfoermig aus.
+// Also Winkelvorgabe durch die Strecke ObjMitte/Konnektor.
+//
+// BOOL EdgeEscUseObjAngle Default FALSE
+// Objektdrehwinkelberuecksichtigung.
+// TRUE= Bei der Bestimmung des Objektaustrittswinkels wird der
+// Drehwinkel des Objekts als Offset beruecksichtigt.
+//
+// ULONG EdgeFlowDefDist Default 0, min 0, max ?
+// Das ist der Default-Mindestabstand der bei der Berechnung der
+// Verbindungslinie zu den angedockten Objekten in logischen Einheiten.
+// Dieser Abstand wird innerhalb des Objektes "ueberschrieben", sobald
+// der User an den Linien draggd. Beim Andocken an ein neues Objekt wird
+// dann jedoch wieder dieser Default verwendet.
+//
+//
+// Allgemeines zu Konnektoren:
+//
+// Es gibt Knoten und Kantenobjekte. Zwei Knoten koennen durch eine Kante
+// miteinander verbunden werden. Ist eine Kante nur an einem Ende an einen
+// Knoten geklebt, ist das andere Ende auf einer absoluten Position im Doc
+// fixiert. Ebenso ist es natuerlich auch moeglich, dass eine Kante an beiden
+// Enden "frei", also nicht mit einem Knotenobjekt verbunden ist.
+//
+// Ein Kantenobjekt kann theoretisch auch gleichzeitig Knotenobjekt sein. In
+// der ersten Version wird das jedoch noch nicht realisiert werden.
+//
+// Eine Verbindung zwischen Knoten und Kante kann hergestellt werden durch:
+// - Interaktives erzeugen eines neuen Kantenobjekts an der SdrView wobei
+// Anfangs- bzw. Endpunkt der Kante auf ein Konnektor (Klebestelle) eines
+// bereits vorhandenen Knotenobjekts gelegt wird.
+// - Interaktives draggen des Anfangs- bzw. Endpunkts eines bestehenden
+// Kantenobjekts an der SdrView auf ein Konnektor (Klebestelle) eines
+// bereits vorhandenen Knotenobjekts.
+// - Undo/Redo
+// Verschieben von Knotenobjekten stellt keine Verbindungen her. Ebenso auch
+// nicht das direkte Verschieben von Kantenendpunkten am SdrModel...
+// Verbindungen koennen auch hergestellt werden, wenn die Konnektoren an der
+// View nicht sichtbar geschaltet sind.
+//
+// Eine vorhandene Verbindung zwischen Knoten und Kante bleibt erhalten bei:
+// - Draggen (Move/Resize/Rotate/...) des Knotenobjekts
+// - Verschieben einer Konnektorposition im Knotemobjekt
+// - gleichzeitiges Draggen (Move/Resize/Rotate/...) von Knoten und Kante
+//
+// Eine Verbindung zwischen Knoten und Kante kann geloesst werden durch:
+// - Loeschen eines der Objekte
+// - Draggen des Kantenobjekts ohne gleichzeitiges Draggen des Knotens
+// - Loeschen des Konnektors am Knotenobjekt
+// - Undo/Redo/Repeat
+// Beim Draggen muss die Aufforderung zum loesen der Verbindung von ausserhalb
+// des Models befohlen werden (z.B. von der SdrView). SdrEdgeObj::Move() loesst
+// die Verbindung nicht selbsttaetig.
+//
+// Jedes Knotenobjekt kann Konnektoren, sog. Klebestellen besitzen. Das sind die
+// geometrischen Punkte, an denen das verbindende Kantenobjekt bei hergestellter
+// Verbindung endet. Defaultmaessig hat jedes Objekt keine Konnektoren. Trotzdem
+// kann man bei bestimmten View-Einstellungen eine Kante andocken, da dann z.B.
+// an den 4 Scheitelpunkten des Knotenobjekts bei Bedarf automatisch Konnektoren
+// generiert werden. Jedes Objekt liefert dafuer 2x4 sog. Default-Konnektorposi-
+// tionen, 4 an den Scheitelpunkten und 4 an den Eckpositionen. Im Normalfall
+// liegen diese an den 8 Handlepositionen; Ausnahmen bilden hier Ellipsen,
+// Parallelogramme, ... . Darueberhinaus koennen auch an jedem Knotenobjekt
+// anwenderspeziefische Konnektoren gesetzt werden.
+//
+// Dann gibt es noch die Moeglichkeit, ein Kante an einem Objekt mit dem
+// Attribut "bUseBestConnector" anzudocken. Es wird dann aus dem Angebot der
+// Konnektoren des Objekts oder/und der Scheitelpunkte, jeweils die fuer den
+// Verlauf der Verbindungslinie guenstigste Konnektorposition verwendet. Der
+// Anwender vergibt dieses Attribut, indem er den Knoten in seiner Mitte
+// andockt (siehe z.B. Visio).
+// 09-06-1996: bUseBestConnector verwendet nur Scheitelpunktklebepunkte.
+//
+// Und hier noch etwas Begriffsdefinition:
+// Verbinder : Eben das Verbinderobjekt (Kantenobjekt)
+// Knoten : Ein beliebiges Objekt, an dem ein Verbinder drangeklebt
+// werden kann, z.B. ein Rechteck, ...
+// Klebepunkt: Der Punkt, an dem der Verbinder an das Knotenobjekt
+// geklebt wird. Hierbei gibt es:
+// Scheitelpunktklebepunkte: Jedes Knotenobjekt hat diese
+// Klebepunkte von Natur aus. Moeglicherweise gibt es
+// im Draw bereits die Option "Automatisch ankleben an
+// Objektscheitelpunkte" (default an)
+// Eckpunktklebepunkte: Auch diese Klebepunkte sind den
+// Objekten von mir bereits mitgegeben. Wie die oben
+// erwaehnten gibt es fuer diese moeglicherweise
+// bereits auch eine Option im Draw. (default aus)
+// Scheitelpunktklebepunkte und Eckpunktklebepunkte sind
+// im Gegensatz zu Visio nicht optisch sichtbar; sie
+// sind eben einfach da (wenn Option eingeschaltet).
+// Benutzerdefinierte Klebepunkte: Gibt es an jedem
+// Knotenobjekt beliebig viele. Per Option koennen sie
+// sichtbar geschaltet werden (beim editieren immer
+// sichtbar). Zur Zeit sind die jedoch noch nicht ganz
+// fertigimplementiert.
+// Automatische Klebepunktwahl: Wird der Verbinder so an
+// das Knotenobjekt gedockt, dass der schwarke Rahmen
+// das gesamte Objekt umfasst, so versucht der
+// Verbinder von den 4 Scheitelpunktklebepunkten (und
+// zwar nur von denen) den guenstigsten herauszufinden.
+//
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOEDGE_HXX
+
diff --git a/svx/inc/svx/svdograf.hxx b/svx/inc/svx/svdograf.hxx
new file mode 100644
index 000000000000..23d9204ca891
--- /dev/null
+++ b/svx/inc/svx/svdograf.hxx
@@ -0,0 +1,227 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOGRAF_HXX
+#define _SVDOGRAF_HXX
+
+#include <com/sun/star/io/XInputStream.hpp>
+#include <vcl/graph.hxx>
+#include <svx/svdorect.hxx>
+#include <svtools/grfmgr.hxx>
+#include "svx/svxdllapi.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace sdr
+{
+ namespace properties
+ {
+ class GraphicProperties;
+ } // end of namespace properties
+ namespace contact
+ {
+ class ViewObjectContactOfGraphic;
+ } // end of namespace contact
+} // end of namespace sdr
+
+// -----------
+// - Defines -
+// -----------
+
+#define SDRGRAFOBJ_TRANSFORMATTR_NONE 0x00000000UL
+#define SDRGRAFOBJ_TRANSFORMATTR_COLOR 0x00000001UL
+#define SDRGRAFOBJ_TRANSFORMATTR_MIRROR 0x00000002UL
+#define SDRGRAFOBJ_TRANSFORMATTR_ROTATE 0x00000004UL
+#define SDRGRAFOBJ_TRANSFORMATTR_ALL 0xffffffffUL
+
+// ---------------------
+// - SdrGrafObjGeoData -
+// ---------------------
+
+// #109872#
+class SdrGrafObjGeoData : public SdrTextObjGeoData
+{
+public:
+ sal_Bool bMirrored;
+
+ SdrGrafObjGeoData()
+ : bMirrored(sal_False)
+ {
+ }
+};
+
+// --------------
+// - SdrGrafObj -
+// --------------
+
+class GraphicObject;
+class SdrGraphicLink;
+
+class SVX_DLLPUBLIC SdrGrafObj : public SdrRectObj
+{
+private:
+ // to allow sdr::properties::GraphicProperties access to SetXPolyDirty()
+ friend class sdr::properties::GraphicProperties;
+
+ // to allow sdr::contact::ViewObjectContactOfGraphic access to ImpUpdateGraphicLink()
+ friend class sdr::contact::ViewObjectContactOfGraphic;
+ friend class SdrGraphicLink;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ void ImpSetAttrToGrafInfo(); // Werte vom Pool kopieren
+ void ImpSetGrafInfoToAttr(); // Werte in den Pool kopieren
+ GraphicAttr aGrafInfo;
+
+ Rectangle aCropRect; // Wenn aCropRect nicht Empty ist, dann enthaelt es den sichtbaren
+ // Ausschnitt der Grafik in logischen Eingeiten der Grafik! Also Bitmap->=Pixel
+ String aFileName; // Wenn es sich um einen Link handelt, steht hier der Dateiname drin.
+ String aFilterName;
+ GraphicObject* pGraphic; // Zur Beschleunigung von Bitmapausgaben, besonders von gedrehten.
+ SdrGraphicLink* pGraphicLink; // Und hier noch ein Pointer fuer gelinkte Grafiken
+ bool bMirrored; // True bedeutet, die Grafik ist horizontal, d.h. ueber die Y-Achse gespiegelt auszugeben.
+
+ // #111096#
+ // Flag for allowing text animation. Default is sal_true.
+ unsigned mbGrafAnimationAllowed : 1;
+
+ // #i25616#
+ unsigned mbInsidePaint : 1;
+ unsigned mbIsPreview : 1;
+
+protected:
+
+ void ImpLinkAnmeldung();
+ void ImpLinkAbmeldung();
+ sal_Bool ImpUpdateGraphicLink() const;
+ DECL_LINK( ImpSwapHdl, GraphicObject* );
+
+public:
+
+ TYPEINFO();
+
+ SdrGrafObj();
+ SdrGrafObj(const Graphic& rGrf);
+ SdrGrafObj(const Graphic& rGrf, const Rectangle& rRect);
+ virtual ~SdrGrafObj();
+
+ void SetGraphicObject( const GraphicObject& rGrfObj );
+ const GraphicObject& GetGraphicObject( bool bForceSwapIn = false) const;
+
+ void NbcSetGraphic(const Graphic& rGrf);
+ void SetGraphic(const Graphic& rGrf);
+ const Graphic& GetGraphic() const;
+
+ Graphic GetTransformedGraphic( ULONG nTransformFlags = SDRGRAFOBJ_TRANSFORMATTR_ALL ) const;
+
+ GraphicType GetGraphicType() const;
+
+ // #111096#
+ // Keep ATM for SD.
+ sal_Bool IsAnimated() const;
+ sal_Bool IsEPS() const;
+ sal_Bool IsSwappedOut() const;
+
+ const MapMode& GetGrafPrefMapMode() const;
+ const Size& GetGrafPrefSize() const;
+
+ void SetGrafStreamURL( const String& rGraphicStreamURL );
+ String GetGrafStreamURL() const;
+
+ void ForceSwapIn() const;
+ void ForceSwapOut() const;
+
+ void SetGraphicLink(const String& rFileName, const String& rFilterName);
+ void ReleaseGraphicLink();
+ sal_Bool IsLinkedGraphic() const { return (BOOL)aFileName.Len(); }
+
+ void SetFileName(const String& rFileName);
+ const String& GetFileName() const { return aFileName; }
+ void SetFilterName(const String& rFilterName);
+ const String& GetFilterName() const { return aFilterName; }
+
+ void StartAnimation(OutputDevice* pOutDev, const Point& rPoint, const Size& rSize, long nExtraData=0L);
+ void StopAnimation(OutputDevice* pOutDev=NULL, long nExtraData=0L);
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ // #i25616#
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear (const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+ FASTBOOL HasGDIMetaFile() const;
+ const GDIMetaFile* GetGDIMetaFile() const;
+
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pNewModel);
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual void AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly = false );
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ bool IsMirrored() { return bMirrored; }
+ void SetMirrored( bool _bMirrored ) { bMirrored = _bMirrored; }
+
+ // #111096#
+ // Access to GrafAnimationAllowed flag
+ sal_Bool IsGrafAnimationAllowed() const;
+ void SetGrafAnimationAllowed(sal_Bool bNew);
+
+ // #i25616#
+ sal_Bool IsObjectTransparent() const;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > getInputStream();
+
+ // #i103116# FullDrag support
+ virtual SdrObject* getFullDragClone() const;
+};
+
+#endif //_SVDOGRAF_HXX
+
diff --git a/svx/inc/svx/svdogrp.hxx b/svx/inc/svx/svdogrp.hxx
new file mode 100644
index 000000000000..440e758291ca
--- /dev/null
+++ b/svx/inc/svx/svdogrp.hxx
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOGRP_HXX
+#define _SVDOGRP_HXX
+
+#include <tools/datetime.hxx>
+#include <svx/svdobj.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrObjList;
+class SdrObjListIter;
+class SfxItemSet;
+
+//************************************************************
+// SdrObjGroup
+//************************************************************
+
+class SVX_DLLPUBLIC SdrObjGroup : public SdrObject
+{
+private:
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ SdrObjList* pSub; // Subliste (Kinder)
+ long nDrehWink;
+ long nShearWink;
+
+ Point aRefPoint; // Referenzpunkt innerhalb der Objektgruppe
+ FASTBOOL bRefPoint; // Ist ein RefPoint gesetzt?
+
+public:
+ TYPEINFO();
+ SdrObjGroup();
+ virtual ~SdrObjGroup();
+
+ virtual void SetBoundRectDirty();
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual SdrLayerID GetLayer() const;
+ virtual void NbcSetLayer(SdrLayerID nLayer);
+ virtual void SetObjList(SdrObjList* pNewObjList);
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pNewModel);
+ virtual FASTBOOL HasRefPoint() const;
+ virtual Point GetRefPoint() const;
+ virtual void SetRefPoint(const Point& rPnt);
+ virtual SdrObjList* GetSubList() const;
+
+ virtual const Rectangle& GetCurrentBoundRect() const;
+ virtual const Rectangle& GetSnapRect() const;
+
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual void RecalcSnapRect();
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+
+ // special drag methods
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+
+ virtual long GetRotateAngle() const;
+ virtual long GetShearAngle(FASTBOOL bVertical=FALSE) const;
+
+ virtual void Move(const Size& rSiz);
+ virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void Rotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void Mirror(const Point& rRef1, const Point& rRef2);
+ virtual void Shear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual void SetAnchorPos(const Point& rPnt);
+ virtual void SetRelativePos(const Point& rPnt);
+ virtual void SetSnapRect(const Rectangle& rRect);
+ virtual void SetLogicRect(const Rectangle& rRect);
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual void NbcSetAnchorPos(const Point& rPnt);
+ virtual void NbcSetRelativePos(const Point& rPnt);
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+
+ virtual void NbcReformatText();
+ virtual void ReformatText();
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+};
+
+#endif //_SVDOGRP_HXX
+
diff --git a/svx/inc/svx/svdomeas.hxx b/svx/inc/svx/svdomeas.hxx
new file mode 100644
index 000000000000..fe8740dd40ed
--- /dev/null
+++ b/svx/inc/svx/svdomeas.hxx
@@ -0,0 +1,217 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOMEAS_HXX
+#define _SVDOMEAS_HXX
+
+#include <svx/svdotext.hxx>
+#include "svx/svxdllapi.h"
+#include <editeng/measfld.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrOutliner;
+struct ImpMeasureRec;
+struct ImpMeasurePoly;
+
+namespace sdr { namespace properties {
+ class MeasureProperties;
+}}
+
+//************************************************************
+// Hilfsklasse SdrMeasureObjGeoData
+//************************************************************
+
+class SdrMeasureObjGeoData : public SdrTextObjGeoData
+{
+public:
+ Point aPt1;
+ Point aPt2;
+
+public:
+ SdrMeasureObjGeoData();
+ virtual ~SdrMeasureObjGeoData();
+};
+
+//************************************************************
+// SdrMeasureObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrMeasureObj : public SdrTextObj
+{
+private:
+ // to allow sdr::properties::MeasureProperties access to SetTextDirty()
+ friend class sdr::properties::MeasureProperties;
+
+ friend class SdrMeasureField;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ Point aPt1;
+ Point aPt2;
+ FASTBOOL bTextDirty;
+
+protected:
+ void ImpTakeAttr(ImpMeasureRec& rRec) const;
+ void TakeRepresentation( XubString& rStr, SdrMeasureFieldKind eMeasureFieldKind ) const;
+ void ImpCalcGeometrics(const ImpMeasureRec& rRec, ImpMeasurePoly& rPol) const;
+ basegfx::B2DPolyPolygon ImpCalcXPoly(const ImpMeasurePoly& rPol) const;
+ void ImpEvalDrag(ImpMeasureRec& rRec, const SdrDragStat& rDrag) const;
+ void SetTextDirty() { bTextDirty=TRUE; SetTextSizeDirty(); if (!aOutRect.IsEmpty()) { SetBoundRectDirty(); SetRectsDirty(sal_True); } }
+ void UndirtyText() const;
+
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+public:
+ TYPEINFO();
+ SdrMeasureObj();
+ SdrMeasureObj(const Point& rPt1, const Point& rPt2);
+ virtual ~SdrMeasureObj();
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeUnrotatedSnapRect(Rectangle& rRect) const;
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+ virtual long GetRotateAngle() const;
+ virtual void RecalcSnapRect();
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ virtual sal_Bool IsPolyObj() const;
+ virtual sal_uInt32 GetPointCount() const;
+ virtual Point GetPoint(sal_uInt32 i) const;
+ virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 i);
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual sal_Bool BegTextEdit(SdrOutliner& rOutl);
+ virtual const Size& GetTextSize() const;
+ virtual void TakeTextRect( SdrOutliner& rOutliner, Rectangle& rTextRect, FASTBOOL bNoEditText=FALSE,
+ Rectangle* pAnchorRect=NULL, BOOL bLineWidth=TRUE ) const;
+ virtual void TakeTextAnchorRect(Rectangle& rAnchorRect) const;
+ virtual void TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const;
+ virtual USHORT GetOutlinerViewAnchorMode() const;
+ virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
+ virtual OutlinerParaObject* GetOutlinerParaObject() const;
+
+ virtual FASTBOOL CalcFieldValue(const SvxFieldItem& rField, USHORT nPara, USHORT nPos,
+ FASTBOOL bEdit, Color*& rpTxtColor, Color*& rpFldColor, String& rRet) const;
+
+ // #i97878#
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+};
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Creating:
+// ~~~~~~~~~
+// Dragging von Bezugspunkt 1 zu Bezugspunkt 2 -> Bezugskante
+//
+// Die Defaults:
+// ~~~~~~~~~~~~~
+// Masslinie und Masshilfslinien: Haarlinien solid schwarz
+// Pfeile: 2mm x 4mm
+// Textgroesse
+// ___
+// | Masszahl | 2mm
+// |<--------------------->|---
+// | | 8mm
+// | |
+// Pt1============# Pt2-- <----Bezugskante (von Pt1 nach Pt2)
+// # # |___ <- Ueberstand der Masshilfslinie(n)
+// # #=========#
+// # Zu bemassendes Objekt #
+// #=======================#
+//
+// Attribute:
+// ~~~~~~~~~~
+// 1. Wo steht der Text: mitte, rechts oder links (def=automatik)
+// 2. Text oberhalb der Linie oder unterhalb oder Linie unterbrochen durch Text (def=automatik)
+// 3. Den Abstand der Masslinie zur Bezugskante (=zum bemassten Objekt).
+// Default=8mm
+// 4. Masslinie unterhalb der Bezugskante (default=nein)
+// 5. Die Ueberlaenge(n) der Masshilfslinien ueber die Bezugskante (2x, default=0)
+// 6. Den Ueberhang der Masshilfslinien ueber die Masslinie (default=2mm)
+// 7. Den Abstand der Masshilfslinien zur Bezugskante
+//
+// Dragging: Handle Shift
+// ~~~~~~~~~
+// - Die Bezugspunkte SolidQuadHdl nur die Laenge
+// 1.+2. Anpacken des Textes
+// 3.+4. Hdl am Pfeil (2x) SolidQuadHdl nur den Bool
+// 5. Hdl am Endpunkt CircHdl beide Laengen?
+// 6.+7. Kein Dragging
+//
+// Offen:
+// ~~~~~~
+// - Radien (gleich als Typ verankern
+//
+// Special:
+// ~~~~~~~~
+// Connecting an max. 2 Objekte
+// -> Bei Copy, etc. den entspr. Code der Verbinder verwenden?!?
+// wird wohl recht kompliziert werden ...
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOMEAS_HXX
+
diff --git a/svx/inc/svx/svdomedia.hxx b/svx/inc/svx/svdomedia.hxx
new file mode 100644
index 000000000000..5b0980d8bb30
--- /dev/null
+++ b/svx/inc/svx/svdomedia.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOMEDIA_HXX
+#define _SVDOMEDIA_HXX
+
+#include <svx/svdorect.hxx>
+#include <avmedia/mediaitem.hxx>
+#include "svx/svxdllapi.h"
+
+class Graphic;
+
+namespace sdr { namespace contact { class ViewContactOfSdrMediaObj; } }
+
+// ---------------
+// - SdrMediaObj -
+// ---------------
+
+class SVX_DLLPUBLIC SdrMediaObj : public SdrRectObj
+{
+ friend class ::sdr::contact::ViewContactOfSdrMediaObj;
+
+public:
+
+ TYPEINFO();
+
+ SdrMediaObj();
+ SdrMediaObj( const Rectangle& rRect );
+
+ virtual ~SdrMediaObj();
+
+ virtual FASTBOOL HasTextEdit() const;
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly = false );
+
+public:
+
+ void setURL( const ::rtl::OUString& rURL );
+ const ::rtl::OUString& getURL() const;
+
+ void setMediaProperties( const ::avmedia::MediaItem& rState );
+ const ::avmedia::MediaItem& getMediaProperties() const;
+
+ bool hasPreferredSize() const;
+ Size getPreferredSize() const;
+
+ const Graphic& getGraphic() const;
+ void setGraphic( const Graphic* pGraphic = NULL );
+
+protected:
+
+ virtual void mediaPropertiesChanged( const ::avmedia::MediaItem& rNewState );
+ virtual ::sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+private:
+
+ ::avmedia::MediaItem maMediaProperties;
+ ::std::auto_ptr< Graphic > mapGraphic;
+};
+
+#endif //_SVDOMEDIA_HXX
diff --git a/svx/inc/svx/svdoole2.hxx b/svx/inc/svx/svdoole2.hxx
new file mode 100644
index 000000000000..79933be98a9b
--- /dev/null
+++ b/svx/inc/svx/svdoole2.hxx
@@ -0,0 +1,190 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOOLE2_HXX
+#define _SVDOOLE2_HXX
+
+#include <svtools/embedhlp.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/datatransfer/XTransferable.hpp>
+#include "com/sun/star/awt/XWindow.hpp"
+#include <svx/svdorect.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/gdimtf.hxx>
+#include <sot/storage.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// SdrOle2Obj
+//************************************************************
+
+class SvxUnoShapeModifyListener;
+class SdrOle2ObjImpl;
+
+class SVX_DLLPUBLIC SdrOle2Obj : public SdrRectObj
+{
+private:
+
+ SVX_DLLPRIVATE void Connect_Impl();
+ SVX_DLLPRIVATE void Disconnect_Impl();
+ SVX_DLLPRIVATE void Reconnect_Impl();
+ SVX_DLLPRIVATE void AddListeners_Impl();
+ SVX_DLLPRIVATE void RemoveListeners_Impl();
+ SVX_DLLPRIVATE ::com::sun::star::uno::Reference < ::com::sun::star::datatransfer::XTransferable > GetTransferable_Impl() const;
+ SVX_DLLPRIVATE void GetObjRef_Impl();
+ SVX_DLLPRIVATE void SetGraphic_Impl(const Graphic* pGrf);
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ svt::EmbeddedObjectRef xObjRef;
+ Graphic* pGraphic;
+ String aProgName;
+
+ // wg. Kompatibilitaet erstmal am SdrTextObj
+ BOOL bFrame : 1;
+ BOOL bInDestruction : 1;
+ mutable bool m_bTypeAsked;
+ mutable bool m_bChart;
+
+ SdrOle2ObjImpl* mpImpl;
+
+ SvxUnoShapeModifyListener* pModifyListener;
+
+protected:
+
+ void ImpSetVisAreaSize();
+ void Init();
+
+public:
+ TYPEINFO();
+
+ SdrOle2Obj(FASTBOOL bFrame_=FALSE);
+ SdrOle2Obj(const svt::EmbeddedObjectRef& rNewObjRef, FASTBOOL bFrame_=FALSE);
+ SdrOle2Obj(const svt::EmbeddedObjectRef& rNewObjRef, const String& rNewObjName, FASTBOOL bFrame_=FALSE);
+ SdrOle2Obj(const svt::EmbeddedObjectRef& rNewObjRef, const String& rNewObjName, const Rectangle& rNewRect, FASTBOOL bFrame_=FALSE);
+ virtual ~SdrOle2Obj();
+
+ // access to svt::EmbeddedObjectRef
+ const svt::EmbeddedObjectRef& getEmbeddedObjectRef() const { return xObjRef; }
+
+ sal_Int64 GetAspect() const { return xObjRef.GetViewAspect(); }
+ void SetAspect( sal_Int64 nAspect );
+
+ // Ein OLE-Zeichenobjekt kann eine StarView-Grafik beinhalten.
+ // Diese wird angezeigt, wenn das OLE-Objekt leer ist.
+ void SetGraphic(const Graphic* pGrf);
+ Graphic* GetGraphic() const;
+ void GetNewReplacement();
+
+ // the original size of the object ( size of the icon for iconified object )
+ // no conversion is done if no target mode is provided
+ Size GetOrigObjSize( MapMode* pTargetMapMode = NULL ) const;
+
+
+ // OLE object has got a separate PersistName member now;
+ // !!! use ::SetPersistName( ... ) only, if you know what you do !!!
+ String GetPersistName() const;
+ void SetPersistName( const String& rPersistName );
+
+ // Einem SdrOle2Obj kann man ein Applikationsnamen verpassen, den man
+ // spaeter wieder abfragen kann (SD braucht das fuer Praesentationsobjekte).
+ void SetProgName(const String& rNam) { aProgName=rNam; }
+ const String& GetProgName() const { return aProgName; }
+ FASTBOOL IsEmpty() const;
+
+ void SetObjRef(const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject >& rNewObjRef);
+ com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetObjRef() const;
+
+ SVX_DLLPRIVATE com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetObjRef_NoInit() const;
+
+ void AbandonObject();
+
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pModel);
+
+ /** Change the IsClosedObj attribute
+
+ @param bIsClosed
+ Whether the OLE object is closed, i.e. has opaque background
+ */
+ void SetClosedObj( bool bIsClosed );
+
+ // FullDrag support
+ virtual SdrObject* getFullDragClone() const;
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void NbcMove(const Size& rSize);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+ virtual void SetGeoData(const SdrObjGeoData& rGeo);
+
+ static sal_Bool CanUnloadRunningObj( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject >& xObj,
+ sal_Int64 nAspect );
+ static sal_Bool Unload( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject >& xObj, sal_Int64 nAspect );
+ BOOL Unload();
+ void Connect();
+ void Disconnect();
+ void ObjectLoaded();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getXModel() const;
+
+ // #109985#
+ sal_Bool IsChart() const;
+ sal_Bool IsCalc() const;
+
+ sal_Bool UpdateLinkURL_Impl();
+ void BreakFileLink_Impl();
+ void DisconnectFileLink_Impl();
+ void CheckFileLink_Impl();
+
+ // allows to transfer the graphics to the object helper
+ void SetGraphicToObj( const Graphic& aGraphic, const ::rtl::OUString& aMediaType );
+ void SetGraphicToObj( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xGrStream,
+ const ::rtl::OUString& aMediaType );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > GetParentXModel() const;
+ sal_Bool CalculateNewScaling( Fraction& aScaleWidth, Fraction& aScaleHeight, Size& aObjAreaSize );
+ sal_Bool AddOwnLightClient();
+
+ // handy to get the empty replacement bitmap without accessing all the old stuff
+ static Bitmap GetEmtyOLEReplacementBitmap();
+
+ void SetWindow(const com::sun::star::uno::Reference < com::sun::star::awt::XWindow >& _xWindow);
+};
+
+#endif //_SVDOOLE2_HXX
+
diff --git a/svx/inc/svx/svdopage.hxx b/svx/inc/svx/svdopage.hxx
new file mode 100644
index 000000000000..eea49236531e
--- /dev/null
+++ b/svx/inc/svx/svdopage.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOPAGE_HXX
+#define _SVDOPAGE_HXX
+
+#include <svx/svdobj.hxx>
+#include <svx/sdrpageuser.hxx>
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC SdrPageObj : public SdrObject, public sdr::PageUser
+{
+public:
+ // this method is called form the destructor of the referenced page.
+ // do all necessary action to forget the page. It is not necessary to call
+ // RemovePageUser(), that is done form the destructor.
+ virtual void PageInDestruction(const SdrPage& rPage);
+
+private:
+ // #111111#
+ // To make things more safe, remember the page, not a number
+ SdrPage* mpShownPage;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+public:
+ TYPEINFO();
+ SdrPageObj(SdrPage* pNewPage = 0L);
+ SdrPageObj(const Rectangle& rRect, SdrPage* pNewPage = 0L);
+ ~SdrPageObj();
+
+ // #111111#
+ SdrPage* GetReferencedPage() const;
+ void SetReferencedPage(SdrPage* pNewPage);
+
+ // #i96598#
+ virtual void SetBoundRectDirty();
+
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOPAGE_HXX
+
diff --git a/svx/inc/svx/svdopath.hxx b/svx/inc/svx/svdopath.hxx
new file mode 100644
index 000000000000..4ed1deb47f1f
--- /dev/null
+++ b/svx/inc/svx/svdopath.hxx
@@ -0,0 +1,195 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOPATH_HXX
+#define _SVDOPATH_HXX
+
+#include <svx/svdotext.hxx>
+#include <svx/xpoly.hxx>
+#include "svx/svxdllapi.h"
+#include <basegfx/vector/b2enums.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class ImpPathForDragAndCreate;
+
+//************************************************************
+// Hilfsklasse SdrPathObjGeoData
+//
+// fuer Undo/Redo
+//
+//************************************************************
+
+class SdrPathObjGeoData : public SdrTextObjGeoData
+{
+public:
+ basegfx::B2DPolyPolygon maPathPolygon;
+ SdrObjKind meKind;
+
+ SdrPathObjGeoData();
+ virtual ~SdrPathObjGeoData();
+};
+
+//************************************************************
+// SdrPathObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrPathObj : public SdrTextObj
+{
+private:
+ friend class ImpPathForDragAndCreate;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+ basegfx::B2DPolyPolygon maPathPolygon;
+ SdrObjKind meKind;
+
+ // for isolation of old Drag/Create code
+ ImpPathForDragAndCreate* mpDAC;
+
+protected:
+ // Hilfsfunktion fuer GET/SET/INS/etc. PNT
+ void ImpSetClosed(sal_Bool bClose);
+ void ImpForceKind();
+ void ImpForceLineWink();
+ ImpPathForDragAndCreate& impGetDAC() const;
+ void impDeleteDAC() const;
+
+public:
+ static sal_Bool ImpFindPolyPnt(const basegfx::B2DPolyPolygon& rPoly, sal_uInt32 nAbsPnt, sal_uInt32& rPolyNum, sal_uInt32& rPointNum);
+ virtual void SetRectsDirty(sal_Bool bNotMyself = sal_False);
+
+public:
+ TYPEINFO();
+ SdrPathObj(SdrObjKind eNewKind);
+ SdrPathObj(SdrObjKind eNewKind, const basegfx::B2DPolyPolygon& rPathPoly);
+ virtual ~SdrPathObj();
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeUnrotatedSnapRect(Rectangle& rRect) const;
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual void RecalcSnapRect();
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+ virtual sal_uInt32 GetPlusHdlCount(const SdrHdl& rHdl) const;
+ virtual SdrHdl* GetPlusHdl(const SdrHdl& rHdl, sal_uInt32 nPlNum) const;
+ virtual void AddToHdlList(SdrHdlList& rHdlList) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+ virtual basegfx::B2DPolyPolygon getSpecialDragPoly(const SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ Pointer GetCreatePointer() const;
+
+ // during drag or create, allow accessing the so-far created/modified polyPolygon
+ basegfx::B2DPolyPolygon getObjectPolyPolygon(const SdrDragStat& rDrag) const;
+ basegfx::B2DPolyPolygon getDragPolyPolygon(const SdrDragStat& rDrag) const;
+
+ virtual void NbcMove(const Size& aSize);
+ virtual void NbcResize(const Point& rRefPnt, const Fraction& aXFact, const Fraction& aYFact);
+ virtual void NbcRotate(const Point& rRefPnt, long nAngle, double fSin, double fCos);
+ virtual void NbcMirror(const Point& rRefPnt1, const Point& rRefPnt2);
+ virtual void NbcShear(const Point& rRefPnt, long nAngle, double fTan, FASTBOOL bVShear);
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ virtual sal_Bool IsPolyObj() const;
+ virtual sal_uInt32 GetPointCount() const;
+ virtual Point GetPoint(sal_uInt32 nHdlNum) const;
+ virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 nHdlNum);
+
+ // Punkt einfuegen
+ sal_uInt32 NbcInsPointOld(const Point& rPos, sal_Bool bNewObj, sal_Bool bHideHim);
+ sal_uInt32 NbcInsPoint(sal_uInt32 i, const Point& rPos, sal_Bool bNewObj, sal_Bool bHideHim);
+
+ // An diesem Punkt auftrennen
+ SdrObject* RipPoint(sal_uInt32 nHdlNum, sal_uInt32& rNewPt0Index);
+
+protected:
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+public:
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ // Bezierpolygon holen/setzen
+ const basegfx::B2DPolyPolygon& GetPathPoly() const { return maPathPolygon; }
+ void SetPathPoly(const basegfx::B2DPolyPolygon& rPathPoly);
+ void NbcSetPathPoly(const basegfx::B2DPolyPolygon& rPathPoly);
+
+ // Spezialfunktionen fuer Bezierpolygon-Bearbeitung
+ sal_Bool IsClosed() const { return meKind==OBJ_POLY || meKind==OBJ_PATHPOLY || meKind==OBJ_PATHFILL || meKind==OBJ_FREEFILL || meKind==OBJ_SPLNFILL; }
+ sal_Bool IsLine() const { return meKind==OBJ_PLIN || meKind==OBJ_PATHPLIN || meKind==OBJ_PATHLINE || meKind==OBJ_FREELINE || meKind==OBJ_SPLNLINE || meKind==OBJ_LINE; }
+ sal_Bool IsFreeHand() const { return meKind==OBJ_FREELINE || meKind==OBJ_FREEFILL; }
+ sal_Bool IsBezier() const { return meKind==OBJ_PATHLINE || meKind==OBJ_PATHFILL; }
+ sal_Bool IsSpline() const { return meKind==OBJ_SPLNLINE || meKind==OBJ_SPLNFILL; }
+
+ // Pfad schliessen bzw. oeffnen; im letzteren Fall den Endpunkt um
+ // "nOpenDistance" verschieben
+ void ToggleClosed(); // long nOpenDistance);
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // transformation interface for StarOfficeAPI. This implements support for
+ // homogen 3x3 matrices containing the transformation of the SdrObject. At the
+ // moment it contains a shearX, rotation and translation, but for setting all linear
+ // transforms like Scale, ShearX, ShearY, Rotate and Translate are supported.
+ //
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // gets base transformation and rectangle of object. If it's an SdrPathObj it fills the PolyPolygon
+ // with the base geometry and returns TRUE. Otherwise it returns FALSE.
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+ // sets the base geometry of the object using infos contained in the homogen 3x3 matrix.
+ // If it's an SdrPathObj it will use the provided geometry information. The Polygon has
+ // to use (0,0) as upper left and will be scaled to the given size in the matrix.
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOPATH_HXX
+
diff --git a/svx/inc/svx/svdorect.hxx b/svx/inc/svx/svdorect.hxx
new file mode 100644
index 000000000000..b333ed8757f1
--- /dev/null
+++ b/svx/inc/svx/svdorect.hxx
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDORECT_HXX
+#define _SVDORECT_HXX
+
+#include <svx/svdotext.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class XPolygon;
+
+namespace sdr { namespace properties {
+ class RectangleProperties;
+}}
+
+//************************************************************
+// SdrRectObj
+//
+// Rechteck-Objekte (Rechteck,Kreis,...)
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrRectObj : public SdrTextObj
+{
+private:
+ // to allow sdr::properties::RectangleProperties access to SetXPolyDirty()
+ friend class sdr::properties::RectangleProperties;
+ friend class SdrTextObj; // wg SetXPolyDirty bei GrowAdjust
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
+ XPolygon* mpXPoly;
+
+protected:
+ // Liefert TRUE, wenn das Painten ein Polygon erfordert.
+ FASTBOOL PaintNeedsXPoly(long nEckRad) const;
+
+protected:
+ XPolygon ImpCalcXPoly(const Rectangle& rRect1, long nRad1) const;
+ void SetXPolyDirty();
+
+ // RecalcXPoly sollte ueberladen werden. Dabei muss dann eine XPolygon
+ // Instanz generiert (new) und an mpXPoly zugewiesen werden.
+ virtual void RecalcXPoly();
+ const XPolygon& GetXPoly() const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+public:
+ TYPEINFO();
+ // Der Eckenradius-Parameter fliegt irgendwann raus. Der Eckenradius
+ // ist dann (spaeter) ueber SfxItems einzustellen (SetAttributes()).
+ // Konstruktion eines Rechteck-Zeichenobjekts
+
+ SdrRectObj();
+ SdrRectObj(const Rectangle& rRect);
+
+ // Konstruktion eines Textrahmens
+ SdrRectObj(SdrObjKind eNewTextKind);
+ SdrRectObj(SdrObjKind eNewTextKind, const Rectangle& rRect);
+ // der USHORT eFormat nimmt Werte des enum EETextFormat entgegen
+ SdrRectObj(SdrObjKind eNewTextKind, const Rectangle& rNewRect, SvStream& rInput, const String& rBaseURL, USHORT eFormat);
+ virtual ~SdrRectObj();
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void TakeUnrotatedSnapRect(Rectangle& rRect) const;
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual void operator=(const SdrObject& rObj);
+ virtual void RecalcSnapRect();
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ virtual FASTBOOL DoMacro(const SdrObjMacroHitRec& rRec);
+ virtual XubString GetMacroPopupComment(const SdrObjMacroHitRec& rRec) const;
+
+ virtual SdrGluePoint GetVertexGluePoint(USHORT nNum) const;
+ virtual SdrGluePoint GetCornerGluePoint(USHORT nNum) const;
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+};
+
+#endif //_SVDORECT_HXX
+
diff --git a/svx/inc/svx/svdotable.hxx b/svx/inc/svx/svdotable.hxx
new file mode 100644
index 000000000000..02044f0dbc25
--- /dev/null
+++ b/svx/inc/svx/svdotable.hxx
@@ -0,0 +1,342 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_SVDOTABLE_HXX
+#define _SVX_SVDOTABLE_HXX
+
+#include <com/sun/star/text/WritingMode.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/table/XTable.hpp>
+#include <rtl/ref.hxx>
+#include "svdotext.hxx"
+#include "svx/svxdllapi.h"
+
+//------------------------------------------------------------------------
+
+class SvStream;
+class SfxStyleSheet;
+
+namespace sdr { namespace contact {
+ class ViewContactOfTableObj;
+}}
+
+namespace sdr { namespace table {
+
+class TableLayouter;
+struct ImplTableShadowPaintInfo;
+
+#ifndef CellRef
+ class Cell;
+ typedef rtl::Reference< Cell > CellRef;
+#endif
+
+//------------------------------------------------------------------------
+// SdrTableHitKind
+//------------------------------------------------------------------------
+
+enum TableHitKind
+{
+ SDRTABLEHIT_NONE,
+ SDRTABLEHIT_CELL,
+ SDRTABLEHIT_CELLTEXTAREA,
+ SDRTABLEHIT_HORIZONTAL_BORDER,
+ SDRTABLEHIT_VERTICAL_BORDER
+};
+
+//------------------------------------------------------------------------
+
+struct CellPos
+{
+ sal_Int32 mnCol;
+ sal_Int32 mnRow;
+
+ CellPos() : mnCol( 0 ), mnRow( 0 ) {}
+ CellPos( sal_Int32 nCol, sal_Int32 nRow ) { mnCol = nCol; mnRow = nRow; }
+
+ bool operator==( const CellPos& r ) const { return (r.mnCol == mnCol) && (r.mnRow == mnRow); }
+ bool operator!=( const CellPos& r ) const { return (r.mnCol != mnCol) || (r.mnRow != mnRow); }
+};
+
+//------------------------------------------------------------------------
+// TableStyleSettings
+//------------------------------------------------------------------------
+
+struct SVX_DLLPUBLIC TableStyleSettings
+{
+ bool mbUseFirstRow;
+ bool mbUseLastRow;
+ bool mbUseFirstColumn;
+ bool mbUseLastColumn;
+ bool mbUseRowBanding;
+ bool mbUseColumnBanding;
+
+ TableStyleSettings();
+ TableStyleSettings( const TableStyleSettings& rStyle );
+ TableStyleSettings& operator=(const TableStyleSettings& rStyle);
+
+ bool operator==( const TableStyleSettings& r ) const;
+};
+
+//------------------------------------------------------------------------
+// SdrTableObj
+//------------------------------------------------------------------------
+
+class SdrTableObjImpl;
+
+class SVX_DLLPUBLIC SdrTableObj : public ::SdrTextObj
+{
+ friend class Cell;
+ friend class SdrTableObjImpl;
+ friend class SdrTableModifyGuard;
+
+public:
+ SdrTableObj(SdrModel* _pModel);
+ SdrTableObj(SdrModel* _pModel, const ::Rectangle& rNewRect, sal_Int32 nColumns, sal_Int32 nRows);
+ virtual ~SdrTableObj();
+
+ TYPEINFO();
+
+ // table stuff
+
+ SdrTableObj* CloneRange( const CellPos& rStartPos, const CellPos& rEndPos );
+ void DistributeColumns( sal_Int32 nFirstColumn, sal_Int32 nLastColumn );
+ void DistributeRows( sal_Int32 nFirstRow, sal_Int32 nLastRow );
+
+ com::sun::star::uno::Reference< com::sun::star::table::XTable > getTable() const;
+
+ bool isValid( const sdr::table::CellPos& rPos ) const;
+ CellPos getFirstCell() const;
+ CellPos getLastCell() const;
+ CellPos getLeftCell( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getRightCell( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getUpCell( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getDownCell( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getPreviousCell( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getNextCell( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getPreviousRow( const CellPos& rPos, bool bEdgeTravel ) const;
+ CellPos getNextRow( const CellPos& rPos, bool bEdgeTravel ) const;
+
+ void createCell( ::sdr::table::CellRef& xCell );
+
+ const ::sdr::table::TableStyleSettings& getTableStyleSettings() const;
+ void setTableStyleSettings( const ::sdr::table::TableStyleSettings& rStyle );
+
+ TableHitKind CheckTableHit( const Point& rPos, sal_Int32& rnX, sal_Int32& rnY, int nTol ) const;
+
+ void uno_lock();
+ void uno_unlock();
+
+ /** the active table has the focus or is currently edited */
+ const ::sdr::table::CellRef& getActiveCell() const;
+
+ void setActiveCell( const sdr::table::CellPos& rPos );
+ void getActiveCellPos( sdr::table::CellPos& rPos ) const;
+
+ sal_Int32 getRowCount() const;
+ sal_Int32 getColumnCount() const;
+
+ void getCellBounds( const sdr::table::CellPos& rPos, ::Rectangle& rCellRect );
+
+ const SfxItemSet& GetActiveCellItemSet() const;
+
+ void InsertRows( sal_Int32 nIndex, sal_Int32 nCount = 1 );
+ void InsertColumns( sal_Int32 nIndex, sal_Int32 nCount = 1 );
+ void DeleteRows( sal_Int32 nIndex, sal_Int32 nCount = 1 );
+ void DeleteColumns( sal_Int32 nIndex, sal_Int32 nCount = 1 );
+
+ void setTableStyle( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& xAutoFormatStyle );
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& getTableStyle() const;
+
+ // text stuff
+
+ /** returns the currently active text. */
+ virtual SdrText* getActiveText() const;
+
+ /** returns the nth available text. */
+ virtual SdrText* getText( sal_Int32 nIndex ) const;
+
+ /** returns the number of texts available for this object. */
+ virtual sal_Int32 getTextCount() const;
+
+ /** changes the current active text */
+ virtual void setActiveText( sal_Int32 nIndex );
+
+ /** returns the index of the text that contains the given point or -1 */
+ virtual sal_Int32 CheckTextHit(const Point& rPnt) const;
+
+ virtual bool HasText() const;
+ sal_Bool IsTextEditActive() const { return (pEdtOutl != 0L); }
+ bool IsTextEditActive( const sdr::table::CellPos& rPos );
+
+ /** returns true only if we are in edit mode and the user actually changed anything */
+ virtual bool IsRealyEdited() const;
+
+ void FitFrameToTextSize();
+
+ SdrOutliner* GetCellTextEditOutliner( const sdr::table::CellPos& rPos ) const;
+
+ // Gleichzeitig wird der Text in den Outliner gesetzt (ggf.
+ // der des EditOutliners) und die PaperSize gesetzt.
+ virtual void TakeTextRect( const sdr::table::CellPos& rPos, SdrOutliner& rOutliner, ::Rectangle& rTextRect, FASTBOOL bNoEditText=FALSE, ::Rectangle* pAnchorRect=NULL, BOOL bLineWidth=TRUE ) const;
+ virtual void TakeTextRect( SdrOutliner& rOutliner, Rectangle& rTextRect, FASTBOOL bNoEditText=FALSE, Rectangle* pAnchorRect=NULL, BOOL bLineWidth=TRUE ) const;
+ virtual void TakeTextAnchorRect(const sdr::table::CellPos& rPos, ::Rectangle& rAnchorRect ) const;
+ virtual void TakeTextAnchorRect(::Rectangle& rAnchorRect) const;
+
+ virtual FASTBOOL IsAutoGrowHeight() const;
+ long GetMinTextFrameHeight() const;
+ long GetMaxTextFrameHeight() const;
+ virtual FASTBOOL IsAutoGrowWidth() const;
+ long GetMinTextFrameWidth() const;
+ long GetMaxTextFrameWidth() const;
+
+ virtual FASTBOOL IsFontwork() const;
+
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pNewModel);
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual void SetChanged();
+
+ virtual FASTBOOL AdjustTextFrameWidthAndHeight(Rectangle& rR, FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE) const;
+ virtual FASTBOOL AdjustTextFrameWidthAndHeight(FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE);
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+ virtual void operator=(const SdrObject& rObj);
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual basegfx::B2DPolyPolygon TakeContour() const;
+ virtual void RecalcSnapRect();
+ virtual const Rectangle& GetSnapRect() const;
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+
+ virtual const Rectangle& GetLogicRect() const;
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+ virtual void AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly = false );
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+ virtual void AddToHdlList(SdrHdlList& rHdlList) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+ virtual basegfx::B2DPolyPolygon getSpecialDragPoly(const SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+
+ virtual sal_Bool BegTextEdit(SdrOutliner& rOutl);
+ virtual void EndTextEdit(SdrOutliner& rOutl);
+ virtual void TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const;
+ virtual void TakeTextEditArea(const sdr::table::CellPos& rPos, Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const;
+ virtual USHORT GetOutlinerViewAnchorMode() const;
+
+ virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
+
+ virtual OutlinerParaObject* GetOutlinerParaObject() const;
+ virtual OutlinerParaObject* GetEditOutlinerParaObject() const;
+
+ virtual void NbcReformatText();
+ virtual void ReformatText();
+
+ void SetTextEditOutliner(SdrOutliner* pOutl) { pEdtOutl=pOutl; }
+
+ virtual sal_Bool IsVerticalWriting() const;
+ virtual void SetVerticalWriting(sal_Bool bVertical);
+
+ com::sun::star::text::WritingMode GetWritingMode() const;
+
+ virtual void onEditOutlinerStatusEvent( EditStatus* pEditStatus );
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // transformation interface for StarOfficeAPI. This implements support for
+ // homogen 3x3 matrices containing the transformation of the SdrObject. At the
+ // moment it contains a shearX, rotation and translation, but for setting all linear
+ // transforms like Scale, ShearX, ShearY, Rotate and Translate are supported.
+ //
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // gets base transformation and rectangle of object. If it's an SdrPathObj it fills the PolyPolygon
+ // with the base geometry and returns TRUE. Otherwise it returns FALSE.
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+
+ // sets the base geometry of the object using infos contained in the homogen 3x3 matrix.
+ // If it's an SdrPathObj it will use the provided geometry information. The Polygon has
+ // to use (0,0) as upper left and will be scaled to the given size in the matrix.
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+ // #103836# iterates over the paragraphs of a given SdrObject and removes all
+ // hard set character attributes with the which ids contained in the
+ // given vector
+// virtual void RemoveOutlinerCharacterAttribs( const std::vector<sal_uInt16>& rCharWhichIds );
+
+ /** hack for clipboard with calc and writer, export and import table content as rtf table */
+ static void ExportAsRTF( SvStream& rStrm, SdrTableObj& rObj );
+ static void ImportAsRTF( SvStream& rStrm, SdrTableObj& rObj );
+
+private:
+ void init( sal_Int32 nColumns, sal_Int32 nRows );
+
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+private:
+ SdrOutliner* GetCellTextEditOutliner( const ::sdr::table::Cell& rCell ) const;
+
+private:
+ // for the ViewContactOfTableObj to build the primitive representation, it is necessary to access the
+ // TableLayouter for position and attribute informations
+ friend class sdr::contact::ViewContactOfTableObj;
+ const TableLayouter& getTableLayouter() const;
+
+ Rectangle maLogicRect;
+private:
+ SdrTableObjImpl* mpImpl;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+} }
+
+#endif
diff --git a/svx/inc/svx/svdotext.hxx b/svx/inc/svx/svdotext.hxx
new file mode 100644
index 000000000000..3a15d33f2cdd
--- /dev/null
+++ b/svx/inc/svx/svdotext.hxx
@@ -0,0 +1,610 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOTEXT_HXX
+#define _SVDOTEXT_HXX
+
+#include <vcl/field.hxx>
+#include <svx/svdoattr.hxx>
+#include <svx/svdtrans.hxx> // GeoStat
+#include <tools/datetime.hxx>
+#include <svx/xtextit0.hxx>
+#include "svdtext.hxx"
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include "svx/svxdllapi.h"
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <svx/svdpagv.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class OutlinerParaObject;
+class SdrOutliner;
+class SdrTextObj;
+class SvxFieldItem;
+class ImpSdrObjTextLink;
+class EditStatus;
+
+namespace sdr { namespace properties {
+ class TextProperties;
+}}
+
+namespace drawinglayer { namespace primitive2d {
+ class SdrContourTextPrimitive2D;
+ class SdrPathTextPrimitive2D;
+ class SdrBlockTextPrimitive2D;
+ class SdrStretchTextPrimitive2D;
+}}
+
+namespace drawinglayer { namespace animation {
+ class AnimationEntryList;
+}}
+
+namespace drawinglayer { namespace geometry {
+ class ViewInformation2D;
+}}
+
+namespace sdr { namespace table {
+ class Cell;
+ class SdrTableRtfExporter;
+ class SdrTableRTFParser;
+}}
+
+//************************************************************
+// Defines
+//************************************************************
+
+#define SDRUSERDATA_OBJTEXTLINK (1)
+
+//************************************************************
+// Hilfsklasse SdrTextObjGeoData
+//************************************************************
+
+class SdrTextObjGeoData : public SdrObjGeoData
+{
+public:
+ Rectangle aRect;
+ GeoStat aGeo;
+};
+
+//************************************************************
+// Hilfsklasse ImpSdrObjTextLinkUserData
+//************************************************************
+
+class ImpSdrObjTextLinkUserData : public SdrObjUserData
+{
+ friend class SdrTextObj;
+ friend class ImpSdrObjTextLink;
+
+ SdrTextObj* pObj;
+ String aFileName; // Name des referenzierten Dokuments
+ String aFilterName; // ggf. ein Filter
+ DateTime aFileDate0; // Unnoetiges neuladen vermeiden
+ ImpSdrObjTextLink* pLink;
+ rtl_TextEncoding eCharSet;
+
+public:
+ TYPEINFO();
+ ImpSdrObjTextLinkUserData(SdrTextObj* pObj1);
+ virtual ~ImpSdrObjTextLinkUserData();
+
+ virtual SdrObjUserData* Clone(SdrObject* pObj1) const;
+};
+
+namespace sdr
+{
+ namespace properties
+ {
+ class CustomShapeProperties;
+ class CellProperties;
+ } // end of namespace properties
+} // end of namespace sdr
+
+//************************************************************
+// SdrTextObj
+//************************************************************
+
+class SVX_DLLPUBLIC SdrTextObj : public SdrAttrObj
+{
+private:
+ // Cell needs access to ImpGetDrawOutliner();
+
+ friend class sdr::table::Cell;
+ friend class sdr::table::SdrTableRtfExporter;
+ friend class sdr::table::SdrTableRTFParser;
+
+ // CustomShapeproperties need to access the "bTextFrame" member:
+ friend class sdr::properties::CustomShapeProperties;
+
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+private:
+ // This method is only allowed for sdr::properties::TextProperties
+ SVX_DLLPRIVATE SdrOutliner* GetTextEditOutliner() const
+ {
+ return pEdtOutl;
+ }
+
+ // This method is only allowed for sdr::properties::TextProperties
+ SVX_DLLPRIVATE void SetPortionInfoChecked(sal_Bool bNew)
+ {
+ bPortionInfoChecked = bNew;
+ }
+
+ // to allow sdr::properties::TextProperties access to SetPortionInfoChecked()
+ // and GetTextEditOutliner()
+ friend class sdr::properties::TextProperties;
+ friend class sdr::properties::CellProperties;
+
+ friend class ImpTextPortionHandler;
+ friend class ImpSdrObjTextLink;
+ friend class ImpSdrObjTextLinkUserData;
+ friend class SdrPowerPointImport; // fuer PowerPointImport
+ friend class SdrExchangeView; // fuer ImpGetDrawOutliner
+ friend class SdrView; // fuer ImpGetDrawOutliner
+ friend class SdrObjEditView; // fuer TextEdit
+ friend class SdrMeasureObj; // fuer ImpGetDrawOutliner
+ friend class SvxMSDffManager; // fuer ImpGetDrawOutliner
+ friend class SdrObjCustomShape;// fuer ImpGetDrawOutliner
+ friend class SdrText; // fuer ImpGetDrawOutliner
+
+protected:
+ // Das aRect ist gleichzeig auch das Rect vom RectObj und CircObj.
+ // Bei bTextFrame=TRUE wird der Text in dieses Rect hineinformatiert.
+ // Bei bTextFrame=FALSE wird der Text am Mittelpunkt des Rect zentriert.
+ Rectangle aRect;
+
+ // Der GeoStat enthaelt den Drehwinkel und einen Shearwinkel
+ GeoStat aGeo;
+
+ // this is the active text
+ SdrText* mpText;
+
+ // Hier merke ich mir die Ausmasse des Textes (n.i.)
+ Size aTextSize;
+
+ // Ein Outliner*, damit
+ // 1. das TextObj nicht von mehreren Views gleichzeitig editiert und
+ // 2. beim Streamen waerend des Editierens ein Flush() ausgefuehrt
+ // werden kann
+ SdrOutliner* pEdtOutl;
+
+ // Bei Fontwork muss soviel auf's BoundRect draufgerechnet werden
+ // damit es ausreichend gross ist.
+ Rectangle* pFormTextBoundRect;
+
+ // Moegliche Werte fuer eTextKind sind:
+ // OBJ_TEXT normaler Textrahmen
+ // OBJ_TEXTEXT Textfortsetzungsrahmen
+ // OBJ_TITLETEXT TitleText fuer StarDraw-Praesentation
+ // OBJ_OUTLINETEXT OutlineText fuer StarDraw-Praesentation
+ // eTextKind hat nur Bedeutung, wenn bTextFrame=TRUE, da es sich sonst
+ // um ein beschriftetes Grafikobjekt handelt.
+ SdrObjKind eTextKind;
+
+ // #108784#
+ // For text editing in SW Haeder/Footer it is necessary to be
+ // able to set an offset for the text edit to allow text editing at the
+ // position of the virtual object. This offset is used when setting up
+ // and maintaining the OutlinerView.
+ Point maTextEditOffset;
+public:
+ const Point& GetTextEditOffset() const { return maTextEditOffset; }
+ void SetTextEditOffset(const Point& rNew) { maTextEditOffset = rNew; }
+
+protected:
+ // Fuer beschriftete Zeichenobjekte ist bTextFrame=FALSE. Der Textblock
+ // wird dann hoizontal und vertikal an aRect zentriert. Bei bTextFrame=
+ // TRUE wird der Text in aRect hineinformatiert. Der eigentliche Textrahmen
+ // ist durch ein SdrRectObj mit bTextFrame=TRUE realisiert.
+ BOOL bTextFrame : 1;
+ BOOL bPortionInfoChecked : 1; // Fuer Optimierung von Textobjekten
+ BOOL bNoShear : 1; // Obj darf nicht gesheart werden (->Graf+Ole+TextFrame)
+ BOOL bNoRotate : 1; // Obj darf nicht gedreht werden (->Ole)
+ BOOL bNoMirror : 1; // Obj darf nicht gespiegelt werden (->Ole,TextFrame)
+ BOOL bTextSizeDirty : 1;
+
+ // #101684#
+ BOOL mbInEditMode : 1; // Is this text obejct in edit mode?
+
+ // Fuer Objekt mit freier Groesse im Draw (Mengentext). Das Flag wird vom
+ // der App beim Create gesetzt.
+ // Wenn das Objekt dann spaeter in der Breite resized wird, wird
+ // AutoGrowWidth abgeschaltet (Hart auf FALSE attributiert). Das Flag wird
+ // dann ebenfalls auf FALSE gesetzt, sodass sich das Objekt anschliessend
+ // wie ein normales Textobjekt verhaelt.
+ // Resize in der Breite kann sein:
+ // - Interaktives Resize in Einfach- oder Mehrfachselektion
+ // - Positions+Groesse Dialog
+ BOOL bDisableAutoWidthOnDragging : 1;
+
+ // #111096#
+ // Allow text suppression
+ BOOL mbTextHidden : 1;
+
+ // #111096#
+ // Flag for allowing text animation. Default is sal_true.
+ BOOL mbTextAnimationAllowed : 1;
+
+ SdrOutliner& ImpGetDrawOutliner() const;
+
+private:
+ SVX_DLLPRIVATE void ImpCheckMasterCachable();
+ // #101029#: Extracted from ImpGetDrawOutliner()
+ SVX_DLLPRIVATE void ImpInitDrawOutliner( SdrOutliner& rOutl ) const;
+ // #101029#: Extracted from Paint()
+ SVX_DLLPRIVATE void ImpSetupDrawOutlinerForPaint( FASTBOOL bContourFrame,
+ SdrOutliner& rOutliner,
+ Rectangle& rTextRect,
+ Rectangle& rAnchorRect,
+ Rectangle& rPaintRect,
+ Fraction& aFitXKorreg ) const;
+ SVX_DLLPRIVATE SdrObject* ImpConvertContainedTextToSdrPathObjs(bool bToPoly) const;
+ SVX_DLLPRIVATE void ImpLinkAnmeldung();
+ SVX_DLLPRIVATE void ImpLinkAbmeldung();
+ SVX_DLLPRIVATE ImpSdrObjTextLinkUserData* GetLinkUserData() const;
+// void ImpCheckItemSetChanges(const SfxItemSet& rAttr);
+
+protected:
+ bool ImpCanConvTextToCurve() const;
+ SdrObject* ImpConvertMakeObj(const basegfx::B2DPolyPolygon& rPolyPolygon, sal_Bool bClosed, sal_Bool bBezier, sal_Bool bNoSetAttr = sal_False) const;
+ SdrObject* ImpConvertAddText(SdrObject* pObj, FASTBOOL bBezier) const;
+ void ImpSetTextStyleSheetListeners();
+ void ImpSetCharStretching(SdrOutliner& rOutliner, const Rectangle& rTextRect, const Rectangle& rAnchorRect, Fraction& rFitXKorreg) const;
+ void ImpJustifyRect(Rectangle& rRect) const;
+ void ImpCheckShear();
+ Rectangle ImpDragCalcRect(const SdrDragStat& rDrag) const;
+ void ImpSetTextEditParams() const;
+ void SetTextSizeDirty() { bTextSizeDirty=TRUE; }
+
+ // rAnchorRect ist InOut-Parameter!
+ void ImpSetContourPolygon( SdrOutliner& rOutliner, Rectangle& rAnchorRect, BOOL bLineWidth ) const;
+
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+ FASTBOOL NbcSetEckenradius(long nRad);
+ FASTBOOL NbcSetAutoGrowHeight(bool bAuto);
+ FASTBOOL NbcSetMinTextFrameHeight(long nHgt);
+ FASTBOOL NbcSetMaxTextFrameHeight(long nHgt);
+ FASTBOOL NbcSetAutoGrowWidth(bool bAuto);
+ FASTBOOL NbcSetMinTextFrameWidth(long nWdt);
+ FASTBOOL NbcSetMaxTextFrameWidth(long nWdt);
+ FASTBOOL NbcSetFitToSize(SdrFitToSizeType eFit);
+
+ // Konstruktoren fuer beschriftete Zeichenobjekte
+ SdrTextObj();
+ SdrTextObj(const Rectangle& rNewRect);
+
+ // Konstruktoren fuer Textrahmen
+ SdrTextObj(SdrObjKind eNewTextKind);
+ SdrTextObj(SdrObjKind eNewTextKind, const Rectangle& rNewRect);
+
+ // der USHORT eFormat nimmt Werte des enum EETextFormat entgegen
+ SdrTextObj(SdrObjKind eNewTextKind, const Rectangle& rNewRect, SvStream& rInput, const String& rBaseURL, USHORT eFormat);
+ virtual ~SdrTextObj();
+
+public:
+ TYPEINFO();
+
+ // #101684#
+ BOOL IsInEditMode() const { return mbInEditMode; }
+
+ // via eCharSet kann der CharSet der vorliegenden Datei uebergeben werden.
+ // Bei RTL_TEXTENCODING_DONTKNOW wird der CharSet der aktuellen Plattform verwendet.
+ // Derzeit unterstuetzt wird ASCII und RTF wobei ich die Unterscheidung
+ // selbst treffe. rFilterName ist noch ohne Bedeutung und muss leer gelassen
+ // werden.
+ // I.d.R. muss die App nur SetTextLink() rufen - der Rest geschieht von
+ // selbst (SfxLinkManager). Die Methode LoadText() kann ausserdem verwendet
+ // werden, um eine Datei in ein Textobjekt zu laden (ohne Verknuepfung).
+ // TextLinks koennen nicht editiert werden (allenfalls spaeter mal ReadOnly).
+ // Eine Attributierung kann nur am Textrahmen vollzogen werden.
+ void SetTextLink(const String& rFileName, const String& rFilterName, rtl_TextEncoding eCharSet);
+ void ReleaseTextLink();
+ FASTBOOL IsLinkedText() const { return pPlusData!=NULL && GetLinkUserData()!=NULL; }
+ FASTBOOL ReloadLinkedText(FASTBOOL bForceLoad=FALSE);
+ FASTBOOL LoadText(const String& rFileName, const String& rFilterName, rtl_TextEncoding eCharSet);
+
+ virtual FASTBOOL AdjustTextFrameWidthAndHeight(Rectangle& rR, FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE) const;
+ virtual FASTBOOL NbcAdjustTextFrameWidthAndHeight(FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE);
+ virtual FASTBOOL AdjustTextFrameWidthAndHeight(FASTBOOL bHgt=TRUE, FASTBOOL bWdt=TRUE);
+ void NbcResizeTextAttributes(const Fraction& xFact, const Fraction& yFact);
+ FASTBOOL IsTextFrame() const { return bTextFrame; }
+ FASTBOOL IsOutlText() const { return bTextFrame && (eTextKind==OBJ_OUTLINETEXT || eTextKind==OBJ_TITLETEXT); }
+ SdrObjKind GetTextKind() const { return eTextKind; }
+
+ virtual bool HasText() const;
+ FASTBOOL HasEditText() const;
+ sal_Bool IsTextEditActive() const { return (pEdtOutl != 0L); }
+
+ /** returns the currently active text. */
+ virtual SdrText* getActiveText() const;
+
+ /** returns the nth available text. */
+ virtual SdrText* getText( sal_Int32 nIndex ) const;
+
+ /** returns the number of texts available for this object. */
+ virtual sal_Int32 getTextCount() const;
+
+ /** returns true only if we are in edit mode and the user actually changed anything */
+ virtual bool IsRealyEdited() const;
+
+ /** changes the current active text */
+ virtual void setActiveText( sal_Int32 nIndex );
+
+ /** returns the index of the text that contains the given point or -1 */
+ virtual sal_Int32 CheckTextHit(const Point& rPnt) const;
+
+ void SetDisableAutoWidthOnDragging(FASTBOOL bOn) { bDisableAutoWidthOnDragging=bOn; }
+ FASTBOOL IsDisableAutoWidthOnDragging() { return bDisableAutoWidthOnDragging; }
+ void NbcSetText(const String& rStr);
+ void SetText(const String& rStr);
+ void NbcSetText(SvStream& rInput, const String& rBaseURL, USHORT eFormat);
+ void SetText(SvStream& rInput, const String& rBaseURL, USHORT eFormat);
+
+ // FitToSize und Fontwork wird bei GetTextSize() nicht berueksichtigt!
+ virtual const Size& GetTextSize() const;
+ void FitFrameToTextSize();
+
+ // Gleichzeitig wird der Text in den Outliner gesetzt (ggf.
+ // der des EditOutliners) und die PaperSize gesetzt.
+ virtual void TakeTextRect( SdrOutliner& rOutliner, Rectangle& rTextRect, FASTBOOL bNoEditText=FALSE,
+ Rectangle* pAnchorRect=NULL, BOOL bLineWidth=TRUE ) const;
+ virtual void TakeTextAnchorRect(::Rectangle& rAnchorRect) const;
+ const GeoStat& GetGeoStat() const { return aGeo; }
+
+ long GetEckenradius() const;
+ virtual FASTBOOL IsAutoGrowHeight() const;
+ long GetMinTextFrameHeight() const;
+ long GetMaxTextFrameHeight() const;
+ virtual FASTBOOL IsAutoGrowWidth() const;
+ long GetMinTextFrameWidth() const;
+ long GetMaxTextFrameWidth() const;
+
+ SdrFitToSizeType GetFitToSize() const;
+ const Rectangle &GetGeoRect() const { return aRect; }
+
+ // Feststellen, ob TextFontwork
+ virtual FASTBOOL IsFontwork() const;
+
+ // Soll die Fontwork-Kontour versteckt werden?
+ FASTBOOL IsHideContour() const;
+
+ // Textfluss innerhalb Kontur
+ FASTBOOL IsContourTextFrame() const;
+
+ // Horizontale Textausrichtung
+ SdrTextHorzAdjust GetTextHorizontalAdjust(const SfxItemSet& rSet) const;
+ SdrTextHorzAdjust GetTextHorizontalAdjust() const;
+
+ // Vertikale Textausrichtung
+ SdrTextVertAdjust GetTextVerticalAdjust(const SfxItemSet& rSet) const;
+ SdrTextVertAdjust GetTextVerticalAdjust() const;
+
+ // Textrahmenabstaende
+ long GetTextLeftDistance() const;
+ long GetTextRightDistance() const;
+ long GetTextUpperDistance() const;
+ long GetTextLowerDistance() const;
+ SdrTextAniKind GetTextAniKind() const;
+ SdrTextAniDirection GetTextAniDirection() const;
+
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pNewModel);
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+
+ // Wird zur Bestimmung des Textankerbereichs benoetigt
+ virtual void TakeUnrotatedSnapRect(Rectangle& rRect) const;
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+ virtual void operator=(const SdrObject& rObj);
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual basegfx::B2DPolyPolygon TakeContour() const;
+ virtual void RecalcSnapRect();
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+ virtual const Rectangle& GetLogicRect() const;
+ virtual long GetRotateAngle() const;
+ virtual long GetShearAngle(FASTBOOL bVertical=FALSE) const;
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+ virtual Pointer GetCreatePointer() const;
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ virtual FASTBOOL HasTextEdit() const;
+ virtual sal_Bool BegTextEdit(SdrOutliner& rOutl);
+ virtual void TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const;
+ virtual void EndTextEdit(SdrOutliner& rOutl);
+ virtual USHORT GetOutlinerViewAnchorMode() const;
+
+ void StartTextAnimation(OutputDevice* pOutDev, const Point& rOffset, long nExtraData=0L);
+ void StopTextAnimation(OutputDevice* pOutDev=NULL, long nExtraData=0L);
+
+ virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
+ void NbcSetOutlinerParaObjectForText( OutlinerParaObject* pTextObject, SdrText* pText );
+ virtual OutlinerParaObject* GetOutlinerParaObject() const;
+ virtual OutlinerParaObject* GetEditOutlinerParaObject() const;
+ virtual bool HasOutlinerParaObject() const;
+
+ virtual void NbcReformatText();
+ virtual void ReformatText();
+
+ virtual FASTBOOL CalcFieldValue(const SvxFieldItem& rField, USHORT nPara, USHORT nPos,
+ FASTBOOL bEdit, Color*& rpTxtColor, Color*& rpFldColor, String& rRet) const;
+
+ virtual SdrObject* DoConvertToPolyObj(BOOL bBezier) const;
+
+ void SetTextEditOutliner(SdrOutliner* pOutl) { pEdtOutl=pOutl; }
+
+ /** Setup given Outliner equivalently to SdrTextObj::Paint()
+
+ To setup an arbitrary Outliner in the same way as the draw
+ outliner on SdrTextObj::Paint(). Among others, the paper size,
+ control word and character stretching are initialized, such
+ that the formatting should match the screen representation.
+ The textual content of the outliner is not touched, i.e. no
+ Init() or Clear() is called on the Outliner.
+
+ @param rOutl
+ The Outliner to setup.
+
+ @param rPaintRect
+ The region to paint the outliner content into. This is useful
+ to e.g. determine the top, left position of text in shapes.
+ */
+ void SetupOutlinerFormatting( SdrOutliner& rOutl, Rectangle& rPaintRect ) const;
+
+ /** Update given Outliner equivalently to SdrTextObj::Paint()
+
+ Same functionality as in SetupOutlinerFormatting(), except
+ that the outliner content is not cleared.
+
+ @param rOutl
+ The Outliner to update.
+
+ @param rPaintRect
+ The region to paint the outliner content into. This is useful
+ to e.g. determine the top, left position of text in shapes.
+ */
+ void UpdateOutlinerFormatting( SdrOutliner& rOutl, Rectangle& rPaintRect ) const;
+ void ForceOutlinerParaObject();
+ virtual sal_Bool IsVerticalWriting() const;
+ virtual void SetVerticalWriting(sal_Bool bVertical);
+
+ /** called from the SdrObjEditView during text edit when the status of the edit outliner changes */
+ virtual void onEditOutlinerStatusEvent( EditStatus* pEditStatus );
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // transformation interface for StarOfficeAPI. This implements support for
+ // homogen 3x3 matrices containing the transformation of the SdrObject. At the
+ // moment it contains a shearX, rotation and translation, but for setting all linear
+ // transforms like Scale, ShearX, ShearY, Rotate and Translate are supported.
+ //
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // gets base transformation and rectangle of object. If it's an SdrPathObj it fills the PolyPolygon
+ // with the base geometry and returns TRUE. Otherwise it returns FALSE.
+ virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
+
+ // sets the base geometry of the object using infos contained in the homogen 3x3 matrix.
+ // If it's an SdrPathObj it will use the provided geometry information. The Polygon has
+ // to use (0,0) as upper left and will be scaled to the given size in the matrix.
+ virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+ // #103836# iterates over the paragraphs of a given SdrObject and removes all
+ // hard set character attributes with the which ids contained in the
+ // given vector
+ virtual void RemoveOutlinerCharacterAttribs( const std::vector<sal_uInt16>& rCharWhichIds );
+
+ // #111096#
+ // Access to thext hidden flag
+ sal_Bool GetTextHidden() const;
+ void NbcSetTextHidden(sal_Bool bNew);
+
+ // #111096#
+ // Get necessary data for text scroll animation. ATM base it on a Text-Metafile and a
+ // painting rectangle. Rotation is taken from the object.
+ GDIMetaFile* GetTextScrollMetaFileAndRectangle(Rectangle& rScrollRectangle, Rectangle& rPaintRectangle);
+
+ // #111096#
+ // Access to TextAnimationAllowed flag
+ bool IsTextAnimationAllowed() const;
+ void SetTextAnimationAllowed(sal_Bool bNew);
+
+ // #i8824#
+ // Set single item at the local ItemSet. *Does not use* AllowItemChange(),
+ // ItemChange(), PostItemChange() and ItemSetChanged() calls.
+ void SetObjectItemNoBroadcast(const SfxPoolItem& rItem);
+
+public:
+ //////////////////////////////////////////////////////////////////////////////
+ // text primitive decomposition helpers
+ void impDecomposeContourTextPrimitive(
+ drawinglayer::primitive2d::Primitive2DSequence& rTarget,
+ const drawinglayer::primitive2d::SdrContourTextPrimitive2D& rSdrContourTextPrimitive,
+ const drawinglayer::geometry::ViewInformation2D& aViewInformation) const;
+ void impDecomposePathTextPrimitive(
+ drawinglayer::primitive2d::Primitive2DSequence& rTarget,
+ const drawinglayer::primitive2d::SdrPathTextPrimitive2D& rSdrPathTextPrimitive,
+ const drawinglayer::geometry::ViewInformation2D& aViewInformation) const;
+ void impDecomposeBlockTextPrimitive(
+ drawinglayer::primitive2d::Primitive2DSequence& rTarget,
+ const drawinglayer::primitive2d::SdrBlockTextPrimitive2D& rSdrBlockTextPrimitive,
+ const drawinglayer::geometry::ViewInformation2D& aViewInformation) const;
+ void impDecomposeStretchTextPrimitive(
+ drawinglayer::primitive2d::Primitive2DSequence& rTarget,
+ const drawinglayer::primitive2d::SdrStretchTextPrimitive2D& rSdrStretchTextPrimitive,
+ const drawinglayer::geometry::ViewInformation2D& aViewInformation) const;
+
+ //////////////////////////////////////////////////////////////////////////////
+ // timing generators
+ void impGetBlinkTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList) const;
+ void impGetScrollTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList, double fFrameLength, double fTextLength) const;
+
+ /** returns false if the given pointer is NULL
+ or if the given SdrOutliner contains no text.
+ Also checks for one empty paragraph.
+ */
+ static bool HasTextImpl( SdrOutliner* pOutliner );
+
+ /** returns a new created and non shared outliner.
+ The outliner will not get updated when the SdrModel is changed.
+ */
+ boost::shared_ptr< SdrOutliner > CreateDrawOutliner();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOTEXT_HXX
+
diff --git a/svx/inc/svx/svdouno.hxx b/svx/inc/svx/svdouno.hxx
new file mode 100644
index 000000000000..c30f22064674
--- /dev/null
+++ b/svx/inc/svx/svdouno.hxx
@@ -0,0 +1,163 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOUNO_HXX
+#define _SVDOUNO_HXX
+
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#ifndef _COM_SUN_STAR_AWT_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include "svx/svxdllapi.h"
+#include <svx/svdorect.hxx>
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SdrView;
+class SdrPageWindow;
+class SdrControlEventListenerImpl;
+
+namespace sdr { namespace contact {
+ class ViewContactOfUnoControl;
+}}
+
+//************************************************************
+// SdrUnoObj
+//************************************************************
+
+struct SdrUnoObjDataHolder;
+class SVX_DLLPUBLIC SdrUnoObj : public SdrRectObj
+{
+ friend class SdrPageView;
+ friend class SdrControlEventListenerImpl;
+
+ SdrUnoObjDataHolder* m_pImpl;
+
+ String aUnoControlModelTypeName;
+ String aUnoControlTypeName;
+ BOOL bOwnUnoControlModel;
+
+protected:
+ ::com::sun::star::uno::Reference< com::sun::star::awt::XControlModel > xUnoControlModel; // kann auch von aussen gesetzt werden
+
+private:
+ SVX_DLLPRIVATE void CreateUnoControlModel(const String& rModelName);
+ SVX_DLLPRIVATE void CreateUnoControlModel(const String& rModelName,
+ const ::com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac );
+
+public:
+ TYPEINFO();
+
+ SdrUnoObj(const String& rModelName, BOOL bOwnsModel = TRUE);
+ SdrUnoObj(const String& rModelName,
+ const ::com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac,
+ BOOL bOwnsModel = TRUE);
+ virtual ~SdrUnoObj();
+
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual void SetModel(SdrModel* pModel);
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT16 GetObjIdentifier() const;
+
+ virtual void operator = (const SdrObject& rObj);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcSetLayer(SdrLayerID nLayer);
+
+ // SpecialDrag support
+ virtual bool hasSpecialDrag() const;
+
+ // FullDrag support
+ virtual bool supportsFullDrag() const;
+ virtual SdrObject* getFullDragClone() const;
+
+ virtual void TakeObjNameSingul(XubString& rName) const;
+ virtual void TakeObjNamePlural(XubString& rName) const;
+
+ virtual void SetContextWritingMode( const sal_Int16 _nContextWritingMode );
+
+ ::com::sun::star::uno::Reference< com::sun::star::awt::XControlModel > GetUnoControlModel() const {return xUnoControlModel;}
+ ::com::sun::star::uno::Reference< com::sun::star::awt::XControl > GetUnoControl(const SdrView& _rView, const OutputDevice& _rOut) const;
+
+ /** retrieves a temporary XControl instance for a given output device
+
+ The method GetUnoControl, used to retrieve the XControl whose parent is a given device, only works
+ if the SdrUnoObj has already been painted at least once onto this device. However, there are valid
+ scenarios where you need certain information on how a control is painted onto a window, without
+ actually painting it. For example, you might be interested in the DeviceInfo of an UNO control.
+
+ For those cases, you can ontain an XControl which behaves as the control which *would* be used to
+ paint onto a window.
+
+ @param _rWindow
+ the window for which should act as parent for the temporary control
+ @param _inout_ControlContainer
+ the control container belonging to the window, necessary as context
+ for the newly created control. A control container is usually created by calling
+ VCLUnoHelper::CreateControlContainer.
+ If _inout_ControlContainer is <NULL/>, it will be created internally, and passed to the caller.
+ In this case, the caller also takes ownership of the control container, and is responsible for
+ disposing it when not needed anymore.
+ @return
+ The requested control. This control is temporary only, and the caller is responsible for it.
+ In particular, the caller is required to dispose it when it's not needed anymore.
+
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >
+ GetTemporaryControlForWindow(
+ const Window& _rWindow,
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _inout_ControlContainer
+ ) const;
+
+ const String& GetUnoControlModelTypeName() const { return aUnoControlTypeName; }
+ const String& GetUnoControlTypeName() const { return aUnoControlTypeName; }
+
+ virtual void SetUnoControlModel( const ::com::sun::star::uno::Reference< com::sun::star::awt::XControlModel >& xModel );
+
+protected:
+ // SdrObject overridables
+ virtual ::sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+private:
+ /** retrieves the typed ViewContact for the object
+ @param _out_rpContact
+ Upon successfull return, ->_out_rpContact contains the ViewContact.
+ @return
+ <TRUE/> if and only if the contact was successfully retrieved. In this case,
+ ->_out_rpContact contains a pointer to this contact.
+ A failure to retrieve the contact object fires an assertion in non-product builds.
+ */
+ SVX_DLLPRIVATE bool impl_getViewContact( ::sdr::contact::ViewContactOfUnoControl*& _out_rpContact ) const;
+};
+
+
+#endif // _SVDOUNO_HXX
+
diff --git a/svx/inc/svx/svdoutl.hxx b/svx/inc/svx/svdoutl.hxx
new file mode 100644
index 000000000000..cc7015197b23
--- /dev/null
+++ b/svx/inc/svx/svdoutl.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOUTL_HXX
+#define _SVDOUTL_HXX
+
+#include <editeng/outliner.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/svdobj.hxx>
+
+class SdrTextObj;
+class SdrPaintInfoRec;
+class SdrPage;
+
+class SVX_DLLPUBLIC SdrOutliner : public Outliner
+{
+protected:
+ SdrObjectWeakRef mpTextObj;
+ const SdrPage* mpVisualizedPage;
+
+public:
+ SdrOutliner( SfxItemPool* pItemPool, USHORT nMode );
+ virtual ~SdrOutliner() ;
+
+ void SetTextObj( const SdrTextObj* pObj );
+ void SetTextObjNoInit( const SdrTextObj* pObj );
+ const SdrTextObj* GetTextObj() const;
+
+ void setVisualizedPage(const SdrPage* pPage) { if(pPage != mpVisualizedPage) mpVisualizedPage = pPage; }
+ const SdrPage* getVisualizedPage() const { return mpVisualizedPage; }
+
+ virtual String CalcFieldValue(const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor);
+};
+
+#endif //_SVDOUTL_HXX
+
diff --git a/svx/inc/svx/svdovirt.hxx b/svx/inc/svx/svdovirt.hxx
new file mode 100644
index 000000000000..2c1f1ae0878c
--- /dev/null
+++ b/svx/inc/svx/svdovirt.hxx
@@ -0,0 +1,165 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDOVIRT_HXX
+#define _SVDOVIRT_HXX
+
+#include <svx/svdobj.hxx>
+#include "svx/svxdllapi.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// SdrVirtObj
+//
+// Achtung! Das virtuelle Objekt ist noch nicht bis in alle Feinheiten
+// durchprogrammiert und getestet. Z.Zt. kommt es nur in abgeleiteter
+// beim Writer zum Einsatz.
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrVirtObj : public SdrObject
+{
+public:
+ virtual sdr::properties::BaseProperties& GetProperties() const;
+
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
+ SdrObject& rRefObj; // Referenziertes Zeichenobjekt
+ Rectangle aSnapRect;
+
+protected:
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ virtual SdrObjGeoData* NewGeoData() const;
+ virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
+ virtual void RestGeoData(const SdrObjGeoData& rGeo);
+
+public:
+ TYPEINFO();
+ SdrVirtObj(SdrObject& rNewObj);
+ SdrVirtObj(SdrObject& rNewObj, const Point& rAnchorPos);
+ virtual ~SdrVirtObj();
+ virtual SdrObject& ReferencedObj();
+ virtual const SdrObject& GetReferencedObj() const;
+ virtual void NbcSetAnchorPos(const Point& rAnchorPos);
+ virtual void SetModel(SdrModel* pNewModel);
+
+ virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
+ virtual UINT32 GetObjInventor() const;
+ virtual UINT16 GetObjIdentifier() const;
+ virtual SdrObjList* GetSubList() const;
+
+ virtual const Rectangle& GetCurrentBoundRect() const;
+ virtual const Rectangle& GetLastBoundRect() const;
+ virtual void RecalcBoundRect();
+ virtual void SetChanged();
+ virtual SdrObject* Clone() const;
+ virtual void operator=(const SdrObject& rObj);
+
+ virtual void TakeObjNameSingul(String& rName) const;
+ virtual void TakeObjNamePlural(String& rName) const;
+
+ virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
+ virtual sal_uInt32 GetHdlCount() const;
+ virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const;
+ virtual sal_uInt32 GetPlusHdlCount(const SdrHdl& rHdl) const;
+ virtual SdrHdl* GetPlusHdl(const SdrHdl& rHdl, sal_uInt32 nPlNum) const;
+ virtual void AddToHdlList(SdrHdlList& rHdlList) const;
+
+ // special drag methods
+ virtual bool hasSpecialDrag() const;
+ virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
+ virtual bool applySpecialDrag(SdrDragStat& rDrag);
+ virtual String getSpecialDragComment(const SdrDragStat& rDrag) const;
+ virtual basegfx::B2DPolyPolygon getSpecialDragPoly(const SdrDragStat& rDrag) const;
+
+ // FullDrag support
+ virtual bool supportsFullDrag() const;
+ virtual SdrObject* getFullDragClone() const;
+
+ virtual FASTBOOL BegCreate(SdrDragStat& rStat);
+ virtual FASTBOOL MovCreate(SdrDragStat& rStat);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+ virtual FASTBOOL BckCreate(SdrDragStat& rStat);
+ virtual void BrkCreate(SdrDragStat& rStat);
+ virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
+
+ virtual void NbcMove(const Size& rSiz);
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void NbcRotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
+ virtual void NbcShear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ virtual void Move(const Size& rSiz);
+ virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+ virtual void Rotate(const Point& rRef, long nWink, double sn, double cs);
+ virtual void Mirror(const Point& rRef1, const Point& rRef2);
+ virtual void Shear(const Point& rRef, long nWink, double tn, FASTBOOL bVShear);
+
+ virtual void RecalcSnapRect();
+ virtual const Rectangle& GetSnapRect() const;
+ virtual void SetSnapRect(const Rectangle& rRect);
+ virtual void NbcSetSnapRect(const Rectangle& rRect);
+
+ virtual const Rectangle& GetLogicRect() const;
+ virtual void SetLogicRect(const Rectangle& rRect);
+ virtual void NbcSetLogicRect(const Rectangle& rRect);
+
+ virtual long GetRotateAngle() const;
+ virtual long GetShearAngle(FASTBOOL bVertical=FALSE) const;
+
+ virtual sal_uInt32 GetSnapPointCount() const;
+ virtual Point GetSnapPoint(sal_uInt32 i) const;
+
+ virtual sal_Bool IsPolyObj() const;
+ virtual sal_uInt32 GetPointCount() const;
+ virtual Point GetPoint(sal_uInt32 i) const;
+ virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 i);
+
+ virtual SdrObjGeoData* GetGeoData() const;
+ virtual void SetGeoData(const SdrObjGeoData& rGeo);
+
+ virtual void NbcReformatText();
+ virtual void ReformatText();
+
+ virtual FASTBOOL HasMacro() const;
+ virtual SdrObject* CheckMacroHit (const SdrObjMacroHitRec& rRec) const;
+ virtual Pointer GetMacroPointer (const SdrObjMacroHitRec& rRec) const;
+ virtual void PaintMacro (OutputDevice& rOut, const Rectangle& rDirtyRect, const SdrObjMacroHitRec& rRec) const;
+ virtual FASTBOOL DoMacro (const SdrObjMacroHitRec& rRec);
+ virtual XubString GetMacroPopupComment(const SdrObjMacroHitRec& rRec) const;
+
+ // OD 30.06.2003 #108784# - virtual <GetOffset()> returns Point(0,0)
+ // #i73248# for default SdrVirtObj, offset is aAnchor, not (0,0)
+ virtual const Point GetOffset() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDOVIRT_HXX
+
diff --git a/svx/inc/svx/svdpage.hxx b/svx/inc/svx/svdpage.hxx
new file mode 100644
index 000000000000..c601fddef181
--- /dev/null
+++ b/svx/inc/svx/svdpage.hxx
@@ -0,0 +1,617 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDPAGE_HXX
+#define _SVDPAGE_HXX
+
+#include <vcl/bitmap.hxx>
+#include <vcl/print.hxx>
+#include <vcl/gdimtf.hxx>
+#include <tools/weakbase.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <svx/svdtypes.hxx>
+#include <svx/svdlayer.hxx>
+#include <svx/sdrcomment.hxx>
+#include <vector>
+#include <svx/sdrpageuser.hxx>
+#include <svx/sdr/contact/viewobjectcontactredirector.hxx>
+#include <svx/sdrmasterpagedescriptor.hxx>
+#include "svx/svxdllapi.h"
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <svx/svdobj.hxx>
+#include <boost/scoped_ptr.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace sdr { namespace contact { class ViewContact; }}
+class SdrPage;
+class SdrModel;
+class SfxItemPool;
+class SdrPageView;
+class SdrLayerAdmin;
+class SetOfByte;
+class Color;
+class SfxStyleSheet;
+class SvxUnoDrawPagesAccess;
+
+enum SdrInsertReasonKind {SDRREASON_UNKNOWN, // unbekannt
+ SDRREASON_STREAMING, // einlesen eines Doks
+ SDRREASON_UNDO, // kommt aus dem Undo
+ SDRREASON_COPY, // irgendjemand kopiert...
+ SDRREASON_VIEWCREATE, // vom Anwender interaktiv erzeugt
+ SDRREASON_VIEWCALL}; // Durch SdrView::Group(), ...
+
+class SdrInsertReason {
+ const SdrObject* pRefObj;
+ SdrInsertReasonKind eReason;
+public:
+ SdrInsertReason(): pRefObj(NULL),eReason(SDRREASON_UNKNOWN) {}
+ SdrInsertReason(SdrInsertReasonKind eR,const SdrObject* pO=NULL): pRefObj(pO),eReason(eR) {}
+ void SetReferenceObject(const SdrObject* pO) { pRefObj=pO; }
+ const SdrObject* GetReferenceObject() const { return pRefObj; }
+ void SetReason(SdrInsertReasonKind eR) { eReason=eR; }
+ SdrInsertReasonKind GetReason() const { return eReason; }
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// class SdrObjList
+
+class SVX_DLLPUBLIC SdrObjList
+{
+private:
+ typedef ::std::vector<SdrObject*> SdrObjectContainerType;
+ SdrObjectContainerType maList;
+
+protected:
+friend class SdrObjListIter;
+friend class SdrEditView;
+ SdrObjList* pUpList; // Vaterliste
+ SdrModel* pModel; // Diese Liste gehoert zu diesem Model (Layer,ItemPool,Storage).
+ SdrPage* pPage; // Page, in die Liste haengt. Kann auch this sein.
+ SdrObject* pOwnerObj; // OwnerObject, falls Liste eines GruppenObjekts.
+ Rectangle aOutRect;
+ Rectangle aSnapRect;
+ SdrObjListKind eListKind;
+ FASTBOOL bObjOrdNumsDirty;
+ FASTBOOL bRectsDirty;
+protected:
+ virtual void RecalcRects();
+
+private:
+ /// simple ActionChildInserted forwarder to have it on a central place
+ void impChildInserted(SdrObject& rChild) const;
+public:
+ TYPEINFO();
+ SdrObjList(SdrModel* pNewModel, SdrPage* pNewPage, SdrObjList* pNewUpList=NULL);
+ SdrObjList(const SdrObjList& rSrcList);
+ virtual ~SdrObjList();
+ // !!! Diese Methode nur fuer Leute, die ganz genau wissen was sie tun !!!
+
+ // #110094# This should not be needed (!)
+ void SetObjOrdNumsDirty() { bObjOrdNumsDirty=TRUE; }
+ // pModel, pPage, pUpList und pOwnerObj werden Zuweisungeoperator nicht veraendert!
+ void operator=(const SdrObjList& rSrcList);
+ void CopyObjects(const SdrObjList& rSrcList);
+ // alles Aufraeumen (ohne Undo)
+ void Clear();
+ SdrObjListKind GetListKind() const { return eListKind; }
+ void SetListKind(SdrObjListKind eNewKind) { eListKind=eNewKind; }
+ SdrObjList* GetUpList() const { return pUpList; }
+ void SetUpList(SdrObjList* pNewUpList) { pUpList=pNewUpList; }
+ SdrObject* GetOwnerObj() const { return pOwnerObj; }
+ void SetOwnerObj(SdrObject* pNewOwner) { pOwnerObj=pNewOwner; }
+ virtual SdrPage* GetPage() const;
+ virtual void SetPage(SdrPage* pNewPage);
+ virtual SdrModel* GetModel() const;
+ virtual void SetModel(SdrModel* pNewModel);
+ // Neuberechnung der Objekt-Ordnungsnummern
+ void RecalcObjOrdNums();
+ FASTBOOL IsObjOrdNumsDirty() const { return bObjOrdNumsDirty; }
+ virtual void NbcInsertObject(SdrObject* pObj, ULONG nPos=CONTAINER_APPEND
+ , const SdrInsertReason* pReason=NULL
+ );
+ virtual void InsertObject(SdrObject* pObj, ULONG nPos=CONTAINER_APPEND
+ , const SdrInsertReason* pReason=NULL
+ );
+ // aus Liste entfernen ohne delete
+ virtual SdrObject* NbcRemoveObject(ULONG nObjNum);
+ virtual SdrObject* RemoveObject(ULONG nObjNum);
+ // Vorhandenes Objekt durch ein anderes ersetzen.
+ // Wie Remove&Insert jedoch performanter, da die Ordnungsnummern
+ // nicht Dirty gesetzt werden muessen.
+ virtual SdrObject* NbcReplaceObject(SdrObject* pNewObj, ULONG nObjNum);
+ virtual SdrObject* ReplaceObject(SdrObject* pNewObj, ULONG nObjNum);
+ // Die Z-Order eines Objekts veraendern
+ virtual SdrObject* NbcSetObjectOrdNum(ULONG nOldObjNum, ULONG nNewObjNum);
+ virtual SdrObject* SetObjectOrdNum(ULONG nOldObjNum, ULONG nNewObjNum);
+
+ virtual void SetRectsDirty();
+
+ const Rectangle& GetAllObjSnapRect() const;
+ const Rectangle& GetAllObjBoundRect() const;
+
+ // Alle Textobjekte neu formatieren, z.B. bei Druckerwechsel
+ void NbcReformatAllTextObjects();
+ void ReformatAllTextObjects();
+
+ /** #103122# reformats all edge objects that are connected to other objects */
+ void ReformatAllEdgeObjects();
+
+ // Die Vorlagenattribute der Zeichenobjekte in harte Attribute verwandeln.
+ void BurnInStyleSheetAttributes();
+
+ ULONG GetObjCount() const;
+ SdrObject* GetObj(ULONG nNum) const;
+
+ // Gelinkte Seite oder gelinktes Gruppenobjekt
+ virtual FASTBOOL IsReadOnly() const;
+
+ // Zaehlt alle Objekte inkl. Objekte in Objektgruppen, ...
+ ULONG CountAllObjects() const;
+
+ // Alle aufgelagerten Teile (z.B. Grafiken) der Liste in den
+ // Speicher laden.
+ void ForceSwapInObjects() const;
+ void ForceSwapOutObjects() const;
+
+ void SwapInAll() const { ForceSwapInObjects(); }
+ void SwapOutAll() const { ForceSwapOutObjects(); }
+
+ /** Makes the object list flat, i.e. the object list content are
+ then tree leaves
+
+ This method travels recursively over all group objects in this
+ list, extracts the content, inserts it flat to the list and
+ removes the group object afterwards.
+ */
+ virtual void FlattenGroups();
+ /** Ungroup the object at the given index
+
+ This method ungroups the content of the group object at the
+ given index, i.e. the content is put flat into the object list
+ (if the object at the given index is no group, this method is
+ a no-op). If the group itself contains group objects, the
+ operation is performed recursively, such that the content of
+ the given object contains no groups afterwards.
+ */
+ virtual void UnGroupObj( ULONG nObjNum );
+
+ /** Return whether there is an explicit, user defined, object navigation
+ order. When there is one this method returns <TRUE/> and the
+ GetObjectForNavigationPosition() and
+ SdrObject::GetNavigationPosition() methods will return values
+ different from those returne by SdrObject::GetOrdNum() and
+ GetObj().
+ */
+ bool HasObjectNavigationOrder (void) const;
+
+ /** Set the navigation position of the given object to the specified
+ value. Note that this changes the navigation position for all
+ objects on or following the old or new position.
+ */
+ void SetObjectNavigationPosition (
+ SdrObject& rObject,
+ const sal_uInt32 nNewNavigationPosition);
+
+ /** Return the object for the given navigation position. When there is
+ a user defined navigation order, i.e. mpNavigationOrder is not NULL,
+ then that is used to look up the object. Otherwise the z-order is
+ used by looking up the object in maList.
+ @param nNavigationPosition
+ Valid values include 0 and are smaller than the number of
+ objects as returned by GetObjCount().
+ @return
+ The returned pointer is NULL for invalid positions.
+ */
+ SdrObject* GetObjectForNavigationPosition (const sal_uInt32 nNavigationPosition) const;
+
+ /** Restore the navigation order to that defined by the z-order.
+ */
+ void ClearObjectNavigationOrder (void);
+
+ /** Set the navigation position of all SdrObjects to their position in
+ the mpNavigationOrder list. This method returns immediately when no
+ update is necessary.
+ @return
+ This method returns <TRUE/> when the navigation positions stored
+ in SdrObjects are up to date.
+ It returns <FALSE/> when teh navigation positions are not valid,
+ for example because no explicit navigation order has been
+ defined, i.e. HasObjectNavigationOrder() would return <FALSE/>.
+ */
+ bool RecalcNavigationPositions (void);
+
+ /** Set the navigation order to the one defined by the given list of
+ XShape objects.
+ @param rxOrder
+ When this is an empty reference then the navigation order is
+ reset to the z-order. The preferred way to do this, however, is
+ to call ClearObjectNavigationOrder().
+ Otherwise this list is expected to contain all the shapes in the
+ called SdrObjList.
+ */
+ void SetNavigationOrder (const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XIndexAccess>& rxOrder);
+
+private:
+ class WeakSdrObjectContainerType;
+ /// This list, if it exists, defines the navigation order. It it does
+ /// not exist then maList defines the navigation order.
+ ::boost::scoped_ptr<WeakSdrObjectContainerType> mpNavigationOrder;
+
+ /// This flag is <TRUE/> when the mpNavigation list has been changed but
+ /// the indices of the referenced SdrObjects still have their old values.
+ bool mbIsNavigationOrderDirty;
+
+ /** Insert an SdrObject into maList. Do not modify the maList member
+ directly.
+ @param rObject
+ The object to insert into the object list.
+ @param nInsertPosition
+ The given object is inserted before the object at this
+ position. Valid values include 0 (the object is inserted at the
+ head of the list) and the number of objects in the list as
+ returned by GetObjCount() (the object is inserted at the end of
+ the list.)
+ */
+ void InsertObjectIntoContainer (
+ SdrObject& rObject,
+ const sal_uInt32 nInsertPosition);
+
+ /** Replace an object in the object list.
+ @param rObject
+ The new object that replaces the one in the list at the
+ specified position.
+ @param nObjectPosition
+ The object at this position in the object list is replaced by
+ the given object. Valid values include 0 and are smaller than
+ the number of objects in the list.
+ */
+ void ReplaceObjectInContainer (
+ SdrObject& rObject,
+ const sal_uInt32 nObjectPosition);
+
+ /** Remove an object from the object list.
+ The object list has to contain at least one element.
+ @param nObjectPosition
+ The object at this position is removed from the object list.
+ Valid values include 0 and are smaller than the number of
+ objects in the list.
+ */
+ void RemoveObjectFromContainer (
+ const sal_uInt32 nObjectPosition);
+};
+
+/*
+Eine Sdraw-Seite enthaelt genau eine Objektliste sowie eine Beschreibung
+der physikalischen Seitendimensionen (Groesse/Raender). Letzteres wird
+lediglich zum Fangen von Objekten beim Draggen benoetigt.
+An der Seite lassen sich (ueber SdrObjList) Objekte einfuegen und loeschen,
+nach vorn und nach hinten stellen. Ausserdem kann die Ordnungszahl eines
+Objektes abgefragt sowie direkt gesetzt werden.
+*/
+
+// Used for all methods which return a page number
+#define SDRPAGE_NOTFOUND 0xFFFF
+
+//////////////////////////////////////////////////////////////////////////////
+// class SdrPageGridFrame
+
+// Fuer das Fangraster/Punkgitter im Writer
+class SdrPageGridFrame
+{
+ Rectangle aPaper;
+ Rectangle aUserArea;
+public:
+ SdrPageGridFrame(const Rectangle& rPaper): aPaper(rPaper), aUserArea(rPaper) {}
+ SdrPageGridFrame(const Rectangle& rPaper, const Rectangle& rUser): aPaper(rPaper), aUserArea(rUser) {}
+ void SetPaperRect(const Rectangle& rPaper) { aPaper=rPaper; }
+ void SetUserArea(const Rectangle& rUser) { aUserArea=rUser; }
+ const Rectangle& GetPaperRect() const { return aPaper; }
+ const Rectangle& GetUserArea() const { return aUserArea; }
+};
+
+class SVX_DLLPUBLIC SdrPageGridFrameList {
+ Container aList;
+private:
+ SVX_DLLPRIVATE SdrPageGridFrameList(const SdrPageGridFrameList& rSrcList); // never implemented
+ SVX_DLLPRIVATE void operator=(const SdrPageGridFrameList& rSrcList); // never implemented
+protected:
+ SdrPageGridFrame* GetObject(USHORT i) const { return (SdrPageGridFrame*)(aList.GetObject(i)); }
+public:
+ SdrPageGridFrameList(): aList(1024,4,4) {}
+ ~SdrPageGridFrameList() { Clear(); }
+ void Clear();
+ USHORT GetCount() const { return USHORT(aList.Count()); }
+ void Insert(const SdrPageGridFrame& rGF, USHORT nPos=0xFFFF) { aList.Insert(new SdrPageGridFrame(rGF),nPos); }
+ void Delete(USHORT nPos) { delete (SdrPageGridFrame*)aList.Remove(nPos); }
+ void Move(USHORT nPos, USHORT nNewPos) { aList.Insert(aList.Remove(nPos),nNewPos); }
+ SdrPageGridFrame& operator[](USHORT nPos) { return *GetObject(nPos); }
+ const SdrPageGridFrame& operator[](USHORT nPos) const { return *GetObject(nPos); }
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// class SdrPageProperties
+
+class SVX_DLLPUBLIC SdrPageProperties : public SfxListener
+{
+private:
+ // data
+ SdrPage* mpSdrPage;
+ SfxStyleSheet* mpStyleSheet;
+ SfxItemSet* mpProperties;
+
+ // internal helpers
+ void ImpRemoveStyleSheet();
+ void ImpAddStyleSheet(SfxStyleSheet& rNewStyleSheet);
+
+ // not implemented
+ SdrPageProperties& operator=(const SdrPageProperties& rCandidate);
+
+public:
+ // construct/destruct
+ SdrPageProperties(SdrPage& rSdrPage);
+ virtual ~SdrPageProperties();
+
+ // Notify(...) from baseclass SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ // data read/write
+ const SfxItemSet& GetItemSet() const;
+ void PutItemSet(const SfxItemSet& rSet);
+ void PutItem(const SfxPoolItem& rItem);
+ void ClearItem(const sal_uInt16 nWhich = 0);
+
+ // StyleSheet access
+ void SetStyleSheet(SfxStyleSheet* pStyleSheet);
+ SfxStyleSheet* GetStyleSheet() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// class SdrPage
+
+class SVX_DLLPUBLIC SdrPage : public SdrObjList, public tools::WeakBase< SdrPage >
+{
+ ///////////////////////////////////////////////////////////////////////////////
+ // start PageUser section
+private:
+ // #111111# PageUser section
+ sdr::PageUserVector maPageUsers;
+
+public:
+ void AddPageUser(sdr::PageUser& rNewUser);
+ void RemovePageUser(sdr::PageUser& rOldUser);
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // end PageUser section
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // #110094# DrawContact section
+private:
+ sdr::contact::ViewContact* mpViewContact;
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+public:
+ sdr::contact::ViewContact& GetViewContact() const;
+
+ // #110094# DrawContact support: Methods for handling Page changes
+ void ActionChanged() const;
+
+ // #i9076#
+ friend class SdrModel;
+ friend class SvxUnoDrawPagesAccess;
+
+// this class uses its own UNO wrapper
+// and thus has to set mxUnoPage
+friend class ChXChartDocument;
+
+ INT32 nWdt; // Seitengroesse
+ INT32 nHgt; // Seitengroesse
+ INT32 nBordLft; // Seitenrand links
+ INT32 nBordUpp; // Seitenrand oben
+ INT32 nBordRgt; // Seitenrand rechts
+ INT32 nBordLwr; // Seitenrand unten
+
+ // this is a weak reference to a possible living api wrapper for this page
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxUnoPage;
+
+protected:
+ SdrLayerAdmin* pLayerAdmin;
+private:
+ SdrPageProperties* mpSdrPageProperties;
+
+public:
+ SdrPageProperties& getSdrPageProperties() { return *mpSdrPageProperties; }
+ const SdrPageProperties& getSdrPageProperties() const { return *mpSdrPageProperties; }
+
+protected:
+ // new MasterPageDescriptorVector
+ ::sdr::MasterPageDescriptor* mpMasterPageDescriptor;
+
+ SetOfByte aPrefVisiLayers;
+ USHORT nPageNum;
+
+ // bitfield
+ unsigned mbMaster : 1; // flag if this is a MasterPage
+ unsigned mbInserted : 1;
+ unsigned mbObjectsNotPersistent : 1;
+ unsigned mbSwappingLocked : 1;
+
+ // #i93597#
+ unsigned mbPageBorderOnlyLeftRight : 1;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > createUnoPage();
+
+public:
+ TYPEINFO();
+ SdrPage(SdrModel& rNewModel, bool bMasterPage=false);
+ // Copy-Ctor und Zuweisungeoperator sind nicht getestet!
+ SdrPage(const SdrPage& rSrcPage);
+ virtual ~SdrPage();
+ // pModel, pPage, pUpList, pOwnerObj und mbInserted werden Zuweisungeoperator nicht veraendert!
+ virtual void operator=(const SdrPage& rSrcPage);
+ virtual SdrPage* Clone() const;
+ virtual SdrPage* Clone(SdrModel* pNewModel) const;
+ bool IsMasterPage() const { return mbMaster; }
+ void SetInserted(bool bNew = true);
+ FASTBOOL IsInserted() const { return mbInserted; }
+ virtual void SetChanged();
+
+ // #i68775# React on PageNum changes (from Model in most cases)
+ void SetPageNum(sal_uInt16 nNew);
+ sal_uInt16 GetPageNum() const;
+
+ // #i93597# Allow page border definition to not be the full rectangle but to
+ // use only the left and right vertical edges (reportdesigner)
+ void setPageBorderOnlyLeftRight(bool bNew) { mbPageBorderOnlyLeftRight = bNew; }
+ bool getPageBorderOnlyLeftRight() const { return mbPageBorderOnlyLeftRight; }
+
+ virtual void SetSize(const Size& aSiz);
+ virtual Size GetSize() const;
+ virtual void SetOrientation(Orientation eOri);
+ virtual Orientation GetOrientation() const;
+ virtual INT32 GetWdt() const;
+ virtual INT32 GetHgt() const;
+ virtual void SetBorder(INT32 nLft, INT32 nUpp, INT32 nRgt, INT32 Lwr);
+ virtual void SetLftBorder(INT32 nBorder);
+ virtual void SetUppBorder(INT32 nBorder);
+ virtual void SetRgtBorder(INT32 nBorder);
+ virtual void SetLwrBorder(INT32 nBorder);
+ virtual INT32 GetLftBorder() const;
+ virtual INT32 GetUppBorder() const;
+ virtual INT32 GetRgtBorder() const;
+ virtual INT32 GetLwrBorder() const;
+
+ virtual void SetModel(SdrModel* pNewModel);
+
+ // New MasterPage interface
+ sal_Bool TRG_HasMasterPage() const { return (0L != mpMasterPageDescriptor); }
+ void TRG_SetMasterPage(SdrPage& rNew);
+ void TRG_ClearMasterPage();
+ SdrPage& TRG_GetMasterPage() const;
+ const SetOfByte& TRG_GetMasterPageVisibleLayers() const;
+ void TRG_SetMasterPageVisibleLayers(const SetOfByte& rNew);
+ sdr::contact::ViewContact& TRG_GetMasterPageDescriptorViewContact() const;
+
+//#if 0 // _SOLAR__PRIVATE
+protected:
+ void TRG_ImpMasterPageRemoved(const SdrPage& rRemovedPage);
+//#endif // __PRIVATE
+public:
+
+ // Aenderungen an den Layern setzen nicht das Modified-Flag !
+ const SdrLayerAdmin& GetLayerAdmin() const { return *pLayerAdmin; }
+ SdrLayerAdmin& GetLayerAdmin() { return *pLayerAdmin; }
+
+ // GetBitmap und GetMetafile sind noch nicht implementiert.
+ // Bitmap in Bildschirmaufloesung und -farbtiefe aus den Objekten der
+ // Page erzeugen.
+ Bitmap GetBitmap(FASTBOOL bTrimBorders=TRUE) const { return GetBitmap(aPrefVisiLayers,bTrimBorders); }
+ Bitmap GetBitmap(const SetOfByte& rVisibleLayers, FASTBOOL bTrimBorders=TRUE) const;
+ // Metafile aus den Objekten der Page erzeugen
+ GDIMetaFile GetMetaFile(FASTBOOL bTrimBorders=TRUE) { return GetMetaFile(aPrefVisiLayers,bTrimBorders); }
+ GDIMetaFile GetMetaFile(const SetOfByte& rVisibleLayers, FASTBOOL bTrimBorders=TRUE);
+
+ virtual String GetLayoutName() const;
+
+ // fuer's Raster im Writer, auch fuer AlignObjects wenn 1 Objekt markiert ist
+ // wenn pRect!=NULL, dann die Seiten, die von diesem Rect intersected werden
+ // ansonsten die sichtbaren Seiten.
+ virtual const SdrPageGridFrameList* GetGridFrameList(const SdrPageView* pPV, const Rectangle* pRect) const;
+ bool IsObjectsNotPersistent() const { return mbObjectsNotPersistent; }
+ void SetObjectsNotPersistent(bool b) { mbObjectsNotPersistent = b; }
+ // Durch Setzen dieses Flags, kann das Auslagern (Swappen) von
+ // Teilen der Page (z.B. Grafiken) unterbunden werden.
+ // Es werden hierdurch jedoch nicht automatisch alle ausgelagerten
+ // Teile nachgeladen, dies geschieht erst bei konkretem Bedarf oder
+ // durch Aufruf von SwapInAll().
+ // Fuer die MasterPage(s) der Page muss dies ggf. separat gemacht werden.
+ bool IsSwappingLocked() const { return mbSwappingLocked; }
+ void SetSwappingLocked(bool bLock) { mbSwappingLocked = bLock; }
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getUnoPage();
+
+ virtual SfxStyleSheet* GetTextStyleSheetForObject( SdrObject* pObj ) const;
+
+ FASTBOOL HasTransparentObjects( BOOL bCheckForAlphaChannel = FALSE ) const;
+
+ /** *deprecated* returns an averaged background color of this page */
+ // #i75566# GetBackgroundColor -> GetPageBackgroundColor
+ Color GetPageBackgroundColor() const;
+
+ /** *deprecated* returns an averaged background color of this page */
+ // #i75566# GetBackgroundColor -> GetPageBackgroundColor and bScreenDisplay hint value
+ Color GetPageBackgroundColor( SdrPageView* pView, bool bScreenDisplay = true) const;
+
+ /** this method returns true if the object from the ViewObjectContact should
+ be visible on this page while rendering.
+ bEdit selects if visibility test is for an editing view or a final render,
+ like printing.
+ */
+ virtual bool checkVisibility(
+ const sdr::contact::ViewObjectContact& rOriginal,
+ const sdr::contact::DisplayInfo& rDisplayInfo,
+ bool bEdit );
+
+ /** Check if page is the HandoutMasterPage (in SVX, no PK_HANDOUT available) */
+ bool isHandoutMasterPage() const;
+
+ //////////////////////////////////////////////////////////////////////////////
+ // sdr::Comment interface
+private:
+ sdr::CommentVector maComments;
+
+public:
+ sal_uInt32 GetCommentCount() const { return maComments.size(); }
+ const sdr::Comment& GetCommentByIndex(sal_uInt32 nIndex);
+ void AddComment(const sdr::Comment& rNew);
+ void ReplaceCommentByIndex(sal_uInt32 nIndex, const sdr::Comment& rNew);
+};
+
+typedef tools::WeakReference< SdrPage > SdrPageWeakRef;
+
+//////////////////////////////////////////////////////////////////////////////
+// use new redirector instead of pPaintProc
+
+class SVX_DLLPUBLIC StandardCheckVisisbilityRedirector : public ::sdr::contact::ViewObjectContactRedirector
+{
+public:
+ StandardCheckVisisbilityRedirector();
+ virtual ~StandardCheckVisisbilityRedirector();
+
+ // all default implementations just call the same methods at the original. To do something
+ // different, overload the method and at least do what the method does.
+ virtual drawinglayer::primitive2d::Primitive2DSequence createRedirectedPrimitive2DSequence(
+ const sdr::contact::ViewObjectContact& rOriginal,
+ const sdr::contact::DisplayInfo& rDisplayInfo);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDPAGE_HXX
+
diff --git a/svx/inc/svx/svdpagv.hxx b/svx/inc/svx/svdpagv.hxx
new file mode 100644
index 000000000000..4ad30c2958f3
--- /dev/null
+++ b/svx/inc/svx/svdpagv.hxx
@@ -0,0 +1,294 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDPAGV_HXX
+#define _SVDPAGV_HXX
+
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <svl/lstner.hxx>
+#include <svx/svdhlpln.hxx>
+#include <cppuhelper/implbase4.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtypes.hxx>
+#include "svx/svxdllapi.h"
+
+#include <cppuhelper/implbase3.hxx>
+#include <vector>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class Region;
+class SdrObjList;
+class SdrObject;
+class SdrPage;
+class SdrUnoObj;
+class SdrPaintWindow;
+class SdrView;
+class SdrPageObj;
+class B2dIAOManager;
+class SdrPageView;
+
+// #110094#
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContactRedirector;
+ class DisplayInfo;
+ class ViewObjectContactRedirector;
+ } // end of namespace contact
+} // end of namespace sdr
+
+// typedefs for a list of SdrPageWindow
+class SdrPageWindow;
+typedef ::std::vector< SdrPageWindow* > SdrPageWindowVector;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrPageView : public SfxListener
+{
+protected:
+ SdrView& mrView;
+ SdrPage* mpPage;
+ Point aPgOrg; // Nullpunkt der Page
+
+ Rectangle aMarkBound; // wird
+ Rectangle aMarkSnap; // von
+ sal_Bool mbHasMarked;
+ sal_Bool mbVisible;
+
+ SetOfByte aLayerVisi; // Menge der sichtbaren Layer
+ SetOfByte aLayerLock; // Menge der nicht editierbaren Layer
+ SetOfByte aLayerPrn; // Menge der druckbaren Layer
+
+ SdrObjList* pAktList; // Aktuelle Liste, in der Regel die Page.
+ SdrObject* pAktGroup; // Aktuelle Gruppe. NULL=Keine.
+
+ SdrHelpLineList aHelpLines; // Hilfslinien und -punkte
+
+ // #103911# Use one reserved slot (bReserveBool2) for the document color
+ Color maDocumentColor;
+
+ // #103834# Use one reserved slot (bReserveBool1) for the background color
+ Color maBackgroundColor;
+
+ SdrPageWindowVector maPageWindows;
+
+ // #i72752# member to remember with which SdrPageWindow the BeginDrawLayer
+ // was done
+ SdrPageWindow* mpPreparedPageWindow;
+
+ // interface to SdrPageWindow
+protected:
+ void ClearPageWindows();
+ void AppendPageWindow(SdrPageWindow& rNew);
+ SdrPageWindow* RemovePageWindow(sal_uInt32 nPos);
+ SdrPageWindow* RemovePageWindow(SdrPageWindow& rOld);
+public:
+ sal_uInt32 PageWindowCount() const { return maPageWindows.size(); }
+ SdrPageWindow* FindPageWindow( SdrPaintWindow& rPaintWindow ) const;
+ SdrPageWindow* FindPageWindow( const OutputDevice& rOutDev ) const;
+ SdrPageWindow* GetPageWindow(sal_uInt32 nIndex) const;
+
+ /** finds the page window whose PaintWindow belongs to the given output device
+
+ In opposite to FindPageWindow, this method also cares possibly patched PaintWindow instances.
+ That is, a SdrPageWindow might have an original, and a patched SdrPaintWindow instance - if
+ this is the case, then the original SdrPaintWindow is examined before the patched one.
+ */
+ const SdrPageWindow* FindPatchedPageWindow( const OutputDevice& rOutDev ) const;
+
+ void PaintOutlinerView(OutputDevice* pOut, const Rectangle& rRect) const;
+private:
+ SVX_DLLPRIVATE SdrPageWindow& CreateNewPageWindowEntry(SdrPaintWindow& rPaintWindow);
+
+protected:
+ void ImpInvalidateHelpLineArea(USHORT nNum) const;
+
+protected:
+ void SetLayer(const String& rName, SetOfByte& rBS, sal_Bool bJa);
+ sal_Bool IsLayer(const String& rName, const SetOfByte& rBS) const;
+ void SetAllLayers(SetOfByte& rB, sal_Bool bJa);
+
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ // Nachsehen, ob AktGroup noch Inserted ist.
+ void CheckAktGroup();
+
+ void AdjHdl();
+
+public:
+ TYPEINFO();
+ SdrPageView(SdrPage* pPage1, SdrView& rNewView);
+ ~SdrPageView();
+
+ // Wird von der PaintView gerufen, wenn Modelaenderungen abgeschlossen sind
+ void ModelHasChanged();
+
+ void Show();
+ void Hide();
+
+ void AddPaintWindowToPageView(SdrPaintWindow& rPaintWindow);
+ void RemovePaintWindowFromPageView(SdrPaintWindow& rPaintWindow);
+
+ SdrView& GetView() { return mrView; }
+ const SdrView& GetView() const { return mrView; }
+
+ /** looks up the control container belonging to given output device
+
+ @return
+ If the given output device belongs to one of the SdrPageViewWinRecs associated with this
+ SdrPageView instance, the XControlContainer for this output device is returned, <NULL/>
+ otherwise.
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >
+ GetControlContainer( const OutputDevice& _rDevice ) const;
+
+ /** sets all elements in the view which support a design and a alive mode into the given mode
+ */
+ void SetDesignMode( bool _bDesignMode ) const;
+
+ sal_Bool IsVisible() const { return mbVisible; }
+
+ // Invalidiert den gesamten Bereich der Page
+ void InvalidateAllWin();
+
+ // rRect bezieht sich auf die Page
+ void InvalidateAllWin(const Rectangle& rRect, sal_Bool bPlus1Pix=FALSE);
+
+ // PrePaint call forwarded from app windows
+ void PrePaint();
+
+ // rReg bezieht sich auf's OutDev, nicht auf die Page
+ void CompleteRedraw(SdrPaintWindow& rPaintWindow, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L) const;
+
+ // write access to mpPreparedPageWindow
+ void setPreparedPageWindow(SdrPageWindow* pKnownTarget);
+
+ void DrawLayer(SdrLayerID nID, OutputDevice* pGivenTarget = 0, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L) const;
+ void DrawPageViewGrid(OutputDevice& rOut, const Rectangle& rRect, Color aColor = Color( COL_BLACK ) );
+
+ Rectangle GetPageRect() const;
+ SdrPage* GetPage() const { return mpPage; }
+
+ // Betretene Liste rausreichen
+ SdrObjList* GetObjList() const { return pAktList; }
+
+ // Betretene Gruppe rausreichen
+ SdrObject* GetAktGroup() const { return pAktGroup; }
+
+ // Betretene Gruppe und Liste setzen
+ void SetAktGroupAndList(SdrObject* pNewGroup, SdrObjList* pNewList);
+
+ sal_Bool HasMarkedObjPageView() const { return mbHasMarked; }
+ void SetHasMarkedObj(sal_Bool bOn) { mbHasMarked = bOn; }
+
+ const Rectangle& MarkBound() const { return aMarkBound; }
+ const Rectangle& MarkSnap() const { return aMarkSnap; }
+ Rectangle& MarkBound() { return aMarkBound; }
+ Rectangle& MarkSnap() { return aMarkSnap; }
+
+ void SetLayerVisible(const String& rName, sal_Bool bShow = sal_True) { SetLayer(rName, aLayerVisi, bShow); if(!bShow) AdjHdl(); InvalidateAllWin(); }
+ sal_Bool IsLayerVisible(const String& rName) const { return IsLayer(rName, aLayerVisi); }
+ void SetAllLayersVisible(sal_Bool bShow = sal_True) { SetAllLayers(aLayerVisi, bShow); if(!bShow) AdjHdl(); InvalidateAllWin(); }
+
+ void SetLayerLocked(const String& rName, sal_Bool bLock = sal_True) { SetLayer(rName, aLayerLock, bLock); if(bLock) AdjHdl(); }
+ sal_Bool IsLayerLocked(const String& rName) const { return IsLayer(rName,aLayerLock); }
+ void SetAllLayersLocked(sal_Bool bLock = sal_True) { SetAllLayers(aLayerLock, bLock); if(bLock) AdjHdl(); }
+
+ void SetLayerPrintable(const String& rName, sal_Bool bPrn = sal_True) { SetLayer(rName, aLayerPrn, bPrn); }
+ sal_Bool IsLayerPrintable(const String& rName) const { return IsLayer(rName, aLayerPrn); }
+ void SetAllLayersPrintable(sal_Bool bPrn = sal_True) { SetAllLayers(aLayerPrn, bPrn); }
+
+ // PV stellt eine RefPage oder eine SubList eines RefObj dar oder Model ist ReadOnly
+ sal_Bool IsReadOnly() const;
+
+ // der Origin bezieht sich immer auf die obere linke Ecke der Page
+ const Point& GetPageOrigin() const { return aPgOrg; }
+ void SetPageOrigin(const Point& rOrg);
+
+ void LogicToPagePos(Point& rPnt) const { rPnt-=aPgOrg; }
+ void LogicToPagePos(Rectangle& rRect) const { rRect.Move(-aPgOrg.X(),-aPgOrg.Y()); }
+ void PagePosToLogic(Point& rPnt) const { rPnt+=aPgOrg; }
+ void PagePosToLogic(Rectangle& rRect) const { rRect.Move(aPgOrg.X(),aPgOrg.Y()); }
+
+ void SetVisibleLayers(const SetOfByte& rSet) { aLayerVisi=rSet; InvalidateAllWin(); }
+ const SetOfByte& GetVisibleLayers() const { return aLayerVisi; }
+ void SetPrintableLayers(const SetOfByte& rSet) { aLayerPrn=rSet; }
+ const SetOfByte& GetPrintableLayers() const { return aLayerPrn; }
+ void SetLockedLayers(const SetOfByte& rSet) { aLayerLock=rSet; }
+ const SetOfByte& GetLockedLayers() const { return aLayerLock; }
+
+ const SdrHelpLineList& GetHelpLines() const { return aHelpLines; }
+ void SetHelpLines(const SdrHelpLineList& rHLL);
+ //void SetHelpLinePos(USHORT nNum, const Point& rNewPos);
+ void SetHelpLine(USHORT nNum, const SdrHelpLine& rNewHelpLine);
+ void DeleteHelpLine(USHORT nNum);
+ void InsertHelpLine(const SdrHelpLine& rHL, USHORT nNum=0xFFFF);
+ void MoveHelpLine(USHORT nNum, USHORT nNewNum) { aHelpLines.Move(nNum,nNewNum); }
+
+ // Liefert TRUE, wenn Layer des Obj sichtbar und nicht gesperrt.
+ // Beim Gruppenobjekt muss wenigstens ein Member sichtbar sein,
+ // gesperrt sein darf keiner.
+ sal_Bool IsObjMarkable(SdrObject* pObj) const;
+
+ // Betreten (Editieren) einer Objektgruppe. Anschliessend liegen alle
+ // Memberobjekte der Gruppe im direkten Zugriff. Alle anderen Objekte
+ // koennen waerendessen nicht bearbeitet werden (bis zum naechsten
+ // LeaveGroup()). (wie MsDos chdir bla).
+ sal_Bool EnterGroup(SdrObject* pObj);
+
+ // Verlassen einer betretenen Objektgruppe. (wie MsDos chdir ..)
+ void LeaveOneGroup();
+
+ // Verlassen aller betretenen Objektgruppen. (wie MsDos chdir \)
+ void LeaveAllGroup();
+
+ // Feststellen, wie weit hinabgestiegen wurde (0=Root(Page))
+ USHORT GetEnteredLevel() const;
+
+ // Name der aktuellen Objektgruppe
+ String GetActualGroupName() const;
+
+ // Die Namen aller z.Zt. betretenen Gruppen
+ String GetActualPathName(sal_Unicode cSep = sal_Unicode('|')) const;
+
+ // #103834# Set background color for svx at SdrPageViews
+ void SetApplicationBackgroundColor(Color aBackgroundColor);
+
+ // #109585#
+ Color GetApplicationBackgroundColor() const;
+
+ // #103911# Set/Get document color for svx at SdrPageViews
+ void SetApplicationDocumentColor(Color aDocumentColor);
+ Color GetApplicationDocumentColor() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDPAGV_HXX
diff --git a/svx/inc/svx/svdpntv.hxx b/svx/inc/svx/svdpntv.hxx
new file mode 100644
index 000000000000..bd6c7ea554cc
--- /dev/null
+++ b/svx/inc/svx/svdpntv.hxx
@@ -0,0 +1,577 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDPNTV_HXX
+#define _SVDPNTV_HXX
+
+#include <svl/brdcst.hxx>
+#include <svl/lstner.hxx>
+#include <svl/smplhint.hxx>
+#include <svl/undo.hxx>
+#include <svx/svddrag.hxx>
+#include <svx/svdlayer.hxx> // fuer SetOfByte
+#include <vcl/window.hxx>
+#include <svtools/colorcfg.hxx>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <svl/itemset.hxx>
+#include <vcl/timer.hxx>
+#include "svx/svxdllapi.h"
+#include <svtools/optionsdrawinglayer.hxx>
+#include <unotools/options.hxx>
+
+//************************************************************
+// Pre-Defines
+//************************************************************
+
+class SdrPageWindow;
+
+namespace com { namespace sun { namespace star { namespace awt {
+ class XControlContainer;
+}}}}
+
+class SdrPage;
+class SdrView;
+class SfxItemSet;
+class SfxStyleSheet;
+class SdrOle2Obj;
+class SdrModel;
+class SdrObject;
+class SdrViewUserMarker;
+class B2dIAOManager;
+
+#ifdef DBG_UTIL
+class SdrItemBrowser;
+#endif
+
+namespace sdr { namespace contact {
+ class ViewObjectContactRedirector;
+}}
+
+//************************************************************
+// Defines for AnimationMode
+//************************************************************
+
+enum SdrAnimationMode
+{
+ SDR_ANIMATION_ANIMATE,
+ SDR_ANIMATION_DONT_ANIMATE,
+ SDR_ANIMATION_DISABLE
+};
+
+//************************************************************
+// Typedef's und defines
+//************************************************************
+
+typedef unsigned char TRISTATE;
+#define FUZZY (2)
+#define SDR_ANYFORMAT (0xFFFFFFFF)
+#define SDR_ANYITEM (0xFFFF)
+#define SDRVIEWWIN_NOTFOUND (0xFFFF)
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+class SdrPaintView;
+
+namespace sdr
+{
+ namespace contact
+ {
+ class ViewObjectContactRedirector;
+ } // end of namespace contact
+} // end of namespace sdr
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+class SVX_DLLPUBLIC SvxViewHint : public SfxHint
+{
+public:
+ enum HintType { SVX_HINT_VIEWCHANGED };
+ TYPEINFO();
+ SvxViewHint (HintType eType);
+ HintType GetHintType (void) const;
+
+private:
+ HintType meHintType;
+};
+
+// typedefs for a list of SdrPaintWindows
+class SdrPaintWindow;
+typedef ::std::vector< SdrPaintWindow* > SdrPaintWindowVector;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrPaintView : public SfxListener, public SfxRepeatTarget, public SfxBroadcaster, public ::utl::ConfigurationListener
+{
+ friend class SdrPageView;
+ friend class FrameAnimator;
+ friend class SdrGrafObj;
+
+protected:
+ // #114409#-2 Migrate Encirclement
+ class ImplEncirclementOverlay* mpEncirclementOverlay;
+
+ SdrModel* pMod;
+#ifdef DBG_UTIL
+ SdrItemBrowser* pItemBrowser;
+#endif
+ const OutputDevice* pActualOutDev; // Nur zum vergleichen
+ OutputDevice* pDragWin;
+ SfxStyleSheet* pDefaultStyleSheet;
+
+ String aAktLayer; // Aktueller Zeichenlayer
+ String aMeasureLayer; // Aktueller Layer fuer Bemassung
+
+// Container aPagV; // Liste von SdrPageViews
+ SdrPageView* mpPageView;
+
+ // All windows this view is displayed on
+ SdrPaintWindowVector maPaintWindows;
+
+ MapMode aActualMapMode;
+ Size aGridBig; // muss dann mal raus
+ Size aGridFin; // muss dann mal raus
+ SdrDragStat aDragStat;
+ Rectangle aMaxWorkArea;
+ SfxItemSet aDefaultAttr;
+ Timer aComeBackTimer;
+
+ SdrAnimationMode eAnimationMode;
+
+ USHORT nHitTolPix;
+ USHORT nMinMovPix;
+ USHORT nHitTolLog;
+ USHORT nMinMovLog;
+ ULONG nMasterCacheMode;
+ ULONG nGraphicManagerDrawMode;
+
+ // hold an incarnation of Drawinglayer configuration options
+ SvtOptionsDrawinglayer maDrawinglayerOpt;
+
+ unsigned bPageVisible : 1;
+ unsigned bPageBorderVisible : 1;
+ unsigned bBordVisible : 1;
+ unsigned bGridVisible : 1;
+ unsigned bGridFront : 1;
+ unsigned bHlplVisible : 1;
+ unsigned bHlplFront : 1;
+ unsigned bGlueVisible : 1; // Persistent. Klebepunkte anzeigen
+ unsigned bGlueVisible2 : 1; // Klebepunkte auch bei GluePointEdit anzeigen
+ unsigned bGlueVisible3 : 1; // Klebepunkte auch bei EdgeTool anzeigen
+ unsigned bGlueVisible4 : 1; // Klebepunkte anzeigen, wenn 1 Edge markiert
+ unsigned bRestoreColors : 1; // Pens und Brushes werden zurueckgesetzt.
+ unsigned bSomeObjChgdFlag : 1;
+ unsigned bSwapAsynchron : 1;
+ unsigned bPrintPreview : 1;
+
+ // BOOL fuer die Verwaltung des anzuzeigenden Status
+ // Gruppe Betreten/Verlassen. Default ist TRUE, wird aber
+ // beispielsweise beim Chart auf FALSE gesetzt, da dort
+ // die Ghosted-Effekte zur Darstellug unerwuenscht sind.
+ unsigned bVisualizeEnteredGroup : 1;
+ unsigned bAnimationPause : 1;
+
+ // #114898#
+ // Flag which decides if buffered output for this view is allowed. When
+ // set, PreRendering for PageView rendering will be used. Default is sal_False
+ unsigned mbBufferedOutputAllowed : 1;
+
+ // #114898#
+ // Flag which decides if buffered overlay for this view is allowed. When
+ // set, the output will be buffered in an overlay vdev. When not, overlay is
+ // directly painted to OutDev. Default is sal_False.
+ unsigned mbBufferedOverlayAllowed : 1;
+
+ // allow page painting at all?
+ unsigned mbPagePaintingAllowed : 1;
+
+ // is this a preview renderer?
+ unsigned mbPreviewRenderer : 1;
+
+ // flags for calc and sw for suppressing OLE, CHART or DRAW objects
+ unsigned mbHideOle : 1;
+ unsigned mbHideChart : 1;
+ unsigned mbHideDraw : 1; // hide draw objects other than form controls
+ unsigned mbHideFormControl : 1; // hide form controls only
+
+public:
+ // #114898#
+ // interface for PagePaintingAllowed flag
+ bool IsBufferedOutputAllowed() const;
+ void SetBufferedOutputAllowed(bool bNew);
+
+ // interface for BufferedOverlayAllowed flag
+ bool IsBufferedOverlayAllowed() const;
+ void SetBufferedOverlayAllowed(bool bNew);
+
+ // allow page painting at all?
+ sal_Bool IsPagePaintingAllowed() const;
+ void SetPagePaintingAllowed(bool bNew);
+
+protected:
+ svtools::ColorConfig maColorConfig;
+ Color maGridColor;
+
+ // interface to SdrPaintWindow
+protected:
+ void AppendPaintWindow(SdrPaintWindow& rNew);
+ SdrPaintWindow* RemovePaintWindow(SdrPaintWindow& rOld);
+ void ConfigurationChanged( ::utl::ConfigurationBroadcaster*, sal_uInt32 );
+
+public:
+ sal_uInt32 PaintWindowCount() const { return maPaintWindows.size(); }
+ SdrPaintWindow* FindPaintWindow(const OutputDevice& rOut) const;
+ SdrPaintWindow* GetPaintWindow(sal_uInt32 nIndex) const;
+ // replacement for GetWin(0), may return 0L (!)
+ OutputDevice* GetFirstOutputDevice() const;
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+ DECL_LINK(ImpComeBackHdl,Timer*);
+
+protected:
+ USHORT ImpGetMinMovLogic(short nMinMov, const OutputDevice* pOut) const;
+ USHORT ImpGetHitTolLogic(short nHitTol, const OutputDevice* pOut) const;
+
+ // Wenn man den IdleStatus des Systems nicht abwarten will (auf const geschummelt):
+ void FlushComeBackTimer() const;
+ void TheresNewMapMode();
+ void ImpSetGlueVisible2(bool bOn) { if (bGlueVisible2!=(unsigned)bOn) { bGlueVisible2=bOn; if (!bGlueVisible && !bGlueVisible3 && !bGlueVisible4) GlueInvalidate(); } }
+ void ImpSetGlueVisible3(bool bOn) { if (bGlueVisible3!=(unsigned)bOn) { bGlueVisible3=bOn; if (!bGlueVisible && !bGlueVisible2 && !bGlueVisible4) GlueInvalidate(); } }
+ void ImpSetGlueVisible4(bool bOn) { if (bGlueVisible4!=(unsigned)bOn) { bGlueVisible4=bOn; if (!bGlueVisible && !bGlueVisible2 && !bGlueVisible3) GlueInvalidate(); } }
+ BOOL ImpIsGlueVisible2() const { return bGlueVisible2; }
+ BOOL ImpIsGlueVisible3() const { return bGlueVisible3; }
+ BOOL ImpIsGlueVisible4() const { return bGlueVisible4; }
+
+public:
+ BOOL ImpIsGlueVisible() { return bGlueVisible || bGlueVisible2 || bGlueVisible3 || bGlueVisible4; }
+protected:
+
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ void GlueInvalidate() const;
+
+ void ShowEncirclement(OutputDevice* pOut);
+ void HideEncirclement(OutputDevice* pOut);
+ void DrawEncirclement(OutputDevice* pOut) const;
+
+ // ModelHasChanged wird gerufen, sobald nach beliebig vielen HINT_OBJCHG
+ // das System wieder idle ist (StarView-Timer). Wer diese Methode ueberlaed,
+ // muss unbedingt ModelHasChanged() der Basisklasse rufen.
+ virtual void ModelHasChanged();
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrPaintView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrPaintView();
+
+public:
+ TYPEINFO();
+
+ virtual void ClearPageView();
+// virtual void ClearAll();
+// virtual void Clear(); // PageViews loeschen, Markierungen weg, ...
+ SdrModel* GetModel() const { return pMod; }
+
+ virtual BOOL IsAction() const;
+ virtual void MovAction(const Point& rPnt);
+ virtual void EndAction();
+ virtual void BckAction();
+ virtual void BrkAction(); // Alle Actions z.B. Draggen abbrechen.
+ virtual void TakeActionRect(Rectangle& rRect) const;
+
+ // info about TextEdit. Default is sal_False.
+ virtual bool IsTextEdit() const;
+
+ // info about TextEditPageView. Default is 0L.
+ virtual SdrPageView* GetTextEditPageView() const;
+
+ // Muss dann bei jedem Fensterwechsel (wenn die SdrView in mehreren
+ // Fenstern gleichzeitig dargestellt wird (->z.B. Splitter)) und bei
+ // jedem MapMode(Scaling)-wechsel gerufen werden, damit ich aus meinen
+ // Pixelwerten logische Werte berechnen kann.
+ void SetActualWin(const OutputDevice* pWin);
+ void SetMinMoveDistancePixel(USHORT nVal) { nMinMovPix=nVal; TheresNewMapMode(); }
+ USHORT GetMinMoveDistancePixel() const { return (USHORT)nMinMovPix; }
+ void SetHitTolerancePixel(USHORT nVal) { nHitTolPix=nVal; TheresNewMapMode(); }
+ USHORT GetHitTolerancePixel() const { return (USHORT)nHitTolPix; }
+
+ // data read access on logic HitTolerance and MinMoveTolerance
+ USHORT getHitTolLog() const { return nHitTolLog; }
+ USHORT getMinMovLog() const { return nMinMovLog; }
+
+ // Flag zur Visualisierung von Gruppen abfragen/testen
+ BOOL DoVisualizeEnteredGroup() const { return bVisualizeEnteredGroup; }
+ void SetVisualizeEnteredGroup(BOOL bNew) { bVisualizeEnteredGroup = bNew; }
+
+ // Am DragStatus laesst sich beispielsweise erfragen, welche
+ // entfernung bereits gedraggd wurde, etc.
+ const SdrDragStat& GetDragStat() const { return aDragStat; }
+
+ // Anmelden/Abmelden einer PageView an der View.
+ // Dieselbe // Seite kann nicht mehrfach angemeldet werden.
+ // Methoden mit dem Suffix PgNum erwarten als numerischen Parameter
+ // eine Seitennummer (0...). Methoden mit dem Suffix PvNum erwarten
+ // degagen als numerischen Parameter die Nummer der PageView an der
+ // SdrView (Iterieren ueber alle angemeldeten Pages).
+ virtual SdrPageView* ShowSdrPage(SdrPage* pPage);
+ virtual void HideSdrPage();
+
+ // Iterieren ueber alle angemeldeten PageViews
+// USHORT GetPageViewCount() const { return USHORT(aPagV.Count()); }
+// SdrPageView* GetPageViewByIndex(USHORT nPvNum) const { return ((SdrPageView*)aPagV.GetObject(nPvNum)); }
+ SdrPageView* GetSdrPageView() const { return mpPageView; }
+
+ // Pageview einer bestimmten Seite ermitteln
+// SdrPageView* GetPageViewByPage(const SdrPage* pPage) const;
+// sal_uInt16 GetIndexByPageView(const SdrPageView* pPV) const;
+
+ // Test, ob eine Seite getroffen
+// SdrPageView* HitPage(const Point& rPnt) const;
+
+ // Die Seite, die dem Punkt am naechsten ist. Liefert nur NULL,
+ // wenn absolut keine Seite angemeldet ist.
+// SdrPageView* GetPageViewByPosition(const Point& rPnt) const;
+
+ // Eine SdrView kann auf mehreren Fenstern gleichzeitig abgebiltet sein:
+ virtual void AddWindowToPaintView(OutputDevice* pNewWin);
+ virtual void DeleteWindowFromPaintView(OutputDevice* pOldWin);
+
+ void SetLayerVisible(const String& rName, BOOL bShow=TRUE);
+ bool IsLayerVisible(const String& rName) const;
+ void SetAllLayersVisible(BOOL bShow=TRUE);
+
+ void SetLayerLocked(const String& rName, BOOL bLock=TRUE);
+ bool IsLayerLocked(const String& rName) const;
+ void SetAllLayersLocked(BOOL bLock=TRUE);
+
+ void SetLayerPrintable(const String& rName, BOOL bPrn=TRUE);
+ bool IsLayerPrintable(const String& rName) const;
+ void SetAllLayersPrintable(BOOL bPrn=TRUE);
+
+ // PrePaint call forwarded from app windows
+ void PrePaint();
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // used internally for Draw/Impress/sch/chart2
+ virtual void CompleteRedraw(OutputDevice* pOut, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0);
+
+ // #i72889# used from CompleteRedraw() implementation internally, added to be able to do a complete redraw in single steps
+ //
+ // BeginCompleteRedraw returns (or even creates) a SdrPaintWindow whcih shall then be used as
+ // target for paints. Since paints may be buffered, use it's GetTargetOutputDevice() method which will
+ // return the buffer in case of bufered.
+ // DoCompleteRedraw draws the DrawingLayer hierarchy then.
+ // EndCompleteRedraw does the necessary refreshes, evtl. paints text edit and overlay and evtl destroys the
+ // SdrPaintWindow again. This means: the SdrPaintWindow is no longer safe after this closing call.
+ virtual SdrPaintWindow* BeginCompleteRedraw(OutputDevice* pOut);
+ virtual void DoCompleteRedraw(SdrPaintWindow& rPaintWindow, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0);
+ virtual void EndCompleteRedraw(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer);
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // used for the other applications basctl/sc/sw which call DrawLayer at PageViews
+ // #i74769# Interface change to use common BeginCompleteRedraw/EndCompleteRedraw
+ // #i76114# bDisableIntersect disables intersecting rReg with the Window's paint region
+ SdrPaintWindow* BeginDrawLayers(OutputDevice* pOut, const Region& rReg, bool bDisableIntersect = false);
+ void EndDrawLayers(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer);
+
+protected:
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // used to call the old PaintOutlinerView at the single PageViews. Will be replaced when the
+ // outliner will be displayed on the overlay in edit mode.
+ void ImpTextEditDrawing(SdrPaintWindow& rPaintWindow) const;
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////
+ // used to paint the form layer after the PreRender device is flushed (painted) to the window.
+ void ImpFormLayerDrawing(SdrPaintWindow& rPaintWindow) const;
+
+public:
+ BOOL IsPageVisible() const { return bPageVisible; } // Seite (weisse Flaeche) malen oder nicht
+ BOOL IsPageBorderVisible() const { return bPageBorderVisible; } // Seite (weisse Flaeche) malen oder nicht
+ BOOL IsBordVisible() const { return bBordVisible; } // Seitenrandlinie malen oder nicht
+ BOOL IsGridVisible() const { return bGridVisible; } // Rastergitter malen oder nicht
+ BOOL IsGridFront() const { return bGridFront ; } // Rastergitter ueber die Objekte druebermalen oder dahinter
+ BOOL IsHlplVisible() const { return bHlplVisible; } // Hilfslinien der Seiten malen oder nicht
+ BOOL IsHlplFront() const { return bHlplFront ; } // Hilfslinie ueber die Objekte druebermalen oder dahinter
+ BOOL IsGlueVisible() const { return bGlueVisible; } // Konnektoren der objekte sichtbar oder nicht
+ Color GetGridColor() const;
+ void SetPageVisible(bool bOn = true) { bPageVisible=bOn; InvalidateAllWin(); }
+ void SetPageBorderVisible(bool bOn = true) { bPageBorderVisible=bOn; InvalidateAllWin(); }
+ void SetBordVisible(bool bOn = true) { bBordVisible=bOn; InvalidateAllWin(); }
+ void SetGridVisible(bool bOn = true) { bGridVisible=bOn; InvalidateAllWin(); }
+ void SetGridFront(bool bOn = true) { bGridFront =bOn; InvalidateAllWin(); }
+ void SetHlplVisible(bool bOn = true) { bHlplVisible=bOn; InvalidateAllWin(); }
+ void SetHlplFront(bool bOn = true) { bHlplFront =bOn; InvalidateAllWin(); }
+ void SetGlueVisible(bool bOn = true) { if (bGlueVisible!=(unsigned)bOn) { bGlueVisible=bOn; if (!bGlueVisible2 && !bGlueVisible3 && !bGlueVisible4) GlueInvalidate(); } }
+ void SetGridColor( Color aColor );
+
+ sal_Bool IsPreviewRenderer() const { return (sal_Bool )mbPreviewRenderer; }
+ void SetPreviewRenderer(bool bOn) { if((unsigned)bOn != mbPreviewRenderer) { mbPreviewRenderer=bOn; }}
+
+ // access methods for calc and sw hide object modes
+ bool getHideOle() const { return mbHideOle; }
+ bool getHideChart() const { return mbHideChart; }
+ bool getHideDraw() const { return mbHideDraw; }
+ bool getHideFormControl() const { return mbHideFormControl; }
+ void setHideOle(bool bNew) { if(bNew != (bool)mbHideOle) mbHideOle = bNew; }
+ void setHideChart(bool bNew) { if(bNew != (bool)mbHideChart) mbHideChart = bNew; }
+ void setHideDraw(bool bNew) { if(bNew != (bool)mbHideDraw) mbHideDraw = bNew; }
+ void setHideFormControl(bool bNew) { if(bNew != (bool)mbHideFormControl) mbHideFormControl = bNew; }
+
+ void SetGridCoarse(const Size& rSiz) { aGridBig=rSiz; }
+ void SetGridFine(const Size& rSiz) { aGridFin=rSiz; if (aGridFin.Height()==0) aGridFin.Height()=aGridFin.Width(); if (bGridVisible) InvalidateAllWin(); } // #40479#
+ const Size& GetGridCoarse() const { return aGridBig; }
+ const Size& GetGridFine() const { return aGridFin; }
+
+ void InvalidateAllWin();
+ void InvalidateAllWin(const Rectangle& rRect, BOOL bPlus1Pix=FALSE);
+
+ // Wenn die View kein Invalidate() an den Fenstern durchfuehren soll, muss
+ // man diese beiden folgenden Methoden ueberladen und entsprechend anders
+ // reagieren.
+ virtual void InvalidateOneWin(Window& rWin);
+ virtual void InvalidateOneWin(Window& rWin, const Rectangle& rRect);
+
+ void SetActiveLayer(const String& rName) { aAktLayer=rName; }
+ const String& GetActiveLayer() const { return aAktLayer; }
+
+ // Verlassen einer betretenen Objektgruppe aller sichtbaren Seiten.
+ // (wie MsDos chdir ..)
+ void LeaveOneGroup();
+
+ // Verlassen aller betretenen Objektgruppen aller sichtbaren Seiten.
+ // (wie MsDos chdir \)
+ void LeaveAllGroup();
+
+ // Feststellen, ob Leave sinnvoll ist.
+ bool IsGroupEntered() const;
+
+ // DefaultAttribute an der View: Neu erzeugte Objekte bekommen diese
+ // Attribute direkt nach dem Erzeugen erstmal zugewiesen.
+ void SetDefaultAttr(const SfxItemSet& rAttr, BOOL bReplaceAll);
+ const SfxItemSet& GetDefaultAttr() const { return aDefaultAttr; }
+ void SetDefaultStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+ SfxStyleSheet* GetDefaultStyleSheet() const { return pDefaultStyleSheet; }
+
+ void SetNotPersistDefaultAttr(const SfxItemSet& rAttr, BOOL bReplaceAll);
+ void MergeNotPersistDefaultAttr(SfxItemSet& rAttr, BOOL bOnlyHardAttr) const;
+
+ // Aufziehen eines animierten Rechtecks fuer Applikationsspeziefische
+ // Verwendung. Alle Positionsangaben in logischen View-Koordinaten.
+ // pOut bezeichnet das OutputDevice, in das animierte Rechteck dargestellt
+ // werden soll. Wird NULL uebergeben, wird es in allen an der View
+ // angemeldeten OutputDevices gleichzeitig dargestellt.
+ void BegEncirclement(const Point& rPnt);
+ void MovEncirclement(const Point& rPnt);
+ Rectangle EndEncirclement(sal_Bool bNoJustify = sal_False);
+ void BrkEncirclement();
+ sal_Bool IsEncirclement() const { return (0L != mpEncirclementOverlay); }
+
+ // use this mode as mode to draw all internal GraphicManager objects with
+ ULONG GetGraphicManagerDrawMode() const { return nGraphicManagerDrawMode; }
+ void SetGraphicManagerDrawMode( ULONG nMode ) { nGraphicManagerDrawMode = nMode; }
+
+ // SwapIn (z.B. von Grafiken) asynchron durchfuehren. Also nicht
+ // beim Paint sofort nachladen, sondern dort das Nachladen anstossen.
+ // Nach Abschluss des Nachladens wird das Objekt dann angezeigt.
+ // Hat nur z.Zt. Wirkung, wenn SwapGraphics am Model eingeschaltet ist.
+ // Default=FALSE. Flag ist nicht persistent.
+ BOOL IsSwapAsynchron() const { return bSwapAsynchron; }
+ void SetSwapAsynchron(BOOL bJa=TRUE) { bSwapAsynchron=bJa; }
+ virtual BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
+
+ virtual BOOL MouseButtonDown(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return FALSE; }
+ virtual BOOL MouseButtonUp(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return FALSE; }
+ virtual BOOL MouseMove(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return FALSE; }
+ virtual BOOL Command(const CommandEvent& /*rCEvt*/, Window* /*pWin*/) { return FALSE; }
+ BOOL Cut(ULONG /*nFormat*/=SDR_ANYFORMAT) { return FALSE; }
+ BOOL Yank(ULONG /*nFormat*/=SDR_ANYFORMAT) { return FALSE; }
+ BOOL Paste(Window* /*pWin*/=NULL, ULONG /*nFormat*/=SDR_ANYFORMAT) { return FALSE; }
+
+ /* new interface src537 */
+ BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
+
+ BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
+ SfxStyleSheet* GetStyleSheet() const; // SfxStyleSheet* GetStyleSheet(BOOL& rOk) const;
+ BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+
+ virtual void MakeVisible(const Rectangle& rRect, Window& rWin);
+
+ // Fuer PlugIn. Wird vom Paint des OLE-Obj gerufen.
+ virtual void DoConnect(SdrOle2Obj* pOleObj);
+
+ // Animation aktivieren/deaktivieren fuer ::Paint
+ // wird z.Zt. ausgewertet von SdrGrafObj, wenn in dem eine Animation steckt
+ // Das Unterbinden der automatischen Animation wird z.B. fuer die Dia-Show benoetigt
+ BOOL IsAnimationEnabled() const { return ( SDR_ANIMATION_ANIMATE == eAnimationMode ); }
+ void SetAnimationEnabled( BOOL bEnable=TRUE );
+
+ // set/unset pause state for animations
+ bool IsAnimationPause() const { return bAnimationPause; }
+ void SetAnimationPause( bool bSet );
+
+ // Verhalten beim Starten von Animation im Paint-Handler:
+ // 1. Animation normal starten( SDR_ANIMATION_ANIMATE ) => DEFAULT
+ // 2. Nur die Ersatzdarstellung der Animation zeichnen ( SDR_ANIMATION_DONT_ANIMATE )
+ // 3. Nicht starten und nichts ersatzweise ausgeben ( SDR_ANIMATION_DISABLE )
+ void SetAnimationMode( const SdrAnimationMode eMode );
+ SdrAnimationMode GetAnimationMode() const { return eAnimationMode; }
+
+ // bei bShow=FALSE wird der Browser destruiert
+#ifdef DBG_UTIL
+ void ShowItemBrowser(BOOL bShow=TRUE);
+ BOOL IsItemBrowserVisible() const { return pItemBrowser!=NULL && ((Window*)pItemBrowser)->IsVisible(); }
+ Window* GetItemBrowser() const { return (Window*)pItemBrowser; }
+#endif
+
+ // Muss von App beim Scrollen usw. gerufen werden, damit ein u.U.
+ // aktives FormularControl mitverschoben werden kann
+ void VisAreaChanged(const OutputDevice* pOut=NULL);
+ void VisAreaChanged(const SdrPageWindow& rWindow);
+
+ BOOL IsPrintPreview() const { return bPrintPreview; }
+ void SetPrintPreview(bool bOn = true) { bPrintPreview=bOn; }
+
+ const svtools::ColorConfig& getColorConfig() const;
+
+ virtual void onChangeColorConfig();
+
+ // #103834# Set background color for svx at SdrPageViews
+ void SetApplicationBackgroundColor(Color aBackgroundColor);
+
+ // #103911# Set document color for svx at SdrPageViews
+ void SetApplicationDocumentColor(Color aDocumentColor);
+
+ // #i38135#
+ // Sets the timer for Object animations and restarts.
+ void SetAnimationTimer(sal_uInt32 nTime);
+
+ // access to Drawinglayer configuration options
+ const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; }
+};
+
+#endif //_SVDPNTV_HXX
+
diff --git a/svx/inc/svx/svdpoev.hxx b/svx/inc/svx/svdpoev.hxx
new file mode 100644
index 000000000000..c6628c28a790
--- /dev/null
+++ b/svx/inc/svx/svdpoev.hxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDPOEV_HXX
+#define _SVDPOEV_HXX
+
+#include "svx/svxdllapi.h"
+#include <svx/svdedtv.hxx>
+
+#include "svx/ipolypolygoneditorcontroller.hxx"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@@@ @@ @@ @@ @@@@@ @@@@@ @@ @@@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@@@@ @@ @@ @@ @@@@ @@@@ @@ @@ @@ @@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@ @@@@ @@@@@ @@ @@@@@ @@@@@ @@ @@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrPolyEditView: public SdrEditView, public IPolyPolygonEditorController
+{
+ friend class SdrEditView;
+
+protected:
+ BOOL bSetMarkedPointsSmoothPossible : 1;
+ BOOL bSetMarkedSegmentsKindPossible : 1;
+
+ SdrPathSmoothKind eMarkedPointsSmooth;
+ SdrPathSegmentKind eMarkedSegmentsKind;
+
+private:
+ SVX_DLLPRIVATE void ImpClearVars();
+ SVX_DLLPRIVATE void ImpResetPolyPossibilityFlags();
+ SVX_DLLPRIVATE void ImpCheckPolyPossibilities();
+
+ // Markierte Punkte kopieren und anstelle der alten markieren
+ // ist noch nicht implementiert!
+ SVX_DLLPRIVATE void ImpCopyMarkedPoints();
+ typedef void (*PPolyTrFunc)(Point&, Point*, Point*, const void*, const void*, const void*, const void*, const void*);
+ SVX_DLLPRIVATE void ImpTransformMarkedPoints(PPolyTrFunc pTrFunc, const void* p1=NULL, const void* p2=NULL, const void* p3=NULL, const void* p4=NULL, const void* p5=NULL);
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrPolyEditView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrPolyEditView();
+
+public:
+ BOOL IsSetMarkedPointsSmoothPossible() const;
+ SdrPathSmoothKind GetMarkedPointsSmooth() const;
+ void SetMarkedPointsSmooth(SdrPathSmoothKind eKind);
+
+ // Ein PolySegment kann eine Strecke oder eine Bezierkurve sein.
+ BOOL IsSetMarkedSegmentsKindPossible() const;
+ SdrPathSegmentKind GetMarkedSegmentsKind() const;
+ void SetMarkedSegmentsKind(SdrPathSegmentKind eKind);
+
+ // Moeglicherweise ist das Obj hinterher geloescht:
+ void DeleteMarkedPoints();
+ BOOL IsDeleteMarkedPointsPossible() const;
+
+ void MoveMarkedPoints(const Size& rSiz, bool bCopy=false);
+ void ResizeMarkedPoints(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bCopy=false);
+ void RotateMarkedPoints(const Point& rRef, long nWink, bool bCopy=false);
+
+ // Hierbei entstehen eventuell beliebig viele neue Objekte:
+ void RipUpAtMarkedPoints();
+ bool IsRipUpAtMarkedPointsPossible() const;
+
+ // Alle markierten Polylines werden zu Polygonen, alle offenen
+ // Bezierkurven zu geschlossenen.
+ void ShutMarkedObjects();
+ void CloseMarkedObjects(BOOL bToggle=FALSE, BOOL bOpen=FALSE); // , long nOpenDistance=0);
+ bool IsOpenCloseMarkedObjectsPossible() const;
+ SdrObjClosedKind GetMarkedObjectsClosedState() const;
+
+ void CheckPolyPossibilitiesHelper( SdrMark* pM, bool& b1stSmooth, bool& b1stSegm, bool& bCurve, bool& bSmoothFuz, bool& bSegmFuz, basegfx::B2VectorContinuity& eSmooth );
+};
+
+#endif //_SVDPOEV_HXX
+
diff --git a/svx/inc/svx/svdpool.hxx b/svx/inc/svx/svdpool.hxx
new file mode 100644
index 000000000000..6c764262c5b0
--- /dev/null
+++ b/svx/inc/svx/svdpool.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDPOOL_HXX
+#define _SVDPOOL_HXX
+
+#include <svx/xpool.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+class XLineAttrSetItem;
+class XFillAttrSetItem;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrItemPool : public XOutdevItemPool
+{
+public:
+ SdrItemPool(SfxItemPool* pMaster = 0L, sal_Bool bLoadRefCounts = sal_True);
+ SdrItemPool(const SdrItemPool& rPool);
+protected:
+ virtual ~SdrItemPool();
+public:
+
+ virtual SfxItemPool* Clone() const;
+ virtual SfxItemPresentation GetPresentation(const SfxPoolItem& rItem,
+ SfxItemPresentation ePresentation,
+ SfxMapUnit ePresentationMetric,
+ String& rText,
+ const IntlWrapper * pIntlWrapper
+ = 0) const;
+
+ static void TakeItemName(sal_uInt16 nWhich, String& rItemName);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif // _SVDPOOL_HXX
+// eof
diff --git a/svx/inc/svx/svdsnpv.hxx b/svx/inc/svx/svdsnpv.hxx
new file mode 100644
index 000000000000..2d15f50a204e
--- /dev/null
+++ b/svx/inc/svx/svdsnpv.hxx
@@ -0,0 +1,338 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDSNPV_HXX
+#define _SVDSNPV_HXX
+
+#include <svx/svdpntv.hxx>
+#include <svx/svdhlpln.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Defines
+//************************************************************
+
+#define SDRSNAP_NOTSNAPPED 0x0000
+#define SDRSNAP_XSNAPPED 0x0001
+#define SDRSNAP_YSNAPPED 0x0002
+#define SDRSNAP_XYSNAPPED 0x0003
+
+// SDRCROOK_STRETCH ist noch nicht implementiert!
+enum SdrCrookMode {
+ SDRCROOK_ROTATE,
+ SDRCROOK_SLANT,
+ SDRCROOK_STRETCH
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@ @@ @@ @@@@ @@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@@@ @@@@@@ @@@@@@ @@@@@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@ @@@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@ @@ @@ @@ @@ @@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// #114409#-1 Migrate PageOrigin
+class ImplPageOriginOverlay;
+
+class SVX_DLLPUBLIC SdrSnapView: public SdrPaintView
+{
+protected:
+ // #114409#-1 Migrate PageOrigin
+ class ImplPageOriginOverlay* mpPageOriginOverlay;
+
+ // #114409#-2 Migrate HelpLine
+ class ImplHelpLineOverlay* mpHelpLineOverlay;
+
+ Size aMagnSiz;
+ Fraction aSnapWdtX;
+ Fraction aSnapWdtY;
+
+ USHORT nMagnSizPix;
+ long nSnapAngle;
+ long nEliminatePolyPointLimitAngle;
+
+ SdrCrookMode eCrookMode;
+
+ unsigned bSnapEnab : 1;
+ unsigned bGridSnap : 1;
+ unsigned bSnapTo1Pix : 1; // Wenn GridSnap aus, auf ein Pixel fangen um Werte wie 10.01 zu vermeiden
+ unsigned bBordSnap : 1;
+ unsigned bHlplSnap : 1;
+ unsigned bOFrmSnap : 1;
+ unsigned bOPntSnap : 1;
+ unsigned bOConSnap : 1;
+ unsigned bMoveMFrmSnap : 1;
+ unsigned bMoveOFrmSnap : 1;
+ unsigned bMoveOPntSnap : 1;
+ unsigned bMoveOConSnap : 1;
+ unsigned bMoveSnapOnlyTopLeft : 1; // Speacial fuer den Dialogeditor
+ unsigned bOrtho : 1;
+ unsigned bBigOrtho : 1;
+ unsigned bAngleSnapEnab : 1;
+ unsigned bMoveOnlyDragging : 1; // Objekte nur verschieben bei Resize/Rotate/...
+ unsigned bSlantButShear : 1; // Slant anstelle von Shear anwenden
+ unsigned bCrookNoContortion : 1; // Objekte bei Crook nicht verzerren
+ unsigned bHlplFixed : 1; // TRUE=Hilfslinien fixiert, also nicht verschiebbar
+ unsigned bEliminatePolyPoints : 1;
+
+private:
+ SVX_DLLPRIVATE void ClearVars();
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrSnapView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrSnapView();
+
+public:
+ virtual BOOL IsAction() const;
+ virtual void MovAction(const Point& rPnt);
+ virtual void EndAction();
+ virtual void BckAction();
+ virtual void BrkAction(); // f.abg.Klassen Actions z,B, Draggen abbrechen.
+ virtual void TakeActionRect(Rectangle& rRect) const;
+
+ void SetSnapGridWidth(const Fraction& rX, const Fraction& rY) { aSnapWdtX=rX; aSnapWdtY=rY; }
+ const Fraction& GetSnapGridWidthX() const { return aSnapWdtX; }
+ const Fraction& GetSnapGridWidthY() const { return aSnapWdtY; }
+
+ void SetSnapMagnetic(const Size& rSiz) { if (rSiz!=aMagnSiz) { aMagnSiz=rSiz; } }
+ const Size& GetSnapMagnetic() const { return aMagnSiz; }
+ void SetSnapMagneticPixel(USHORT nPix) { nMagnSizPix=nPix; }
+ USHORT GetSnapMagneticPixel() const { return nMagnSizPix; }
+
+ // RecalcLogicSnapMagnetic muss bei jedem Wechsel des OutputDevices
+ // sowie bei jedem Wechsel des MapModes gerufen werden!
+ void RecalcLogicSnapMagnetic(const OutputDevice& rOut) { SetSnapMagnetic(rOut.PixelToLogic(Size(nMagnSizPix,nMagnSizPix))); }
+ void SetActualWin(const OutputDevice* pWin) { SdrPaintView::SetActualWin(pWin); if (pWin!=NULL) RecalcLogicSnapMagnetic(*pWin); }
+
+ // Auf die View bezogene Koordinaten!
+ // Rueckgabewerte sind SDRSNAP_NOTSNAPPED,SDRSNAP_XSNAPPED,
+ // SDRSNAP_YSNAPPED oder SDRSNAP_XYSNAPPED
+ USHORT SnapPos(Point& rPnt, const SdrPageView* pPV) const;
+ Point GetSnapPos(const Point& rPnt, const SdrPageView* pPV) const;
+ USHORT SnapRect(const Rectangle& rRect, const SdrPageView* pPV, long& rDX, long& rDY) const;
+ void CheckSnap(const Point& rPt, const SdrPageView* pPV, long& nBestXSnap, long& nBestYSnap, bool& bXSnapped, bool& bYSnapped) const;
+
+ // Alle Fangeinstellungen sind Persistent.
+ BOOL IsSnapEnabled() const { return bSnapEnab; }
+ BOOL IsGridSnap() const { return bGridSnap; } // Fang auf Rastergitter
+ BOOL IsBordSnap() const { return bBordSnap; } // Fang auf Seitenraender
+ BOOL IsHlplSnap() const { return bHlplSnap; } // Fang auf Hilfslinien
+ BOOL IsOFrmSnap() const { return bOFrmSnap; } // Fang auf LogFram von umgebenden Zeichenobjekten
+ BOOL IsOPntSnap() const { return bOPntSnap; } // Fang auf ausgepraegte Punkte von umgebenden Zeichenobjekten
+ BOOL IsOConSnap() const { return bOConSnap; } // Fang auf Konnektoren der Zeichenobjekte
+ void SetSnapEnabled(BOOL bOn) { bSnapEnab=bOn; }
+ void SetGridSnap(BOOL bOn) { bGridSnap=bOn; }
+ void SetBordSnap(BOOL bOn) { bBordSnap=bOn; }
+ void SetHlplSnap(BOOL bOn) { bHlplSnap=bOn; }
+ void SetOFrmSnap(BOOL bOn) { bOFrmSnap=bOn; }
+ void SetOPntSnap(BOOL bOn) { bOPntSnap=bOn; }
+ void SetOConSnap(BOOL bOn) { bOConSnap=bOn; }
+
+ // Normalerweise werden beim Move-Dragging von Zeichenobjekten alle
+ // 4 Ecken des Object-SnapRects gefangen. Folgende Einstellmoeglichkeit,
+ // wenn man nur auf die linke obere Ecke fangen will (z.B. DialogEditor):
+ // Persistent, Default=FALSE.
+ void SetMoveSnapOnlyTopLeft(BOOL bOn) { bMoveSnapOnlyTopLeft=bOn; }
+ BOOL IsMoveSnapOnlyTopLeft() const { return bMoveSnapOnlyTopLeft; }
+
+ // Hilfslinien fixiert (nicht verschiebbar)
+ // Persistent, Default=FALSE.
+ BOOL IsHlplFixed() const { return bHlplFixed; }
+ void SetHlplFixed(BOOL bOn) { bHlplFixed=bOn; }
+
+ BOOL IsMoveMFrmSnap() const { return bMoveMFrmSnap; } // Fang des LogFram aller markierten Objekte
+ BOOL IsMoveOFrmSnap() const { return bMoveOFrmSnap; } // Fang aller LogFram der markierten Objekte
+ BOOL IsMoveOPntSnap() const { return bMoveOPntSnap; } // Fang ausgepraegter Punkte der markierten Objekte
+ BOOL IsMoveOConSnap() const { return bMoveOConSnap; } // Fang der Konnektoren der markierten Objekte
+
+ void SetMoveMFrmSnap(BOOL bOn) { bMoveMFrmSnap=bOn; }
+ void SetMoveOFrmSnap(BOOL bOn) { bMoveOFrmSnap=bOn; }
+ void SetMoveOPntSnap(BOOL bOn) { bMoveOPntSnap=bOn; }
+ void SetMoveOConSnap(BOOL bOn) { bMoveOConSnap=bOn; }
+
+ // #114409#-1 Migrate PageOrigin
+ sal_Bool BegSetPageOrg(const Point& rPnt);
+ void MovSetPageOrg(const Point& rPnt);
+ sal_Bool EndSetPageOrg();
+ void BrkSetPageOrg();
+ sal_Bool IsSetPageOrg() const { return (0L != mpPageOriginOverlay); }
+
+ // HitTest. Bei TRUE steht in rnHelpLineNum die Nummer der Hilfslinie und in rpPV
+ // die zugehoerige PageView.
+ sal_Bool PickHelpLine(const Point& rPnt, short nTol, const OutputDevice& rOut, USHORT& rnHelpLineNum, SdrPageView*& rpPV) const;
+
+ // Verschieben einer vorhandenen Hilfslinie. nHelpLineNum und pPV von PickHelpLine verwenden.
+ sal_Bool BegDragHelpLine(USHORT nHelpLineNum, SdrPageView* pPV);
+ // Interaktives einfuegen einer neuen Hilfslinie
+ sal_Bool BegDragHelpLine(const Point& rPnt, SdrHelpLineKind eNewKind);
+ Pointer GetDraggedHelpLinePointer() const;
+
+ // Aendern des Hilfslinientyps waerend des draggens
+ // void SetDraggedHelpLineKind(SdrHelpLineKind eNewKind);
+ void MovDragHelpLine(const Point& rPnt);
+ sal_Bool EndDragHelpLine();
+ void BrkDragHelpLine();
+ sal_Bool IsDragHelpLine() const { return (0L != mpHelpLineOverlay); }
+
+ // SnapAngle ist fuer Winkel im Kreis, RotateDragging, ...
+ // Der Winkelfang wird unterdrueckt, wenn er mit
+ // durch SetAngleSnapEnabled(FALSE) ausgeschaltet ist.
+ // Der Winkelfang ist unabhaengig vom Koordinatenfang
+ // und somit von der Einstellung IsSnapEnabled()
+ // Es sollten nur Werte angegeben werden fuer die gilt:
+ // 36000 modulu nWink = 0
+ // Implementiert fuer:
+ // - Rotate (Dragging)
+ // - Shear (Dragging)
+ // - Kreisbogen/-sektor/-abschnitt Winkel (Create und Dragging)
+ // Persistent.
+ void SetAngleSnapEnabled(BOOL bOn) { bAngleSnapEnab=bOn; }
+ BOOL IsAngleSnapEnabled() const { return bAngleSnapEnab; }
+ void SetSnapAngle(long nWink) { nSnapAngle=nWink; }
+ long GetSnapAngle() const { return nSnapAngle; }
+
+ // Ortho hat je nach Kontext verschiedene Effekte:
+ // - Create
+ // - Linien werden nur im 45deg Raster zugelassen
+ // - Statt Rechtecke werden Quadrate erzeugt
+ // - Statt Ellipsen werden Kreise erzeugt
+ // - Dragging
+ // - allgemeines Dragging
+ // - Move nur Hor, Vert oder 45deg
+ // - Resize proportional
+ // - Mirror: nichts
+ // - Shear ohne Resize
+ // - Crook ohne Resize
+ // - verschieben der Handles
+ // - Spiegelachse nur 45deg Raster
+ // - Objekteigenes Dragging
+ // - Rechteck Eckenradius: nichts
+ // - Kreisobjekt Winkel: nichts
+ // - Linie behaelt beim Draggen ihren Winkel bei und wird nur (ni)
+ // verlaengert bzw. verkuerzt.
+ // Defaultmaessig ist Ortho ausgeschaltet. Persistent.
+ void SetOrtho(BOOL bOn) { bOrtho=bOn; } // unvollstaendig
+ BOOL IsOrtho() const { return bOrtho; }
+
+ // BigOrtho hat nur Relevanz wenn Ortho eingeschaltet ist.
+ // Beispiel: Ein Rechteck wird mit eingeschaltetem Ortho (also ein Quadrat)
+ // erzeugt und die Maus wurde dabei vom Nullpunkt zu den Koordinaten
+ // (80,30) gedraggt. Dann stuenden nun 2 Alternativen zur Bestimmung der
+ // Kantenlaenge des Quadrats zur Wahl: 30 und 80.
+ // Die normale Ortho-Funktuionalitaet brachte hierbei ein Quadrat mit
+ // Kantenlaenge 30 (also immer die kleinere Groesse). Bei hinzugeschal-
+ // tetem BigOrtho bekaeme man dagegen ein Quadrat der Kantenlaenge 80.
+ // Gleiches gilt auch fuer Resize.
+ // Defaultmaessig ist BigOrtho eingeschaltet. Persistent.
+ void SetBigOrtho(BOOL bOn) { bBigOrtho=bOn; }
+ BOOL IsBigOrtho() const { return bBigOrtho; }
+
+ // bei MoveOnlyDragging=TRUE wird bei Resize/Rotate/Shear/Mirror/Crook
+ // nur das Zentrum der markierten Objekte transformiert. Groesse, Form
+ // und Drehwinkel der Objekte bleiben erhalten, nur ihre Positionen
+ // aendern sich. Persistent. Default=FALSE. (ni)
+ void SetMoveOnlyDragging(BOOL bOn) { bMoveOnlyDragging=bOn; }
+ BOOL IsMoveOnlyDragging() const { return bMoveOnlyDragging; }
+
+ // Slant anstelle von Shear anwenden. Persistent. Default=FALSE.
+ void SetSlantButShear(BOOL bOn) { bSlantButShear=bOn; }
+ BOOL IsSlantButShear() const { return bSlantButShear; }
+
+ // Objekte bei Crook nicht verzerren. Persistent. Default=FALSE. (ni)
+ void SetCrookNoContortion(BOOL bOn) { bCrookNoContortion=bOn; }
+ BOOL IsCrookNoContortion() const { return bCrookNoContortion; }
+
+ // Crook-Modus. Persistent. Default=SDRCROOK_ROTATE. (ni)
+ void SetCrookMode(SdrCrookMode eMode) { eCrookMode=eMode; }
+ SdrCrookMode GetCrookMode() const { return eCrookMode; }
+
+ // Special fuer IBM: Beim Draggen eines Polygonpunkts wird dieser
+ // geloescht, wenn seine beiden angrenzenden Linien eh' fast eine
+ // durchgehende Linie sind.
+ void SetEliminatePolyPoints(BOOL bOn) { bEliminatePolyPoints=bOn; }
+ BOOL IsEliminatePolyPoints() const { return bEliminatePolyPoints; }
+ void SetEliminatePolyPointLimitAngle(long nAngle) { nEliminatePolyPointLimitAngle=nAngle; }
+ long GetEliminatePolyPointLimitAngle() const { return nEliminatePolyPointLimitAngle; }
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Begriffsdefinition:
+// - Etwas fangen=Gefangen werden kann z.B. der Mauszeiger oder die z.Zt. im
+// Drag befindlichen markierten Objekte.
+// - Auf etwas fangen=Man kann z.B. auf das Grid oder auf Hilfslinien fangen.
+//
+// Grundsaetzlich wird nur gefangen auf sichtbare Elemente (-> Border,
+// Hilfslinien, Konnektoren; Ausnahme: Grid). Ebenso koennen nur sichtbare
+// Elemente gefangen werden (->Konnektoren).
+//
+// Auf's Grid wird immer erst dann gefangen, wenn nix Anderes in der Naehe
+// (->Magnetic) ist.
+//
+// Der "Cursor" (also der Mauszeiger) beim Erzeugen von Objekten, beim Draggen
+// von Polygonpunkten, ... wird immer auf allen eingeschalteten Fangalternativen
+// gefangen (max 6).
+//
+// Beim Verschieben markierter Objekte ist das etwas anders. Statt des einen
+// Mauscursors gibt es hier 4 Alternativen an den markierten Objekten, die
+// gefangen werden koennen:
+// 1. die logisch-umschliessenden Rahmen der einzelnen Objekte
+// 2. der logisch-umschliessende Rahmen aller markierten Objekte
+// 3. ausgezeichnete Punkte der markierten Objekte (Polygonpunkte, ...)
+// 4. die Konnektoren der markierten Objekte
+// Da 1. und 2. einander ausschliessen (2. ist eine Verfeinerung von 1.)
+// bleiben 3 voneinander unabhaengige Alternativen. Bei 6. Moeglichkeiten auf
+// die gefangen werden kann kaeme man auf max. 18 Kombinationsmoeglichkeiten!
+// Deshalb werden folgende Vereinfachungen festgelegt:
+// 1. Konnektoren fangen sich nur auf Konnektoren.
+// Verbleiben also nun noch max. 2x5+1=11 Fangkombinationen beim MoveDrag:
+// 1-3. umschliessende(r) Rahmen auf Grid/Border/Hilfslinien
+// 4. umschliessende(r) Rahmen auf ausgezeichnete Objektpunkte
+// 5. umschliessende(r) Rahmen auf umschliessenden Rahmen
+// 6-8. ausgezeichnete Punkte auf Grid/Border/Hilfslinien
+// 7. ausgezeichnete Punkte auf ausgezeichnete Objektpunkte
+// 8-10. ausgezeichnete Punkte auf umschliessenden Rahmen
+// 11. Konnektoren auf Konnektoren
+// Beim MouseMove-Event im DragMove werden also diese bis zu max. 11 moeglichen
+// Alternativen durchgetestet und die mit dem gerigsten Korrekturaufwand
+// vollzogen.
+//
+// Beim Resize, ... wird immer nur der logisch-umschliessende Rahmen der
+// markierten Objekte gefangen.
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDSNPV_HXX
+
diff --git a/svx/inc/svx/svdsob.hxx b/svx/inc/svx/svdsob.hxx
new file mode 100644
index 000000000000..64d437d4c608
--- /dev/null
+++ b/svx/inc/svx/svdsob.hxx
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDSOB_HXX
+#define _SVDSOB_HXX
+
+#include <com/sun/star/uno/Any.hxx>
+#include <tools/stream.hxx>
+
+#ifndef _STRING_H
+#include <tools/string.hxx> //wg. memset
+#define _STRING_H
+#endif
+#include "svx/svxdllapi.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+/*
+ Deklaration eines statischen Mengentyps. Die Menge kann die Elemente
+ 0..255 aufnehmen und verbraucht stets 32 Bytes.
+*/
+
+class SVX_DLLPUBLIC SetOfByte
+{
+protected:
+ sal_uInt8 aData[32];
+
+public:
+ SetOfByte(sal_Bool bInitVal = sal_False)
+ {
+ memset(aData, bInitVal ? 0xFF : 0x00, sizeof(aData));
+ }
+
+ sal_Bool operator==(const SetOfByte& rCmpSet) const
+ {
+ return (memcmp(aData, rCmpSet.aData, sizeof(aData)) == 0);
+ }
+
+ sal_Bool operator!=(const SetOfByte& rCmpSet) const
+ {
+ return (memcmp(aData, rCmpSet.aData, sizeof(aData))!=0);
+ }
+
+ void Set(sal_uInt8 a)
+ {
+ aData[a/8] |= 1<<a%8;
+ }
+
+ void Clear(sal_uInt8 a)
+ {
+ aData[a/8] &= ~(1<<a%8);
+ }
+
+ void Set(sal_uInt8 a, sal_Bool b)
+ {
+ if(b)
+ Set(a);
+ else
+ Clear(a);
+ }
+
+ sal_Bool IsSet(sal_uInt8 a) const
+ {
+ return (aData[a/8] & 1<<a%8) != 0;
+ }
+
+ void SetAll()
+ {
+ memset(aData, 0xFF, sizeof(aData));
+ }
+
+ void ClearAll()
+ {
+ memset(aData, 0x00, sizeof(aData));
+ }
+
+ sal_Bool IsEmpty() const;
+ sal_Bool IsFull() const;
+
+ sal_uInt16 GetSetCount() const;
+ sal_uInt8 GetSetBit(sal_uInt16 nNum) const;
+ sal_uInt16 GetClearCount() const;
+ sal_uInt8 GetClearBit(sal_uInt16 nNum) const;
+ void operator&=(const SetOfByte& r2ndSet);
+ void operator|=(const SetOfByte& r2ndSet);
+
+ friend inline SvStream& operator<<(SvStream& rOut, const SetOfByte& rSet);
+ friend inline SvStream& operator>>(SvStream& rIn, SetOfByte& rSet);
+
+ // initialize this set with a uno sequence of sal_Int8
+ void PutValue(const com::sun::star::uno::Any & rAny);
+
+ // returns a uno sequence of sal_Int8
+ void QueryValue(com::sun::star::uno::Any & rAny) const;
+};
+
+inline SvStream& operator<<(SvStream& rOut, const SetOfByte& rSet)
+{
+ rOut.Write((char*)rSet.aData,32);
+ return rOut;
+}
+
+inline SvStream& operator>>(SvStream& rIn, SetOfByte& rSet)
+{
+ rIn.Read((char*)rSet.aData,32);
+ return rIn;
+}
+
+#endif // _SVDSOB_HXX
+
diff --git a/svx/inc/svx/svdtext.hxx b/svx/inc/svx/svdtext.hxx
new file mode 100644
index 000000000000..6774236d197c
--- /dev/null
+++ b/svx/inc/svx/svdtext.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDTEXT_HXX
+#define _SVDTEXT_HXX
+
+#include <sal/types.h>
+#include "svx/svxdllapi.h"
+#include <tools/weakbase.hxx>
+
+// --------------------------------------------------------------------
+
+class OutlinerParaObject;
+class SdrOutliner;
+class SdrTextObj;
+class SdrModel;
+class SfxItemSet;
+
+namespace sdr { namespace properties {
+ class TextProperties;
+}}
+
+/** This class stores information about one text inside a shape.
+*/
+
+class SVX_DLLPUBLIC SdrText : public tools::WeakBase< SdrText >
+{
+public:
+ SdrText( SdrTextObj& rObject, OutlinerParaObject* pOutlinerParaObject = 0 );
+ virtual ~SdrText();
+
+ virtual void SetModel(SdrModel* pNewModel);
+ virtual void ForceOutlinerParaObject( USHORT nOutlMode );
+
+ virtual void SetOutlinerParaObject( OutlinerParaObject* pTextObject );
+ virtual OutlinerParaObject* GetOutlinerParaObject() const;
+
+ virtual void CheckPortionInfo( SdrOutliner& rOutliner );
+ virtual void ReformatText();
+
+ // default uses GetObjectItemSet, but may be overloaded to
+ // return a text-specific ItemSet
+ virtual const SfxItemSet& GetItemSet() const;
+
+ SdrModel* GetModel() const { return mpModel; }
+ SdrTextObj& GetObject() const { return mrObject; }
+
+ /** returns the current OutlinerParaObject and removes it from this instance */
+ OutlinerParaObject* RemoveOutlinerParaObject();
+
+protected:
+ virtual const SfxItemSet& GetObjectItemSet();
+ virtual void SetObjectItem(const SfxPoolItem& rItem);
+ virtual SfxStyleSheet* GetStyleSheet() const;
+
+private:
+ OutlinerParaObject* mpOutlinerParaObject;
+ SdrTextObj& mrObject;
+ SdrModel* mpModel;
+ bool mbPortionInfoChecked;
+};
+
+#endif //_SVDTEXT_HXX
+
diff --git a/svx/inc/svx/svdtrans.hxx b/svx/inc/svx/svdtrans.hxx
new file mode 100644
index 000000000000..36116e821369
--- /dev/null
+++ b/svx/inc/svx/svdtrans.hxx
@@ -0,0 +1,326 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDTRANS_HXX
+#define _SVDTRANS_HXX
+
+#include <tools/gen.hxx>
+#include <tools/poly.hxx>
+#include <tools/fract.hxx>
+
+#ifndef _MAPMOD_HXX //autogen
+#include <vcl/mapmod.hxx>
+#endif
+#include <tools/string.hxx>
+#include "svx/svxdllapi.h"
+
+#include <vcl/field.hxx>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Winkelangaben der DrawingEngine sind 1/100 Degree
+// #i19054# nowhere used, removed // const int nWinkDiv=100;
+// Um Winkel der DrawingEngine mit den Trigonometrischen Funktionen
+// verarbeiten zu koennen, muessen sie zunaest ins Bogenmass umgerechnet
+// werden. Dies gestaltet sich recht einfach mit der folgenden Konstanten
+// nPi180. Sei nWink ein Winkel in 1/100 Deg so schreibt man z.B.:
+// double nSin=sin(nWink*nPi180);
+// Rueckwandlung entsprechend durch Teilen.
+const double nPi=3.14159265358979323846;
+const double nPi180=0.000174532925199432957692222; // Bei zuweing Stellen ist tan(4500*nPi180)!=1.0
+
+// Der maximale Shearwinkel
+#define SDRMAXSHEAR 8900
+
+class XPolygon;
+class XPolyPolygon;
+
+inline long Round(double a) { return a>0.0 ? (long)(a+0.5) : -(long)((-a)+0.5); }
+
+inline void MoveRect(Rectangle& rRect, const Size& S) { rRect.Move(S.Width(),S.Height()); }
+inline void MovePoint(Point& rPnt, const Size& S) { rPnt.X()+=S.Width(); rPnt.Y()+=S.Height(); }
+inline void MovePoly(Polygon& rPoly, const Size& S) { rPoly.Move(S.Width(),S.Height()); }
+inline void MovePoly(PolyPolygon& rPoly, const Size& S) { rPoly.Move(S.Width(),S.Height()); }
+void MoveXPoly(XPolygon& rPoly, const Size& S);
+void MoveXPoly(XPolyPolygon& rPoly, const Size& S);
+
+SVX_DLLPUBLIC void ResizeRect(Rectangle& rRect, const Point& rRef, const Fraction& xFact, const Fraction& yFact, FASTBOOL bNoJustify=FALSE);
+inline void ResizePoint(Point& rPnt, const Point& rRef, Fraction xFact, Fraction yFact);
+void ResizePoly(Polygon& rPoly, const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+void ResizeXPoly(XPolygon& rPoly, const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+void ResizePoly(PolyPolygon& rPoly, const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+void ResizeXPoly(XPolyPolygon& rPoly, const Point& rRef, const Fraction& xFact, const Fraction& yFact);
+
+inline void RotatePoint(Point& rPnt, const Point& rRef, double sn, double cs);
+SVX_DLLPUBLIC void RotatePoly(Polygon& rPoly, const Point& rRef, double sn, double cs);
+void RotateXPoly(XPolygon& rPoly, const Point& rRef, double sn, double cs);
+void RotatePoly(PolyPolygon& rPoly, const Point& rRef, double sn, double cs);
+void RotateXPoly(XPolyPolygon& rPoly, const Point& rRef, double sn, double cs);
+
+// MirrorRect macht nur Sinn bei Spiegelachsen
+// mit einem durch 45 Degree teilbaren Winkel!
+void MirrorRect(Rectangle& rRect, const Point& rRef1, const Point& rRef2, FASTBOOL bNoJustify); // ni.
+void MirrorPoint(Point& rPnt, const Point& rRef1, const Point& rRef2);
+void MirrorPoly(Polygon& rPoly, const Point& rRef1, const Point& rRef2);
+void MirrorXPoly(XPolygon& rPoly, const Point& rRef1, const Point& rRef2);
+void MirrorPoly(PolyPolygon& rPoly, const Point& rRef1, const Point& rRef2);
+void MirrorXPoly(XPolyPolygon& rPoly, const Point& rRef1, const Point& rRef2);
+
+inline void ShearPoint(Point& rPnt, const Point& rRef, double tn, FASTBOOL bVShear=FALSE);
+SVX_DLLPUBLIC void ShearPoly(Polygon& rPoly, const Point& rRef, double tn, FASTBOOL bVShear=FALSE);
+void ShearXPoly(XPolygon& rPoly, const Point& rRef, double tn, FASTBOOL bVShear=FALSE);
+void ShearPoly(PolyPolygon& rPoly, const Point& rRef, double tn, FASTBOOL bVShear=FALSE);
+void ShearXPoly(XPolyPolygon& rPoly, const Point& rRef, double tn, FASTBOOL bVShear=FALSE);
+
+// rPnt.X bzw rPnt.Y wird auf rCenter.X bzw. rCenter.Y gesetzt!
+// anschliessend muss rPnt nur noch um rCenter gedreht werden.
+// Der Rueckgabewinkel ist ausnahmsweise in Rad.
+inline double GetCrookAngle(Point& rPnt, const Point& rCenter, const Point& rRad, FASTBOOL bVertical);
+// Die folgenden Methoden behandeln einen Punkt eines XPolygons, wobei die
+// benachbarten Kontrollpunkte des eigentlichen Punktes ggf. in pC1/pC2
+// uebergeben werden. Ueber rSin/rCos wird gleichzeitig sin(nWink) und cos(nWink)
+// zurueckgegeben.
+// Der Rueckgabewinkel ist hier ebenfalls in Rad.
+double CrookRotateXPoint(Point& rPnt, Point* pC1, Point* pC2, const Point& rCenter,
+ const Point& rRad, double& rSin, double& rCos, FASTBOOL bVert);
+double CrookSlantXPoint(Point& rPnt, Point* pC1, Point* pC2, const Point& rCenter,
+ const Point& rRad, double& rSin, double& rCos, FASTBOOL bVert);
+double CrookStretchXPoint(Point& rPnt, Point* pC1, Point* pC2, const Point& rCenter,
+ const Point& rRad, double& rSin, double& rCos, FASTBOOL bVert,
+ const Rectangle rRefRect);
+
+void CrookRotatePoly(XPolygon& rPoly, const Point& rCenter, const Point& rRad, FASTBOOL bVert);
+void CrookSlantPoly(XPolygon& rPoly, const Point& rCenter, const Point& rRad, FASTBOOL bVert);
+void CrookStretchPoly(XPolygon& rPoly, const Point& rCenter, const Point& rRad, FASTBOOL bVert, const Rectangle rRefRect);
+
+void CrookRotatePoly(XPolyPolygon& rPoly, const Point& rCenter, const Point& rRad, FASTBOOL bVert);
+void CrookSlantPoly(XPolyPolygon& rPoly, const Point& rCenter, const Point& rRad, FASTBOOL bVert);
+void CrookStretchPoly(XPolyPolygon& rPoly, const Point& rCenter, const Point& rRad, FASTBOOL bVert, const Rectangle rRefRect);
+
+/**************************************************************************************************/
+/* Inline */
+/**************************************************************************************************/
+
+inline void ResizePoint(Point& rPnt, const Point& rRef, Fraction xFact, Fraction yFact)
+{
+ if (xFact.GetDenominator()==0) xFact=Fraction(xFact.GetNumerator(),1); // DivZero abfangen
+ if (yFact.GetDenominator()==0) yFact=Fraction(yFact.GetNumerator(),1); // DivZero abfangen
+ rPnt.X()=rRef.X()+ Round(((double)(rPnt.X()-rRef.X())*xFact.GetNumerator())/xFact.GetDenominator());
+ rPnt.Y()=rRef.Y()+ Round(((double)(rPnt.Y()-rRef.Y())*yFact.GetNumerator())/yFact.GetDenominator());
+}
+
+inline void RotatePoint(Point& rPnt, const Point& rRef, double sn, double cs)
+{
+ long dx=rPnt.X()-rRef.X();
+ long dy=rPnt.Y()-rRef.Y();
+ rPnt.X()=Round(rRef.X()+dx*cs+dy*sn);
+ rPnt.Y()=Round(rRef.Y()+dy*cs-dx*sn);
+}
+
+inline void ShearPoint(Point& rPnt, const Point& rRef, double tn, FASTBOOL bVShear)
+{
+ if (!bVShear) { // Horizontal
+ if (rPnt.Y()!=rRef.Y()) { // sonst nicht noetig
+ rPnt.X()-=Round((rPnt.Y()-rRef.Y())*tn);
+ }
+ } else { // ansonsten vertikal
+ if (rPnt.X()!=rRef.X()) { // sonst nicht noetig
+ rPnt.Y()-=Round((rPnt.X()-rRef.X())*tn);
+ }
+ }
+}
+
+inline double GetCrookAngle(Point& rPnt, const Point& rCenter, const Point& rRad, FASTBOOL bVertical)
+{
+ double nWink;
+ if (bVertical) {
+ long dy=rPnt.Y()-rCenter.Y();
+ nWink=(double)dy/(double)rRad.Y();
+ rPnt.Y()=rCenter.Y();
+ } else {
+ long dx=rCenter.X()-rPnt.X();
+ nWink=(double)dx/(double)rRad.X();
+ rPnt.X()=rCenter.X();
+ }
+ return nWink;
+}
+
+/**************************************************************************************************/
+/**************************************************************************************************/
+
+// Y-Achse zeigt nach unten! Die Funktion negiert bei der
+// Winkelberechnung die Y-Achse, sodass GetAngle(Point(0,-1))=90.00deg.
+// GetAngle(Point(0,0)) liefert 0.
+// Der Rueckgabewert liegt im Bereich -180.00..179.99 Degree und
+// ist in 1/100 Degree angegeben.
+SVX_DLLPUBLIC long GetAngle(const Point& rPnt);
+long NormAngle180(long a); // Winkel normalisieren auf -180.00..179.99
+SVX_DLLPUBLIC long NormAngle360(long a); // Winkel normalisieren auf 0.00..359.99
+USHORT GetAngleSector(long nWink); // Sektor im kartesischen Koordinatensystem bestimmen
+// Berechnet die Laenge von (0,0) via a^2 + b^2 = c^2
+// Zur Vermeidung von Ueberlaeufen werden ggf. einige Stellen ignoriert.
+long GetLen(const Point& rPnt);
+
+/*
+ Transformation eines Rechtecks in ein Polygon unter ------------
+ Anwendung der Winkelparameter aus GeoStat. /1 2/
+ Referenzpunkt ist stets der Punkt 0, also die linke / /
+ obere Ecke des Ausgangsrects. / /
+ Bei der Berechnung des Polygons ist die Reihenfolge / /
+ (erst Shear, dann Rotation vorgegeben). / / \
+ / / |
+ A) Ausgangsrechteck aRect B) Nach Anwendung von Shear /0 3/ Rot|
+ +------------------+ -------------------- ------------ ------
+ |0 1| \0 1\ C) Nach Anwendung
+ | | \ \ von Rotate
+ | | | \ \
+ |3 2| | \3 2\
+ +------------------+ | --------------------
+ |Shr |
+ Bei Rueckkonvertierung des Polygons in ein Rect ist die Reihenfolge
+ zwangslaeufig umgekehrt:
+ - Berechnung des Drehwinkels: Winkel der Strecke 0-1 aus Abb. C) zum Horizont
+ - Rueckdrehung des geshearten Rects (man erhaelt Abb B))
+ - Bestimmung der Breite des Rects=Laenge der Strecke 0-1 aus Abb. B)
+ - Bestimmung der Hoehe des Rects=vertikaler Abstand zwischen den Punkten
+ 0 und 3 aus Abb. B)
+ - Bestimmung des Shear-Winkels aus der Strecke 0-3 zur Senkrechten.
+ Es ist darauf zu achten, dass das Polygon bei einer zwischenzeitlichen
+ Transformation evtl. gespiegelt wurde (Mirror oder Resize mit neg. Faktor).
+ In diesem Fall muss zunaecht eine Normalisierung durch Vertauschung der
+ Punkte (z.B. 0 mit 3 und 1 mit 2) durchgefuehrt werden, damit der
+ Richtungssinn im Polygon wieder stimmig ist.
+ Hinweis: Positiver Shear-Winkel bedeutet Shear mit auf dem Bildschirm
+ sichtbarer positiver Kursivierung. Mathematisch waere dass eine negative
+ Kursivierung, da die Y-Achse auf dem Bildschirm von oben nach unten verlaeuft.
+ Drehwinkel: Positiv bedeutet auf dem Bildschirm sichtbare Linksdrehung.
+*/
+
+class GeoStat { // Geometrischer Status fuer ein Rect
+public:
+ long nDrehWink;
+ long nShearWink;
+ double nTan; // tan(nShearWink)
+ double nSin; // sin(nDrehWink)
+ double nCos; // cos(nDrehWink)
+ bool bMirrored; // Horizontal gespiegelt? (ni)
+public:
+ GeoStat(): nDrehWink(0),nShearWink(0),nTan(0.0),nSin(0.0),nCos(1.0),bMirrored(false) {}
+ void RecalcSinCos();
+ void RecalcTan();
+};
+
+Polygon Rect2Poly(const Rectangle& rRect, const GeoStat& rGeo);
+void Poly2Rect(const Polygon& rPol, Rectangle& rRect, GeoStat& rGeo);
+
+SVX_DLLPUBLIC void OrthoDistance8(const Point& rPt0, Point& rPt, FASTBOOL bBigOrtho);
+SVX_DLLPUBLIC void OrthoDistance4(const Point& rPt0, Point& rPt, FASTBOOL bBigOrtho);
+
+// Multiplikation und anschliessende Division.
+// Rechnung und Zwischenergebnis sind BigInt.
+SVX_DLLPUBLIC long BigMulDiv(long nVal, long nMul, long nDiv);
+
+// Fehlerbehaftetes Kuerzen einer Fraction.
+// nDigits gibt an, wieviele signifikante Stellen in
+// Zaehler/Nenner mindestens erhalten bleiben sollen.
+void Kuerzen(Fraction& rF, unsigned nDigits);
+
+
+class FrPair {
+ Fraction aX;
+ Fraction aY;
+public:
+ FrPair() : aX(0,1),aY(0,1) {}
+ FrPair(const Fraction& rBoth) : aX(rBoth),aY(rBoth) {}
+ FrPair(const Fraction& rX, const Fraction& rY) : aX(rX),aY(rY) {}
+ FrPair(long nMul, long nDiv) : aX(nMul,nDiv),aY(nMul,nDiv) {}
+ FrPair(long xMul, long xDiv, long yMul, long yDiv): aX(xMul,xDiv),aY(yMul,yDiv) {}
+ const Fraction& X() const { return aX; }
+ const Fraction& Y() const { return aY; }
+ Fraction& X() { return aX; }
+ Fraction& Y() { return aY; }
+};
+
+// Fuer die Umrechnung von Masseinheiten
+SVX_DLLPUBLIC FrPair GetMapFactor(MapUnit eS, MapUnit eD);
+FrPair GetMapFactor(MapUnit eS, FieldUnit eD);
+FrPair GetMapFactor(FieldUnit eS, MapUnit eD);
+FrPair GetMapFactor(FieldUnit eS, FieldUnit eD);
+
+inline FASTBOOL IsMetric(MapUnit eU) {
+ return (eU==MAP_100TH_MM || eU==MAP_10TH_MM || eU==MAP_MM || eU==MAP_CM);
+}
+
+inline FASTBOOL IsInch(MapUnit eU) {
+ return (eU==MAP_1000TH_INCH || eU==MAP_100TH_INCH || eU==MAP_10TH_INCH || eU==MAP_INCH ||
+ eU==MAP_POINT || eU==MAP_TWIP);
+}
+
+inline FASTBOOL IsMetric(FieldUnit eU) {
+ return (eU==FUNIT_MM || eU==FUNIT_CM || eU==FUNIT_M || eU==FUNIT_KM || eU==FUNIT_100TH_MM);
+}
+
+inline FASTBOOL IsInch(FieldUnit eU) {
+ return (eU==FUNIT_TWIP || eU==FUNIT_POINT || eU==FUNIT_PICA ||
+ eU==FUNIT_INCH || eU==FUNIT_FOOT || eU==FUNIT_MILE);
+}
+
+class SVX_DLLPUBLIC SdrFormatter {
+ Fraction aScale;
+ long nMul_;
+ long nDiv_;
+ short nKomma_;
+ FASTBOOL bSrcFU;
+ FASTBOOL bDstFU;
+ FASTBOOL bDirty;
+ MapUnit eSrcMU;
+ MapUnit eDstMU;
+ FieldUnit eSrcFU;
+ FieldUnit eDstFU;
+private:
+ SVX_DLLPRIVATE void Undirty();
+ SVX_DLLPRIVATE void ForceUndirty() const { if (bDirty) ((SdrFormatter*)this)->Undirty(); }
+public:
+ SdrFormatter(MapUnit eSrc, MapUnit eDst) { eSrcMU=eSrc; bSrcFU=FALSE; eDstMU=eDst; bDstFU=FALSE; bDirty=TRUE; }
+ SdrFormatter(MapUnit eSrc, FieldUnit eDst) { eSrcMU=eSrc; bSrcFU=FALSE; eDstFU=eDst; bDstFU=TRUE; bDirty=TRUE; }
+ SdrFormatter(FieldUnit eSrc, MapUnit eDst) { eSrcFU=eSrc; bSrcFU=TRUE; eDstMU=eDst; bDstFU=FALSE; bDirty=TRUE; }
+ SdrFormatter(FieldUnit eSrc, FieldUnit eDst) { eSrcFU=eSrc; bSrcFU=TRUE; eDstFU=eDst; bDstFU=TRUE; bDirty=TRUE; }
+ void SetSourceUnit(MapUnit eSrc) { eSrcMU=eSrc; bSrcFU=FALSE; bDirty=TRUE; }
+ void SetSourceUnit(FieldUnit eSrc) { eSrcFU=eSrc; bSrcFU=TRUE; bDirty=TRUE; }
+ void SetDestinationUnit(MapUnit eDst) { eDstMU=eDst; bDstFU=FALSE; bDirty=TRUE; }
+ void SetDestinationUnit(FieldUnit eDst) { eDstFU=eDst; bDstFU=TRUE; bDirty=TRUE; }
+ void TakeStr(long nVal, XubString& rStr) const;
+ static void TakeUnitStr(MapUnit eUnit, XubString& rStr);
+ static void TakeUnitStr(FieldUnit eUnit, XubString& rStr);
+ static XubString GetUnitStr(MapUnit eUnit) { XubString aStr; TakeUnitStr(eUnit,aStr); return aStr; }
+ static XubString GetUnitStr(FieldUnit eUnit) { XubString aStr; TakeUnitStr(eUnit,aStr); return aStr; }
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDTRANS_HXX
+
diff --git a/svx/inc/svx/svdtypes.hxx b/svx/inc/svx/svdtypes.hxx
new file mode 100644
index 000000000000..9c895e3f5302
--- /dev/null
+++ b/svx/inc/svx/svdtypes.hxx
@@ -0,0 +1,169 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDTYPES_HXX
+#define _SVDTYPES_HXX
+
+#include <tools/solar.h>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// @@@@ @@@@@ @@@@@ @@@@ @@@@@ @@@@@@ @@@@@ @@@@ @@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@ @@ @@ @@@@@ @@ @@ @@@@@ @@ @@@@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@ @@@@@ @@ @@ @@@@ @@@@@ @@@@ @@@@@ @@@@ @@
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+const UINT32 SdrInventor=UINT32('S')*0x00000001+
+ UINT32('V')*0x00000100+
+ UINT32('D')*0x00010000+
+ UINT32('r')*0x01000000;
+
+// Kommandos fuer EndCreate()
+enum SdrCreateCmd {SDRCREATE_NEXTPOINT, // Naechster Polygonpunkt, Kreissegment: Naechste Koordinate
+ SDRCREATE_NEXTOBJECT, // Naechstes Polygon im PolyPolygon
+ SDRCREATE_FORCEEND}; // Ende erzwungen
+
+enum SdrDragMode
+{
+ SDRDRAG_MOVE, // Verschieben
+ SDRDRAG_RESIZE, // Groesse aendern
+ SDRDRAG_ROTATE, // Drehen
+ SDRDRAG_MIRROR, // Spiegeln
+ SDRDRAG_SHEAR, // Schraegstellen
+ SDRDRAG_CROOK, // Kreisfoermig verbiegen
+ SDRDRAG_DISTORT, // Freies verzerren (Rect in beliebiges Viereck transformieren)
+
+ // new modes for interactive transparence and gradient tools
+ SDRDRAG_TRANSPARENCE,
+ SDRDRAG_GRADIENT,
+
+ // new mode for interactive cropping of graphics
+ SDRDRAG_CROP
+};
+
+
+// fuer SdrObject::ConvertToPoly()
+enum SdrConvertType {SDRCONVERT_POLY, // reines Polygon erzeugen
+ SDRCONVERT_BEZIER, // alles Beziersegmente
+ SDRCONVERT_MIXED}; // Gemischtes Objekt (optimal)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// @@ @@@@ @@ @@ @@@@@ @@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@@@@@ @@@@ @@@@ @@@@@
+// @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@ @@ @@ @@@@@ @@ @@
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Bei der Identifikation eines Layer kann es vorkommen, das dieser nicht
+// vorhanden ist. SdrLayerAdmin::GetLayerID(const String&) liefert
+// dann diesen Wert:
+#define SDRLAYER_NOTFOUND 0xFF
+// Man kann diesen Wert jodoch ohne Bedenken den Methoden des SdrLayerSet
+// zuwerfen, bekommt dann jedoch immer FALSE, bzw. tut die Methode nix.
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Typdeklaration fuer Layer-IDs
+typedef BYTE SdrLayerID;
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// @@@@@ @@@@ @@@@ @@@@@ @@@@ @@@@@ @@@@@@ @@ @@ @@@@ @@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@@@@@ @@ @@@ @@@@ @@@@ @@ @@ @@@@@ @@ @@ @@ @@@@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@@@@ @@@@@ @@@@ @@@@@ @@@@ @@@@@ @@ @@@@ @@
+////////////////////////////////////////////////////////////////////////////////////////////////////
+enum SdrObjListKind {SDROBJLIST_UNKNOWN =0x00, // Unbekannt
+ // reine Objektlisten:
+ SDROBJLIST_GROUPOBJ =0x01, // Objektliste eines Gruppenobjekts
+ SDROBJLIST_VIRTOBJECTS=0x02, // Liste ist die Liste der virtuellen Objekte
+ SDROBJLIST_SYMBOLTABLE=0x03, // Liste ist die Symboltabelle
+ // Hier haben zur Not noch 12 weitere Listentypen Platz
+ // Pages:
+ SDROBJLIST_DRAWPAGE =0x10, // Liste ist eine Zeichenseite
+ SDROBJLIST_MASTERPAGE =0x11 // Liste ist eine Masterpage
+ // Hier haben zur Not noch 8 weitere Pagetypen Platz
+}; // fuer die Surrogate reserviert
+
+inline FASTBOOL SdrIsPageKind(SdrObjListKind eK) { return eK>=SDROBJLIST_DRAWPAGE && eK<=0x1A; }
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// @@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@@@ @@@@@ @@@@ @@@@@@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@@@@ @@ @@@@@ @@ @@ @@
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+enum SdrRepeatFunc {SDRREPFUNC_OBJ_NONE,
+ // Mit Parameter
+ SDRREPFUNC_OBJ_MOVE, // Distanz
+ SDRREPFUNC_OBJ_RESIZE, // Faktor, Referenz(%) bezogen auf MarkRect
+ SDRREPFUNC_OBJ_SETSNAPRECT, // Rectangle
+ SDRREPFUNC_OBJ_SETLOGICRECT, // Rectangle
+ SDRREPFUNC_OBJ_ROTATE, // Drehwinkel, Referenz(%) bezogen auf MarkRect
+ SDRREPFUNC_OBJ_SHEAR, // Winkel,Faktor, Referenz(%) bezogen auf MarkRect
+ SDRREPFUNC_OBJ_CROOKROTATE,
+ SDRREPFUNC_OBJ_CROOKSLANT,
+ SDRREPFUNC_OBJ_CROOKSTRETCH,
+ SDRREPFUNC_OBJ_ALIGN, // Hor/Vert/bBound
+ SDRREPFUNC_OBJ_SETATTRIBUTES,// ItemSet
+ SDRREPFUNC_OBJ_SETSTYLESHEET,// StyleSheet*
+ // Ohne Parameter
+ SDRREPFUNC_OBJ_DELETE,
+ SDRREPFUNC_OBJ_COMBINE_POLYPOLY,
+ SDRREPFUNC_OBJ_COMBINE_ONEPOLY,
+ SDRREPFUNC_OBJ_DISMANTLE_POLYS,
+ SDRREPFUNC_OBJ_DISMANTLE_LINES,
+ SDRREPFUNC_OBJ_CONVERTTOPOLY,
+ SDRREPFUNC_OBJ_CONVERTTOPATH,
+ SDRREPFUNC_OBJ_GROUP,
+ SDRREPFUNC_OBJ_UNGROUP,
+ SDRREPFUNC_OBJ_PUTTOTOP,
+ SDRREPFUNC_OBJ_PUTTOBTM,
+ SDRREPFUNC_OBJ_MOVTOTOP,
+ SDRREPFUNC_OBJ_MOVTOBTM,
+ SDRREPFUNC_OBJ_REVORDER,
+ SDRREPFUNC_OBJ_IMPORTMTF,
+ SDRREPFUNC_PAGE_DELETE,
+ SDRREPFUNC_LAST};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDTYPES_HXX
+
diff --git a/svx/inc/svx/svdundo.hxx b/svx/inc/svx/svdundo.hxx
new file mode 100644
index 000000000000..3ef31455b6e7
--- /dev/null
+++ b/svx/inc/svx/svdundo.hxx
@@ -0,0 +1,882 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDUNDO_HXX
+#define _SVDUNDO_HXX
+
+#ifndef _SOLAR_HRC
+#include <svl/solar.hrc>
+#endif
+#include <svl/undo.hxx>
+#include <tools/contnr.hxx>
+#include <tools/gen.hxx>
+#include <svx/svdtypes.hxx> // fuer enum RepeatFuncts
+#include <svx/svdsob.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SfxItemSet;
+class SfxStyleSheet;
+class SdrView;
+class SdrPageView;
+class SdrModel;
+class SdrObject;
+class SdrPage;
+class SdrObjList;
+class SdrLayer;
+class SdrLayerAdmin;
+class SdrObjGeoData;
+class OutlinerParaObject;
+
+//************************************************************
+// SdrUndoAction
+//
+// Abstrakte Basisklasse fuer alle UndoActions der DrawingEngine
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoAction : public SfxUndoAction
+{
+protected:
+ SdrModel& rMod;
+
+protected:
+ SdrUndoAction(SdrModel& rNewMod)
+ : rMod(rNewMod)
+ {}
+
+public:
+ TYPEINFO();
+ virtual BOOL CanRepeat(SfxRepeatTarget& rView) const;
+ virtual void Repeat(SfxRepeatTarget& rView);
+
+ virtual String GetRepeatComment(SfxRepeatTarget& rView) const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+ virtual void SdrRepeat(SdrView& rView);
+};
+
+//************************************************************
+// SdrUndoGroup
+//
+// Zusammenfassung beliebig vieler einzelner UndoActions zu einer einzigen
+// UndoAction. Beim Undo() werden die Einzelactions rueckwaets aufgerufen
+// (die zuletzt angehaengte zuerst...), beim Redo() dagegen entspricht die
+// Aufrufreihenfolge der Einfuegereihenfolge.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoGroup : public SdrUndoAction
+{
+protected:
+ Container aBuf;
+
+ // Beschreibung der Action, nicht expandiert (beinhaltet %O)
+ String aComment;
+ String aObjDescription;
+
+ SdrRepeatFunc eFunction;
+
+public:
+ SdrUndoGroup(SdrModel& rNewMod);
+ SdrUndoGroup(SdrModel& rNewMod,const String& rStr);
+ virtual ~SdrUndoGroup();
+
+ void Clear();
+ ULONG GetActionCount() const { return aBuf.Count(); }
+ SdrUndoAction* GetAction(ULONG nNum) const { return (SdrUndoAction*)(aBuf.GetObject(nNum)); }
+ void AddAction(SdrUndoAction* pAct);
+ void push_front( SdrUndoAction* pAct );
+
+ void SetComment(const String& rStr) { aComment=rStr; }
+ void SetObjDescription(const String& rStr) { aObjDescription=rStr; }
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+ virtual void SdrRepeat(SdrView& rView);
+ void SetRepeatFunction(SdrRepeatFunc eFunc) { eFunction=eFunc; }
+ SdrRepeatFunc GetRepeatFunction() const { return eFunction; }
+};
+
+//************************************************************
+// SdrUndoObj
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit Objekten zu tun haben.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoObj : public SdrUndoAction
+{
+protected:
+ SdrObject* pObj;
+
+protected:
+ SdrUndoObj(SdrObject& rNewObj);
+
+ void ImpTakeDescriptionStr(USHORT nStrCacheID, String& rStr, FASTBOOL bRepeat=FALSE) const;
+
+ static void GetDescriptionStringForObject( const SdrObject& _rForObject, USHORT nStrCacheID, String& rStr, FASTBOOL bRepeat = FALSE );
+
+ // #94278# new method for evtl. PageChange at UNDO/REDO
+ void ImpShowPageOfThisObject();
+};
+
+//************************************************************
+// SdrUndoAttrObj
+//
+// Aenderung der Objektattribute.
+// Action direkt vor dem Setzen der neuen Attribute konstruieren.
+// Auch fuer StyleSheets
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoAttrObj : public SdrUndoObj
+{
+protected:
+ SfxItemSet* pUndoSet;
+ SfxItemSet* pRedoSet;
+ SfxItemSet* pRepeatSet;
+
+ // oder besser den StyleSheetNamen merken?
+ SfxStyleSheet* pUndoStyleSheet;
+ SfxStyleSheet* pRedoStyleSheet;
+ SfxStyleSheet* pRepeatStyleSheet;
+ FASTBOOL bStyleSheet;
+ FASTBOOL bHaveToTakeRedoSet;
+
+ // Bei Zuweisung von TextItems auf ein Zeichenobjekt mit Text:
+ OutlinerParaObject* pTextUndo;
+ // #i8508#
+ // The text rescue mechanism needs also to be implemented for redo actions.
+ OutlinerParaObject* pTextRedo;
+
+ // Wenn sich um ein Gruppenobjekt handelt:
+ SdrUndoGroup* pUndoGroup;
+
+public:
+ SdrUndoAttrObj(SdrObject& rNewObj, FASTBOOL bStyleSheet1=FALSE, FASTBOOL bSaveText=FALSE);
+ virtual ~SdrUndoAttrObj();
+ void SetRepeatAttr(const SfxItemSet& rSet);
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoMoveObj
+//
+// Blosses verschieben eines Objektes.
+// Action direkt vor dem Verschieben konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoMoveObj : public SdrUndoObj
+{
+protected:
+ Size aDistance; // Entfernung, um die verschoben wird
+
+public:
+ SdrUndoMoveObj(SdrObject& rNewObj): SdrUndoObj(rNewObj) {}
+ SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),aDistance(rDist) {}
+
+ void SetDistance(const Size& rDist) { aDistance=rDist; }
+ const Size& GetDistance() const { return aDistance; }
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoGeoObj
+//
+// Aenderung der Geometrie eines Objektes.
+// Action direkt vor der geometrischen Transformation konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoGeoObj : public SdrUndoObj
+{
+protected:
+ SdrObjGeoData* pUndoGeo;
+ SdrObjGeoData* pRedoGeo;
+ // Wenn sich um ein Gruppenobjekt handelt:
+ SdrUndoGroup* pUndoGroup;
+
+public:
+ SdrUndoGeoObj(SdrObject& rNewObj);
+ virtual ~SdrUndoGeoObj();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+//************************************************************
+// SdrUndoObjList
+//
+// Manipulationen an einer ObjList: Neues Obj, DeleteObj, SetObjZLevel, Grouping, ...
+// Abstrakte Basisklasse.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoObjList : public SdrUndoObj {
+ bool bOwner;
+
+protected:
+ SdrObjList* pObjList;
+ SdrView* pView; // um bei ObjDel, Undo die
+ SdrPageView* pPageView; // Selektion widerherstellen zu koennen
+ UINT32 nOrdNum;
+ // Bei einem Undo/Redo findet moeglicherweise Uebereignung des Objektes
+ // statt. Im Dtor wird das Obj deleted, wenn bOwner==TRUE
+
+protected:
+ SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect = false);
+ virtual ~SdrUndoObjList();
+
+ void SetView(SdrView* pView1, SdrPageView* pPageView1) { pView=pView1; pPageView=pPageView1; }
+ bool IsOwner() { return bOwner; }
+ void SetOwner(bool bNew);
+};
+
+//************************************************************
+// SdrUndoRemoveObj
+//
+// Entfernen Objekts aus einer Objektliste. Innerhalb einer UndoGroup
+// mit korrospondierenden Inserts zu verwenden.
+// Action vor dem entfernen aus der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoRemoveObj : public SdrUndoObjList
+{
+public:
+ SdrUndoRemoveObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
+ : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//************************************************************
+// SdrUndoInsertObj
+//
+// Einfuegen Objekts in eine Objektliste. Innerhalb einer UndoGroup
+// mit korrospondierenden Removes zu verwenden.
+// Action vor dem entfernen aus der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoInsertObj : public SdrUndoObjList
+{
+public:
+ SdrUndoInsertObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
+ : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//************************************************************
+// SdrUndoDelObj
+//
+// Loeschen eines Objekts.
+// Action vor dem entfernen aus der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoDelObj : public SdrUndoRemoveObj
+{
+public:
+ SdrUndoDelObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
+ : SdrUndoRemoveObj(rNewObj,bOrdNumDirect) { SetOwner(TRUE); }
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoNewObj
+//
+// Einfuegen eines neuen Objektes.
+// Action nach dem einfuegen in die ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoNewObj : public SdrUndoInsertObj
+{
+public:
+ SdrUndoNewObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
+ : SdrUndoInsertObj(rNewObj,bOrdNumDirect) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+
+ static String GetComment( const SdrObject& _rForObject );
+};
+
+//************************************************************
+// SdrUndoReplaceObj
+//
+// Austausch eines Objektes.
+// Action vor dem Replace an der ObjList konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoReplaceObj : public SdrUndoObj
+{
+ bool bOldOwner;
+ bool bNewOwner;
+
+protected:
+ SdrObjList* pObjList;
+ UINT32 nOrdNum;
+ SdrObject* pNewObj;
+
+public:
+ SdrUndoReplaceObj(SdrObject& rOldObj1, SdrObject& rNewObj1, bool bOrdNumDirect = false);
+ virtual ~SdrUndoReplaceObj();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ bool IsNewOwner() { return bNewOwner; }
+ void SetNewOwner(bool bNew);
+
+ bool IsOldOwner() { return bOldOwner; }
+ void SetOldOwner(bool bNew);
+};
+
+//************************************************************
+// SdrUndoCopyObj
+//
+// Kopieren eines Objekts
+// Action nach dem einfuegen in die ObjList konstruieren.
+//
+//************************************************************
+
+class SdrUndoCopyObj : public SdrUndoNewObj
+{
+public:
+ SdrUndoCopyObj(SdrObject& rNewObj, FASTBOOL bOrdNumDirect=FALSE)
+ : SdrUndoNewObj(rNewObj,bOrdNumDirect) {}
+
+ virtual String GetComment() const;
+};
+
+//************************************************************
+// SdrUndoObjOrdNum
+//************************************************************
+
+class SdrUndoObjOrdNum : public SdrUndoObj
+{
+protected:
+ UINT32 nOldOrdNum;
+ UINT32 nNewOrdNum;
+
+public:
+ SdrUndoObjOrdNum(SdrObject& rNewObj, UINT32 nOldOrdNum1, UINT32 nNewOrdNum1);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// #i11702#
+
+class SVX_DLLPUBLIC SdrUndoObjectLayerChange : public SdrUndoObj
+{
+protected:
+ SdrLayerID maOldLayer;
+ SdrLayerID maNewLayer;
+
+public:
+ SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer);
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//************************************************************
+// SdrUndoObjSetText
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoObjSetText : public SdrUndoObj
+{
+protected:
+ OutlinerParaObject* pOldText;
+ OutlinerParaObject* pNewText;
+ FASTBOOL bNewTextAvailable;
+ BOOL bEmptyPresObj;
+ sal_Int32 mnText;
+
+public:
+ SdrUndoObjSetText(SdrObject& rNewObj, sal_Int32 nText );
+ virtual ~SdrUndoObjSetText();
+
+ FASTBOOL IsDifferent() const { return pOldText!=pNewText; }
+ void AfterSetText();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+// --> OD 2009-07-09 #i73249#
+class SdrUndoObjStrAttr : public SdrUndoObj
+{
+public:
+ enum ObjStrAttrType
+ {
+ OBJ_NAME,
+ OBJ_TITLE,
+ OBJ_DESCRIPTION
+ };
+
+protected:
+ const ObjStrAttrType meObjStrAttr;
+ const String msOldStr;
+ const String msNewStr;
+
+public:
+ SdrUndoObjStrAttr( SdrObject& rNewObj,
+ const ObjStrAttrType eObjStrAttr,
+ const String& sOldStr,
+ const String& sNewStr);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+// <--
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@ @@@@ @@ @@ @@@@@ @@@@@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@@@@@ @@@@ @@@@ @@@@@
+// @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@ @@ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// SdrUndoLayer
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit SdrLayer zu tun haben.
+//
+//************************************************************
+
+class SdrUndoLayer : public SdrUndoAction
+{
+protected:
+ SdrLayer* pLayer;
+ SdrLayerAdmin* pLayerAdmin;
+ USHORT nNum;
+ FASTBOOL bItsMine;
+
+protected:
+ SdrUndoLayer(USHORT nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
+ virtual ~SdrUndoLayer();
+};
+
+//************************************************************
+// SdrUndoNewLayer
+//
+// Einfuegen eines neuen Layer. Action nach dem Einfuegen konstruieren.
+//
+//************************************************************
+
+class SdrUndoNewLayer : public SdrUndoLayer
+{
+public:
+ SdrUndoNewLayer(USHORT nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
+ : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+//************************************************************
+// SdrUndoDelLayer
+//
+// Loeschen eines Layer. Action vor dem Remove konstruieren
+//
+//************************************************************
+
+class SdrUndoDelLayer : public SdrUndoLayer
+{
+public:
+ SdrUndoDelLayer(USHORT nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
+ : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) { bItsMine=TRUE; }
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+//************************************************************
+// SdrUndoMoveLayer
+//
+// Verschieben eines Layer. Action vor dem Verschieben konstruieren.
+//
+//************************************************************
+
+class SdrUndoMoveLayer : public SdrUndoLayer
+{
+ USHORT nNeuPos;
+
+public:
+ SdrUndoMoveLayer(USHORT nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, USHORT nNeuPos1)
+ : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel), nNeuPos(nNeuPos1) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@@@ @@@@ @@@@@ @@@@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@
+// @@@@@ @@@@@@ @@ @@@ @@@@ @@@@
+// @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@@@@ @@@@@ @@@@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// SdrUndoPage
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit SdrPages zu tun haben.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoPage : public SdrUndoAction
+{
+protected:
+ SdrPage& mrPage;
+
+protected:
+ void ImpInsertPage(USHORT nNum);
+ void ImpRemovePage(USHORT nNum);
+ void ImpMovePage(USHORT nOldNum, USHORT nNewNum);
+
+protected:
+ SdrUndoPage(SdrPage& rNewPg);
+
+ void ImpTakeDescriptionStr(USHORT nStrCacheID, String& rStr, USHORT n=0, FASTBOOL bRepeat=FALSE) const;
+};
+
+//************************************************************
+// SdrUndoPageList
+//
+// Manipulationen an einer PageList: Neue Page, DeletePage, MovePage(ChangePageNum)
+// Abstrakte Basisklasse.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoPageList : public SdrUndoPage
+{
+protected:
+ USHORT nPageNum;
+
+ // Bei einem Undo/Redo findet moeglicherweise Uebereignung der Page
+ // statt. Im Dtor wird die Page deleted, wenn bItsMine==TRUE
+ FASTBOOL bItsMine;
+
+protected:
+ SdrUndoPageList(SdrPage& rNewPg);
+ virtual ~SdrUndoPageList();
+};
+
+//************************************************************
+// SdrUndoDelPage
+//
+// Loeschen einer Page.
+// Action vor dem entfernen aus der List konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoDelPage : public SdrUndoPageList
+{
+ // Beim loeschen einer MasterPage merke ich mir in dieser UndoGroup
+ // alle Beziehungen der Zeichenseiten zu der geloeschten MasterPage
+ SdrUndoGroup* pUndoGroup;
+
+public:
+ SdrUndoDelPage(SdrPage& rNewPg);
+ virtual ~SdrUndoDelPage();
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoNewPage
+//
+// Einfuegen einer neuen Page.
+// Action nach dem einfuegen in die Liste konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoNewPage : public SdrUndoPageList
+{
+public:
+ SdrUndoNewPage(SdrPage& rNewPg): SdrUndoPageList(rNewPg) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+//************************************************************
+// SdrUndoCopyPage
+//
+// Kopieren einer Page
+// Action nach dem einfuegen in die Liste konstruieren.
+//
+//************************************************************
+
+class SdrUndoCopyPage : public SdrUndoNewPage
+{
+public:
+ SdrUndoCopyPage(SdrPage& rNewPg): SdrUndoNewPage(rNewPg) {}
+
+ virtual String GetComment() const;
+ virtual String GetSdrRepeatComment(SdrView& rView) const;
+
+ virtual void SdrRepeat(SdrView& rView);
+ virtual bool CanSdrRepeat(SdrView& rView) const;
+};
+
+//************************************************************
+// SdrUndoSetPageNum
+//
+// Verschieben der Page innerhalb der Liste
+// Action vor dem Verschieben der Page konstruieren.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoSetPageNum : public SdrUndoPage
+{
+protected:
+ USHORT nOldPageNum;
+ USHORT nNewPageNum;
+
+public:
+ SdrUndoSetPageNum(SdrPage& rNewPg, USHORT nOldPageNum1, USHORT nNewPageNum1)
+ : SdrUndoPage(rNewPg),nOldPageNum(nOldPageNum1),nNewPageNum(nNewPageNum1) {}
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@ @@ @@@@ @@@@ @@@@@@ @@@@@ @@@@@ @@@@@ @@@@ @@@@ @@@@@ @@@@
+// @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@@@@@@ @@@@@@ @@@@ @@ @@@@ @@@@@ @@@@@ @@@@@@ @@ @@@ @@@@ @@@@
+// @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@@@ @@ @@@@@ @@ @@ @@ @@ @@ @@@@@ @@@@@ @@@@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// SdrUndoPageMasterPage
+//
+// Abstrakte Basisklasse fuer alle UndoActions die mit
+// MasterPage-Beziehungen zu tun haben.
+//
+//************************************************************
+
+class SdrUndoPageMasterPage : public SdrUndoPage
+{
+protected:
+ sal_Bool mbOldHadMasterPage;
+ SetOfByte maOldSet;
+ sal_uInt16 maOldMasterPageNumber;
+
+protected:
+ SdrUndoPageMasterPage(SdrPage& rChangedPage);
+
+public:
+ SVX_DLLPUBLIC virtual ~SdrUndoPageMasterPage();
+};
+
+//************************************************************
+// SdrUndoPageRemoveMasterPage
+//
+// Entfernen einer MasterPage von einer Zeichenseite.
+// Action vor dem Entfernen des MasterPageDescriptors erzeugen.
+//
+//************************************************************
+
+class SdrUndoPageRemoveMasterPage : public SdrUndoPageMasterPage
+{
+public:
+ SdrUndoPageRemoveMasterPage(SdrPage& rChangedPage);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+//************************************************************
+// SdrUndoPageChangeMasterPage
+//
+// Aenderung des MasterPageDescriptors (z.B. Aendern der VisibleLayer).
+// Action vor der Aenderung am MasterPageDescriptor erzeugen.
+//
+//************************************************************
+
+class SVX_DLLPUBLIC SdrUndoPageChangeMasterPage : public SdrUndoPageMasterPage
+{
+protected:
+ sal_Bool mbNewHadMasterPage;
+ SetOfByte maNewSet;
+ sal_uInt16 maNewMasterPageNumber;
+
+public:
+ SdrUndoPageChangeMasterPage(SdrPage& rChangedPage);
+
+ virtual void Undo();
+ virtual void Redo();
+
+ virtual String GetComment() const;
+};
+
+///////////////////////////////////////////////////////////////////////
+
+/** the SdrUndoFactory can be set and retrieved from the SdrModel.
+ It is used by the drawing layer implementations to create undo actions.
+ It can be used by applications to create application specific undo actions.
+*/
+class SVX_DLLPUBLIC SdrUndoFactory
+{
+public:
+ // shapes
+ virtual ~SdrUndoFactory();
+ virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject );
+ virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject, const Size& rDist );
+ virtual SdrUndoAction* CreateUndoGeoObject( SdrObject& rObject );
+ virtual SdrUndoAction* CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false );
+ virtual SdrUndoAction* CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false);
+ virtual SdrUndoAction* CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false);
+
+ virtual SdrUndoAction* CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1);
+
+ virtual SdrUndoAction* CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false );
+ virtual SdrUndoAction* CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer );
+ virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText );
+
+ // --> OD 2009-07-09 #i73249#
+ virtual SdrUndoAction* CreateUndoObjectStrAttr( SdrObject& rObject,
+ SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType,
+ String sOldStr,
+ String sNewStr );
+ // <--
+
+ // layer
+ virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
+ virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
+ virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1);
+
+ // page
+ virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage);
+ virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage);
+ virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage);
+ virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1);
+
+ // master page
+ virtual SdrUndoAction* CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage);
+ virtual SdrUndoAction* CreateUndoPageChangeMasterPage(SdrPage& rChangedPage);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif //_SVDUNDO_HXX
+
diff --git a/svx/inc/svx/svdview.hxx b/svx/inc/svx/svdview.hxx
new file mode 100644
index 000000000000..66fd720db37a
--- /dev/null
+++ b/svx/inc/svx/svdview.hxx
@@ -0,0 +1,339 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDVIEW_HXX
+#define _SVDVIEW_HXX
+
+// HACK to avoid too deep includes and to have some
+// levels free in svdmark itself (MS compiler include depth limit)
+#include <svx/svdhdl.hxx>
+#include <tools/weakbase.hxx>
+#include <svtools/accessibilityoptions.hxx>
+#include "svx/svxdllapi.h"
+#include <svx/svdcrtv.hxx>
+#include <unotools/options.hxx>
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Klassenhierarchie der View:
+// SfxListener
+// SdrPaintView PntV Action ModChg Attr Notify
+// SdrSnapView SnpV Action
+//
+// SdrMarkView MrkV Action MrkChg ModChg Notify
+//
+// SdrEditView EdtV MrkChg ModChg Attr
+// SdrPolyEditView PoEV
+// SdrGlueEditView GlEV
+// SdrObjEditView EdxV Action ModChg Attr Notify
+//
+// SdrExchangeView XcgV
+// SdrDragView DrgV Action
+//
+// SdrCreateView CrtV Action
+// SdrView View
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class SvxURLField;
+
+//************************************************************
+// Defines
+//************************************************************
+
+enum SdrViewContext {SDRCONTEXT_STANDARD,
+ SDRCONTEXT_POINTEDIT,
+ SDRCONTEXT_GLUEPOINTEDIT,
+ SDRCONTEXT_GRAPHIC,
+ SDRCONTEXT_MEDIA,
+ SDRCONTEXT_TABLE};
+
+enum SdrEventKind {SDREVENT_NONE,
+ SDREVENT_TEXTEDIT,
+ SDREVENT_MOVACTION,
+ SDREVENT_ENDACTION,
+ SDREVENT_BCKACTION,
+ SDREVENT_BRKACTION,
+ SDREVENT_ENDCREATE,
+ SDREVENT_ENDDRAG,
+ SDREVENT_MARKOBJ,
+ SDREVENT_MARKPOINT,
+ SDREVENT_MARKGLUEPOINT,
+ SDREVENT_BEGMARK,
+ SDREVENT_BEGINSOBJPOINT,
+ SDREVENT_ENDINSOBJPOINT,
+ SDREVENT_BEGINSGLUEPOINT,
+ SDREVENT_BEGDRAGHELPLINE,
+ SDREVENT_BEGDRAGOBJ,
+ SDREVENT_BEGCREATEOBJ,
+ SDREVENT_BEGMACROOBJ,
+ SDREVENT_BEGTEXTEDIT,
+ SDREVENT_ENDMARK,
+ SDREVENT_BRKMARK,
+ SDREVENT_EXECUTEURL};
+
+#define SDRMOUSEBUTTONDOWN 1
+#define SDRMOUSEMOVE 2
+#define SDRMOUSEBUTTONUP 3
+
+//************************************************************
+// Hilfsklasse SdrViewEvent
+//************************************************************
+
+struct SVX_DLLPUBLIC SdrViewEvent
+{
+ SdrHdl* pHdl;
+ SdrObject* pObj;
+ SdrObject* pRootObj; // Dieses Markieren bei SdrBeginTextEdit
+ SdrPageView* pPV;
+ const SvxURLField* pURLField;
+
+ Point aLogicPos;
+ SdrHitKind eHit;
+ SdrEventKind eEvent;
+ SdrHdlKind eHdlKind;
+ SdrCreateCmd eEndCreateCmd; // auch fuer EndInsPoint
+
+ UINT16 nMouseClicks;
+ UINT16 nMouseMode;
+ UINT16 nMouseCode;
+ UINT16 nHlplIdx;
+ UINT16 nGlueId;
+
+ unsigned bMouseDown : 1;
+ unsigned bMouseUp : 1;
+ unsigned bDoubleHdlSize : 1; // Doppelte Handlegroesse wg. TextEdit
+ unsigned bIsAction : 1; // Action ist aktiv
+ unsigned bIsTextEdit : 1; // TextEdit laeuft zur Zeit
+ unsigned bTextEditHit : 1; // offene OutlinerView getroffen
+ unsigned bAddMark : 1;
+ unsigned bUnmark : 1;
+ unsigned bPrevNextMark : 1;
+ unsigned bMarkPrev : 1;
+ unsigned bInsPointNewObj : 1;
+ unsigned bDragWithCopy : 1;
+ unsigned bCaptureMouse : 1;
+ unsigned bReleaseMouse : 1;
+
+public:
+ SdrViewEvent();
+ ~SdrViewEvent();
+
+ // nEventKind ist SDRMOUSEBUTTONDOWN, SDRMOUSEMOVE oder SDRMOUSEBUTTONUP
+ void SetMouseEvent(const MouseEvent& rMEvt, USHORT nEventKind);
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// helper class for all D&D overlays
+
+class SVX_DLLPUBLIC SdrDropMarkerOverlay
+{
+ // The OverlayObjects
+ ::sdr::overlay::OverlayObjectList maObjects;
+
+ void ImplCreateOverlays(const SdrView& rView, const basegfx::B2DPolyPolygon& rPolyPolygon);
+
+public:
+ SdrDropMarkerOverlay(const SdrView& rView, const SdrObject& rObject);
+ SdrDropMarkerOverlay(const SdrView& rView, const Rectangle& rRectangle);
+ SdrDropMarkerOverlay(const SdrView& rView, const Point& rStart, const Point& rEnd);
+ ~SdrDropMarkerOverlay();
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@ @@ @@ @@@@@ @@ @@
+// @@ @@ @@ @@ @@ @@
+// @@ @@ @@ @@ @@ @ @@
+// @@@@@ @@ @@@@ @@@@@@@
+// @@@ @@ @@ @@@@@@@
+// @@@ @@ @@ @@@ @@@
+// @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrView: public SdrCreateView, public tools::WeakBase< SdrView >
+{
+ friend class SdrPageView;
+
+ unsigned bNoExtendedMouseDispatcher : 1;
+ unsigned bNoExtendedKeyDispatcher : 1;
+ unsigned bNoExtendedCommandDispatcher : 1;
+ unsigned bTextEditOnObjectsWithoutTextIfTextTool : 1;
+ unsigned mbMasterPagePaintCaching : 1;
+
+protected:
+ SvtAccessibilityOptions maAccessibilityOptions;
+
+public:
+ TYPEINFO();
+ SdrView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+ virtual ~SdrView();
+
+ // Default sind alle Dispatcher aktiviert. Will die App z.B. fuer
+ // Sonderbehandlungen im MouseDispatcher eingreifen, so muss sie
+ // den erweiterten MouseDispather mit unten stehender Methode deaktivieren
+ // und selbst nachimplementieren. Beispiel fuer MouseButtonDown:
+ // SdrViewEvent aVEvt;
+ // SdrHitKind eHit=pSdrView->PickAnything(rMEvt,SDRMOUSEBUTTONDOWN,aVEvt);
+ // ... hier Applikationsspezifischer Eingriff ...
+ // pSdrView->DoMouseEvent(aVEvt);
+ // SetPointer(GetPreferedPointer(...))
+ // CaptureMouse(...)
+ void EnableExtendedMouseEventDispatcher(BOOL bOn) { bNoExtendedMouseDispatcher = !bOn; }
+ BOOL IsExtendedMouseEventDispatcherEnabled() const { return bNoExtendedMouseDispatcher; }
+
+ void EnableExtendedKeyInputDispatcher(BOOL bOn) { bNoExtendedKeyDispatcher=!bOn; }
+ BOOL IsExtendedKeyInputDispatcherEnabled() const { return bNoExtendedKeyDispatcher; }
+
+ void EnableExtendedCommandEventDispatcher(BOOL bOn) { bNoExtendedCommandDispatcher=!bOn; }
+ BOOL IsExtendedCommandEventDispatcherEnabled() const { return bNoExtendedCommandDispatcher; }
+
+ void EnableTextEditOnObjectsWithoutTextIfTextTool(BOOL bOn) { bTextEditOnObjectsWithoutTextIfTextTool=bOn; }
+ BOOL IsEnableTextEditOnObjectsWithoutTextIfTextToolEnabled() const { return bTextEditOnObjectsWithoutTextIfTextTool; }
+
+ void SetMasterPagePaintCaching(sal_Bool bOn);
+ sal_Bool IsMasterPagePaintCaching() const { return mbMasterPagePaintCaching; }
+
+ BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt, Window* pWin);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt, Window* pWin);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
+ virtual BOOL Command(const CommandEvent& rCEvt, Window* pWin);
+
+ virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
+
+ BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll=FALSE) { return SdrCreateView::SetAttributes(rSet,bReplaceAll); }
+ BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr=FALSE) { return SdrCreateView::SetStyleSheet(pStyleSheet,bDontRemoveHardAttr); }
+
+ /* new interface src537 */
+ BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
+
+ SfxStyleSheet* GetStyleSheet() const;
+
+ // unvollstaendige Implementation:
+ // Das OutputDevice ist notwendig, damit ich die HandleSize ermitteln kann.
+ // Bei NULL wird das 1. angemeldete Win verwendet.
+ Pointer GetPreferedPointer(const Point& rMousePos, const OutputDevice* pOut, USHORT nModifier=0, BOOL bLeftDown=FALSE) const;
+ SdrHitKind PickAnything(const MouseEvent& rMEvt, USHORT nMouseDownOrMoveOrUp, SdrViewEvent& rVEvt) const;
+ SdrHitKind PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) const;
+ BOOL DoMouseEvent(const SdrViewEvent& rVEvt);
+ virtual SdrViewContext GetContext() const;
+
+ // Die Methoden beruecksichtigen den jeweiligen Kontex:
+ // - Einfaches Zeichnen
+ // - Punktbearbeitungs-Mode
+ // - Klebepunkt-Editmode
+ // - TextEdit
+ // - ... to be continued
+ BOOL IsMarkPossible() const;
+ void MarkAll();
+ void UnmarkAll();
+ BOOL IsAllMarked() const;
+ BOOL IsAllMarkPrevNextPossible() const; // das geht naemlich nicht bei TextEdit!
+ BOOL MarkNext(BOOL bPrev=FALSE);
+ BOOL MarkNext(const Point& rPnt, BOOL bPrev=FALSE);
+
+ const Rectangle& GetMarkedRect() const;
+ void SetMarkedRect(const Rectangle& rRect);
+
+ virtual void DeleteMarked();
+ BOOL IsDeleteMarkedPossible() const;
+ BOOL IsDeletePossible() const { return IsDeleteMarkedPossible(); }
+
+ // Markieren von Objekten, Polygonpunkten oder Klebepunkten (je nach View-
+ // Kontext) durch Aufziehen eines Selektionsrahmens.
+ // bAddMark=TRUE: zur bestehenden Selektion hinzumarkieren (->Shift)
+ // bUnmark=TRUE: Bereits selektierte Objekte/Punkte/Klebepunkte die innerhalb
+ // des aufgezogenen Rahmens liegen werden deselektiert.
+ BOOL BegMark(const Point& rPnt, BOOL bAddMark=FALSE, BOOL bUnmark=FALSE);
+
+ // Folgende Actions sind moeglich:
+ // - ObjectCreating
+ // - ObjectMarking
+ // - Object-specific dragging
+ // - General dragging
+ // und mehr...
+ String GetStatusText();
+
+ SvtAccessibilityOptions& getAccessibilityOptions();
+
+ virtual void onAccessibilityOptionsChanged();
+};
+
+#endif //_SVDVIEW_HXX
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Die App macht sich zunaechst ein SdrModel.
+// Anschliessend oeffnet sie ein Win und erzeugt dann eine SdrView.
+// An der SdrView meldet sie dann mit der Methode ShowSdrPage() eine Seite an.
+// Eine SdrView kann in beliebig vielen Fenstern gleichzeitig angezeigt werden.
+// Intern:
+// Eine SdrView kann beliebig viele Seiten gleichzeitig anzeigen. Seiten
+// werden an- und abgemeldet mit ShowSdrPage()/HideSdrPage(). Fuer jede angemeldete
+// Seite wird eine SdrPageView-Instanz im Container aPages angelegt. Bei
+// gleichzeitiger Anzeige mehrerer Seiten ist darauf zu achten, dass der Offset-
+// Parameter von ShowSdrPage() der Seitengroesse angepasst ist, da sich sonst die
+// Seiten ueberlappen koennten.
+//
+// Elementare Methoden:
+// ~~~~~~~~~~~~~~~~~~~~
+// Einfache Events:
+// ~~~~~~~~~~~~~~~~
+// BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
+// BOOL MouseButtonDown(const MouseEvent& rMEvt, Window* pWin);
+// BOOL MouseButtonUp(const MouseEvent& rMEvt, Window* pWin);
+// BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
+// BOOL Command(const CommandEvent& rCEvt, Window* pWin);
+//
+// Exchange (Clipboard derzeit noch ohne SdrPrivateData):
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// BOOL Cut(ULONG nFormat=SDR_ANYFORMAT);
+// BOOL Yank(ULONG nFormat=SDR_ANYFORMAT);
+// BOOL Paste(Window* pWin=NULL, ULONG nFormat=SDR_ANYFORMAT);
+//
+// SfxItems:
+// ~~~~~~~~~
+// BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
+// BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
+// SfxStyleSheet* GetStyleSheet() const;
+// BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
+//
+// Sonstiges:
+// ~~~~~~~~~~
+// Pointer GetPreferedPointer(const Point& rMousePos, const OutputDevice* pOut, USHORT nTol=0) const;
+// String GetStatusText();
+//
+///////////////////////////////////////////////////////////////////////////////////////////////// */
+
diff --git a/svx/inc/svx/svdxcgv.hxx b/svx/inc/svx/svdxcgv.hxx
new file mode 100644
index 000000000000..9bdd6e005cc3
--- /dev/null
+++ b/svx/inc/svx/svdxcgv.hxx
@@ -0,0 +1,162 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVDXCGV_HXX
+#define _SVDXCGV_HXX
+
+#include <svx/svdedxv.hxx>
+
+#ifndef _GDIMTF_HXX //autogen
+#include <vcl/gdimtf.hxx>
+#endif
+#include "svx/svxdllapi.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// @@@@@ @@ @@ @@@@ @@ @@ @@@@ @@ @@ @@@@ @@@@@ @@ @@ @@ @@@@@ @@ @@
+// @@ @@@ @@@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@
+// @@ @@@@@ @@ @@ @@ @@ @@ @@@@@@ @@ @@ @@ @@ @@ @@ @@ @ @@
+// @@@@ @@@ @@ @@@@@@ @@@@@@ @@@@@@ @@ @@@ @@@@ @@@@@ @@ @@@@ @@@@@@@
+// @@ @@@@@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@ @@@ @@ @@ @@@@@@@
+// @@ @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@ @@ @@@ @@@
+// @@@@@ @@ @@ @@@@ @@ @@ @@ @@ @@ @@ @@@@@ @@@@@ @ @@ @@@@@ @@ @@
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC SdrExchangeView: public SdrObjEditView
+{
+ friend class SdrPageView;
+
+protected:
+
+ void ImpGetPasteObjList(Point& rPos, SdrObjList*& rpLst);
+ void ImpPasteObject(SdrObject* pObj, SdrObjList& rLst, const Point& rCenter, const Size& rSiz, const MapMode& rMap, UINT32 nOptions);
+ BOOL ImpGetPasteLayer(const SdrObjList* pObjList, SdrLayerID& rLayer) const;
+ Point GetPastePos(SdrObjList* pLst, OutputDevice* pOut=NULL);
+
+ // liefert True, wenn rPt geaendert wurde
+ BOOL ImpLimitToWorkArea(Point& rPt) const;
+
+protected:
+ // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
+ SdrExchangeView(SdrModel* pModel1, OutputDevice* pOut = 0L);
+
+public:
+ // Alle markierten Objekte auf dem angegebenen OutputDevice ausgeben.
+ virtual void DrawMarkedObj(OutputDevice& rOut) const;
+
+ // Z.B. fuer's Clipboard, Drag&Drop, ...
+ // Alle markierten Objekte in ein Metafile stecken. Z.Zt. noch etwas
+ // buggee (Offset..., Fremdgrafikobjekte (SdrGrafObj), Virtuelle
+ // Objektkopien (SdrVirtObj) mit Ankerpos<>(0,0)).
+ virtual GDIMetaFile GetMarkedObjMetaFile(BOOL bNoVDevIfOneMtfMarked=FALSE) const;
+
+ // Alle markierten Objekte auf eine Bitmap malen. Diese hat die Farbtiefe
+ // und Aufloesung des Bildschirms.
+ virtual Bitmap GetMarkedObjBitmap(BOOL bNoVDevIfOneBmpMarked=FALSE) const;
+
+ // Alle markierten Objekte in ein neues Model kopieren. Dieses neue Model
+ // hat dann genau eine Page. Das Flag PageNotValid an diesem Model ist
+ // gesetzt. Daran ist zu erkennen, dass nur die Objekte der Page Gueltikeit
+ // haben, die Page sebst jedoch nicht (Seitengroesse, Raender). Das neue
+ // Model wird auf dem Heap erzeugt und wird an den Aufrufer dieser Methode
+ // uebergeben. Dieser hat es dann spaeter zu entsorgen.
+ // Beim einfuegen der markierten Objekte in die eine Page des neuen Model
+ // findet ein Merging der seitenlokalen Layer statt. Sollte kein Platz mehr
+ // fuer weitere seitenlokale Layer sein, wird den entsprechenden Objekten
+ // der Default-Layer zugewiesen (Layer 0, (dokumentglobaler Standardlayer).
+ virtual SdrModel* GetMarkedObjModel() const;
+
+ GDIMetaFile GetAllMarkedMetaFile(BOOL bNoVDevIfOneMtfMarked=FALSE) const { return GetMarkedObjMetaFile(bNoVDevIfOneMtfMarked); }
+ Bitmap GetAllMarkedBitmap(BOOL bNoVDevIfOneBmpMarked=FALSE) const { return GetMarkedObjBitmap(bNoVDevIfOneBmpMarked); }
+ Graphic GetAllMarkedGraphic() const;
+ SdrModel* GetAllMarkedModel() const { return GetMarkedObjModel(); }
+
+ /** Generate a Graphic for the given draw object in the given model
+
+ @param pModel
+ Must not be NULL. Denotes the draw model the object is a part
+ of.
+
+ @param pObj
+ The object (can also be a group object) to retrieve a Graphic
+ for. Must not be NULL.
+
+ @return a graphical representation of the given object, as it
+ appears on screen (e.g. with rotation, if any, applied).
+ */
+ static Graphic GetObjGraphic( const SdrModel* pModel, const SdrObject* pObj );
+
+ // Bestimmung des View-Mittelpunktes, z.B. zum Pasten
+ Point GetViewCenter(const OutputDevice* pOut=NULL) const;
+
+ // Bei allen Paste-Methoden werden die neuen Draw-Objekte markiert.
+ // Wird der Parameter bAddMark auf TRUE gesetzt, so werden die neuen
+ // DrawObjekte zu einer bereits bestehenden Selektion "hinzumarkiert".
+ // Dieser Fall ist fuer Drag&Drop mit mehreren Items gedacht.
+ // Die Methoden mit Point-Parameter fuegen neue Objekte zentriert an
+ // dieser Position ein, die anderen zentriert am 1.OutputDevice der View.
+ // Ist der Parameter pPg gesetzt, werden die Objekte and dieser Seite
+ // eingefuegt. Die Positionierung (rPos bzw. Zentrierung) bezieht sich
+ // dann nichtmehr auf die View sondern auf die Page.
+ // Hinweis: SdrObjList ist Basisklasse von SdrPage.
+ // Die Methoden liefern TRUE, wenn die Objekte erfolgreich erzeugt und
+ // eingefuegt wurden. Bei pLst=FALSE und kein TextEdit aktiv kann man
+ // sich dann auch darauf verlassen, dass diese an der View markiert sind.
+ // Andernfalls erfolgt die Markierung nur, wenn pLst z.Zt. auch an der
+ // View angezeigt wird.
+ // Gueltige Werte fuer nOptions sind SDRINSERT_DONTMARK und
+ // SDRINSERT_ADDMARK (siehe svdedtv.hxx).
+ BOOL Paste(const GDIMetaFile& rMtf, SdrObjList* pLst=NULL, OutputDevice* pOut=NULL, UINT32 nOptions=0) { return Paste(rMtf,GetPastePos(pLst,pOut),pLst,nOptions); }
+ BOOL Paste(const GDIMetaFile& rMtf, const Point& rPos, SdrObjList* pLst=NULL, UINT32 nOptions=0);
+ BOOL Paste(const Bitmap& rBmp, SdrObjList* pLst=NULL, OutputDevice* pOut=NULL, UINT32 nOptions=0) { return Paste(rBmp,GetPastePos(pLst,pOut),pLst,nOptions); }
+ BOOL Paste(const Bitmap& rBmp, const Point& rPos, SdrObjList* pLst=NULL, UINT32 nOptions=0);
+ BOOL Paste(const SdrModel& rMod, SdrObjList* pLst=NULL, OutputDevice* pOut=NULL, UINT32 nOptions=0) { return Paste(rMod,GetPastePos(pLst,pOut),pLst,nOptions); }
+ virtual BOOL Paste(const SdrModel& rMod, const Point& rPos, SdrObjList* pLst=NULL, UINT32 nOptions=0);
+ BOOL Paste(const String& rStr, SdrObjList* pLst=NULL, OutputDevice* pOut=NULL, UINT32 nOptions=0) { return Paste(rStr,GetPastePos(pLst,pOut),pLst,nOptions); }
+ BOOL Paste(const String& rStr, const Point& rPos, SdrObjList* pLst=NULL, UINT32 nOptions=0);
+ // der USHORT eFormat nimmt Werte des enum EETextFormat entgegen
+ BOOL Paste(SvStream& rInput, const String& rBaseURL, USHORT eFormat, SdrObjList* pLst=NULL, OutputDevice* pOut=NULL, UINT32 nOptions=0) { return Paste(rInput,rBaseURL,eFormat,GetPastePos(pLst,pOut),pLst,nOptions); }
+ BOOL Paste(SvStream& rInput, const String& rBaseURL, USHORT eFormat, const Point& rPos, SdrObjList* pLst=NULL, UINT32 nOptions=0);
+
+ // Feststellen, ob ein bestimmtes Format ueber Drag&Drop bzw. ueber's
+ // Clipboard angenommen werden kann.
+ BOOL IsExchangeFormatSupported(ULONG nFormat) const;
+
+ BOOL Cut( ULONG nFormat = SDR_ANYFORMAT );
+ void CutMarked( ULONG nFormat=SDR_ANYFORMAT );
+
+ BOOL Yank( ULONG nFormat = SDR_ANYFORMAT );
+ void YankMarked( ULONG nFormat=SDR_ANYFORMAT );
+
+ BOOL Paste( Window* pWin = NULL, ULONG nFormat = SDR_ANYFORMAT );
+ BOOL PasteClipboard( OutputDevice* pOut = NULL, ULONG nFormat = SDR_ANYFORMAT, UINT32 nOptions = 0 );
+};
+
+#endif //_SVDXCGV_HXX
diff --git a/svx/inc/svx/svx3ditems.hxx b/svx/inc/svx/svx3ditems.hxx
new file mode 100644
index 000000000000..e39c39f3e513
--- /dev/null
+++ b/svx/inc/svx/svx3ditems.hxx
@@ -0,0 +1,377 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX3DITEMS_HXX
+#define _SVX3DITEMS_HXX
+
+#include <svl/intitem.hxx>
+#include <svl/eitem.hxx>
+
+
+#include <editeng/colritem.hxx>
+#include <svx/e3ditem.hxx>
+#include <svx/viewpt3d.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+// Svx3D _3DOBJ_ Items
+class SVX_DLLPUBLIC Svx3DPercentDiagonalItem : public SfxUInt16Item {
+public:
+ Svx3DPercentDiagonalItem(sal_uInt16 nVal = 10);
+};
+
+class Svx3DBackscaleItem : public SfxUInt16Item {
+public:
+ SVX_DLLPUBLIC Svx3DBackscaleItem(sal_uInt16 nVal = 100);
+};
+
+class Svx3DDepthItem : public SfxUInt32Item {
+public:
+ SVX_DLLPUBLIC Svx3DDepthItem(sal_uInt32 nVal = 1000);
+};
+
+class SVX_DLLPUBLIC Svx3DHorizontalSegmentsItem : public SfxUInt32Item {
+public:
+ Svx3DHorizontalSegmentsItem(sal_uInt32 nVal = 24);
+};
+
+class Svx3DVerticalSegmentsItem : public SfxUInt32Item {
+public:
+ SVX_DLLPUBLIC Svx3DVerticalSegmentsItem(sal_uInt32 nVal = 24);
+};
+
+class Svx3DEndAngleItem : public SfxUInt32Item {
+public:
+ SVX_DLLPUBLIC Svx3DEndAngleItem(sal_uInt32 nVal = 3600);
+};
+
+class SVX_DLLPUBLIC Svx3DDoubleSidedItem : public SfxBoolItem {
+public:
+ Svx3DDoubleSidedItem(BOOL bVal = 0);
+};
+
+// #i28528#
+// Added extra Item (Bool) for chart2 to be able to show reduced line geometry
+class Svx3DReducedLineGeometryItem : public SfxBoolItem {
+public:
+ Svx3DReducedLineGeometryItem(BOOL bVal = 0);
+ virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nItemVersion) const;
+ virtual sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion) const;
+};
+
+class SVX_DLLPUBLIC Svx3DNormalsKindItem : public SfxUInt16Item {
+public:
+ Svx3DNormalsKindItem(sal_uInt16 nVal = 0);
+
+ // use drawing::NormalsKind
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+class Svx3DNormalsInvertItem : public SfxBoolItem {
+public:
+ SVX_DLLPUBLIC Svx3DNormalsInvertItem(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DTextureProjectionXItem : public SfxUInt16Item {
+public:
+ Svx3DTextureProjectionXItem(sal_uInt16 nVal = 0);
+
+ // use drawing::TextureProjectionMode
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+class SVX_DLLPUBLIC Svx3DTextureProjectionYItem : public SfxUInt16Item {
+public:
+ Svx3DTextureProjectionYItem(sal_uInt16 nVal = 0);
+
+ // use drawing::TextureProjectionMode
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+class Svx3DShadow3DItem : public SfxBoolItem {
+public:
+ SVX_DLLPUBLIC Svx3DShadow3DItem(BOOL bVal = 0);
+};
+
+class Svx3DMaterialColorItem : public SvxColorItem {
+public:
+ Svx3DMaterialColorItem(const Color& rCol = Color(0x0000b8ff));
+};
+
+class Svx3DMaterialEmissionItem : public SvxColorItem {
+public:
+ SVX_DLLPUBLIC Svx3DMaterialEmissionItem(const Color& rCol = Color(0x00000000));
+};
+
+class Svx3DMaterialSpecularItem : public SvxColorItem {
+public:
+ SVX_DLLPUBLIC Svx3DMaterialSpecularItem(const Color& rCol = Color(0x00ffffff));
+};
+
+class Svx3DMaterialSpecularIntensityItem : public SfxUInt16Item {
+public:
+ SVX_DLLPUBLIC Svx3DMaterialSpecularIntensityItem(sal_uInt16 nVal = 15);
+};
+
+class SVX_DLLPUBLIC Svx3DTextureKindItem : public SfxUInt16Item {
+public:
+ Svx3DTextureKindItem(sal_uInt16 nVal = 3);
+
+ // use drawing::TextureKind
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+class SVX_DLLPUBLIC Svx3DTextureModeItem : public SfxUInt16Item {
+public:
+ Svx3DTextureModeItem(sal_uInt16 nVal = 2);
+
+ // use drawing:TextureMode
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+class Svx3DTextureFilterItem : public SfxBoolItem {
+public:
+ SVX_DLLPUBLIC Svx3DTextureFilterItem(BOOL bVal = 0);
+};
+
+// Svx3D _3DSCENE_ Items
+class SVX_DLLPUBLIC Svx3DPerspectiveItem : public SfxUInt16Item {
+public:
+ Svx3DPerspectiveItem(sal_uInt16 nVal = (sal_uInt16)PR_PERSPECTIVE);
+
+ // use drawing::ProjectionMode
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+class Svx3DDistanceItem : public SfxUInt32Item {
+public:
+ SVX_DLLPUBLIC Svx3DDistanceItem(sal_uInt32 nVal = 100);
+};
+
+class Svx3DFocalLengthItem : public SfxUInt32Item {
+public:
+ SVX_DLLPUBLIC Svx3DFocalLengthItem(sal_uInt32 nVal = 100);
+};
+
+class Svx3DTwoSidedLightingItem : public SfxBoolItem {
+public:
+ SVX_DLLPUBLIC Svx3DTwoSidedLightingItem(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor1Item : public SvxColorItem {
+public:
+ Svx3DLightcolor1Item(const Color& rCol = Color(0xffcccccc));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor2Item : public SvxColorItem {
+public:
+ Svx3DLightcolor2Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor3Item : public SvxColorItem {
+public:
+ Svx3DLightcolor3Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor4Item : public SvxColorItem {
+public:
+ Svx3DLightcolor4Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor5Item : public SvxColorItem {
+public:
+ Svx3DLightcolor5Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor6Item : public SvxColorItem {
+public:
+ Svx3DLightcolor6Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor7Item : public SvxColorItem {
+public:
+ Svx3DLightcolor7Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DLightcolor8Item : public SvxColorItem {
+public:
+ Svx3DLightcolor8Item(const Color& rCol = Color(0x00000000));
+};
+
+class SVX_DLLPUBLIC Svx3DAmbientcolorItem : public SvxColorItem {
+public:
+ Svx3DAmbientcolorItem(const Color& rCol = Color(0x00666666));
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff1Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff1Item(BOOL bVal = 1);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff2Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff2Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff3Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff3Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff4Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff4Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff5Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff5Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff6Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff6Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff7Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff7Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightOnOff8Item : public SfxBoolItem {
+public:
+ Svx3DLightOnOff8Item(BOOL bVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection1Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection1Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.57735026918963, 0.57735026918963, 0.57735026918963));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection2Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection2Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection3Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection3Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection4Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection4Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection5Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection5Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection6Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection6Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection7Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection7Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class SVX_DLLPUBLIC Svx3DLightDirection8Item : public SvxB3DVectorItem {
+public:
+ Svx3DLightDirection8Item(const basegfx::B3DVector& rVec = basegfx::B3DVector(0.0,0.0,1.0));
+};
+
+class Svx3DShadowSlantItem : public SfxUInt16Item {
+public:
+ SVX_DLLPUBLIC Svx3DShadowSlantItem(sal_uInt16 nVal = 0);
+};
+
+class SVX_DLLPUBLIC Svx3DShadeModeItem : public SfxUInt16Item {
+public:
+ Svx3DShadeModeItem(sal_uInt16 nVal = 2);
+
+ // use drawing::ShadeMode
+ SVX_DLLPRIVATE virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ SVX_DLLPRIVATE virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// #107245# Item to replace bExtrudeSmoothed and bLatheSmoothed
+class Svx3DSmoothNormalsItem : public SfxBoolItem {
+public:
+ Svx3DSmoothNormalsItem(BOOL bVal = 1);
+ virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nItemVersion) const;
+ virtual sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion) const;
+};
+
+// #107245# Item to replace bExtrudeSmoothFrontBack and bLatheSmoothFrontBack
+class Svx3DSmoothLidsItem : public SfxBoolItem {
+public:
+ Svx3DSmoothLidsItem(BOOL bVal = 0);
+ virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nItemVersion) const;
+ virtual sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion) const;
+};
+
+// #107245# Item to replace bExtrudeCharacterMode and bLatheCharacterMode
+class Svx3DCharacterModeItem : public SfxBoolItem {
+public:
+ Svx3DCharacterModeItem(BOOL bVal = 0);
+ virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nItemVersion) const;
+ virtual sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion) const;
+};
+
+// #107245# Item to replace bExtrudeCloseFront and bLatheCloseFront
+class SVX_DLLPUBLIC Svx3DCloseFrontItem : public SfxBoolItem {
+public:
+ Svx3DCloseFrontItem(BOOL bVal = 1);
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nItemVersion) const;
+ SVX_DLLPRIVATE virtual sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion) const;
+};
+
+// #107245# Item to replace bExtrudeCloseBack and bLatheCloseBack
+class SVX_DLLPUBLIC Svx3DCloseBackItem : public SfxBoolItem {
+public:
+ Svx3DCloseBackItem(BOOL bVal = 1);
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nItemVersion) const;
+ SVX_DLLPRIVATE virtual sal_uInt16 GetVersion(sal_uInt16 nFileFormatVersion) const;
+};
+
+#endif // _SVX3DITEMS_HXX
diff --git a/svx/inc/svx/svxdlg.hxx b/svx/inc/svx/svxdlg.hxx
new file mode 100644
index 000000000000..df11041b38a8
--- /dev/null
+++ b/svx/inc/svx/svxdlg.hxx
@@ -0,0 +1,507 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_DIALOG_HXX
+#define _SVX_DIALOG_HXX
+// include ---------------------------------------------------------------
+
+#include <sfx2/sfxdlg.hxx>
+#include <editeng/edtdlg.hxx>
+
+class SdrModel;
+class SdrView;
+
+#include <svx/dstribut_enum.hxx>
+#include <svx/rectenum.hxx> //add for enum RECT_POINT
+#include <com/sun/star/container/XIndexContainer.hpp> //add for FmShowColsDialog
+#include <com/sun/star/container/XNameReplace.hpp> //add for SvxMacroAssignDlg
+#include "svx/svxdllapi.h"
+
+namespace com{namespace sun{namespace star{
+namespace linguistic2{
+ class XDictionary;
+ class XSpellChecker1;
+ class XSpellChecker;
+ class XThesaurus;
+ class XHyphenator;
+}}}}
+class SvxSpellWrapper; //add for SvxSpellCheckDialog
+typedef SfxTabPage* (*CreateSvxDistributePage)(Window *pParent, const SfxItemSet &rAttrSet, SvxDistributeHorizontal eHor, SvxDistributeVertical eVer);
+typedef USHORT* (*DialogGetRanges)();
+
+struct ExchangeData;
+class INetURLObject;
+class GalleryTheme;
+class TargetList;
+class SvxHyperlinkTabPageBase;
+class SearchAttrItemList;
+class FmFormShell;
+class Graphic;
+class SdrObject;
+class SvxSpellWrapper;
+
+namespace svx{ class SpellDialogChildWindow;}
+
+#define EMPTY_FRAME_REF com::sun::star::uno::Reference < com::sun::star::frame::XFrame >()
+
+//#define SVX_DIALOGFACTORY_CLASSID 0xf8e5fd97, 0x49e2, 0x4ae5, 0xac, 0x31, 0x4, 0xcb, 0xf7, 0xf3, 0xcf, 0x69
+class AbstractSvxDistributeDialog :public VclAbstractDialog //add for SvxDistributeDialog
+{
+public:
+ virtual SvxDistributeHorizontal GetDistributeHor() const = 0;
+ virtual SvxDistributeVertical GetDistributeVer() const = 0;
+};
+
+class AbstractFmShowColsDialog : public VclAbstractDialog //add for FmShowColsDialog
+{
+ public:
+ virtual void SetColumns(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& xCols)= 0;
+};
+
+class AbstractSvxZoomDialog : public VclAbstractDialog //add for SvxZoomDialog
+{
+ public:
+ virtual void SetLimits( USHORT nMin, USHORT nMax ) = 0;
+ virtual void HideButton( USHORT nBtnId )= 0;
+ virtual const SfxItemSet* GetOutputItemSet() const = 0 ;
+};
+
+class AbstractSpellDialog : public VclAbstractDialog //
+{
+ public:
+ virtual void SetLanguage( sal_uInt16 nLang ) = 0;
+ virtual sal_Bool Close() = 0;
+ virtual void Invalidate() = 0;
+ virtual Window* GetWindow() = 0;
+ virtual SfxBindings& GetBindings() = 0;
+};
+
+typedef long (*PLinkStub)( void*, void* );
+
+class AbstractSearchProgress :public VclAbstractRefreshableDialog //add for SearchProgress
+{
+public:
+ virtual void SetFileType( const String& rType ) = 0;
+ virtual void SetDirectory( const INetURLObject& rURL ) = 0;
+ virtual PLinkStub GetLinkStubCleanUpHdl() = 0;
+};
+
+class AbstractTakeProgress :public VclAbstractRefreshableDialog //add for TakeProgress
+{
+public:
+ virtual void SetFile( const INetURLObject& rURL ) = 0;
+ virtual PLinkStub GetLinkStubCleanUpHdl() = 0;
+};
+
+class AbstractTitleDialog :public VclAbstractDialog //add for TitleDialog
+{
+public:
+ virtual String GetTitle() const =0;
+};
+
+class AbstractGalleryIdDialog :public VclAbstractDialog //add for GalleryIdDialog
+{
+public:
+ virtual ULONG GetId() const =0;
+};
+
+class AbstractURLDlg :public VclAbstractDialog //add for URLDlg
+{
+public:
+ virtual String GetURL() const = 0;
+ virtual String GetAltText() const = 0;
+ virtual String GetDesc() const = 0;
+ virtual String GetTarget() const = 0;
+ virtual String GetName() const = 0;
+};
+
+class AbstractSvxHlinkDlgMarkWnd :public VclAbstractDialog //add for SvxHlinkDlgMarkWnd
+{
+public:
+ virtual BOOL MoveTo ( Point aNewPos )const = 0;
+ virtual BOOL ConnectToDialog( BOOL bDoit = TRUE )const = 0;
+ virtual void RefreshTree ( String aStrURL ) = 0;
+ virtual void SelectEntry ( String aStrMark ) = 0;
+ virtual USHORT SetError( USHORT nError) = 0;
+ // in class Window
+ virtual void SetSizePixel( const Size& rNewSize ) = 0;
+ virtual Size GetSizePixel() const = 0;
+ virtual void Hide( USHORT nFlags = 0 ) = 0;
+ virtual BOOL IsVisible() const = 0;
+ virtual void Invalidate( USHORT nFlags = 0 ) = 0;
+};
+
+class AbstractSvxSearchFormatDialog : public SfxAbstractTabDialog //for SvxSearchFormatDialog
+{
+public:
+ //From class Window.
+ virtual void SetText( const XubString& rStr ) =0 ;
+ virtual String GetText() const =0 ;
+};
+
+class AbstractSvxSearchSimilarityDialog :public VclAbstractDialog //add for SvxSearchSimilarityDialog
+{
+public:
+ virtual USHORT GetOther() =0 ;
+ virtual USHORT GetShorter() =0 ;
+ virtual USHORT GetLonger() =0 ;
+ virtual BOOL IsRelaxed() =0 ;
+};
+
+class AbstractSvxJSearchOptionsDialog :public VclAbstractDialog //add for SvxJSearchOptionsDialog
+{
+public:
+ virtual INT32 GetTransliterationFlags() const = 0;
+};
+
+class AbstractFmInputRecordNoDialog :public VclAbstractDialog //add for FmInputRecordNoDialog
+{
+public:
+ virtual void SetValue(long dNew) = 0;
+ virtual long GetValue() const = 0;
+};
+
+class AbstractSvxNewDictionaryDialog :public VclAbstractDialog //add for SvxNewDictionaryDialog
+{
+public:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XDictionary > GetNewDictionary() = 0;
+};
+
+class AbstractSvxNameDialog :public VclAbstractDialog //add for SvxNameDialog
+{
+public:
+ virtual void GetName( String& rName ) = 0;
+ virtual void SetCheckNameHdl( const Link& rLink, bool bCheckImmediately = false ) = 0;
+ virtual void SetEditHelpId(ULONG nHelpId) = 0;
+ //from class Window
+ virtual void SetHelpId( ULONG nHelpId ) = 0;
+ virtual void SetText( const XubString& rStr ) = 0;
+};
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+// #i68101#
+
+class AbstractSvxObjectNameDialog :public VclAbstractDialog
+{
+public:
+ virtual void GetName(String& rName) = 0;
+ virtual void SetCheckNameHdl(const Link& rLink, bool bCheckImmediately = false) = 0;
+};
+
+class AbstractSvxObjectTitleDescDialog :public VclAbstractDialog
+{
+public:
+ virtual void GetTitle(String& rTitle) = 0;
+ virtual void GetDescription(String& rDescription) = 0;
+};
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+class AbstractSvxMessDialog :public VclAbstractDialog //add for SvxMessDialog
+{
+public:
+ virtual void SetButtonText( USHORT nBtnId, const String& rNewTxt ) = 0;
+};
+
+class AbstractSvxMultiPathDialog :public VclAbstractDialog //add for SvxMultiPathDialog
+{
+public:
+ virtual String GetPath() const = 0;
+ virtual void SetPath( const String& rPath ) = 0;
+ virtual void EnableRadioButtonMode() = 0;
+ virtual void SetTitle( const String& rNewTitle ) = 0;
+};
+
+class AbstractSvxMultiFileDialog :public AbstractSvxMultiPathDialog //add for SvxMultiFileDialog
+{
+public:
+ virtual String GetFiles() const = 0;
+ virtual void SetFiles( const String& rPath ) = 0;
+ //from SvxMultiPathDialog
+ virtual void SetClassPathMode() = 0;
+ //From Class Window
+ virtual void SetHelpId( ULONG nHelpId ) = 0;
+};
+
+class AbstractSvxHpLinkDlg : public VclAbstractDialog //add for SvxHpLinkDlg
+{
+public:
+ virtual Window* GetWindow() = 0;
+ virtual sal_Bool QueryClose() = 0;
+};
+
+class AbstractFmSearchDialog :public VclAbstractDialog //add for FmSearchDialog
+{
+public:
+ virtual void SetFoundHandler(const Link& lnk) = 0;
+ virtual void SetCanceledNotFoundHdl(const Link& lnk)=0;
+ virtual void SetActiveField(const String& strField)=0;
+};
+class AbstractGraphicFilterDialog :public VclAbstractDialog //add for GraphicFilterDialog
+{
+public:
+ virtual Graphic GetFilteredGraphic( const Graphic& rGraphic, double fScaleX, double fScaleY ) = 0;
+};
+
+class AbstractSvxAreaTabDialog :public SfxAbstractTabDialog //add for SvxAreaTabDialog
+{
+public:
+ virtual void DontDeleteColorTable() = 0;
+};
+
+class AbstractSvxTransformTabDialog : public SfxAbstractTabDialog
+{
+public:
+ virtual void SetValidateFramePosLink( const Link& rLink ) = 0;
+};
+class AbstractSvxCaptionDialog : public SfxAbstractTabDialog
+{
+public:
+ virtual void SetValidateFramePosLink( const Link& rLink ) = 0;
+};
+
+//-------------------------------------------------------------
+
+class AbstractSvxPostItDialog :public VclAbstractDialog //add for SvxPostItDialog
+{
+public:
+ virtual void SetText( const XubString& rStr ) = 0; //From class Window
+ virtual const SfxItemSet* GetOutputItemSet() const = 0;
+ virtual void SetPrevHdl( const Link& rLink ) = 0;
+ virtual void SetNextHdl( const Link& rLink ) = 0;
+ virtual void EnableTravel(BOOL bNext, BOOL bPrev) = 0;
+ virtual String GetNote() = 0;
+ virtual void SetNote(const String& rTxt) = 0;
+ virtual void ShowLastAuthor(const String& rAuthor, const String& rDate) = 0;
+ virtual void DontChangeAuthor() = 0;
+ virtual void HideAuthor() = 0;
+ virtual void SetReadonlyPostIt(BOOL bDisable) = 0;
+ virtual BOOL IsOkEnabled() const = 0;
+ virtual Window * GetWindow() = 0;
+};
+
+//-------------------------------------------------------------
+
+class SvxAbstractSplittTableDialog : public VclAbstractDialog
+{
+public:
+ virtual bool IsHorizontal() const = 0;
+ virtual bool IsProportional() const = 0;
+ virtual long GetCount() const = 0;
+};
+
+//-------------------------------------------------------------
+
+class SvxAbstractNewTableDialog : public VclAbstractDialog
+{
+public:
+ virtual sal_Int32 getRows() const = 0;
+ virtual sal_Int32 getColumns() const = 0;
+};
+
+class SvxAbstractInsRowColDlg : public VclAbstractDialog
+{
+public:
+ virtual bool isInsertBefore() const = 0;
+ virtual sal_uInt16 getInsertCount() const = 0;
+};
+
+//-------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxAbstractDialogFactory : public SfxAbstractDialogFactory, public EditAbstractDialogFactory
+{
+public:
+ static SvxAbstractDialogFactory* Create();
+
+ // define dtor as this will create typeinfo and in svx library and export vtable
+ virtual ~SvxAbstractDialogFactory();
+
+ virtual SfxAbstractTabDialog* CreateTextTabDialog( Window* pParent,
+ const SfxItemSet* pAttrSet,
+ SdrView* pView,
+ SdrModel* pModel=0 ) = 0 ; //add for SvxTextTabDialog
+
+ virtual AbstractSvxCaptionDialog* CreateCaptionDialog( Window* pParent,
+ const SdrView* pView,
+ USHORT nAnchorTypes = 0 ) = 0; //add for SvxCaptionTabDialog CHINA001
+
+ virtual AbstractSvxDistributeDialog* CreateSvxDistributeDialog(Window* pParent,
+ const SfxItemSet& rAttr,
+ SvxDistributeHorizontal eHor = SvxDistributeHorizontalNone,
+ SvxDistributeVertical eVer = SvxDistributeVerticalNone)= 0;
+
+ virtual AbstractFmShowColsDialog * CreateFmShowColsDialog( Window* pParent ) = 0;
+
+ virtual AbstractSvxZoomDialog * CreateSvxZoomDialog( Window* pParent, //add for SvxZoomDialog
+ const SfxItemSet& rCoreSet )=0;
+
+ virtual AbstractSpellDialog * CreateSvxSpellDialog(Window* pParent,
+ SfxBindings* pBindings,
+ svx::SpellDialogChildWindow* pSpellChildWindow )=0;
+
+ virtual VclAbstractRefreshableDialog * CreateActualizeProgressDialog( Window* pParent, //add for ActualizeProgress
+ GalleryTheme* pThm ) = 0;
+ virtual AbstractSearchProgress * CreateSearchProgressDialog( Window* pParent, //add for SearchProgress
+ const INetURLObject& rStartURL ) = 0;
+ virtual AbstractTakeProgress * CreateTakeProgressDialog( Window* pParent ) = 0;
+ virtual AbstractTitleDialog * CreateTitleDialog( Window* pParent, //add for TitleDialog
+ const String& rOldText ) = 0;
+ virtual AbstractGalleryIdDialog * CreateGalleryIdDialog( Window* pParent, //add for SvxZoomDialog
+ GalleryTheme* pThm ) = 0;
+ virtual VclAbstractDialog2 * CreateGalleryThemePropertiesDialog( Window* pParent, //add for GalleryThemeProperties
+ ExchangeData* pData,
+ SfxItemSet* pItemSet ) = 0;
+ virtual AbstractURLDlg * CreateURLDialog( Window* pParent,
+ const String& rURL, const String& rAltText, const String& rDescription,
+ const String& rTarget, const String& rName,
+ TargetList& rTargetList ) = 0;
+ virtual AbstractSvxHlinkDlgMarkWnd* CreateSvxHlinkDlgMarkWndDialog( SvxHyperlinkTabPageBase* pParent, sal_uInt32 nResId ) =0; //add for SvxHlinkDlgMarkWnd
+
+ virtual SfxAbstractTabDialog* CreateTabItemDialog( Window* pParent, //add for SvxSearchFormatDialog
+ const SfxItemSet& rSet,
+ sal_uInt32 nResId) = 0;
+ virtual VclAbstractDialog* CreateSvxSearchAttributeDialog( Window* pParent, //add for SvxSearchAttributeDialog
+ SearchAttrItemList& rLst,
+ const USHORT* pWhRanges)=0;
+ virtual AbstractSvxSearchSimilarityDialog * CreateSvxSearchSimilarityDialog( Window* pParent, //add for SvxSearchSimilarityDialog
+ BOOL bRelax,
+ USHORT nOther,
+ USHORT nShorter,
+ USHORT nLonger ) = 0;
+ virtual SfxAbstractTabDialog* CreateSvxBorderBackgroundDlg( Window* pParent, //add for SvxBorderBackgroundDlg
+ const SfxItemSet& rCoreSet,
+ BOOL bEnableSelector = FALSE) = 0;
+ virtual AbstractSvxTransformTabDialog* CreateSvxTransformTabDialog( Window* pParent, //add for SvxTransformTabDialog
+ const SfxItemSet* pAttr,
+ const SdrView* pView,
+ USHORT nAnchorTypes = 0) = 0;
+ virtual SfxAbstractTabDialog* CreateSchTransformTabDialog( Window* pParent, //add for SchTransformTabDialog
+ const SfxItemSet* pAttr,
+ const SdrView* pSdrView,
+ sal_uInt32 nResId,
+ bool bSizeTabPage = false
+ )=0;
+ virtual AbstractSvxJSearchOptionsDialog * CreateSvxJSearchOptionsDialog( Window* pParent,
+ const SfxItemSet& rOptionsSet,
+ INT32 nInitialFlags )=0;
+ virtual AbstractFmInputRecordNoDialog * CreateFmInputRecordNoDialog( Window* pParent ) = 0;
+ virtual AbstractSvxNewDictionaryDialog* CreateSvxNewDictionaryDialog( Window* pParent,
+ ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XSpellChecker1 > &xSpl,
+ sal_uInt32 nResId ) = 0; //add for SvxNewDictionaryDialog
+ virtual VclAbstractDialog * CreateSvxEditDictionaryDialog( Window* pParent,
+ const String& rName,
+ ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XSpellChecker1> &xSpl,
+ sal_uInt32 nResId) = 0;//add for SvxEditDictionaryDialog
+ virtual AbstractSvxNameDialog * CreateSvxNameDialog( Window* pParent,
+ const String& rName, const String& rDesc ) = 0; //add for SvxNameDialog
+
+ // #i68101#
+ virtual AbstractSvxObjectNameDialog* CreateSvxObjectNameDialog(Window* pParent, const String& rName ) = 0;
+ virtual AbstractSvxObjectTitleDescDialog* CreateSvxObjectTitleDescDialog(Window* pParent, const String& rTitle, const String& rDescription) = 0;
+
+ virtual AbstractSvxMessDialog * CreateSvxMessDialog( Window* pParent, sal_uInt32 nResId,
+ const String& rText, const String& rDesc,
+ Image* pImg = NULL ) = 0; //add for SvxMessDialog
+
+ virtual AbstractSvxMultiPathDialog * CreateSvxMultiPathDialog( Window* pParent, BOOL bEmptyAllowed = FALSE ) = 0 ; //add for SvxMultiPathDialog
+ virtual AbstractSvxMultiFileDialog * CreateSvxMultiFileDialog( Window* pParent, BOOL bEmptyAllowed = FALSE ) = 0 ; //add for SvxMultiFileDialog
+ virtual AbstractSvxHpLinkDlg * CreateSvxHpLinkDlg (Window* pParent, //add for SvxMultiFileDialog
+ SfxBindings* pBindings,
+ sal_uInt32 nResId)=0;
+ virtual AbstractFmSearchDialog* CreateFmSearchDialog(Window* pParent, //add for FmSearchDialog
+ const String& strInitialText,
+ const ::std::vector< String >& _rContexts,
+ sal_Int16 nInitialContext,
+ const Link& lnkContextSupplier)=0;
+ virtual AbstractGraphicFilterDialog * CreateGraphicFilterEmboss (Window* pParent, //add for GraphicFilterEmboss
+ const Graphic& rGraphic,
+ RECT_POINT eLightSource, sal_uInt32 nResId )=0;
+ virtual AbstractGraphicFilterDialog * CreateGraphicFilterPosterSepia (Window* pParent, //add for GraphicFilterPoster & GraphicFilterSepia
+ const Graphic& rGraphic,
+ USHORT nCount,
+ sal_uInt32 nResId)=0;
+ virtual AbstractGraphicFilterDialog * CreateGraphicFilterSolarize (Window* pParent, //add for GraphicFilterSolarize
+ const Graphic& rGraphic,
+ BYTE nGreyThreshold, BOOL bInvert, sal_uInt32 nResId)=0;
+ virtual AbstractGraphicFilterDialog * CreateGraphicFilterMosaic (Window* pParent, //add for GraphicFilterMosaic
+ const Graphic& rGraphic,
+ USHORT nTileWidth, USHORT nTileHeight, BOOL bEnhanceEdges, sal_uInt32 nResId)=0;
+ virtual AbstractSvxAreaTabDialog* CreateSvxAreaTabDialog( Window* pParent,//add for SvxAreaTabDialog
+ const SfxItemSet* pAttr,
+ SdrModel* pModel,
+ const SdrView* pSdrView = NULL ) = 0 ;
+ virtual SfxAbstractTabDialog* CreateSvxLineTabDialog( Window* pParent, const SfxItemSet* pAttr, //add forSvxLineTabDialog
+ SdrModel* pModel,
+ const SdrObject* pObj = NULL,
+ BOOL bHasObj = TRUE )=0;
+ virtual VclAbstractDialog* CreateSfxDialog( Window* pParent, const SfxBindings& rBindings, sal_uInt32 nResId ) = 0;
+ virtual SfxAbstractDialog* CreateSfxDialog( Window* pParent, //add for SvxMeasureDialog & SvxConnectionDialog
+ const SfxItemSet& rAttr,
+ const SdrView* pView,
+ sal_uInt32 nResId
+ )=0;
+ virtual SfxAbstractDialog* CreateSfxDialog( Window* pParent, //add for SvxMeasureDialog & SvxConnectionDialog
+ const SfxItemSet& rAttr,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame,
+ sal_uInt32 nResId
+ )=0;
+ virtual AbstractSvxPostItDialog* CreateSvxPostItDialog( Window* pParent, //add for SvxPostItDialog
+ const SfxItemSet& rCoreSet,
+ BOOL bPrevNext = FALSE, BOOL bRedline = FALSE )=0;
+ virtual VclAbstractDialog* CreateSvxScriptOrgDialog( Window* pParent, const String& rLanguage ) = 0;
+
+ virtual CreateSvxDistributePage GetSvxDistributePageCreatorFunc() = 0; // add for SvxDistributePage
+ virtual DialogGetRanges GetDialogGetRangesFunc( USHORT nId ) = 0; //add for SvxPostItDialog
+
+ virtual AbstractScriptSelectorDialog*
+ CreateScriptSelectorDialog(
+ Window* pParent,
+ BOOL bShowSlots,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame
+ ) = 0;
+
+ virtual VclAbstractDialog* CreateScriptErrorDialog(
+ Window* pParent, com::sun::star::uno::Any aException) = 0;
+
+ virtual VclAbstractDialog* CreateSvxMacroAssignDlg(
+ Window* _pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxDocumentFrame,
+ const bool _bUnoDialogMode,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace >& _rxEvents,
+ const sal_uInt16 _nInitiallySelectedEvent
+ ) = 0;
+
+ virtual SfxAbstractTabDialog* CreateSvxFormatCellsDialog( Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, const SdrObject* pObj = NULL )=0;
+
+ virtual SvxAbstractSplittTableDialog* CreateSvxSplittTableDialog( Window* pParent, bool bIsTableVertical, long nMaxVertical, long nMaxHorizontal )=0;
+
+ virtual SvxAbstractNewTableDialog* CreateSvxNewTableDialog( Window* pParent ) = 0;
+
+ virtual SvxAbstractInsRowColDlg* CreateSvxInsRowColDlg( Window* pParent, bool bCol, ULONG nHelpId ) = 0;
+};
+
+#endif
+
diff --git a/svx/inc/svx/svxdllapi.h b/svx/inc/svx/svxdllapi.h
new file mode 100644
index 000000000000..65670e9344f5
--- /dev/null
+++ b/svx/inc/svx/svxdllapi.h
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SVXDLLAPI_H
+#define INCLUDED_SVXDLLAPI_H
+
+#include "sal/types.h"
+
+#if defined(SVX_DLLIMPLEMENTATION)
+#define SVX_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
+#else
+#define SVX_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
+#endif
+#define SVX_DLLPRIVATE SAL_DLLPRIVATE
+
+#endif /* INCLUDED_SVXDLLAPI_H */
diff --git a/svx/inc/svx/svxids.hrc b/svx/inc/svx/svxids.hrc
new file mode 100755
index 000000000000..1cdfc9fb2b9e
--- /dev/null
+++ b/svx/inc/svx/svxids.hrc
@@ -0,0 +1,1328 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_SVXIDS_HRC
+#define _SVX_SVXIDS_HRC
+// include ------------------------------------------------------------------
+
+#include <svl/memberid.hrc>
+#include <svl/solar.hrc>
+#include <sfx2/sfx.hrc>
+#include <sfx2/sfxsids.hrc>
+#include <editeng/editids.hrc>
+#include <svx/unomid.hxx>
+
+// solange noch im sfxids.hrc definiert -------------------------------------
+
+#ifdef SID_INSERT_FRAME
+#undef SID_INSERT_FRAME
+#endif
+
+// --------------------------------------------------------------------------
+// Member-Id's
+// --------------------------------------------------------------------------
+
+#define MID_APPFLAG 0x20
+#define MID_AUTOBREAK 0x21
+#define MID_BREAKxxx 0x22
+#define MID_BRUSHSTYLE 0x23
+#define MID_CELLTYPE 0x24
+#define MID_CHARSET 0x25
+#define MID_COMMAND 0x26
+#define MID_CONTENT 0x27
+#define MID_DESCNAMExxx 0x28
+
+#define MID_ESCAPEMENT 0x2a
+#define MID_FAMILY 0x2b
+#define MID_FIRSTLINE_OFFSET 0x2d
+#define MID_FONTFAMILY 0x2f
+#define MID_FONTFAMILYNAME 0x30
+#define MID_FONTPITCH 0x31
+#define MID_FONTSTYLE 0x32
+#define MID_PERCENT 0x33
+#define MID_HYPHEN 0x34
+#define MID_INTER_LINESPACE 0x36
+#define MID_INTER_SPACE 0x37
+#define MID_LANDSCAPE 0x38
+
+#define MID_LEFT_MARGIN 0x3a
+#define MID_LOWER 0x3d
+#define MID_MAXHYPHENS 0x3e
+#define MID_MINLEAD 0x3f
+#define MID_MINTRAIL 0x40
+#define MID_NUMTYPExxx 0x41
+#define MID_PAGEEND 0x42
+#define MID_POS 0x43
+#define MID_PROPORTIONAL 0x44
+#define MID_REPLACE_STRING 0x45
+#define MID_RIGHT 0x46
+#define MID_RIGHT_MARGIN 0x47
+#define MID_ROW_DIRECTION 0x48
+#define MID_SIZE 0x4a
+#define MID_TYPE 0x4c
+#define MID_UPPER 0x4d
+#define MID_USExxx 0x4e
+#define MID_VALUESET 0x4f
+
+#define MID_ADR_CITY 0x50
+#define MID_ADR_COMPANY 0x51
+#define MID_ADR_COUNTRY 0x52
+#define MID_ADR_EMAIL 0x53
+#define MID_ADR_FAX 0x54
+#define MID_ADR_FIRSTNAME 0x55
+#define MID_ADR_ID 0x56
+#define MID_ADR_LASTNAME 0x57
+#define MID_ADR_PHONE 0x58
+#define MID_ADR_PHONEPRIVATE 0x59
+#define MID_ADR_POSITION 0x5a
+#define MID_ADR_STREET 0x5b
+#define MID_ADR_TITLE 0x5c
+#define MID_ADR_ZIPCODE 0x5d
+#define MID_ADR_STATE 0x5e
+
+#define MID_FILENAME 0x6c
+#define MID_FILTERNAME 0x6d
+#define MID_POSITION 0x6e
+
+#define MID_HLINK_NAME 0x6f
+#define MID_HLINK_URL 0x70
+#define MID_HLINK_TARGET 0x71
+#define MID_HLINK_TYPE 0x72
+#define MID_HLINK_TEXT 0x73
+
+#define MID_COUNT 0x74
+#define MID_READONLY 0x76
+
+#define MID_VIEWLAYOUT_COLUMNS 0x77
+#define MID_VIEWLAYOUT_BOOKMODE 0x78
+
+#define MID_ZOOMSLIDER_CURRENTZOOM 0x79
+#define MID_ZOOMSLIDER_SNAPPINGPOINTS 0x7a
+#define MID_ZOOMSLIDER_MINZOOM 0x7b
+#define MID_ZOOMSLIDER_MAXZOOM 0x7c
+
+#define MID_ADR_FATHERSNAME 0x80
+#define MID_ADR_APARTMENT 0x81
+
+
+// --------------------------------------------------------------------------
+// Resource-Id's ? (obsolete??? at least the one beginning with SID???)
+// --------------------------------------------------------------------------
+/*
+#define RID_SW_TP_OPTCOMPATIBILITY_PAGE (RID_OFA_START + 255)
+#define RID_SW_TP_CONTENT_OPT (RID_OFA_START + 206)
+#define RID_SW_TP_LAYOUT_OPT (RID_OFA_START + 207)
+#define RID_SW_TP_STD_FONT (RID_OFA_START + 208)
+#define RID_SW_TP_OPTPRINT_PAGE (RID_OFA_START + 209)
+#define RID_SW_TP_OPTTABLE_PAGE (RID_OFA_START + 210)
+#define RID_SW_TP_OPTSHDWCRSR (RID_OFA_START + 211)
+#define RID_SW_TP_REDLINE_OPT (RID_OFA_START + 212)
+#define RID_SW_TP_OPTINSERT_PAGE (RID_OFA_START + 213)
+#define RID_SW_TP_OPTLOAD_PAGE (RID_OFA_START + 214)
+#define RID_SW_TP_OPTTEST_PAGE (RID_OFA_START + 215)
+#define RID_SW_TP_OPTSRCVIEW (RID_OFA_START + 216)
+#define RID_SW_TP_BACKGROUND (RID_OFA_START + 217)
+#define SID_SC_TP_LAYOUT (RID_OFA_START + 218)
+#define SID_SC_TP_CONTENT (RID_OFA_START + 219)
+#define SID_SC_TP_INPUT (RID_OFA_START + 220)
+#define SID_SC_TP_GRID (RID_OFA_START + 221)
+#define SID_SC_TP_USERLISTS (RID_OFA_START + 222)
+#define SID_SC_TP_CALC (RID_OFA_START + 223)
+#define SID_SC_TP_CHANGES (RID_OFA_START + 224)
+#define SID_SC_TP_CHANGES (RID_OFA_START + 224)
+#define SID_SD_TP_CONTENTS (RID_OFA_START + 225)
+#define SID_SD_TP_LAYOUT (RID_OFA_START + 226)
+#define SID_SD_TP_SNAP (RID_OFA_START + 227)
+#define SID_SD_TP_SCALE (RID_OFA_START + 228)
+#define SID_SD_TP_GRID (RID_OFA_START + 229)
+#define SID_SD_TP_PRINT (RID_OFA_START + 220)
+#define SID_SD_TP_MISC (RID_OFA_START + 231)
+#define SID_SI_TP_CONTENTS (RID_OFA_START + 232)
+#define SID_SI_TP_LAYOUT (RID_OFA_START + 233)
+#define SID_SI_TP_SNAP (RID_OFA_START + 234)
+#define SID_SI_TP_GRID (RID_OFA_START + 235)
+#define SID_SI_TP_PRINT (RID_OFA_START + 236)
+#define SID_SI_TP_MISC (RID_OFA_START + 237)
+#define RID_SW_TP_OPTINSERT_HTML_PAGE (RID_OFA_START + 238)
+#define SID_SC_TP_MISC (RID_OFA_START + 239)
+#define RID_SW_TP_HTML_CONTENT_OPT (RID_OFA_START + 240)
+#define RID_SW_TP_HTML_LAYOUT_OPT (RID_OFA_START + 241)
+#define RID_SW_TP_HTML_OPTPRINT_PAGE (RID_OFA_START + 242)
+#define RID_SW_TP_HTML_OPTTABLE_PAGE (RID_OFA_START + 243)
+#define RID_SW_TP_HTML_OPTGRID_PAGE (RID_OFA_START + 244)
+#define RID_SW_TP_HTML_OPTSHDWCRSR (RID_OFA_START + 246)
+#define RID_SW_TP_STD_FONT_CJK (RID_OFA_START + 247)
+#define RID_SC_TP_PRINT (RID_OFA_START + 248)
+#define RID_SW_TP_STD_FONT_CTL (RID_OFA_START + 251)
+#define RID_OFA_TP_INTERNATIONAL (RID_OFA_START + 252) // 4 SC & ID 4 resource
+#define RID_OFA_TP_INTERNATIONAL_SD (RID_OFA_START + 253) // 4 SD
+#define RID_OFA_TP_INTERNATIONAL_IMPR (RID_OFA_START + 254) // 4 impress
+*/
+
+#define SID_ATTR_PARENTWINDOW (RID_OFA_START + 255)
+
+// --------------------------------------------------------------------------
+// Event-Id's Block 1
+// --------------------------------------------------------------------------
+
+#define SVX_EVENT_COLUM_WINDOW_EXECUTE (EVENT_SVX_START)
+
+// --------------------------------------------------------------------------
+// Event-Id's Block 2
+// --------------------------------------------------------------------------
+
+#define SVX_EVENT_IMAGE_LOAD (SID_LIB_START)
+#define SVX_EVENT_IMAGE_ABORT (SID_LIB_START + 1)
+#define SVX_EVENT_IMAGE_ERROR (SID_LIB_START + 2)
+
+// --------------------------------------------------------------------------
+// Function-Id's
+// --------------------------------------------------------------------------
+
+// Function-Id's
+#define FID_SVX_START (SID_LIB_START + 500)
+#define FID_SVX_END (SID_LIB_START + 509)
+
+#define FID_SEARCH_ON (FID_SVX_START + 0)
+#define FID_SEARCH_OFF (FID_SVX_START + 1)
+#define FID_SEARCH_NOW (FID_SVX_START + 2)
+
+#define SID_CHARMAP (FID_SVX_START + 3)
+
+#define FID_SEARCH_SEARCHSET (FID_SVX_START + 4)
+#define FID_SEARCH_REPLACESET (FID_SVX_START + 5)
+
+// --------------------------------------------------------------------------
+// SFX-Id's
+// --------------------------------------------------------------------------
+
+#define SID_POLY_MERGE (SID_SFX_START + 679)
+#define SID_POLY_SUBSTRACT (SID_SFX_START + 680)
+#define SID_POLY_INTERSECT (SID_SFX_START + 681)
+#define SID_POLY_FORMEN (SID_SFX_START + 682)
+#define SID_DISTRIBUTE_DLG (SID_SFX_START + 683)
+
+// --------------------------------------------------------------------------
+// Basic IDE-Id's
+// --------------------------------------------------------------------------
+
+#define SID_BASICIDE_TOGGLEBRKPNT ( SID_BASICIDE_START + 0 )
+#define SID_BASICIDE_ADDWATCH ( SID_BASICIDE_START + 1 )
+#define SID_BASICIDE_CHOOSEMACRO ( SID_BASICIDE_START + 2 )
+#define SID_BASICIDE_EDITMACRO ( SID_BASICIDE_START + 3 )
+#define SID_BASICIDE_CREATEMACRO ( SID_BASICIDE_START + 4 )
+#define SID_BASICIDE_MODULEDLG ( SID_BASICIDE_START + 5 )
+#define SID_BASICIDE_OBJCAT ( SID_BASICIDE_START + 6 )
+#define SID_BASICIDE_REMOVEWATCH ( SID_BASICIDE_START + 7 )
+#define SID_BASICIDE_GOTOCALL ( SID_BASICIDE_START + 8 )
+#define SID_BASICIDE_SHOWSBX ( SID_BASICIDE_START + 9 )
+#define SID_BASICIDE_HIDECURPAGE ( SID_BASICIDE_START + 10 )
+#define SID_BASICIDE_NAMECHANGEDONTAB ( SID_BASICIDE_START + 11 )
+#define SID_BASICIDE_UPDATEMODULESOURCE ( SID_BASICIDE_START + 12 )
+#define SID_BASICIDE_STOREMODULESOURCE ( SID_BASICIDE_START + 13 )
+#define SID_BASICIDE_MATCHGROUP ( SID_BASICIDE_START + 14 )
+#define SID_BASICIDE_APPEAR ( SID_BASICIDE_START + 15 )
+#define SID_BASICIDE_STOREALLMODULESOURCES ( SID_BASICIDE_START + 16 )
+#define SID_BASICIDE_UPDATEALLMODULESOURCES ( SID_BASICIDE_START + 17 )
+#define SID_BASICIDE_LIBSELECTED ( SID_BASICIDE_START + 18 )
+#define SID_BASICIDE_LIBSELECTOR ( SID_BASICIDE_START + 19 )
+#define SID_BASICIDE_NEWDIALOG ( SID_BASICIDE_START + 20 )
+#define SID_BASICIDE_NEWMODULE ( SID_BASICIDE_START + 21 )
+#define SID_BASICIDE_DELETECURRENT ( SID_BASICIDE_START + 22 )
+#define SID_BASICIDE_RENAMECURRENT ( SID_BASICIDE_START + 23 )
+#define SID_BASICIDE_SBXDELETED ( SID_BASICIDE_START + 24 )
+#define SID_BASICIDE_SBXINSERTED ( SID_BASICIDE_START + 25 )
+#define SID_BASICIDE_SBXRENAMED ( SID_BASICIDE_START + 26 )
+#define SID_BASICIDE_LIBLOADED ( SID_BASICIDE_START + 27 )
+#define SID_BASICIDE_LIBREMOVED ( SID_BASICIDE_START + 28 )
+#define SID_BASICIDE_ARG_TABID ( SID_BASICIDE_START + 30 )
+#define SID_BASICIDE_ARG_SBX ( SID_BASICIDE_START + 31 )
+#define SID_BASICIDE_ARG_MACROINFO ( SID_BASICIDE_START + 32 )
+#define SID_BASICIDE_ARG_SEARCHOPTIONS ( SID_BASICIDE_START + 33 )
+#define SID_BASICIDE_ARG_LIBNAME ( SID_BASICIDE_START + 34 )
+#define SID_BASICIDE_ARG_MODULENAME ( SID_BASICIDE_START + 35 )
+#define SID_BASICIDE_BRKPNTSCHANGED ( SID_BASICIDE_START + 36 )
+#define SID_BASICIDE_STATUSBAR ( SID_BASICIDE_START + 37 )
+#define SID_BASICIDE_STAT_POS ( SID_BASICIDE_START + 38 )
+#define SID_BASICIDE_STAT_DATE ( SID_BASICIDE_START + 39 )
+#define SID_BASICIDE_STAT_TITLE ( SID_BASICIDE_START + 40 )
+#define SID_BASICIDE_NEWJAVAMODULE ( SID_BASICIDE_START + 41 )
+#define SID_BASICIDE_IMAGESTART ( SID_BASICIDE_START + 50 )
+#define SID_OPTIONS_TREEDIALOG ( SID_BASICIDE_START + 862)
+
+// --------------------------------------------------------------------------
+// StarBase-Id's
+// --------------------------------------------------------------------------
+
+#define SID_SBA_BRW_UPDATE (SID_SBA_START+100) // Daten in Felder
+#define SID_SBA_BRW_INSERT (SID_SBA_START+101) // Daten in Text
+#define SID_SBA_BRW_MERGE (SID_SBA_START+102) // Serienbrief
+#define SID_SBA_CLEAR_QUERY (SID_SBA_START+130)
+#define SID_SBA_ADD_RELATION (SID_SBA_START+131) // im Relationenentwurf neue Relation
+#define SID_SBA_QUERY_VIEW_FUNCTIONS (SID_SBA_START+134)
+#define SID_SBA_QUERY_VIEW_TABLES (SID_SBA_START+135)
+#define SID_SBA_QUERY_VIEW_ALIASES (SID_SBA_START+136)
+#define SID_SBA_QUERY_DISTINCT_VALUES (SID_SBA_START+137)
+#define SID_SBA_QRY_DESIGN (SID_SBA_START+120)
+
+// --------------------------------------------------------------------------
+// SD-Id's
+// --------------------------------------------------------------------------
+
+#define SID_RULER (SID_SD_START+40)
+#define SID_BEZIER_CONVERT (SID_SD_START+65)
+#define SID_BEZIER_ELIMINATE_POINTS (SID_SD_START+30)
+#define SID_BEZIER_EDGE (SID_SD_START+66)
+#define SID_BEZIER_SYMMTR (SID_SD_START+67)
+#define SID_TEXTEDIT (SID_SD_START+76)
+#define SID_ENTER_GROUP (SID_SD_START+96)
+#define SID_LEAVE_GROUP (SID_SD_START+97)
+#define SID_SIZE_PAGE_WIDTH (SID_SD_START+98)
+#define SID_INSERT_IMAGE (SID_SD_START+105)
+#define SID_INSERT_MATH (SID_SD_START+106)
+#define SID_SIZE_VISAREA (SID_SD_START+114)
+#define SID_ATTR_SYMBOLTYPE (SID_SD_START+115) //wird vom Chart und von SvxLineTabPage genutzt
+#define SID_ATTR_SYMBOLSIZE (SID_SD_START+116)
+#define SID_HELPLINES_MOVE (SID_SD_START+153)
+#define SID_GRID_USE (SID_SD_START+154)
+#define ID_VAL_MOUSESTART_X (SID_SD_START+200)
+#define ID_VAL_MOUSESTART_Y (SID_SD_START+201)
+#define ID_VAL_LENGTH_X (SID_SD_START+202)
+#define ID_VAL_LENGTH_Y (SID_SD_START+203)
+#define ID_VAL_MOUSEEND_X (SID_SD_START+204)
+#define ID_VAL_MOUSEEND_Y (SID_SD_START+205)
+#define ID_VAL_AXIS_X (SID_SD_START+206)
+#define ID_VAL_AXIS_Y (SID_SD_START+207)
+#define ID_VAL_ANGLESTART (SID_SD_START+208)
+#define ID_VAL_ANGLEEND (SID_SD_START+209)
+#define ID_VAL_CENTER_X (SID_SD_START+210)
+#define ID_VAL_CENTER_Y (SID_SD_START+211)
+#define ID_VAL_STYLE (SID_SD_START+240)
+#define ID_VAL_DOTS (SID_SD_START+241)
+#define ID_VAL_DOTLEN (SID_SD_START+242)
+#define ID_VAL_DASHES (SID_SD_START+243)
+#define ID_VAL_DASHLEN (SID_SD_START+244)
+#define ID_VAL_DISTANCE (SID_SD_START+245)
+#define ID_VAL_INDEX (SID_SD_START+246)
+#define SID_BEZIERTO (SID_SD_START+252)
+#define SID_DASH (SID_SD_START+267)
+#define SID_TEXT_FITTOSIZE_VERTICAL (SID_SD_START+286)
+#define SID_GRID_VISIBLE (SID_SD_START+322)
+#define ID_VAL_USEFIRSTROWSTYLE (SID_SD_START+323)
+#define ID_VAL_USELASTROWSTYLE (SID_SD_START+324)
+#define ID_VAL_USEBANDINGROWSTYLE (SID_SD_START+325)
+#define ID_VAL_USEFIRSTCOLUMNSTYLE (SID_SD_START+326)
+#define ID_VAL_USELASTCOLUMNSTYLE (SID_SD_START+327)
+#define ID_VAL_USEBANDINGCOLUMNSTYLE (SID_SD_START+328)
+
+// --------------------------------------------------------------------------
+// Calc-Id's
+// --------------------------------------------------------------------------
+
+//! moved to sfx2, still in use:
+//#ifndef SC_FUNCTION_START
+//#define SC_FUNCTION_START (SID_SC_START + 200)
+//#endif
+//#ifndef FILE_MENU_END
+//#define FILE_MENU_END (SC_FUNCTION_START + 20)
+//#endif
+//#ifndef EDIT_MENU_START
+//#define EDIT_MENU_START (FILE_MENU_END)
+//#endif
+//#ifndef SC_VIEW_START
+//#define SC_VIEW_START (SID_SC_START)
+//#endif
+
+#define SID_OUTLINE_HIDE (SID_SC_START + 329)
+#define SID_OUTLINE_SHOW (SID_SC_START + 330)
+#define SID_OUTLINE_MAKE (SID_SC_START + 331)
+#define SID_OUTLINE_REMOVE (SID_SC_START + 332)
+#define SID_FRAME_UP (SID_SC_START + 407)
+#define SID_FRAME_DOWN (SID_SC_START + 408)
+#define SID_ENTER_STRING (SID_SC_START + 476)
+#define SID_ATTR_SECIALCHAR (SID_SC_START + 581)
+#define SID_ATTR_SPECIALCHAR (SID_SC_START + 581)
+
+//! moved to sfx2, still in use:
+//#define FID_CHG_RECORD (EDIT_MENU_START + 18)
+//#define SID_CHG_PROTECT (SC_VIEW_START + 84)
+
+// --------------------------------------------------------------------------
+// Writer-Id's
+// --------------------------------------------------------------------------
+#define FN_EDIT (SID_SW_START + 100)
+#define FN_NUM_BULLET_OFF (FN_EDIT + 37) /* Numerierung aus */
+#define FN_NUM_BULLET_ON (FN_EDIT + 38) /* Numerierung mit Bullets an */
+#define FN_NUM_NUMBERING_ON (FN_EDIT + 44) /* Numerierung an */
+
+#define FN_INSERT (SID_SW_START + 300)
+#define FN_DELETE_BOOKMARK (FN_INSERT + 1)
+#define FN_INSERT_BREAK (FN_INSERT + 3)
+#define FN_INSERT_SOFT_HYPHEN (FN_INSERT + 43) /* optional hyphen */
+#define FN_INSERT_HARD_SPACE (FN_INSERT + 44) /* hard space */
+#define FN_INSERT_HARDHYPHEN (FN_INSERT + 85) /* hyphen withou break*/
+
+//!! be aware to not overwrite something that is used in sw/inc/cmdid.h already !!
+#define FN_FORMAT (SID_SW_START + 400)
+#define FN_SET_JUSTIFY_PARA (FN_FORMAT + 21)
+#define FN_FORMAT_RESET (FN_FORMAT + 69)
+
+#define FN_EXTRA (SID_SW_START + 600)
+
+#define FN_SELECTION (SID_SW_START + 900)
+#define FN_END_OF_DOCUMENT (FN_SELECTION + 8)
+#define FN_START_DOC_DIRECT (FN_SELECTION + 78)
+#define FN_END_DOC_DIRECT (FN_SELECTION + 79)
+
+#define FN_PARAM (SID_SW_START + 1100)
+#define FN_PARAM_FILTER (FN_PARAM + 30)
+#define FN_PARAM_FIELD_CONTENT (FN_PARAM + 55)
+
+#define FN_PGPREVIEW (SID_SW_START + 1250)
+#define FN_SHOW_MULTIPLE_PAGES (FN_PGPREVIEW + 2)
+
+//! moved to sfx2, still in use:
+//#define FN_EDIT2 (SID_SW_START + 1800)
+//#define FN_REDLINE_PROTECT (FN_EDIT2 + 23)
+//#define FN_REDLINE_ON (FN_EDIT2 + 25)
+
+// --------------------------------------------------------------------------
+// Svx-Id's
+// --------------------------------------------------------------------------
+
+#define SID_ATTR_ZOOM ( SID_SVX_START + 0 )
+
+#define SID_ATTR_BORDER_INNER ( SID_SVX_START + 23 )
+
+
+#define SID_ATTR_POSTIT_AUTHOR ( SID_SVX_START + 44 )
+#define SID_ATTR_POSTIT_DATE ( SID_SVX_START + 45 )
+#define SID_ATTR_POSTIT_TEXT ( SID_SVX_START + 46 )
+#define SID_ATTR_SEARCH ( SID_SVX_START + 47 )
+#define SID_ATTR_PAGE ( SID_SVX_START + 50 )
+#define SID_ATTR_PAGE_SIZE ( SID_SVX_START + 51 )
+#define SID_ATTR_PAGE_MAXSIZE ( SID_SVX_START + 52 )
+#define SID_ATTR_PAGE_PAPERBIN ( SID_SVX_START + 54 )
+#define SID_ATTR_PAGE_APP ( SID_SVX_START + 55 )
+#define SID_ATTR_PAGE_EXT1 ( SID_SVX_START + 56 )
+#define SID_ATTR_PAGE_EXT2 ( SID_SVX_START + 57 )
+#define SID_ATTR_PAGE_HEADERSET ( SID_SVX_START + 58 )
+#define SID_ATTR_PAGE_FOOTERSET ( SID_SVX_START + 59 )
+#define SID_ATTR_PAGE_ON ( SID_SVX_START + 60 )
+#define SID_ATTR_PAGE_DYNAMIC ( SID_SVX_START + 61 )
+#define SID_ATTR_PAGE_SHARED ( SID_SVX_START + 62 )
+#define SID_ATTR_PAGE_BSP ( SID_SVX_START + 63 )
+#define SID_ATTR_DBSESS_SERVERTYPE ( SID_SVX_START + 70 )
+#define SID_ATTR_DBSESS_SERVEROPTS ( SID_SVX_START + 71 )
+#define SID_ATTR_DBSESS_USERNAME ( SID_SVX_START + 72 )
+#define SID_ATTR_DBSESS_PASSWORD ( SID_SVX_START + 73 )
+#define SID_ATTR_DBSESS_SAVESESS ( SID_SVX_START + 74 )
+#define SID_ATTR_DBSESS_SAVEUSER ( SID_SVX_START + 75 )
+#define SID_ATTR_DBSESS_SERVERNAME ( SID_SVX_START + 76 )
+#define SID_ATTR_DBSESS_ENABLETYPE ( SID_SVX_START + 77 )
+#define SID_ATTR_NUMBERFORMAT_VALUE ( SID_SVX_START + 85 )
+#define SID_ATTR_NUMBERFORMAT_INFO ( SID_SVX_START + 86 )
+#define SID_ATTR_TRANSFORM ( SID_SVX_START + 87 )
+#define SID_ATTR_TRANSFORM_POS_X ( SID_SVX_START + 88 )
+#define SID_ATTR_TRANSFORM_POS_Y ( SID_SVX_START + 89 )
+#define SID_ATTR_TRANSFORM_WIDTH ( SID_SVX_START + 90 )
+#define SID_ATTR_TRANSFORM_HEIGHT ( SID_SVX_START + 91 )
+#define SID_ATTR_TRANSFORM_SIZE_POINT ( SID_SVX_START + 92 )
+#define SID_ATTR_TRANSFORM_ROT_X ( SID_SVX_START + 93 )
+#define SID_ATTR_TRANSFORM_ROT_Y ( SID_SVX_START + 94 )
+#define SID_ATTR_TRANSFORM_ANGLE ( SID_SVX_START + 95 )
+#define SID_RULER_NULL_OFFSET ( SID_SVX_START + 79 )
+#define SID_RULER_BORDERS ( SID_SVX_START + 80 )
+#define SID_RULER_OBJECT ( SID_SVX_START + 81 )
+#define SID_RULER_PAGE_POS ( SID_SVX_START + 82 )
+#define SID_RULER_ACT_LINE_ONLY ( SID_SVX_START + 83 )
+#define SID_RULER_LR_MIN_MAX ( SID_SVX_START + 84 )
+//#define SID_ZOOM_TOOLBOX ( SID_SVX_START + 96 ) -> sfxsids.hrc
+//#define SID_ZOOM_OUT ( SID_SVX_START + 97 ) -> sfxsids.hrc
+//#define SID_ZOOM_IN ( SID_SVX_START + 98 ) -> sfxsids.hrc
+//#define SID_SIZE_REAL ( SID_SVX_START + 99 ) -> sfxsids.hrc
+//#define SID_SIZE_PAGE ( SID_SVX_START + 100 ) -> sfxsids.hrc
+#define SID_SIZE_ALL ( SID_SVX_START + 101 )
+#define SID_DRAW_LINE ( SID_SVX_START + 102 )
+#define SID_DRAW_XLINE ( SID_SVX_START + 103 )
+#define SID_DRAW_RECT ( SID_SVX_START + 104 )
+#define SID_DRAW_RECT_ROUND ( SID_SVX_START + 105 )
+#define SID_DRAW_RECT_MOREROUND ( SID_SVX_START + 106 )
+#define SID_DRAW_FULLRECT ( SID_SVX_START + 107 )
+#define SID_DRAW_FULLRECT_ROUND ( SID_SVX_START + 108 )
+#define SID_DRAW_FULLRECT_MOREROUND ( SID_SVX_START + 109 )
+#define SID_DRAW_ELLIPSE ( SID_SVX_START + 110 )
+#define SID_DRAW_FULLELLIPSE ( SID_SVX_START + 111 )
+#define SID_DRAW_PIE ( SID_SVX_START + 112 )
+#define SID_DRAW_FULLPIE ( SID_SVX_START + 113 )
+#define SID_DRAW_ARC ( SID_SVX_START + 114 )
+#define SID_DRAW_CIRCLECUT ( SID_SVX_START + 115 )
+#define SID_DRAW_FULLCIRCLECUT ( SID_SVX_START + 116 )
+#define SID_DRAW_POLYGON ( SID_SVX_START + 117 )
+#define SID_DRAW_BEZIER_FILL ( SID_SVX_START + 118 )
+#define SID_BEZIER_INSERT ( SID_SVX_START + 119 )
+#define SID_BEZIER_DELETE ( SID_SVX_START + 120 )
+#define SID_BEZIER_MOVE ( SID_SVX_START + 121 )
+#define SID_BEZIER_CLOSE ( SID_SVX_START + 122 )
+#define SID_BEZIER_SMOOTH ( SID_SVX_START + 123 )
+#define SID_BEZIER_APPEND ( SID_SVX_START + 124 )
+#define SID_BEZIER_OPEN ( SID_SVX_START + 125 )
+#define SID_BEZIER_EDIT ( SID_SVX_START + 126 )
+#define SID_BEZIER_CUTLINE ( SID_SVX_START + 127 )
+#define SID_OBJECT_SELECT ( SID_SVX_START + 128 )
+#define SID_OBJECT_ROTATE ( SID_SVX_START + 129 )
+#define SID_OBJECT_ALIGN ( SID_SVX_START + 130 )
+#define SID_OBJECT_ALIGN_LEFT ( SID_SVX_START + 131 )
+#define SID_OBJECT_ALIGN_CENTER ( SID_SVX_START + 132 )
+#define SID_OBJECT_ALIGN_RIGHT ( SID_SVX_START + 133 )
+#define SID_OBJECT_ALIGN_UP ( SID_SVX_START + 134 )
+#define SID_OBJECT_ALIGN_MIDDLE ( SID_SVX_START + 135 )
+#define SID_OBJECT_ALIGN_DOWN ( SID_SVX_START + 136 )
+#define SID_COPY_FORMAT ( SID_SVX_START + 137 )
+#define SID_PASTE_FORMAT ( SID_SVX_START + 138 )
+#define SID_INSERT_ORGANIGRAM ( SID_SVX_START + 139 )
+#define SID_INSERT_DIAGRAM ( SID_SVX_START + 140 )
+#define SID_DRAW_CHART SID_INSERT_DIAGRAM
+#define SID_INSERT_TABLE ( SID_SVX_START + 141 )
+#define SID_ATTRIBUTES_AREA ( SID_SVX_START + 142 )
+#define SID_ATTRIBUTES_LINE ( SID_SVX_START + 143 )
+#define SID_CHOOSE_CONTROLS ( SID_SVX_START + 144 )
+#define SID_ACTIVATE_CONTROLS ( SID_SVX_START + 145 )
+#define SID_INSERT_PUSHBUTTON ( SID_SVX_START + 146 )
+#define SID_INSERT_RADIOBUTTON ( SID_SVX_START + 147 )
+#define SID_INSERT_CHECKBOX ( SID_SVX_START + 148 )
+#define SID_OUTLINE ( SID_SVX_START + 149 )
+#define SID_OUTLINE_UP ( SID_SVX_START + 150 )
+#define SID_OUTLINE_DOWN ( SID_SVX_START + 151 )
+#define SID_OUTLINE_LEFT ( SID_SVX_START + 152 )
+#define SID_OUTLINE_RIGHT ( SID_SVX_START + 153 )
+#define SID_OUTLINE_FORMAT ( SID_SVX_START + 154 )
+#define SID_OUTLINE_COLLAPSE_ALL ( SID_SVX_START + 155 )
+#define SID_OUTLINE_BULLET ( SID_SVX_START + 156 )
+#define SID_PRESENTATION ( SID_SVX_START + 157 )
+#define SID_TIMER ( SID_SVX_START + 158 )
+#define SID_REHEARSE_TIMINGS ( SID_SVX_START + 159 )
+#define SID_DIA ( SID_SVX_START + 160 )
+#define SID_HIDE_SLIDE ( SID_SVX_START + 161 )
+#define SID_CHOOSE_POLYGON ( SID_SVX_START + 162 )
+//#define SID_SHOW_BROWSER ( SID_SVX_START + 163 ) -> sfxsids.hrc
+#define SID_ATTR_FILL_STYLE ( SID_SVX_START + 164 )
+#define SID_ATTR_FILL_COLOR ( SID_SVX_START + 165 )
+#define SID_ATTR_FILL_GRADIENT ( SID_SVX_START + 166 )
+#define SID_ATTR_FILL_HATCH ( SID_SVX_START + 167 )
+#define SID_ATTR_FILL_BITMAP ( SID_SVX_START + 168 )
+#define SID_ATTR_LINE_STYLE ( SID_SVX_START + 169 )
+#define SID_ATTR_LINE_DASH ( SID_SVX_START + 170 )
+#define SID_ATTR_LINE_WIDTH ( SID_SVX_START + 171 )
+#define SID_ATTR_LINE_COLOR ( SID_SVX_START + 172 )
+#define SID_ATTR_LINE_START ( SID_SVX_START + 173 )
+#define SID_ATTR_LINE_END ( SID_SVX_START + 174 )
+#define SID_ATTR_LINE_STARTWIDTH ( SID_SVX_START + 175 )
+#define SID_ATTR_LINE_ENDWIDTH ( SID_SVX_START + 176 )
+#define SID_ATTR_LINE_STARTCENTER ( SID_SVX_START + 177 )
+#define SID_ATTR_LINE_ENDCENTER ( SID_SVX_START + 178 )
+#define SID_COLOR_TABLE ( SID_SVX_START + 179 )
+#define SID_GRADIENT_LIST ( SID_SVX_START + 180 )
+#define SID_HATCH_LIST ( SID_SVX_START + 181 )
+#define SID_BITMAP_LIST ( SID_SVX_START + 182 )
+#define SID_DASH_LIST ( SID_SVX_START + 183 )
+#define SID_LINEEND_LIST ( SID_SVX_START + 184 )
+#define SID_BACKGROUND_COLOR ( SID_SVX_START + 185 )
+#define SID_BACKGROUND_PATTERN ( SID_SVX_START + 186 )
+#define SID_ATTR_BORDER ( SID_SVX_START + 187 )
+#define SID_INSERT_FIXEDTEXT ( SID_SVX_START + 188 )
+#define SID_INSERT_GROUPBOX ( SID_SVX_START + 189 )
+#define SID_INSERT_EDIT ( SID_SVX_START + 190 )
+#define SID_INSERT_LISTBOX ( SID_SVX_START + 191 )
+#define SID_INSERT_COMBOBOX ( SID_SVX_START + 192 )
+#define SID_INSERT_SPINBUTTON ( SID_SVX_START + 193 )
+#define SID_INSERT_HSCROLLBAR ( SID_SVX_START + 194 )
+#define SID_INSERT_VSCROLLBAR ( SID_SVX_START + 195 )
+#define SID_INSERT_PREVIEW ( SID_SVX_START + 196 )
+#define SID_INSERT_URLBUTTON ( SID_SVX_START + 197 )
+#define SID_INSERT_SELECT ( SID_SVX_START + 198 )
+#define SID_DIALOG_TESTMODE ( SID_SVX_START + 199 )
+#define SID_FRAME_LINESTYLE ( SID_SVX_START + 200 )
+#define SID_FRAME_LINECOLOR ( SID_SVX_START + 201 )
+#define SID_ATTR_GRID_USE ( SID_SVX_START + 202 )
+#define SID_ATTR_GRID_VISIBLE ( SID_SVX_START + 203 )
+#define SID_ATTR_GRID_DRAW_X ( SID_SVX_START + 204 )
+#define SID_ATTR_GRID_DRAW_Y ( SID_SVX_START + 205 )
+#define SID_ATTR_GRID_DIVISION_X ( SID_SVX_START + 206 )
+#define SID_ATTR_GRID_DIVISION_Y ( SID_SVX_START + 207 )
+#define SID_ATTR_GRID_SNAP_X ( SID_SVX_START + 208 )
+#define SID_ATTR_GRID_SNAP_Y ( SID_SVX_START + 209 )
+#define SID_ATTR_GRID_ORIGIN_X ( SID_SVX_START + 210 )
+#define SID_ATTR_GRID_ORIGIN_Y ( SID_SVX_START + 211 )
+#define SID_IMPORT_GRAPH_PREVIEW ( SID_SVX_START + 212 )
+#define SID_IMPORT_GRAPH_LASTPATH ( SID_SVX_START + 213 )
+#define SID_IMPORT_GRAPH_LASTFILTER ( SID_SVX_START + 214 )
+#define SID_SEARCHDLG_SEARCHSTRINGS ( SID_SVX_START + 215 )
+#define SID_SEARCHDLG_REPLACESTRINGS ( SID_SVX_START + 216 )
+#define SID_ATTR_TABLE ( SID_SVX_START + 217 )
+#define SID_ATTR_TABLE_COLUMN ( SID_SVX_START + 218 )
+#define SID_ATTR_TABLE_ROW ( SID_SVX_START + 219 )
+#define SID_ATTR_COLUMNS ( SID_SVX_START + 220 )
+#define SID_ATTR_INSERT ( SID_SVX_START + 221 )
+#define SID_ATTR_ZOOM_USER ( SID_SVX_START + 222 )
+#define SID_ATTR_POSITION ( SID_SVX_START + 223 )
+#define SID_ATTR_SIZE ( SID_SVX_START + 224 )
+#define SID_TABLE_CELL ( SID_SVX_START + 225 )
+#define SID_ATTR_ALIGN_HOR_JUSTIFY ( SID_SVX_START + 226 )
+#define SID_ATTR_ALIGN_VER_JUSTIFY ( SID_SVX_START + 227 )
+#define SID_ATTR_ALIGN_MARGIN ( SID_SVX_START + 228 )
+#define SID_ATTR_ALIGN_STACKED ( SID_SVX_START + 229 )
+#define SID_ATTR_ALIGN_LINEBREAK ( SID_SVX_START + 230 )
+#define SID_OUTLINE_COLLAPSE ( SID_SVX_START + 231 )
+#define SID_OUTLINE_EXPAND_ALL ( SID_SVX_START + 232 )
+#define SID_OUTLINE_EXPAND ( SID_SVX_START + 233 )
+#define SID_OUTLINE_DELETEALL ( SID_SVX_START + 234 )
+#define SID_ATTR_TRANSFORM_PROTECT_POS ( SID_SVX_START + 236 )
+#define SID_ATTR_TRANSFORM_PROTECT_SIZE ( SID_SVX_START + 237 )
+#define SID_ATTR_TRANSFORM_AUTOSIZE ( SID_SVX_START + 238 ) // !!!
+#define SID_ATTR_TRANSFORM_INTERN ( SID_SVX_START + 239 )
+#define SID_INSERT_FRAME ( SID_SVX_START + 240 )
+#define SID_INSERT_GRAPHIC ( SID_SVX_START + 241 )
+#define SID_AUTOFORMAT ( SID_SVX_START + 242 )
+#define SID_SPELL_DIALOG ( SID_SVX_START + 243 )
+#define SID_INSERT_DRAW ( SID_SVX_START + 244 )
+#define SID_THESAURUS ( SID_SVX_START + 245 )
+#define SID_AUTOCOMPLETEWORD ( SID_SVX_START + 251 )
+#define SID_DRAW_TEXT ( SID_SVX_START + 253 )
+#define SID_DRAW_CAPTION ( SID_SVX_START + 254 )
+#define SID_INSERT_LEGEND SID_DRAW_CAPTION
+#define SID_DRAW_SELECT ( SID_SVX_START + 255 )
+#define SID_FONTWORK ( SID_SVX_START + 256 )
+#define SID_FORMTEXT_STYLE ( SID_SVX_START + 257 )
+#define SID_FORMTEXT_ADJUST ( SID_SVX_START + 258 )
+#define SID_FORMTEXT_DISTANCE ( SID_SVX_START + 259 )
+#define SID_FORMTEXT_START ( SID_SVX_START + 260 )
+#define SID_FORMTEXT_MIRROR ( SID_SVX_START + 261 )
+#define SID_FORMTEXT_OUTLINE ( SID_SVX_START + 262 )
+#define SID_FORMTEXT_SHADOW ( SID_SVX_START + 263 )
+#define SID_FORMTEXT_SHDWCOLOR ( SID_SVX_START + 264 )
+#define SID_FORMTEXT_SHDWXVAL ( SID_SVX_START + 265 )
+#define SID_FORMTEXT_SHDWYVAL ( SID_SVX_START + 266 )
+#define SID_FORMTEXT_STDFORM ( SID_SVX_START + 267 )
+#define SID_FORMTEXT_HIDEFORM ( SID_SVX_START + 268 )
+#define SID_FORMTEXT_RESERVED1 ( SID_SVX_START + 269 )
+#define SID_FORMTEXT_RESERVED2 ( SID_SVX_START + 270 )
+#define SID_FORMTEXT_RESERVED3 ( SID_SVX_START + 271 )
+#define SID_FORMTEXT_RESERVED4 ( SID_SVX_START + 272 )
+#define SID_FORMTEXT_RESERVED5 ( SID_SVX_START + 273 )
+#define SID_FORMTEXT_RESERVED_LAST ( SID_SVX_START + 274 )
+#define SID_GALLERY_ENABLE_ADDCOPY ( SID_SVX_START + 276 )
+#define SID_GALLERY_IMPORTTHEME ( SID_SVX_START + 277 )
+#define SID_GALLERY_BG_POS ( SID_SVX_START + 278 )
+//#define SID_GALLERY_BG_BRUSH ( SID_SVX_START + 279 ) -> sfxsids.hrc
+#define SID_GALLERY_FORMATS ( SID_SVX_START + 280 )
+//#define SID_SEARCH_OPTIONS ( SID_SVX_START + 281 ) -> sfxsids.hrc
+#define SID_OBJECT_HELL ( SID_SVX_START + 282 )
+#define SID_OBJECT_HEAVEN ( SID_SVX_START + 283 )
+#define SID_ATTR_LONG_ULSPACE ( SID_SVX_START + 284 )
+#define SID_ATTR_LONG_LRSPACE ( SID_SVX_START + 285 )
+#define SID_FRAME_TO_TOP ( SID_SVX_START + 286 )
+#define SID_FRAME_TO_BOTTOM ( SID_SVX_START + 287 )
+#define SID_POSTIT ( SID_SVX_START + 288 )
+//#define SID_ZOOM ( SID_SVX_START + 289 ) -> sfxsids.hrc
+#define SID_GRID ( SID_SVX_START + 290 )
+//#define SID_SEARCH_ITEM ( SID_SVX_START + 291 ) -> sfxsids.hrc
+#define SID_SEARCH_SEARCHSET ( SID_SVX_START + 292 )
+#define SID_SEARCH_REPLACESET ( SID_SVX_START + 293 )
+#define SID_SET_SUPER_SCRIPT ( SID_SVX_START + 294 )
+#define SID_SET_SUB_SCRIPT ( SID_SVX_START + 295 )
+#define SID_CHAR_DLG ( SID_SVX_START + 296 )
+#define SID_PARA_DLG ( SID_SVX_START + 297 )
+#define SID_ATTR_GRID_OPTIONS ( SID_SVX_START + 298 )
+#define SID_ATTR_FILL_SHADOW ( SID_SVX_START + 299 )
+#define SID_ATTR_LINEEND_STYLE ( SID_SVX_START + 301 )
+#define SID_ATTR_TRANSFORM_SLANT ( SID_SVX_START + 302 ) // !!!
+#define SID_ATTR_TRANSFORM_SHEAR ( SID_SVX_START + 304 )
+#define SID_ATTR_TRANSFORM_SHEAR_X ( SID_SVX_START + 305 )
+#define SID_ATTR_TRANSFORM_SHEAR_Y ( SID_SVX_START + 306 )
+#define SID_ATTR_TRANSFORM_SHEAR_VERTICAL ( SID_SVX_START + 307 )
+#define SID_ATTR_TRANSFORM_RESIZE_REF_X ( SID_SVX_START + 308 )
+#define SID_ATTR_TRANSFORM_RESIZE_REF_Y ( SID_SVX_START + 309 )
+#define SID_ATTR_TRANSFORM_AUTOWIDTH ( SID_SVX_START + 310 )
+#define SID_ATTR_TRANSFORM_AUTOHEIGHT ( SID_SVX_START + 311 )
+#define SID_ATTR_TRANSFORM_HORI_RELATION ( SID_SVX_START + 312 )
+#define SID_ATTR_TRANSFORM_VERT_RELATION ( SID_SVX_START + 313 )
+#define SID_ATTR_TRANSFORM_HORI_ORIENT ( SID_SVX_START + 314 )
+#define SID_ATTR_TRANSFORM_IN_VERTICAL_TEXT ( SID_SVX_START + 315 )
+#define SID_ATTR_TRANSFORM_IN_RTL_TEXT ( SID_SVX_START + 316 )
+#define SID_ATTR_TRANSFORM_HORI_MIRROR ( SID_SVX_START + 317 )
+#define SID_ATTR_TRANSFORM_ANCHOR ( SID_SVX_START + 318 )
+#define SID_ATTR_TRANSFORM_VERT_ORIENT ( SID_SVX_START + 319 )
+#define SID_TAB_INSERT ( SID_SVX_START + 320 )
+#define SID_TAB_COUNT ( SID_SVX_START + 321 )
+#define SID_TAB_POSITION ( SID_SVX_START + 322 )
+#define SID_TAB_ADJUST ( SID_SVX_START + 323 )
+#define SID_TAB_DECIMAL ( SID_SVX_START + 324 )
+#define SID_TAB_FILLCHAR ( SID_SVX_START + 325 )
+#define SID_SCAN ( SID_SVX_START + 330 )
+#define SID_TWAIN_SELECT ( SID_SVX_START + 331 )
+#define SID_TWAIN_TRANSFER ( SID_SVX_START + 332 )
+#define SID_CONTOUR_DLG ( SID_SVX_START + 334 )
+#define SID_CONTOUR_EXEC ( SID_SVX_START + 335 )
+#define SID_BORDER_OBJECT ( SID_SVX_START + 340 )
+#define SID_BORDER_LEFTLINE ( SID_SVX_START + 341 )
+#define SID_BORDER_RIGHTLINE ( SID_SVX_START + 342 )
+#define SID_BORDER_TOPLINE ( SID_SVX_START + 343 )
+#define SID_BORDER_BOTTOMLINE ( SID_SVX_START + 344 )
+#define SID_BORDER_HORIZONTALLINE ( SID_SVX_START + 345 )
+#define SID_BORDER_VERTICALLINE ( SID_SVX_START + 346 )
+#define SID_BORDER_DISTANCE ( SID_SVX_START + 347 )
+#define SID_SB_CONNECTIONPOOLING ( SID_SVX_START + 348 )
+#define SID_SB_DBREGISTEROPTIONS ( SID_SVX_START + 349 )
+#define SID_BMPMASK ( SID_SVX_START + 350 )
+#define SID_BMPMASK_PIPETTE ( SID_SVX_START + 351 )
+#define SID_BMPMASK_BMPSELECT ( SID_SVX_START + 352 )
+#define SID_BMPMASK_EXEC ( SID_SVX_START + 353 )
+//#define SID_HYPERLINK_INSERT ( SID_SVX_START + 360 ) -> sfxsids.hrc
+//#define SID_HYPERLINK_GETLINK ( SID_SVX_START + 361 ) -> sfxsids.hrc
+//#define SID_HYPERLINK_SETLINK ( SID_SVX_START + 362 ) -> sfxsids.hrc
+#define SID_NO_GRAPHICS ( SID_SVX_START + 364 )
+#define SID_IMPORT_GRAPH_LASTURL ( SID_SVX_START + 365 )
+//#define SID_NAVIGATOR ( SID_SVX_START + 366 ) -> sfxsids.hrc
+#define SID_ATTR_TEXT_FITTOSIZE ( SID_SVX_START + 367 )
+#define SID_ATTR_BRUSH_ROW ( SID_SVX_START + 368 )
+#define SID_OPTFILTER_MSOFFICE ( SID_SVX_START + 369 )
+//#define SID_TASKPANE ( SID_SVX_START + 370 ) -> sfxsids.hrc
+#define SID_IMAP ( SID_SVX_START + 371 )
+#define SID_IMAP_DLG ( SID_SVX_START + 372 )
+#define SID_IMAP_SELECT ( SID_SVX_START + 373 )
+#define SID_IMAP_EXEC ( SID_SVX_START + 374 )
+#define SID_SHOW_HIDDEN ( SID_SVX_START + 375 )
+#define SID_SHOW_FORMS ( SID_SVX_START + 376 )
+#define SID_DRAW_RECT_NOFILL ( SID_SVX_START + 378 )
+#define SID_DRAW_RECT_ROUND_NOFILL ( SID_SVX_START + 379 )
+#define SID_DRAW_SQUARE ( SID_SVX_START + 380 )
+#define SID_DRAW_SQUARE_ROUND ( SID_SVX_START + 381 )
+#define SID_DRAW_SQUARE_NOFILL ( SID_SVX_START + 382 )
+#define SID_DRAW_SQUARE_ROUND_NOFILL ( SID_SVX_START + 383 )
+#define SID_DRAW_ELLIPSE_NOFILL ( SID_SVX_START + 384 )
+#define SID_DRAW_CIRCLE ( SID_SVX_START + 385 )
+#define SID_DRAW_CIRCLE_NOFILL ( SID_SVX_START + 386 )
+#define SID_DRAW_PIE_NOFILL ( SID_SVX_START + 387 )
+#define SID_DRAW_CIRCLEPIE ( SID_SVX_START + 388 )
+#define SID_DRAW_CIRCLEPIE_NOFILL ( SID_SVX_START + 389 )
+#define SID_DRAW_CIRCLEARC ( SID_SVX_START + 390 )
+#define SID_DRAW_CIRCLECUT_NOFILL ( SID_SVX_START + 391 )
+#define SID_DRAW_ELLIPSECUT ( SID_SVX_START + 392 )
+#define SID_DRAW_ELLIPSECUT_NOFILL ( SID_SVX_START + 393 )
+#define SID_DRAW_XPOLYGON ( SID_SVX_START + 394 )
+#define SID_DRAW_POLYGON_NOFILL ( SID_SVX_START + 395 )
+#define SID_DRAW_XPOLYGON_NOFILL ( SID_SVX_START + 396 )
+#define SID_DRAW_BEZIER_NOFILL ( SID_SVX_START + 397 )
+#define SID_DRAWTBX_TEXT ( SID_SVX_START + 398 )
+#define SID_DRAWTBX_RECTANGLES ( SID_SVX_START + 399 )
+#define SID_DRAWTBX_ELLIPSES ( SID_SVX_START + 400 )
+#define SID_DRAWTBX_LINES ( SID_SVX_START + 401 )
+//#define SID_ZOOM_NEXT ( SID_SVX_START + 402 ) -> sfxsids.hrc
+//#define SID_ZOOM_PREV ( SID_SVX_START + 403 ) -> sfxsids.hrc
+#define SID_BACKGRND_DESTINATION ( SID_SVX_START + 404 )
+#define SID_ATTR_FLASH ( SID_SVX_START + 406 )
+#define SID_ATTR_3D_LIGHT ( SID_SVX_START + 407 ) /* --> Slots mit --> koennen demnaechst entfallen ( heute 12.03.1998 ) */
+#define SID_ATTR_3D_START SID_ATTR_3D_LIGHT
+#define SID_ATTR_3D_LIGHTINTENSITY ( SID_SVX_START + 408 ) /* --> Slots mit --> koennen demnaechst entfallen ( heute 12.03.1998 ) */
+#define SID_ATTR_3D_LIGHTCOLOR ( SID_SVX_START + 409 ) /* --> Slots mit --> koennen demnaechst entfallen ( heute 12.03.1998 ) */
+#define SID_ATTR_3D_AMBIENTINTENSITY ( SID_SVX_START + 410 ) /* --> Slots mit --> koennen demnaechst entfallen ( heute 12.03.1998 ) */
+#define SID_ATTR_3D_AMBIENTCOLOR ( SID_SVX_START + 411 )
+#define SID_IMPORT_GRAPH_LINK ( SID_SVX_START + 412 )
+
+//! moved to sfx2, still in use:
+//#define SID_HTML_MODE ( SID_SVX_START + 414 )
+
+#define SID_RULER_PROTECT ( SID_SVX_START + 415 )
+//#define SID_INET_DLG ( SID_SVX_START + 416 ) -> sfxsids.hrc
+#define SID_COLOR_CONTROL ( SID_SVX_START + 417 )
+#define SID_ATTR_3D_PERSPECTIVE ( SID_SVX_START + 418 )
+#define SID_ATTR_3D_DEPTH ( SID_SVX_START + 419 )
+#define SID_ATTR_3D_DISTANCE ( SID_SVX_START + 420 )
+#define SID_ATTR_3D_FOCAL_LENGTH ( SID_SVX_START + 421 )
+#define SID_ATTR_3D_INTERN ( SID_SVX_START + 422 )
+#define SID_PSZ_FUNCTION ( SID_SVX_START + 423 )
+//#define SID_AUTO_CORRECT_DLG ( SID_SVX_START + 424 ) -> sfxsids.hrc
+#define SID_OFASLOTS_START ( SID_SVX_START + 425 )
+//#define SID_SD_AUTOPILOT ( SID_SVX_START + 425 ) -> sfxsids.hrc
+#define SID_AUTOPILOT SID_SD_AUTOPILOT
+
+#define SID_TABLE_INSERT_COL_DLG ( SID_SVX_START + 426 )
+#define SID_TABLE_INSERT_ROW_DLG ( SID_SVX_START + 427 )
+#define SID_TABLE_PARAM_INSERT_AFTER ( SID_SVX_START + 428 )
+
+#define SID_TABLEDESIGN ( SID_SVX_START + 429 )
+#define SID_MN_AUTOPILOT ( SID_SVX_START + 430 )
+#define SID_GENERAL_OPTIONS ( SID_SVX_START + 432 )
+#define SID_SW_EDITOPTIONS ( SID_SVX_START + 433 )
+#define SID_SD_EDITOPTIONS ( SID_SVX_START + 434 )
+#define SID_SC_EDITOPTIONS ( SID_SVX_START + 435 )
+#define SID_SM_EDITOPTIONS ( SID_SVX_START + 436 )
+#define SID_SCH_EDITOPTIONS ( SID_SVX_START + 437 )
+#define SID_SIM_EDITOPTIONS ( SID_SVX_START + 438 )
+#define SID_SW_ONLINEOPTIONS ( SID_SVX_START + 439 )
+#define SID_MN_OPTIONS ( SID_SVX_START + 440 )
+#define SID_GET_COLORTABLE ( SID_SVX_START + 441 )
+#define SID_MN_INSERT_OBJECT_DLGS ( SID_SVX_START + 442 )
+#define SID_OUTLINE_TO_IMPRESS ( SID_SVX_START + 443 )
+#define SID_SIM_TP_COLOR ( SID_SVX_START + 444 )
+#define SID_SIM_TP_EFFECTS ( SID_SVX_START + 445 )
+#define SID_SPELLCHECKER_CHANGED ( SID_SVX_START + 446 )
+#define SID_SD_GRAPHIC_OPTIONS ( SID_SVX_START + 447 )
+#define SID_SM_TP_PRINTOPTIONS ( SID_SVX_START + 448 )
+#define SID_OFASLOTS_END ( SID_SVX_START + 449 )
+#define SID_SB_STARBASEOPTIONS ( SID_SVX_START + 450 )
+#define SID_SWREGISTER_COLLECTION ( SID_SVX_START + 451 )
+#define SID_FILTER_DLG ( SID_SVX_START + 452 )
+#define SID_ATTR_BRUSH_TABLE ( SID_SVX_START + 453 )
+#define SID_GROUP ( SID_SVX_START + 454 )
+#define SID_UNGROUP ( SID_SVX_START + 455 )
+#define SID_SET_DEFAULT ( SID_SVX_START + 456 )
+#define SID_BEZIER ( SID_SVX_START + 458 )
+#define SID_ATTR_3D_DOUBLE_SIDED ( SID_SVX_START + 459 )
+#define SID_ATTR_ALIGN_INDENT ( SID_SVX_START + 460 )
+#define SID_DEC_INDENT ( SID_SVX_START + 461 )
+#define SID_INC_INDENT ( SID_SVX_START + 462 )
+#define SID_DRAW_FREELINE ( SID_SVX_START + 463 )
+#define SID_DRAW_FREELINE_NOFILL ( SID_SVX_START + 464 )
+#define SID_DRAW_TEXT_MARQUEE ( SID_SVX_START + 465 )
+#define SID_SCH_TP_DEFCOLORS ( SID_SVX_START + 466 )
+#define SID_SWREGISTER_MODE ( SID_SVX_START + 467 )
+#define SID_OPTBASE_DATABASENAMES ( SID_SVX_START + 468 )
+#define SID_GRFFILTER ( SID_SVX_START + 469 )
+#define SID_GRFFILTER_INVERT ( SID_SVX_START + 470 )
+#define SID_GRFFILTER_SMOOTH ( SID_SVX_START + 471 )
+#define SID_GRFFILTER_SHARPEN ( SID_SVX_START + 472 )
+#define SID_GRFFILTER_REMOVENOISE ( SID_SVX_START + 473 )
+#define SID_GRFFILTER_SOBEL ( SID_SVX_START + 474 )
+#define SID_GRFFILTER_MOSAIC ( SID_SVX_START + 475 )
+#define SID_GRFFILTER_EMBOSS ( SID_SVX_START + 476 )
+#define SID_GRFFILTER_POSTER ( SID_SVX_START + 477 )
+#define SID_GRFFILTER_POPART ( SID_SVX_START + 478 )
+#define SID_GRFFILTER_SEPIA ( SID_SVX_START + 479 )
+#define SID_GRFFILTER_SOLARIZE ( SID_SVX_START + 480 )
+#define SID_COLL_CLEAR ( SID_SVX_START + 536 )
+#define SID_SHOW_ADDRESS ( SID_SVX_START + 538 )
+#define SID_APP_ENTERWAIT ( SID_SVX_START + 550 )
+#define SID_APP_LEAVEWAIT ( SID_SVX_START + 551 )
+#define SID_APP_ISWAIT ( SID_SVX_START + 552 )
+#define SID_OFA_TBL_DESIGNVIEW ( SID_SVX_START + 554 )
+#define SID_OFA_TBL_ADRESSBOOK ( SID_SVX_START + 555 )
+#define SID_OFA_QRY_DESIGNVIEW ( SID_SVX_START + 556 )
+#define SID_OFA_QRY_SQLVIEW ( SID_SVX_START + 557 )
+#define SID_OFA_FRM_DESIGNVIEW ( SID_SVX_START + 558 )
+#define SID_OFA_RPT_DESIGNVIEW ( SID_SVX_START + 559 )
+#define SID_OFA_TBL_CREATE ( SID_SVX_START + 560 )
+#define SID_OFA_QRY_CREATE ( SID_SVX_START + 561 )
+#define SID_OFA_FRM_CREATE ( SID_SVX_START + 562 )
+#define SID_OFA_RPT_CREATE ( SID_SVX_START + 563 )
+#define SID_FIELD_GRABFOCUS ( SID_SVX_START + 567 )
+#define SID_ATTR_3D_HORZ_SEGS ( SID_SVX_START + 568 )
+#define SID_ATTR_3D_VERT_SEGS ( SID_SVX_START + 569 )
+#define SID_ATTR_3D_DUMMY_1 ( SID_SVX_START + 570 )
+#define SID_ATTR_3D_DUMMY_2 ( SID_SVX_START + 571 )
+#define SID_BROWSER_DLG ( SID_SVX_START + 572 )
+#define SID_OFA_TBL_COMPRESS ( SID_SVX_START + 576 )
+#define SID_ATTR_ALIGN_DEGREES ( SID_SVX_START + 577 )
+#define SID_ATTR_ALIGN_LOCKPOS ( SID_SVX_START + 578 )
+#define SID_ATTR_LINEEND_WIDTH_DEFAULT ( SID_SVX_START + 579 )
+#define SID_ATTR_NUMBERFORMAT_ONE_AREA ( SID_SVX_START + 580 )
+#define SID_FUNCTION_CONTROL ( SID_SVX_START + 581 )
+#define SID_TAB_REMOVE ( SID_SVX_START + 582 )
+#define SID_TAB_REMOVE_ALL ( SID_SVX_START + 583 )
+#define SID_TAB_REMOVE_BY_INDEX ( SID_SVX_START + 584 )
+#define SID_OFA_VW_CREATE ( SID_SVX_START + 585 )
+#define SID_OFA_REL_DESIGNVIEW ( SID_SVX_START + 588 )
+#define SID_OFA_MANUAL_SQL ( SID_SVX_START + 589 )
+#define SID_PARA_BACKGRND_DESTINATION ( SID_SVX_START + 590 )
+
+#define SID_FMSLOTS_START ( SID_SVX_START + 592 )
+#define SID_FM_CONFIG ( SID_SVX_START + 593 )
+#define SID_FM_PUSHBUTTON ( SID_SVX_START + 594 )
+#define SID_FM_RADIOBUTTON ( SID_SVX_START + 595 )
+#define SID_FM_CHECKBOX ( SID_SVX_START + 596 )
+#define SID_FM_FIXEDTEXT ( SID_SVX_START + 597 )
+#define SID_FM_GROUPBOX ( SID_SVX_START + 598 )
+#define SID_FM_EDIT ( SID_SVX_START + 599 )
+#define SID_FM_LISTBOX ( SID_SVX_START + 600 )
+#define SID_FM_COMBOBOX ( SID_SVX_START + 601 )
+#define SID_FM_DBGRID ( SID_SVX_START + 603 )
+#define SID_FM_IMAGEBUTTON ( SID_SVX_START + 604 )
+#define SID_FM_FILECONTROL ( SID_SVX_START + 605 )
+#define SID_FM_CHANGECOL ( SID_SVX_START + 606 )
+#define SID_FM_NAVIGATIONBAR ( SID_SVX_START + 607 )
+#define SID_FM_NEW_HIDDEN ( SID_SVX_START + 608 )
+#define SID_FM_RENAME_OBJECT ( SID_SVX_START + 609 )
+#define SID_FM_DELETEROWS ( SID_SVX_START + 610 )
+#define SID_FM_INSERTCOL ( SID_SVX_START + 611 )
+#define SID_FM_DELETECOL ( SID_SVX_START + 612 )
+#define SID_FM_CTL_PROPERTIES ( SID_SVX_START + 613 )
+#define SID_FM_PROPERTIES ( SID_SVX_START + 614 )
+#define SID_FM_TAB_DIALOG ( SID_SVX_START + 615 )
+#define SID_FM_RECORD_FIRST ( SID_SVX_START + 616 )
+#define SID_FM_RECORD_NEXT ( SID_SVX_START + 617 )
+#define SID_FM_RECORD_PREV ( SID_SVX_START + 618 )
+#define SID_FM_RECORD_LAST ( SID_SVX_START + 619 )
+#define SID_FM_RECORD_NEW ( SID_SVX_START + 620 )
+#define SID_FM_RECORD_DELETE ( SID_SVX_START + 621 )
+#define SID_FM_RECORD_ABSOLUTE ( SID_SVX_START + 622 )
+#define SID_FM_ADD_FIELD ( SID_SVX_START + 623 )
+#define SID_FM_RECORD_TEXT ( SID_SVX_START + 624 )
+#define SID_FM_RECORD_FROM_TEXT ( SID_SVX_START + 625 )
+#define SID_FM_RECORD_TOTAL ( SID_SVX_START + 626 )
+#define SID_FM_RECORD_SAVE ( SID_SVX_START + 627 )
+#define SID_FM_CREATE_CONTROL ( SID_SVX_START + 628 )
+#define SID_FM_DESIGN_MODE ( SID_SVX_START + 629 )
+#define SID_FM_RECORD_UNDO ( SID_SVX_START + 630 )
+#define SID_FM_CONTROL_IDENTIFIER ( SID_SVX_START + 631 )
+#define SID_FM_CONTROL_INVENTOR ( SID_SVX_START + 632 )
+#define SID_FM_SHOW_FMEXPLORER ( SID_SVX_START + 633 )
+#define SID_FM_FIELDS_CONTROL ( SID_SVX_START + 634 )
+#define SID_FM_SHOW_PROPERTIES ( SID_SVX_START + 635 )
+#define SID_FM_PROPERTY_CONTROL ( SID_SVX_START + 636 )
+#define SID_FM_FMEXPLORER_CONTROL ( SID_SVX_START + 637 )
+#define SID_FM_NEW ( SID_SVX_START + 638 )
+#define SID_FM_DELETE ( SID_SVX_START + 639 )
+#define SID_FM_NEW_FORM ( SID_SVX_START + 640 )
+#define SID_FMSLOTS_END ( SID_SVX_START + 641 )
+#define SID_REDLIN_FILTER_PAGE ( SID_SVX_START + 642 )
+#define SID_REDLIN_VIEW_PAGE ( SID_SVX_START + 643 )
+#define SID_3D_WIN ( SID_SVX_START + 644 )
+#define SID_3D_STATE ( SID_SVX_START + 645 )
+#define SID_3D_INIT ( SID_SVX_START + 646 )
+#define SID_3D_ASSIGN ( SID_SVX_START + 647 )
+#define SID_CONVERT_TO_3D ( SID_SVX_START + 648 )
+#define SID_CONVERT_TO_3D_LATHE_FAST ( SID_SVX_START + 649 )
+#define SID_ATTR_3D_PERCENT_DIAGONAL ( SID_SVX_START + 650 )
+#define SID_ATTR_3D_BACKSCALE ( SID_SVX_START + 651 )
+#define SID_ATTR_3D_END_ANGLE ( SID_SVX_START + 652 )
+#define SID_ATTR_3D_NORMALS_KIND ( SID_SVX_START + 653 )
+#define SID_ATTR_3D_NORMALS_INVERT ( SID_SVX_START + 654 )
+#define SID_ATTR_3D_TWO_SIDED_LIGHTING ( SID_SVX_START + 655 )
+#define SID_ATTR_3D_TEXTURE_KIND ( SID_SVX_START + 656 )
+#define SID_ATTR_3D_TEXTURE_MODE ( SID_SVX_START + 657 )
+#define SID_ATTR_3D_TEXTURE_PROJ_X ( SID_SVX_START + 658 )
+#define SID_ATTR_3D_TEXTURE_PROJ_Y ( SID_SVX_START + 659 )
+#define SID_ATTR_3D_TEXTURE_FILTER ( SID_SVX_START + 660 )
+#define SID_ATTR_3D_MAT_COLOR ( SID_SVX_START + 661 )
+#define SID_ATTR_3D_MAT_EMISSION ( SID_SVX_START + 662 )
+#define SID_ATTR_3D_MAT_SPECULAR ( SID_SVX_START + 663 )
+#define SID_ATTR_3D_MAT_SPECULAR_INTENSITY ( SID_SVX_START + 664 )
+#define SID_ATTR_3D_SHADE_MODE ( SID_SVX_START + 665 )
+#define SID_ATTR_3D_SHADOW_3D ( SID_SVX_START + 666 )
+#define SID_ATTR_3D_SHADOW_SLANT ( SID_SVX_START + 667 )
+#define SID_ATTR_3D_LIGHTCOLOR_1 ( SID_SVX_START + 668 )
+#define SID_ATTR_3D_LIGHTCOLOR_2 ( SID_SVX_START + 669 )
+#define SID_ATTR_3D_LIGHTCOLOR_3 ( SID_SVX_START + 670 )
+#define SID_ATTR_3D_LIGHTCOLOR_4 ( SID_SVX_START + 671 )
+#define SID_ATTR_3D_LIGHTCOLOR_5 ( SID_SVX_START + 672 )
+#define SID_ATTR_3D_LIGHTCOLOR_6 ( SID_SVX_START + 673 )
+#define SID_ATTR_3D_LIGHTCOLOR_7 ( SID_SVX_START + 674 )
+#define SID_ATTR_3D_LIGHTCOLOR_8 ( SID_SVX_START + 675 )
+#define SID_ATTR_3D_LIGHTON_1 ( SID_SVX_START + 676 )
+#define SID_ATTR_3D_LIGHTON_2 ( SID_SVX_START + 677 )
+#define SID_ATTR_3D_LIGHTON_3 ( SID_SVX_START + 678 )
+#define SID_ATTR_3D_LIGHTON_4 ( SID_SVX_START + 679 )
+#define SID_ATTR_3D_LIGHTON_5 ( SID_SVX_START + 680 )
+#define SID_ATTR_3D_LIGHTON_6 ( SID_SVX_START + 681 )
+#define SID_ATTR_3D_LIGHTON_7 ( SID_SVX_START + 682 )
+#define SID_ATTR_3D_LIGHTON_8 ( SID_SVX_START + 683 )
+#define SID_ATTR_3D_LIGHTDIRECTION_1 ( SID_SVX_START + 684 )
+#define SID_ATTR_3D_LIGHTDIRECTION_2 ( SID_SVX_START + 685 )
+#define SID_ATTR_3D_LIGHTDIRECTION_3 ( SID_SVX_START + 686 )
+#define SID_ATTR_3D_LIGHTDIRECTION_4 ( SID_SVX_START + 687 )
+#define SID_ATTR_3D_LIGHTDIRECTION_5 ( SID_SVX_START + 688 )
+#define SID_ATTR_3D_LIGHTDIRECTION_6 ( SID_SVX_START + 689 )
+#define SID_ATTR_3D_LIGHTDIRECTION_7 ( SID_SVX_START + 690 )
+#define SID_ATTR_3D_LIGHTDIRECTION_8 ( SID_SVX_START + 691 )
+#define SID_ATTR_3D_END SID_ATTR_3D_LIGHTDIRECTION_8
+#define SID_ATTR_3D_DUMMY_3 ( SID_SVX_START + 692 )
+#define SID_ATTR_3D_DUMMY_4 ( SID_SVX_START + 693 )
+#define SID_ATTR_3D_DUMMY_5 ( SID_SVX_START + 694 )
+#define SID_ATTR_3D_DUMMY_6 ( SID_SVX_START + 695 )
+#define SID_ATTR_3D_DUMMY_7 ( SID_SVX_START + 696 )
+#define SID_ATTR_3D_DUMMY_8 ( SID_SVX_START + 697 )
+#define SID_ATTR_3D_DUMMY_9 ( SID_SVX_START + 698 )
+#define SID_ATTR_3D_DUMMY_10 ( SID_SVX_START + 699 )
+#define SID_ATTR_NUMBERFORMAT_NOLANGUAGE ( SID_SVX_START + 700 )
+#define SID_MN_GROUP ( SID_SVX_START + 701 )
+#define SID_FM_AUTO_ORDER ( SID_SVX_START + 702 )
+
+#define SID_MORE_FMSLOTS_START ( SID_SVX_START + 702 )
+#define SID_FM_SHOW_PROPERTY_BROWSER ( SID_SVX_START + 703 )
+#define SID_FM_DATEFIELD ( SID_SVX_START + 704 )
+#define SID_FM_TIMEFIELD ( SID_SVX_START + 705 )
+#define SID_FM_NUMERICFIELD ( SID_SVX_START + 706 )
+#define SID_FM_CURRENCYFIELD ( SID_SVX_START + 707 )
+#define SID_FM_PATTERNFIELD ( SID_SVX_START + 708 )
+#define SID_FM_OPEN_READONLY ( SID_SVX_START + 709 )
+#define SID_FM_IMAGECONTROL ( SID_SVX_START + 710 )
+#define SID_FM_REMOVE_FILTER_SORT ( SID_SVX_START + 711 )
+#define SID_FM_SORTUP ( SID_SVX_START + 712 )
+#define SID_FM_SORTDOWN ( SID_SVX_START + 713 )
+#define SID_FM_ORDERCRIT ( SID_SVX_START + 714 )
+#define SID_FM_FILTERCRIT ( SID_SVX_START + 715 )
+#define SID_FM_AUTOFILTER ( SID_SVX_START + 716 )
+#define SID_FM_COUNTALL ( SID_SVX_START + 717 )
+#define SID_FM_NATIVESQL ( SID_SVX_START + 720 )
+#define SID_FM_EXECUTE ( SID_SVX_START + 721 )
+#define SID_SBA_QRY_EXECUTE SID_FM_EXECUTE
+#define SID_FM_ADDTABLE ( SID_SVX_START + 722 )
+#define SID_FM_FORM_FILTERED ( SID_SVX_START + 723 )
+#define SID_FM_REFRESH ( SID_SVX_START + 724 )
+#define SID_FM_SEARCH ( SID_SVX_START + 725 )
+#define SID_FM_LEAVE_CREATE ( SID_SVX_START + 726 ) // Formcontroller-Button rauspoppen
+#define SID_FM_USE_WIZARDS ( SID_SVX_START + 727 )
+#define SID_FM_FORMATTEDFIELD ( SID_SVX_START + 728 )
+#define SID_FM_FILTER_START ( SID_SVX_START + 729 )
+#define SID_FM_FILTER_EXIT ( SID_SVX_START + 730 )
+#define SID_FM_FILTER_EXECUTE ( SID_SVX_START + 731 )
+#define SID_FM_FILTER_NAVIGATOR ( SID_SVX_START + 732 )
+#define SID_FM_CHANGECONTROLTYPE ( SID_SVX_START + 733 )
+#define SID_FM_CONVERTTO_EDIT ( SID_SVX_START + 734 )
+#define SID_FM_CONVERTTO_BUTTON ( SID_SVX_START + 735 )
+#define SID_FM_CONVERTTO_FIXEDTEXT ( SID_SVX_START + 736 )
+#define SID_FM_CONVERTTO_LISTBOX ( SID_SVX_START + 737 )
+#define SID_FM_CONVERTTO_CHECKBOX ( SID_SVX_START + 738 )
+#define SID_FM_CONVERTTO_RADIOBUTTON ( SID_SVX_START + 739 )
+#define SID_FM_CONVERTTO_GROUPBOX ( SID_SVX_START + 740 )
+#define SID_FM_CONVERTTO_COMBOBOX ( SID_SVX_START + 741 )
+#define SID_FM_CONVERTTO_IMAGEBUTTON ( SID_SVX_START + 743 )
+#define SID_FM_CONVERTTO_FILECONTROL ( SID_SVX_START + 744 )
+#define SID_FM_CONVERTTO_DATE ( SID_SVX_START + 745 )
+#define SID_FM_CONVERTTO_TIME ( SID_SVX_START + 746 )
+#define SID_FM_CONVERTTO_NUMERIC ( SID_SVX_START + 747 )
+#define SID_FM_CONVERTTO_CURRENCY ( SID_SVX_START + 748 )
+#define SID_FM_CONVERTTO_PATTERN ( SID_SVX_START + 749 )
+#define SID_FM_CONVERTTO_IMAGECONTROL ( SID_SVX_START + 750 )
+#define SID_FM_CONVERTTO_FORMATTED ( SID_SVX_START + 751 )
+#define SID_FM_FILTER_NAVIGATOR_CONTROL ( SID_SVX_START + 752 )
+#define SID_FM_HIDECOL ( SID_SVX_START + 753 )
+#define SID_FM_SHOWCOLS ( SID_SVX_START + 754 )
+#define SID_FM_SHOWCOLS_MORE ( SID_SVX_START + 755 )
+#define SID_FM_SHOWALLCOLS ( SID_SVX_START + 756 )
+#define SID_FM_TWOFIELDS_DATE_N_TIME ( SID_SVX_START + 757 )
+#define SID_FM_FILTER_EDIT ( SID_SVX_START + 758 )
+#define SID_FM_FILTER_IS_NULL ( SID_SVX_START + 759 )
+#define SID_FM_FILTER_IS_NOT_NULL ( SID_SVX_START + 760 )
+#define SID_FM_VIEW_AS_GRID ( SID_SVX_START + 761 )
+#define SID_FM_FILTER_REMOVE ( SID_SVX_START + 762 )
+#define SID_FM_AUTOCONTROLFOCUS ( SID_SVX_START + 763 )
+#define SID_DSBROWSER_EXPLORER ( SID_SVX_START + 764 )
+#define SID_FM_CREATE_FIELDCONTROL ( SID_SVX_START + 765 )
+#define SID_FM_DATACCESS_DESCRIPTOR ( SID_SVX_START + 766 )
+#define SID_FM_TOGGLECONTROLFOCUS ( SID_SVX_START + 767 )
+#define SID_FM_SCROLLBAR ( SID_SVX_START + 768 )
+#define SID_FM_SPINBUTTON ( SID_SVX_START + 769 )
+#define SID_FM_CONVERTTO_SCROLLBAR ( SID_SVX_START + 770 )
+#define SID_FM_CONVERTTO_SPINBUTTON ( SID_SVX_START + 771 )
+#define SID_FM_CONVERTTO_NAVIGATIONBAR ( SID_SVX_START + 772 )
+#define SID_FM_SHOW_DATANAVIGATOR ( SID_SVX_START + 773 )
+#define SID_FM_DATANAVIGATOR_CONTROL ( SID_SVX_START + 774 )
+#define SID_FM_REFRESH_FORM_CONTROL ( SID_SVX_START + 775 )
+#define SID_MORE_FMSLOTS_END ( SID_SVX_START + 850 )
+
+#define SID_HLINKBAR_LINK ( SID_SVX_START + 851 )
+#define SID_HLINKBAR_BOOKMARK ( SID_SVX_START + 852 )
+#define SID_HLINKBAR_SEARCH ( SID_SVX_START + 853 )
+#define SID_HLINKBAR_TARGET ( SID_SVX_START + 854 )
+#define SID_PARAM_NUM_PRESET ( SID_SVX_START + 856 )
+#define SID_PARAM_CUR_NUMBER ( SID_SVX_START + 857 )
+#define SID_PARAM_CHILD_LEVELS ( SID_SVX_START + 858 )
+#define SID_PARAM_CUR_NUM_LEVEL ( SID_SVX_START + 859 )
+#define SID_CREATE_SW_DRAWVIEW ( SID_SVX_START + 860 )
+#define SID_ATTR_GRAF_LUMINANCE ( SID_SVX_START + 863 )
+#define SID_ATTR_GRAF_CONTRAST ( SID_SVX_START + 864 )
+#define SID_ATTR_GRAF_RED ( SID_SVX_START + 865 )
+#define SID_ATTR_GRAF_GREEN ( SID_SVX_START + 866 )
+#define SID_ATTR_GRAF_BLUE ( SID_SVX_START + 867 )
+#define SID_ATTR_GRAF_GAMMA ( SID_SVX_START + 868 )
+#define SID_ATTR_GRAF_TRANSPARENCE ( SID_SVX_START + 869 )
+#define SID_ATTR_GRAF_INVERT ( SID_SVX_START + 870 )
+#define SID_ATTR_GRAF_MODE ( SID_SVX_START + 871 )
+#define SID_ATTR_GRAF_RESERVE2 ( SID_SVX_START + 872 )
+#define SID_ATTR_GRAF_RESERVE3 ( SID_SVX_START + 873 )
+#define SID_ATTR_GRAF_RESERVE4 ( SID_SVX_START + 874 )
+#define SID_ATTR_GRAF_RESERVE5 ( SID_SVX_START + 875 )
+//#define SID_COMP_BIBLIOGRAPHY ( SID_SVX_START + 880 ) -> sfxsids.hrc
+#define SID_ATTR_GRAF_KEEP_ZOOM ( SID_SVX_START + 882 )
+#define SID_ATTR_GRAF_CROP ( SID_SVX_START + 883 )
+#define SID_ATTR_GRAF_FRMSIZE ( SID_SVX_START + 884 )
+#define SID_ATTR_GRAF_FRMSIZE_PERCENT ( SID_SVX_START + 885 )
+#define SID_ATTR_GRAF_GRAPHIC ( SID_SVX_START + 886 )
+#define SID_ASIAN_DLG ( SID_SVX_START + 904 )
+#define SID_DRAW_TEXT_VERTICAL SID_ATTR_CHAR_VERTICAL
+#define SID_DRAW_CAPTION_VERTICAL ( SID_SVX_START + 906 )
+#define SID_TEXTDIRECTION_LEFT_TO_RIGHT ( SID_SVX_START + 907 )
+#define SID_TEXTDIRECTION_TOP_TO_BOTTOM ( SID_SVX_START + 908 )
+#define SID_TRANSLITERATE_UPPER ( SID_SVX_START + 912 )
+#define SID_TRANSLITERATE_LOWER ( SID_SVX_START + 913 )
+#define SID_TRANSLITERATE_HALFWIDTH ( SID_SVX_START + 914 )
+#define SID_TRANSLITERATE_FULLWIDTH ( SID_SVX_START + 915 )
+#define SID_TRANSLITERATE_HIRAGANA ( SID_SVX_START + 916 )
+#define SID_TRANSLITERATE_KATAGANA ( SID_SVX_START + 917 )
+#define SID_MN_SUB_TRANSLITERATE ( SID_SVX_START + 918 )
+#define SID_LANGUAGE_OPTIONS ( SID_SVX_START + 921 )
+#define SID_GETUNDOSTRINGS ( SID_SVX_START + 923 )
+#define SID_GETREDOSTRINGS ( SID_SVX_START + 924 )
+
+#define SID_INSERT_IMAGECONTROL ( SID_SVX_START + 926 )
+#define SID_INSERT_PROGRESSBAR ( SID_SVX_START + 927 )
+#define SID_INSERT_HFIXEDLINE ( SID_SVX_START + 928 )
+#define SID_INSERT_VFIXEDLINE ( SID_SVX_START + 929 )
+#define SID_READONLY_MODE ( SID_SVX_START + 930 )
+#define SID_ATTR_ALIGN_HYPHENATION ( SID_SVX_START + 931 )
+#define SID_ATTR_NUMBERFORMAT_SOURCE ( SID_SVX_START + 932 )
+#define SID_ATTR_AUTO_COLOR_INVALID ( SID_SVX_START + 933 )
+//#define SID_ADDRESS_DATA_SOURCE ( SID_SVX_START + 934 ) -> sfxsids.hrc
+#define SID_RULER_BORDER_DISTANCE ( SID_SVX_START + 935 )
+#define SID_INSERT_DATEFIELD ( SID_SVX_START + 936 )
+#define SID_INSERT_TIMEFIELD ( SID_SVX_START + 937 )
+#define SID_INSERT_NUMERICFIELD ( SID_SVX_START + 938 )
+#define SID_INSERT_CURRENCYFIELD ( SID_SVX_START + 939 )
+#define SID_INSERT_FORMATTEDFIELD ( SID_SVX_START + 940 )
+#define SID_INSERT_PATTERNFIELD ( SID_SVX_START + 941 )
+#define SID_INSERT_FILECONTROL ( SID_SVX_START + 942 )
+#define SID_SHOW_PROPERTYBROWSER ( SID_SVX_START + 943 )
+#define SID_ATTR_TABSTOP_VERTICAL ( SID_SVX_START + 946 )
+#define SID_RULER_BORDERS_VERTICAL ( SID_SVX_START + 948 )
+#define SID_ATTR_ALIGN_ASIANVERTICAL ( SID_SVX_START + 949 )
+#define SID_RULER_TEXT_RIGHT_TO_LEFT ( SID_SVX_START + 952 )
+#define SID_ATTR_HDFT_DYNAMIC_SPACING ( SID_SVX_START + 953 )
+#define SID_ATTR_NUMBERFORMAT_ADD_AUTO ( SID_SVX_START + 954 )
+#define SID_OPEN_HYPERLINK ( SID_SVX_START + 955 )
+#define SID_CTLFONT_STATE ( SID_SVX_START + 956 )
+#define SID_VERTICALTEXT_STATE ( SID_SVX_START + 957 )
+#define SID_OPEN_XML_FILTERSETTINGS ( SID_SVX_START + 958 )
+#define SID_HANGUL_HANJA_CONVERSION ( SID_SVX_START + 959 )
+#define SID_EXTRUSION_TOOGLE ( SID_SVX_START + 960 )
+#define SID_EXTRUSION_TILT_DOWN ( SID_SVX_START + 961 )
+#define SID_EXTRUSION_TILT_UP ( SID_SVX_START + 962 )
+#define SID_EXTRUSION_TILT_LEFT ( SID_SVX_START + 963 )
+#define SID_EXTRUSION_TILT_RIGHT ( SID_SVX_START + 964 )
+#define SID_EXTRUSION_DEPTH_FLOATER ( SID_SVX_START + 965 )
+#define SID_EXTRUSION_DIRECTION_FLOATER ( SID_SVX_START + 966 )
+#define SID_EXTRUSION_LIGHTING_FLOATER ( SID_SVX_START + 967 )
+#define SID_EXTRUSION_SURFACE_FLOATER ( SID_SVX_START + 968 )
+#define SID_EXTRUSION_3D_COLOR ( SID_SVX_START + 969 )
+#define SID_EXTRUSION_DEPTH ( SID_SVX_START + 970 )
+#define SID_EXTRUSION_DIRECTION ( SID_SVX_START + 971 )
+#define SID_EXTRUSION_PROJECTION ( SID_SVX_START + 972 )
+#define SID_EXTRUSION_LIGHTING_DIRECTION ( SID_SVX_START + 973 )
+#define SID_EXTRUSION_LIGHTING_INTENSITY ( SID_SVX_START + 974 )
+#define SID_EXTRUSION_SURFACE ( SID_SVX_START + 975 )
+#define SID_EXTRUSION_DEPTH_DIALOG ( SID_SVX_START + 976 )
+#define SID_FONTWORK_GALLERY_FLOATER ( SID_SVX_START + 977 )
+// free ( SID_SVX_START + 978 )
+#define SID_FONTWORK_SHAPE_TYPE ( SID_SVX_START + 979 )
+#define SID_FONTWORK_SAME_LETTER_HEIGHTS ( SID_SVX_START + 980 )
+#define SID_FONTWORK_ALIGNMENT_FLOATER ( SID_SVX_START + 981 )
+#define SID_FONTWORK_CHARACTER_SPACING_FLOATER ( SID_SVX_START + 982 )
+#define SID_FONTWORK_SHAPE ( SID_SVX_START + 983 )
+#define SID_FONTWORK_ALIGNMENT ( SID_SVX_START + 984 )
+#define SID_FONTWORK_CHARACTER_SPACING ( SID_SVX_START + 985 )
+#define SID_FONTWORK_KERN_CHARACTER_PAIRS ( SID_SVX_START + 986 )
+#define SID_DRAW_FONTWORK ( SID_SVX_START + 987 )
+#define SID_DRAW_FONTWORK_VERTICAL ( SID_SVX_START + 988 )
+#define SID_ATTR_BORDER_CONNECT ( SID_SVX_START + 990 )
+#define SID_SW_FOLLOW_TEXT_FLOW ( SID_SVX_START + 991 ) /* #i18732# - slot-id for new option IsFollowingTextFlow' */
+#define SID_RULER_ROWS ( SID_SVX_START + 992 )
+#define SID_RULER_ROWS_VERTICAL ( SID_SVX_START + 993 )
+#define SID_ATTR_TRANSFORM_HORI_POSITION ( SID_SVX_START + 999 )
+#define SID_ATTR_TRANSFORM_VERT_POSITION ( SID_SVX_START + 1000 )
+#define SID_SHOW_ITEMBROWSER ( SID_SVX_START + 1001 )
+#define SID_ALIGN_ANY_LEFT ( SID_SVX_START + 1002 )
+#define SID_ALIGN_ANY_HCENTER ( SID_SVX_START + 1003 )
+#define SID_ALIGN_ANY_RIGHT ( SID_SVX_START + 1004 )
+#define SID_ALIGN_ANY_JUSTIFIED ( SID_SVX_START + 1005 )
+#define SID_ALIGN_ANY_TOP ( SID_SVX_START + 1006 )
+#define SID_ALIGN_ANY_VCENTER ( SID_SVX_START + 1007 )
+#define SID_ALIGN_ANY_BOTTOM ( SID_SVX_START + 1008 )
+#define SID_ALIGN_ANY_HDEFAULT ( SID_SVX_START + 1009 )
+#define SID_ALIGN_ANY_VDEFAULT ( SID_SVX_START + 1010 )
+#define SID_SW_COLLAPSING_BORDERS ( SID_SVX_START + 1011 )
+#define SID_SW_WRAP_INFLUENCE_ON_OBJPOS ( SID_SVX_START + 1012 ) /* #i28701# - slot-id for new attribute WrapInfluenceOnObjPos' */
+#define SID_ATTR_BORDER_DIAG_TLBR ( SID_SVX_START + 1013 )
+#define SID_ATTR_BORDER_DIAG_BLTR ( SID_SVX_START + 1014 )
+#define SID_ATTR_ALIGN_SHRINKTOFIT ( SID_SVX_START + 1015 )
+#define SID_CHINESE_CONVERSION ( SID_SVX_START + 1016 )
+#define SID_PAGE_TYPE ( SID_SVX_START + 1017 )
+#define SID_DLG_TYPE ( SID_SVX_START + 1018 )
+#define SID_TABPAGE_POS ( SID_SVX_START + 1019 )
+#define SID_GRAPHIC ( SID_SVX_START + 1020 )
+#define SID_OBJECT_LIST ( SID_SVX_START + 1021 )
+#define SID_ATTR_SET ( SID_SVX_START + 1022 )
+#define SID_CHAR_FMT_LIST_BOX ( SID_SVX_START + 1023 )
+#define SID_METRIC_ITEM ( SID_SVX_START + 1024 )
+#define SID_NUM_CHAR_FMT ( SID_SVX_START + 1025 )
+#define SID_BULLET_CHAR_FMT ( SID_SVX_START + 1026 )
+#define SID_DISABLE_SVXEXTPARAGRAPHTABPAGE_PAGEBREAK ( SID_SVX_START + 1027 )
+#define SID_SVXPARAALIGNTABPAGE_ENABLEJUSTIFYEXT ( SID_SVX_START + 1028 )
+#define SID_SVXSTDPARAGRAPHTABPAGE_PAGEWIDTH ( SID_SVX_START + 1029 )
+#define SID_SVXSTDPARAGRAPHTABPAGE_FLAGSET ( SID_SVX_START + 1030 )
+#define SID_SVXSTDPARAGRAPHTABPAGE_ABSLINEDIST ( SID_SVX_START + 1031 )
+#define SID_SVXTABULATORTABPAGE_CONTROLFLAGS ( SID_SVX_START + 1032 )
+#define SID_SVXTEXTATTRPAGE_VIEW ( SID_SVX_START + 1033 )
+#define SID_FLAG_TYPE ( SID_SVX_START + 1034 )
+#define SID_SWMODE_TYPE ( SID_SVX_START + 1035 )
+#define SID_DISABLE_CTL ( SID_SVX_START + 1036 )
+#define SID_LINK_TYPE ( SID_SVX_START + 1037 )
+#define SID_ENUM_PAGE_MODE ( SID_SVX_START + 1038 )
+#define SID_PAPER_START ( SID_SVX_START + 1039 )
+#define SID_PAPER_END ( SID_SVX_START + 1040 )
+#define SID_COLLECT_LIST ( SID_SVX_START + 1041 )
+#define SID_GROW_FONT_SIZE ( SID_SVX_START + 1042 )
+#define SID_SHRINK_FONT_SIZE ( SID_SVX_START + 1043 )
+// color subtoolbar on graphictoolbar
+#define SID_COLOR_SETTINGS ( SID_SVX_START + 1044 )
+#define SID_FM_MORE_CONTROLS ( SID_SVX_START + 1045 )
+#define SID_FM_FORM_DESIGN_TOOLS ( SID_SVX_START + 1046 )
+#define SID_DRAWTBX_CS_BASIC ( SID_SVX_START + 1047 )
+#define SID_DRAWTBX_CS_SYMBOL ( SID_SVX_START + 1048 )
+#define SID_DRAWTBX_CS_ARROW ( SID_SVX_START + 1049 )
+#define SID_DRAWTBX_CS_FLOWCHART ( SID_SVX_START + 1050 )
+#define SID_DRAWTBX_CS_CALLOUT ( SID_SVX_START + 1051 )
+#define SID_DRAWTBX_CS_STAR ( SID_SVX_START + 1052 )
+#define SID_DRAW_CS_ID ( SID_SVX_START + 1053 )
+#define SID_FONTWORK_CHARACTER_SPACING_DIALOG ( SID_SVX_START + 1054 )
+#define SID_BORDER_REDUCED_MODE ( SID_SVX_START + 1055 )
+#define SID_INSERT_RLM ( SID_SVX_START + 1056 ) /* insert RLM - right to left mark */
+#define SID_INSERT_LRM ( SID_SVX_START + 1057 ) /* insert LRM - left to right mark */
+#define SID_INSERT_ZWSP ( SID_SVX_START + 1058 ) /* insert ZWJ - invisible space, keep words together*/
+#define SID_INSERT_ZWNBSP ( SID_SVX_START + 1059 ) /* insert ZWNJ - invisible space, forces linebreak*/
+#define SID_OPTIONS_DATABASES ( SID_SVX_START + 1060 )
+#define SID_OPEN_SMARTTAGMENU ( SID_SVX_START + 1061 )
+#define SID_OPEN_SMARTTAGOPTIONS ( SID_SVX_START + 1062 )
+#define SID_INSERT_TREECONTROL ( SID_SVX_START + 1063 )
+#define SID_ATTR_VIEWLAYOUT ( SID_SVX_START + 1064 )
+#define SID_ATTR_ZOOMSLIDER ( SID_SVX_START + 1065 )
+#define SID_FONTNAMELIST ( SID_SVX_START + 1066 )
+#define SID_LANGUAGE_STATUS ( SID_SVX_START + 1067 )
+#define SID_CHAR_DLG_FOR_PARAGRAPH ( SID_SVX_START + 1068 )
+#define SID_SET_DOCUMENT_LANGUAGE ( SID_SVX_START + 1069 )
+
+#define SID_TABLE_MERGE_CELLS (SID_SVX_START+1070)
+#define SID_TABLE_SPLIT_CELLS (SID_SVX_START+1071)
+#define SID_OPTIMIZE_TABLE (SID_SVX_START+1072)
+#define SID_TABLE_VERT_BOTTOM (SID_SVX_START+1073)
+#define SID_TABLE_VERT_CENTER (SID_SVX_START+1074)
+#define SID_TABLE_VERT_NONE (SID_SVX_START+1075)
+#define SID_TABLE_INSERT_ROW (SID_SVX_START+1076)
+#define SID_TABLE_INSERT_COL (SID_SVX_START+1077)
+#define SID_TABLE_DELETE_ROW (SID_SVX_START+1078)
+#define SID_TABLE_DELETE_COL (SID_SVX_START+1079)
+#define SID_TABLE_SELECT_ALL (SID_SVX_START+1080)
+#define SID_TABLE_SELECT_COL (SID_SVX_START+1081)
+#define SID_TABLE_SELECT_ROW (SID_SVX_START+1082)
+#define SID_FORMAT_TABLE_DLG (SID_SVX_START+1083)
+#define SID_TABLE_SORT_DIALOG (SID_SVX_START+1084)
+#define SID_TABLE_AUTOSUM (SID_SVX_START+1085)
+#define SID_TABLE_DISTRIBUTE_COLUMNS (SID_SVX_START+1086)
+#define SID_TABLE_DISTRIBUTE_ROWS (SID_SVX_START+1087)
+#define SID_TABLE_STYLE (SID_SVX_START+1088)
+#define SID_TABLE_STYLE_SETTINGS (SID_SVX_START+1089)
+#define SID_CHAR_DLG_PREVIEW_STRING (SID_SVX_START+1090)
+#define SID_RECHECK_DOCUMENT (SID_SVX_START+1091)
+
+#define SID_OBJECT_MIRROR (SID_SVX_START+1093)
+
+#define SID_DELETE_POSTIT (SID_SVX_START+1094)
+#define SID_NEXT_POSTIT (SID_SVX_START+1095)
+#define SID_PREVIOUS_POSTIT (SID_SVX_START+1096)
+#define SID_DELETEALL_POSTIT (SID_SVX_START+1097)
+#define SID_SHOW_POSTIT (SID_SVX_START+1098)
+#define SID_REPLYTO_POSTIT (SID_SVX_START+1099)
+#define SID_DELETEALLBYAUTHOR_POSTIT (SID_SVX_START+1100)
+#define SID_INSERT_POSTIT (SID_SVX_START+1101)
+
+#define SID_TRANSLITERATE_SENTENCE_CASE (SID_SVX_START+1102)
+#define SID_TRANSLITERATE_TITLE_CASE (SID_SVX_START+1103)
+#define SID_TRANSLITERATE_TOGGLE_CASE (SID_SVX_START+1104)
+
+// IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id
+#define SID_SVX_FIRSTFREE (SID_TRANSLITERATE_TOGGLE_CASE + 1)
+
+// --------------------------------------------------------------------------
+// Overflow check for slot IDs
+// --------------------------------------------------------------------------
+
+#if SID_SVX_FIRSTFREE > SID_SVX_END
+#error Resource-Ueberlauf in #line, #file
+#endif
+
+// --------------------------------------------------------------------------
+// Ranges, um ItemSets fuer bestimmte 3D-Objekte erstellen zu koennen
+// --------------------------------------------------------------------------
+
+//
+// SceneObject:
+#define SID_ATTR_3D_RANGE_SCENE \
+SID_ATTR_3D_AMBIENTCOLOR, SID_ATTR_3D_PERSPECTIVE, \
+SID_ATTR_3D_DISTANCE, SID_ATTR_3D_FOCAL_LENGTH, \
+SID_ATTR_3D_TWO_SIDED_LIGHTING, SID_ATTR_3D_TWO_SIDED_LIGHTING, \
+SID_ATTR_3D_SHADE_MODE, SID_ATTR_3D_SHADE_MODE, \
+SID_ATTR_3D_SHADOW_SLANT, SID_ATTR_3D_LIGHTDIRECTION_8 \
+
+//
+// CompoundObject:
+#define SID_ATTR_3D_RANGE_COMPOUND \
+SID_ATTR_3D_DOUBLE_SIDED, SID_ATTR_3D_DOUBLE_SIDED, \
+SID_ATTR_3D_NORMALS_KIND, SID_ATTR_3D_NORMALS_INVERT, \
+SID_ATTR_3D_TEXTURE_KIND, SID_ATTR_3D_MAT_SPECULAR_INTENSITY, \
+SID_ATTR_3D_SHADOW_3D, SID_ATTR_3D_SHADOW_3D \
+
+//
+// ExtrudeObject:
+#define SID_ATTR_3D_RANGE_EXTRUDE \
+SID_ATTR_3D_RANGE_COMPOUND, \
+SID_ATTR_3D_DEPTH, SID_ATTR_3D_DEPTH, \
+SID_ATTR_3D_PERCENT_DIAGONAL, SID_ATTR_3D_BACKSCALE \
+
+//
+// LatheObject:
+#define SID_ATTR_3D_RANGE_LATHE \
+SID_ATTR_3D_RANGE_COMPOUND, \
+SID_ATTR_3D_HORZ_SEGS, SID_ATTR_3D_VERT_SEGS, \
+SID_ATTR_3D_PERCENT_DIAGONAL, SID_ATTR_3D_END_ANGLE \
+
+//
+// SphereObject:
+#define SID_ATTR_3D_RANGE_SPHERE \
+SID_ATTR_3D_RANGE_COMPOUND, \
+SID_ATTR_3D_HORZ_SEGS, SID_ATTR_3D_VERT_SEGS \
+
+//
+// Spezieller Range fuer alle 3D-Objekte
+#define SID_ATTR_3D_RANGE_OBJECT \
+SID_ATTR_3D_RANGE_COMPOUND, \
+SID_ATTR_3D_DEPTH, SID_ATTR_3D_DEPTH, \
+SID_ATTR_3D_HORZ_SEGS, SID_ATTR_3D_VERT_SEGS, \
+SID_ATTR_3D_PERCENT_DIAGONAL, SID_ATTR_3D_END_ANGLE \
+
+#endif // #ifndef _SVX_SVXIDS_HRC
+
+// ******************************************************************* EOF
+
diff --git a/svx/inc/svx/svxitems.hrc b/svx/inc/svx/svxitems.hrc
new file mode 100644
index 000000000000..3f3e4aaa8613
--- /dev/null
+++ b/svx/inc/svx/svxitems.hrc
@@ -0,0 +1,174 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVXITEMS_HRC
+#define _SVXITEMS_HRC
+
+// include ------------------------------------------------------------------
+
+#include <svl/solar.hrc>
+
+// Extras -------------------------------------------------------------------
+#define RID_SVXITEMS_EXTRAS_CHARCOLOR (RID_SVXITEMS_START + 2)
+
+// SvxSearchItem ------------------------------------------------------------
+// Kommando
+#define RID_SVXITEMS_SEARCHCMD_BEGIN (RID_SVXITEMS_START + 10)
+#define RID_SVXITEMS_SEARCHCMD_FIND (RID_SVXITEMS_START + 10)
+#define RID_SVXITEMS_SEARCHCMD_FIND_ALL (RID_SVXITEMS_START + 11)
+#define RID_SVXITEMS_SEARCHCMD_REPLACE (RID_SVXITEMS_START + 12)
+#define RID_SVXITEMS_SEARCHCMD_REPLACE_ALL (RID_SVXITEMS_START + 13)
+// Vorlagen
+#define RID_SVXITEMS_SEARCHSTYLE_BEGIN (RID_SVXITEMS_START + 14)
+#define RID_SVXITEMS_SEARCHSTYL_CHAR (RID_SVXITEMS_START + 14)
+#define RID_SVXITEMS_SEARCHSTYL_PARA (RID_SVXITEMS_START + 15)
+#define RID_SVXITEMS_SEARCHSTYL_FRAME (RID_SVXITEMS_START + 16)
+#define RID_SVXITEMS_SEARCHSTYL_PAGE (RID_SVXITEMS_START + 17)
+// Zellen-Typ
+#define RID_SVXITEMS_SEARCHIN_BEGIN (RID_SVXITEMS_START + 20)
+#define RID_SVXITEMS_SEARCHIN_FORMULA (RID_SVXITEMS_START + 20)
+#define RID_SVXITEMS_SEARCHIN_VALUE (RID_SVXITEMS_START + 21)
+#define RID_SVXITEMS_SEARCHIN_NOTE (RID_SVXITEMS_START + 22)
+// Applikation
+#define RID_SVXITEMS_SEARCHAPP_BEGIN (RID_SVXITEMS_START + 25)
+#define RID_SVXITEMS_SEARCHAPP_WRITER (RID_SVXITEMS_START + 25)
+#define RID_SVXITEMS_SEARCHAPP_CALC (RID_SVXITEMS_START + 26)
+#define RID_SVXITEMS_SEARCHAPP_DRAW (RID_SVXITEMS_START + 27)
+#define RID_SVXITEMS_SEARCHAPP_BASE (RID_SVXITEMS_START + 28)
+
+// enum BrushStyle ----------------------------------------------------------
+#define RID_SVXITEMS_BRUSHSTYLE_BEGIN (RID_SVXITEMS_START + 45)
+#define RID_SVXITEMS_BRUSHSTYLE_NULL (RID_SVXITEMS_START + 45)
+#define RID_SVXITEMS_BRUSHSTYLE_SOLID (RID_SVXITEMS_START + 46)
+#define RID_SVXITEMS_BRUSHSTYLE_HORZ (RID_SVXITEMS_START + 47)
+#define RID_SVXITEMS_BRUSHSTYLE_VERT (RID_SVXITEMS_START + 48)
+#define RID_SVXITEMS_BRUSHSTYLE_CROSS (RID_SVXITEMS_START + 49)
+#define RID_SVXITEMS_BRUSHSTYLE_DIAGCROSS (RID_SVXITEMS_START + 50)
+#define RID_SVXITEMS_BRUSHSTYLE_UPDIAG (RID_SVXITEMS_START + 51)
+#define RID_SVXITEMS_BRUSHSTYLE_DOWNDIAG (RID_SVXITEMS_START + 52)
+#define RID_SVXITEMS_BRUSHSTYLE_25 (RID_SVXITEMS_START + 53)
+#define RID_SVXITEMS_BRUSHSTYLE_50 (RID_SVXITEMS_START + 54)
+#define RID_SVXITEMS_BRUSHSTYLE_75 (RID_SVXITEMS_START + 55)
+#define RID_SVXITEMS_BRUSHSTYLE_BITMAP (RID_SVXITEMS_START + 56)
+
+// enum FontFamily -------------------------------------------------------
+#define RID_SVXITEMS_FONTFAMILY_BEGIN (RID_SVXITEMS_START + 100)
+#define RID_SVXITEMS_FONTFAMILY_DONTKNOW (RID_SVXITEMS_START + 100)
+#define RID_SVXITEMS_FONTFAMILY_DECORATIVE (RID_SVXITEMS_START + 101)
+#define RID_SVXITEMS_FONTFAMILY_MODERN (RID_SVXITEMS_START + 102)
+#define RID_SVXITEMS_FONTFAMILY_ROMAN (RID_SVXITEMS_START + 103)
+#define RID_SVXITEMS_FONTFAMILY_SCRIPT (RID_SVXITEMS_START + 104)
+#define RID_SVXITEMS_FONTFAMILY_SWISS (RID_SVXITEMS_START + 105)
+#define RID_SVXITEMS_FONTFAMILY_SYSTEM (RID_SVXITEMS_START + 106)
+
+// enum FontPitch --------------------------------------------------------
+#define RID_SVXITEMS_FONTPITCH_BEGIN (RID_SVXITEMS_START + 110)
+#define RID_SVXITEMS_FONTPITCH_DONTKNOW (RID_SVXITEMS_START + 110)
+#define RID_SVXITEMS_FONTPITCH_FIXED (RID_SVXITEMS_START + 111)
+#define RID_SVXITEMS_FONTPITCH_VARIABLE (RID_SVXITEMS_START + 112)
+
+// enum CharSet ----------------------------------------------------------
+#define RID_SVXITEMS_CHARSET_BEGIN (RID_SVXITEMS_START + 145)
+#define RID_SVXITEMS_CHARSET_DONTKNOW (RID_SVXITEMS_START + 145)
+#define RID_SVXITEMS_CHARSET_ANSI (RID_SVXITEMS_START + 146)
+#define RID_SVXITEMS_CHARSET_MAC (RID_SVXITEMS_START + 147)
+#define RID_SVXITEMS_CHARSET_IBMPC_437 (RID_SVXITEMS_START + 148)
+#define RID_SVXITEMS_CHARSET_IBMPC_850 (RID_SVXITEMS_START + 149)
+#define RID_SVXITEMS_CHARSET_IBMPC_860 (RID_SVXITEMS_START + 150)
+#define RID_SVXITEMS_CHARSET_IBMPC_861 (RID_SVXITEMS_START + 151)
+#define RID_SVXITEMS_CHARSET_IBMPC_863 (RID_SVXITEMS_START + 152)
+#define RID_SVXITEMS_CHARSET_IBMPC_865 (RID_SVXITEMS_START + 153)
+#define RID_SVXITEMS_CHARSET_SYSTEM (RID_SVXITEMS_START + 154)
+#define RID_SVXITEMS_CHARSET_SYMBOL (RID_SVXITEMS_START + 155)
+
+// enum SvxCellHorJustify
+#define RID_SVXITEMS_HORJUST_STANDARD (RID_SVXITEMS_START + 400)
+#define RID_SVXITEMS_HORJUST_LEFT (RID_SVXITEMS_START + 401)
+#define RID_SVXITEMS_HORJUST_CENTER (RID_SVXITEMS_START + 402)
+#define RID_SVXITEMS_HORJUST_RIGHT (RID_SVXITEMS_START + 403)
+#define RID_SVXITEMS_HORJUST_BLOCK (RID_SVXITEMS_START + 404)
+#define RID_SVXITEMS_HORJUST_REPEAT (RID_SVXITEMS_START + 405)
+
+// enum SvxCellVerJustify
+#define RID_SVXITEMS_VERJUST_STANDARD (RID_SVXITEMS_START + 406)
+#define RID_SVXITEMS_VERJUST_TOP (RID_SVXITEMS_START + 407)
+#define RID_SVXITEMS_VERJUST_CENTER (RID_SVXITEMS_START + 408)
+#define RID_SVXITEMS_VERJUST_BOTTOM (RID_SVXITEMS_START + 409)
+
+// enum SvxCellOrientation
+#define RID_SVXITEMS_ORI_STANDARD (RID_SVXITEMS_START + 410)
+#define RID_SVXITEMS_ORI_TOPBOTTOM (RID_SVXITEMS_START + 411)
+#define RID_SVXITEMS_ORI_BOTTOMTOP (RID_SVXITEMS_START + 412)
+#define RID_SVXITEMS_ORI_STACKED (RID_SVXITEMS_START + 413)
+
+// Id's fuer BoolItems
+#define RID_SVXITEMS_BOXINF_TABLE_TRUE (RID_SVXITEMS_START + 443)
+#define RID_SVXITEMS_BOXINF_TABLE_FALSE (RID_SVXITEMS_START + 444)
+#define RID_SVXITEMS_BOXINF_DIST_TRUE (RID_SVXITEMS_START + 445)
+#define RID_SVXITEMS_BOXINF_DIST_FALSE (RID_SVXITEMS_START + 446)
+#define RID_SVXITEMS_BOXINF_MDIST_TRUE (RID_SVXITEMS_START + 447)
+#define RID_SVXITEMS_BOXINF_MDIST_FALSE (RID_SVXITEMS_START + 448)
+
+// Complete-Texte -----------------------------------------------------------
+
+#define RID_SVXITEMS_MARGIN_LEFT (RID_SVXITEMS_START + 480)
+#define RID_SVXITEMS_MARGIN_TOP (RID_SVXITEMS_START + 481)
+#define RID_SVXITEMS_MARGIN_RIGHT (RID_SVXITEMS_START + 482)
+#define RID_SVXITEMS_MARGIN_BOTTOM (RID_SVXITEMS_START + 483)
+#define RID_SVXITEMS_PAGE_COMPLETE (RID_SVXITEMS_START + 498)
+#define RID_SVXITEMS_PAGE_NUM_BEGIN (RID_SVXITEMS_START + 499)
+#define RID_SVXITEMS_PAGE_NUM_CHR_UPPER (RID_SVXITEMS_START + 499)
+#define RID_SVXITEMS_PAGE_NUM_CHR_LOWER (RID_SVXITEMS_START + 500)
+#define RID_SVXITEMS_PAGE_NUM_ROM_UPPER (RID_SVXITEMS_START + 501)
+#define RID_SVXITEMS_PAGE_NUM_ROM_LOWER (RID_SVXITEMS_START + 502)
+#define RID_SVXITEMS_PAGE_NUM_ARABIC (RID_SVXITEMS_START + 503)
+#define RID_SVXITEMS_PAGE_NUM_NONE (RID_SVXITEMS_START + 504)
+#define RID_SVXITEMS_PAGE_LAND_TRUE (RID_SVXITEMS_START + 505)
+#define RID_SVXITEMS_PAGE_LAND_FALSE (RID_SVXITEMS_START + 506)
+#define RID_SVXITEMS_PAGE_USAGE_LEFT (RID_SVXITEMS_START + 507)
+#define RID_SVXITEMS_PAGE_USAGE_RIGHT (RID_SVXITEMS_START + 508)
+#define RID_SVXITEMS_PAGE_USAGE_ALL (RID_SVXITEMS_START + 509)
+#define RID_SVXITEMS_PAGE_USAGE_MIRROR (RID_SVXITEMS_START + 510)
+#define RID_SVXITEMS_AUTHOR_COMPLETE (RID_SVXITEMS_START + 521)
+#define RID_SVXITEMS_DATE_COMPLETE (RID_SVXITEMS_START + 522)
+#define RID_SVXITEMS_TEXT_COMPLETE (RID_SVXITEMS_START + 523)
+#define RID_SVXITEMS_BACKGROUND_COLOR (RID_SVXITEMS_START + 524)
+#define RID_SVXITEMS_PATTERN_COLOR (RID_SVXITEMS_START + 525)
+
+#define RID_SVXITEMS_BRUSH_CHAR (RID_SVXITEMS_START + 527)
+#define RID_ATTR_NAMES (RID_SVXITEMS_START + 528)
+
+// Ueberlaufpruefung --------------------------------------------------------
+
+// Resource-Id's
+#define ACT_RID_SVXITEMS_END RID_ATTR_NAMES
+#if ACT_RID_SVXITEMS_END > RID_SVXITEMS_END
+#error Resource-Ueberlauf in #line, #file
+#endif
+
+
+#endif
+
diff --git a/svx/inc/svx/sxallitm.hxx b/svx/inc/svx/sxallitm.hxx
new file mode 100644
index 000000000000..590e0b114d4c
--- /dev/null
+++ b/svx/inc/svx/sxallitm.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXALLITM_HXX
+#define _SXALLITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------
+// class SdrAllPositionXItem
+//------------------------------
+class SdrAllPositionXItem: public SdrMetricItem {
+public:
+ SdrAllPositionXItem(long nPosX=0): SdrMetricItem(SDRATTR_ALLPOSITIONX,nPosX) {}
+ SdrAllPositionXItem(SvStream& rIn): SdrMetricItem(SDRATTR_ALLPOSITIONX,rIn) {}
+};
+
+//------------------------------
+// class SdrAllPositionYItem
+//------------------------------
+class SdrAllPositionYItem: public SdrMetricItem {
+public:
+ SdrAllPositionYItem(long nPosY=0): SdrMetricItem(SDRATTR_ALLPOSITIONY,nPosY) {}
+ SdrAllPositionYItem(SvStream& rIn): SdrMetricItem(SDRATTR_ALLPOSITIONY,rIn) {}
+};
+
+//------------------------------
+// class SdrAllSizeWidthItem
+//------------------------------
+class SdrAllSizeWidthItem: public SdrMetricItem {
+public:
+ SdrAllSizeWidthItem(long nWdt=0): SdrMetricItem(SDRATTR_ALLSIZEWIDTH,nWdt) {}
+ SdrAllSizeWidthItem(SvStream& rIn): SdrMetricItem(SDRATTR_ALLSIZEWIDTH,rIn) {}
+};
+
+//------------------------------
+// class SdrAllSizeWidthItem
+//------------------------------
+class SdrAllSizeHeightItem: public SdrMetricItem {
+public:
+ SdrAllSizeHeightItem(long nHgt=0): SdrMetricItem(SDRATTR_ALLSIZEHEIGHT,nHgt) {}
+ SdrAllSizeHeightItem(SvStream& rIn): SdrMetricItem(SDRATTR_ALLSIZEHEIGHT,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxcaitm.hxx b/svx/inc/svx/sxcaitm.hxx
new file mode 100644
index 000000000000..647d6bc0d807
--- /dev/null
+++ b/svx/inc/svx/sxcaitm.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCAITM_HXX
+#define _SXCAITM_HXX
+
+#include <svx/svddef.hxx>
+
+#ifndef _SDRANGITM_HXX
+#include <svx/sdangitm.hxx>
+#endif
+#include <svx/sdooitm.hxx>
+
+//------------------------------------
+// class SdrCaptionFixedAngleItem
+// TRUE=Winkel durch SdrCaptionAngleItem vorgegeben
+// FALSE=Freier Winkel
+//------------------------------------
+class SdrCaptionFixedAngleItem: public SdrOnOffItem {
+public:
+ SdrCaptionFixedAngleItem(BOOL bFix=TRUE): SdrOnOffItem(SDRATTR_CAPTIONFIXEDANGLE,bFix) {}
+ SdrCaptionFixedAngleItem(SvStream& rIn) : SdrOnOffItem(SDRATTR_CAPTIONFIXEDANGLE,rIn) {}
+};
+
+//------------------------------
+// class SdrCaptionAngleItem
+// Winkelangabe in 1/100 Degree
+// Nur bei Type2, Type3 und Type4
+// und nur wenn SdrCaptionIsFixedAngleItem=TRUE
+//------------------------------
+class SdrCaptionAngleItem: public SdrAngleItem {
+public:
+ SdrCaptionAngleItem(long nAngle=0): SdrAngleItem(SDRATTR_CAPTIONANGLE,nAngle) {}
+ SdrCaptionAngleItem(SvStream& rIn): SdrAngleItem(SDRATTR_CAPTIONANGLE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxcecitm.hxx b/svx/inc/svx/sxcecitm.hxx
new file mode 100644
index 000000000000..adf69962b8a3
--- /dev/null
+++ b/svx/inc/svx/sxcecitm.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCECITM_HXX
+#define _SXCECITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdmetitm.hxx>
+#include "svx/svxdllapi.h"
+
+enum SdrCaptionEscDir {SDRCAPT_ESCHORIZONTAL,SDRCAPT_ESCVERTICAL,SDRCAPT_ESCBESTFIT};
+
+//------------------------------
+// class SdrCaptionEscDirItem
+//------------------------------
+class SVX_DLLPUBLIC SdrCaptionEscDirItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrCaptionEscDirItem(SdrCaptionEscDir eDir=SDRCAPT_ESCHORIZONTAL): SfxEnumItem(SDRATTR_CAPTIONESCDIR,sal::static_int_cast< USHORT >(eDir)) {}
+ SdrCaptionEscDirItem(SvStream& rIn) : SfxEnumItem(SDRATTR_CAPTIONESCDIR,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 3; }
+ SdrCaptionEscDir GetValue() const { return (SdrCaptionEscDir)SfxEnumItem::GetValue(); }
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+//------------------------------------
+// class SdrCaptionEscIsRelItem
+// TRUE=Linienaustrittsposition relativ
+// FALSE=Linienaustrittsposition absolut
+//------------------------------------
+class SdrCaptionEscIsRelItem: public SdrYesNoItem {
+public:
+ SdrCaptionEscIsRelItem(BOOL bRel=TRUE): SdrYesNoItem(SDRATTR_CAPTIONESCISREL,bRel) {}
+ SdrCaptionEscIsRelItem(SvStream& rIn) : SdrYesNoItem(SDRATTR_CAPTIONESCISREL,rIn) {}
+};
+
+//------------------------------------
+// class SdrCaptionEscRelItem
+// Relativer Linienaustritt
+// 0 = 0.00% = oben bzw. links,
+// 10000 = 100.00% = rechts bzw. unten
+// nur wenn SdrCaptionEscIsRelItem=TRUE
+//------------------------------------
+class SdrCaptionEscRelItem: public SfxInt32Item {
+public:
+ SdrCaptionEscRelItem(long nEscRel=5000): SfxInt32Item(SDRATTR_CAPTIONESCREL,nEscRel) {}
+ SdrCaptionEscRelItem(SvStream& rIn) : SfxInt32Item(SDRATTR_CAPTIONESCREL,rIn) {}
+};
+
+//------------------------------------
+// class SdrCaptionEscAbsItem
+// Absoluter Linienaustritt
+// 0 = oben bzw. links,
+// >0 = in Richtung rechts bzw. unten
+// nur wenn SdrCaptionEscIsRelItem=FALSE
+//------------------------------------
+class SdrCaptionEscAbsItem: public SdrMetricItem {
+public:
+ SdrCaptionEscAbsItem(long nEscAbs=0): SdrMetricItem(SDRATTR_CAPTIONESCABS,nEscAbs) {}
+ SdrCaptionEscAbsItem(SvStream& rIn) : SdrMetricItem(SDRATTR_CAPTIONESCABS,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxcgitm.hxx b/svx/inc/svx/sxcgitm.hxx
new file mode 100644
index 000000000000..e4daddc12974
--- /dev/null
+++ b/svx/inc/svx/sxcgitm.hxx
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCGITM_HXX
+#define _SXCGITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------------
+// class SdrCaptionGapItem
+// Abstand des Linienanfangs vom Rect
+//------------------------------------
+class SdrCaptionGapItem: public SdrMetricItem {
+public:
+ SdrCaptionGapItem(long nGap=0) : SdrMetricItem(SDRATTR_CAPTIONGAP,nGap) {}
+ SdrCaptionGapItem(SvStream& rIn): SdrMetricItem(SDRATTR_CAPTIONGAP,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxciaitm.hxx b/svx/inc/svx/sxciaitm.hxx
new file mode 100644
index 000000000000..f04a672a791b
--- /dev/null
+++ b/svx/inc/svx/sxciaitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCIAITM_HXX
+#define _SXCIAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrCircStartAngleItem
+//------------------------------
+class SdrCircStartAngleItem: public SdrAngleItem {
+public:
+ SdrCircStartAngleItem(long nAngle=0): SdrAngleItem(SDRATTR_CIRCSTARTANGLE,nAngle) {}
+ SdrCircStartAngleItem(SvStream& rIn): SdrAngleItem(SDRATTR_CIRCSTARTANGLE,rIn) {}
+};
+
+//------------------------------
+// class SdrCircEndAngleItem
+//------------------------------
+class SdrCircEndAngleItem: public SdrAngleItem {
+public:
+ SdrCircEndAngleItem(long nAngle=36000): SdrAngleItem(SDRATTR_CIRCENDANGLE,nAngle) {}
+ SdrCircEndAngleItem(SvStream& rIn): SdrAngleItem(SDRATTR_CIRCENDANGLE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxcikitm.hxx b/svx/inc/svx/sxcikitm.hxx
new file mode 100644
index 000000000000..e5c7ac2d1724
--- /dev/null
+++ b/svx/inc/svx/sxcikitm.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCIKITM_HXX
+#define _SXCIKITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/eitem.hxx>
+
+enum SdrCircKind {SDRCIRC_FULL,
+ SDRCIRC_SECT,
+ SDRCIRC_CUT,
+ SDRCIRC_ARC};
+
+class SdrCircKindItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrCircKindItem(SdrCircKind eKind=SDRCIRC_FULL): SfxEnumItem(SDRATTR_CIRCKIND,sal::static_int_cast< USHORT >(eKind)) {}
+ SdrCircKindItem(SvStream& rIn) : SfxEnumItem(SDRATTR_CIRCKIND,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 4; }
+ SdrCircKind GetValue() const { return (SdrCircKind)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxcllitm.hxx b/svx/inc/svx/sxcllitm.hxx
new file mode 100644
index 000000000000..65011beff599
--- /dev/null
+++ b/svx/inc/svx/sxcllitm.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCLLITM_HXX
+#define _SXCLLITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------------
+// class SdrCaptionLineLenItem
+// Laenge der ersten Austrittslinie
+// Nur bei Type3 und Type4
+// Nur relevant, wenn SdrCaptionFitLineLenItem=FALSE
+//------------------------------------
+class SdrCaptionLineLenItem: public SdrMetricItem {
+public:
+ SdrCaptionLineLenItem(long nLineLen=0): SdrMetricItem(SDRATTR_CAPTIONLINELEN,nLineLen) {}
+ SdrCaptionLineLenItem(SvStream& rIn) : SdrMetricItem(SDRATTR_CAPTIONLINELEN,rIn) {}
+};
+
+//------------------------------------
+// class SdrCaptionFitLineLenItem
+// Laenge der ersten Austrittslinie automatisch berechnen oder
+// Vorgabe (SdrCaptionLineLenItem) verwenden.
+// Nur bei Type3 und Type4
+//------------------------------------
+class SdrCaptionFitLineLenItem: public SdrYesNoItem {
+public:
+ SdrCaptionFitLineLenItem(BOOL bBestFit=TRUE): SdrYesNoItem(SDRATTR_CAPTIONFITLINELEN,bBestFit) {}
+ SdrCaptionFitLineLenItem(SvStream& rIn) : SdrYesNoItem(SDRATTR_CAPTIONFITLINELEN,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxctitm.hxx b/svx/inc/svx/sxctitm.hxx
new file mode 100644
index 000000000000..7cc2cefc8a55
--- /dev/null
+++ b/svx/inc/svx/sxctitm.hxx
@@ -0,0 +1,52 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXCTITM_HXX
+#define _SXCTITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+enum SdrCaptionType {SDRCAPT_TYPE1,SDRCAPT_TYPE2,SDRCAPT_TYPE3,SDRCAPT_TYPE4};
+
+//------------------------------
+// class SdrCaptionTypeItem
+//------------------------------
+class SVX_DLLPUBLIC SdrCaptionTypeItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrCaptionTypeItem(SdrCaptionType eStyle=SDRCAPT_TYPE3): SfxEnumItem(SDRATTR_CAPTIONTYPE,sal::static_int_cast< USHORT >(eStyle)) {}
+ SdrCaptionTypeItem(SvStream& rIn) : SfxEnumItem(SDRATTR_CAPTIONTYPE,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 4; }
+ SdrCaptionType GetValue() const { return (SdrCaptionType)SfxEnumItem::GetValue(); }
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxekitm.hxx b/svx/inc/svx/sxekitm.hxx
new file mode 100644
index 000000000000..1a881af22b01
--- /dev/null
+++ b/svx/inc/svx/sxekitm.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXEKITM_HXX
+#define _SXEKITM_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/svddef.hxx>
+#include "svx/svxdllapi.h"
+
+enum SdrEdgeKind {SDREDGE_ORTHOLINES,
+ SDREDGE_THREELINES,
+ SDREDGE_ONELINE,
+ SDREDGE_BEZIER,
+ SDREDGE_ARC};
+
+//------------------------------
+// class SdrEdgeKindItem
+//------------------------------
+class SVX_DLLPUBLIC SdrEdgeKindItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrEdgeKindItem(SdrEdgeKind eStyle=SDREDGE_ORTHOLINES): SfxEnumItem(SDRATTR_EDGEKIND,sal::static_int_cast< USHORT >(eStyle)) {}
+ SdrEdgeKindItem(SvStream& rIn) : SfxEnumItem(SDRATTR_EDGEKIND,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 5; }
+ SdrEdgeKind GetValue() const { return (SdrEdgeKind)SfxEnumItem::GetValue(); }
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxelditm.hxx b/svx/inc/svx/sxelditm.hxx
new file mode 100644
index 000000000000..aa60cf8d030c
--- /dev/null
+++ b/svx/inc/svx/sxelditm.hxx
@@ -0,0 +1,64 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXELDITM_HXX
+#define _SXELDITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+#include "svx/svxdllapi.h"
+
+class SdrEdgeLineDeltaAnzItem: public SfxUInt16Item {
+public:
+ SdrEdgeLineDeltaAnzItem(UINT16 nVal=0): SfxUInt16Item(SDRATTR_EDGELINEDELTAANZ,nVal) {}
+ SdrEdgeLineDeltaAnzItem(SvStream& rIn): SfxUInt16Item(SDRATTR_EDGELINEDELTAANZ,rIn) {}
+};
+
+class SVX_DLLPUBLIC SdrEdgeLine1DeltaItem: public SdrMetricItem {
+public:
+ SdrEdgeLine1DeltaItem(long nVal=0): SdrMetricItem(SDRATTR_EDGELINE1DELTA,nVal) {}
+ SdrEdgeLine1DeltaItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGELINE1DELTA,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SVX_DLLPUBLIC SdrEdgeLine2DeltaItem: public SdrMetricItem {
+public:
+ SdrEdgeLine2DeltaItem(long nVal=0): SdrMetricItem(SDRATTR_EDGELINE2DELTA,nVal) {}
+ SdrEdgeLine2DeltaItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGELINE2DELTA,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SVX_DLLPUBLIC SdrEdgeLine3DeltaItem: public SdrMetricItem {
+public:
+ SdrEdgeLine3DeltaItem(long nVal=0): SdrMetricItem(SDRATTR_EDGELINE3DELTA,nVal) {}
+ SdrEdgeLine3DeltaItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGELINE3DELTA,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+#endif
diff --git a/svx/inc/svx/sxenditm.hxx b/svx/inc/svx/sxenditm.hxx
new file mode 100644
index 000000000000..442dc52bbaa1
--- /dev/null
+++ b/svx/inc/svx/sxenditm.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXENDITM_HXX
+#define _SXENDITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC SdrEdgeNode1HorzDistItem: public SdrMetricItem {
+public:
+ SdrEdgeNode1HorzDistItem(long nVal=0): SdrMetricItem(SDRATTR_EDGENODE1HORZDIST,nVal) {}
+ SdrEdgeNode1HorzDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGENODE1HORZDIST,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SVX_DLLPUBLIC SdrEdgeNode1VertDistItem: public SdrMetricItem {
+public:
+ SdrEdgeNode1VertDistItem(long nVal=0): SdrMetricItem(SDRATTR_EDGENODE1VERTDIST,nVal) {}
+ SdrEdgeNode1VertDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGENODE1VERTDIST,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SVX_DLLPUBLIC SdrEdgeNode2HorzDistItem: public SdrMetricItem {
+public:
+ SdrEdgeNode2HorzDistItem(long nVal=0): SdrMetricItem(SDRATTR_EDGENODE2HORZDIST,nVal) {}
+ SdrEdgeNode2HorzDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGENODE2HORZDIST,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SVX_DLLPUBLIC SdrEdgeNode2VertDistItem: public SdrMetricItem {
+public:
+ SdrEdgeNode2VertDistItem(long nVal=0): SdrMetricItem(SDRATTR_EDGENODE2VERTDIST,nVal) {}
+ SdrEdgeNode2VertDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGENODE2VERTDIST,rIn) {}
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SdrEdgeNode1GlueDistItem: public SdrMetricItem {
+public:
+ SdrEdgeNode1GlueDistItem(long nVal=0): SdrMetricItem(SDRATTR_EDGENODE1GLUEDIST,nVal) {}
+ SdrEdgeNode1GlueDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGENODE1GLUEDIST,rIn) {}
+};
+
+class SdrEdgeNode2GlueDistItem: public SdrMetricItem {
+public:
+ SdrEdgeNode2GlueDistItem(long nVal=0): SdrMetricItem(SDRATTR_EDGENODE2GLUEDIST,nVal) {}
+ SdrEdgeNode2GlueDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_EDGENODE2GLUEDIST,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxfiitm.hxx b/svx/inc/svx/sxfiitm.hxx
new file mode 100644
index 000000000000..514b6ec9a713
--- /dev/null
+++ b/svx/inc/svx/sxfiitm.hxx
@@ -0,0 +1,57 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SFXIITM_HXX
+#define _SFXIITM_HXX
+
+#include <svl/poolitem.hxx>
+#include <tools/fract.hxx>
+
+/*************************************************************************/
+/* FractionItem */
+/*************************************************************************/
+
+class SdrFractionItem: public SfxPoolItem {
+ Fraction nValue;
+public:
+ TYPEINFO_VISIBILITY( SVX_DLLPUBLIC );
+ SdrFractionItem(USHORT nId=0): SfxPoolItem(nId) {}
+ SdrFractionItem(USHORT nId, const Fraction& rVal): SfxPoolItem(nId), nValue(rVal) {}
+ SdrFractionItem(USHORT nId, SvStream& rIn);
+ virtual int operator==(const SfxPoolItem&) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePresentation, SfxMapUnit eCoreMetric, SfxMapUnit ePresentationMetric, String &rText, const IntlWrapper * = 0) const;
+ virtual SfxPoolItem* Create(SvStream&, USHORT nVer) const;
+ virtual SvStream& Store(SvStream&, USHORT nItemVers) const;
+ virtual SfxPoolItem* Clone(SfxItemPool *pPool=NULL) const;
+ const Fraction& GetValue() const { return nValue; }
+ void SetValue(const Fraction& rVal) { nValue = rVal; }
+#ifdef SDR_ISPOOLABLE
+ virtual int IsPoolable() const;
+#endif
+};
+
+
+#endif
diff --git a/svx/inc/svx/sxlayitm.hxx b/svx/inc/svx/sxlayitm.hxx
new file mode 100644
index 000000000000..ed476ade709e
--- /dev/null
+++ b/svx/inc/svx/sxlayitm.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SYLAYITM_HXX
+#define _SYLAYITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/stritem.hxx>
+#include <svl/intitem.hxx>
+#include <svx/svdtypes.hxx>
+
+//------------------------------
+// class SdrLayerIdItem
+//------------------------------
+class SdrLayerIdItem: public SfxUInt16Item {
+public:
+ SdrLayerIdItem(USHORT nId=0): SfxUInt16Item(SDRATTR_LAYERID,nId) {}
+ SdrLayerIdItem(SvStream& rIn): SfxUInt16Item(SDRATTR_LAYERID,rIn) {}
+ SdrLayerID GetValue() const { return (SdrLayerID)SfxUInt16Item::GetValue(); }
+};
+
+//------------------------------
+// class SdrLayerNameItem
+//------------------------------
+
+class SdrLayerNameItem: public SfxStringItem {
+public:
+ SdrLayerNameItem() : SfxStringItem() { SetWhich(SDRATTR_LAYERNAME); }
+ SdrLayerNameItem(const String& rStr) : SfxStringItem(SDRATTR_LAYERNAME,rStr) {}
+ SdrLayerNameItem(SvStream& rIn) : SfxStringItem(SDRATTR_LAYERNAME,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxlogitm.hxx b/svx/inc/svx/sxlogitm.hxx
new file mode 100644
index 000000000000..9ef4903329c7
--- /dev/null
+++ b/svx/inc/svx/sxlogitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXLOGITM_HXX
+#define _SXLOGITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------
+// class SdrLogicSizeWidthItem
+//------------------------------
+class SdrLogicSizeWidthItem: public SdrMetricItem {
+public:
+ SdrLogicSizeWidthItem(long nWdt=0): SdrMetricItem(SDRATTR_LOGICSIZEWIDTH,nWdt) {}
+ SdrLogicSizeWidthItem(SvStream& rIn): SdrMetricItem(SDRATTR_LOGICSIZEWIDTH,rIn) {}
+};
+
+//------------------------------
+// class SdrLogicSizeWidthItem
+//------------------------------
+class SdrLogicSizeHeightItem: public SdrMetricItem {
+public:
+ SdrLogicSizeHeightItem(long nHgt=0): SdrMetricItem(SDRATTR_LOGICSIZEHEIGHT,nHgt) {}
+ SdrLogicSizeHeightItem(SvStream& rIn): SdrMetricItem(SDRATTR_LOGICSIZEHEIGHT,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmbritm.hxx b/svx/inc/svx/sxmbritm.hxx
new file mode 100644
index 000000000000..1f28844a0910
--- /dev/null
+++ b/svx/inc/svx/sxmbritm.hxx
@@ -0,0 +1,48 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMBRITM_HXX
+#define _SXMBRITM_HXX
+
+#include <svx/svddef.hxx>
+
+#ifndef SXMBRITM_HXX
+#include <svx/sdynitm.hxx>
+#endif
+
+// Die Masslinie unterhalb der Bezugskante
+// Zur Bemassung einer Objektunterkante
+// (Redundant zum drehen der Bezugskante um 180deg +
+// TextUpsideDown, jedoch besser bedienbar)
+// laesst sich auch draggen, indem man den Masslinienabstand
+// (SdrMeasureLineDistItem) ueber die Bezugskante hinwegdraggt
+class SdrMeasureBelowRefEdgeItem: public SdrYesNoItem {
+public:
+ SdrMeasureBelowRefEdgeItem(bool bOn=false): SdrYesNoItem(SDRATTR_MEASUREBELOWREFEDGE,bOn) {}
+ SdrMeasureBelowRefEdgeItem(SvStream& rIn): SdrYesNoItem(SDRATTR_MEASUREBELOWREFEDGE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmfsitm.hxx b/svx/inc/svx/sxmfsitm.hxx
new file mode 100644
index 000000000000..2e50d05aabf2
--- /dev/null
+++ b/svx/inc/svx/sxmfsitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMFSITM_HXX
+#define _SXMFSITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/stritem.hxx>
+
+// Formatstring (aehnl. Calc), z.B. "#.###,00km"
+// ueberschreibt SdrMeasureUnitItem und SdrMeasureShowUnitItem (n.i.)
+class SdrMeasureFormatStringItem: public SfxStringItem {
+public:
+ SdrMeasureFormatStringItem() : SfxStringItem() { SetWhich(SDRATTR_MEASUREFORMATSTRING); }
+ SdrMeasureFormatStringItem(const String& rStr) : SfxStringItem(SDRATTR_MEASUREFORMATSTRING,rStr) {}
+ SdrMeasureFormatStringItem(SvStream& rIn) : SfxStringItem(SDRATTR_MEASUREFORMATSTRING,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmkitm.hxx b/svx/inc/svx/sxmkitm.hxx
new file mode 100644
index 000000000000..2e1a7fd74b5a
--- /dev/null
+++ b/svx/inc/svx/sxmkitm.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMKITM_HXX
+#define _SXMKITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/eitem.hxx>
+
+enum SdrMeasureKind {SDRMEASURE_STD,SDRMEASURE_RADIUS}; // n.i.
+
+//------------------------------
+// class SdrMeasureKindItem (n.i.)
+//------------------------------
+class SdrMeasureKindItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrMeasureKindItem(SdrMeasureKind eKind=SDRMEASURE_STD): SfxEnumItem(SDRATTR_MEASUREKIND,sal::static_int_cast< USHORT >(eKind)) {}
+ SdrMeasureKindItem(SvStream& rIn) : SfxEnumItem(SDRATTR_MEASUREKIND,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 2; }
+ SdrMeasureKind GetValue() const { return (SdrMeasureKind)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxmlhitm.hxx b/svx/inc/svx/sxmlhitm.hxx
new file mode 100644
index 000000000000..1d4ffb5cfb05
--- /dev/null
+++ b/svx/inc/svx/sxmlhitm.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMLHITM_HXX
+#define _SXMLHITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+/*************************************************************************/
+/* Measure */
+/*************************************************************************/
+// ___
+// | 100,00km | 2mm = SdrMeasureHelplineOverhangItem
+// |<--------------------->|---
+// | | 8mm = SdrMeasureLineDistItem
+// | |
+// #=============# |---
+// # # | SdrMeasureHelpline1/2LenItem
+// # #=========#---
+// # Zu bemassendes Objekt #
+// #=======================#
+
+// Abstand der Masslinie zur Bezugskante (Norm=8mm)
+// laesst sich auch draggen an den beiden Handles
+// die auf den Pfeilspitzen liegen
+class SdrMeasureLineDistItem: public SdrMetricItem {
+public:
+ SdrMeasureLineDistItem(long nVal=0): SdrMetricItem(SDRATTR_MEASURELINEDIST,nVal) {}
+ SdrMeasureLineDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_MEASURELINEDIST,rIn) {}
+};
+
+// Ueberhang der Masshilfslinien an der Masslinie (Norm=2mm)
+class SdrMeasureHelplineOverhangItem: public SdrMetricItem {
+public:
+ SdrMeasureHelplineOverhangItem(long nVal=0): SdrMetricItem(SDRATTR_MEASUREHELPLINEOVERHANG,nVal) {}
+ SdrMeasureHelplineOverhangItem(SvStream& rIn): SdrMetricItem(SDRATTR_MEASUREHELPLINEOVERHANG,rIn) {}
+};
+
+// Abstand der der Masshilfslinienenden zur Bezugskante
+// Damit die Masshilfslinien nicht das Objekt beruehren
+class SdrMeasureHelplineDistItem: public SdrMetricItem {
+public:
+ SdrMeasureHelplineDistItem(long nVal=0): SdrMetricItem(SDRATTR_MEASUREHELPLINEDIST,nVal) {}
+ SdrMeasureHelplineDistItem(SvStream& rIn): SdrMetricItem(SDRATTR_MEASUREHELPLINEDIST,rIn) {}
+};
+
+// Ueberlaenge der Hilfslinien ueber die Bezugskante
+// laesst sich auch draggen an den beiden runden Handles,
+// die sich default unter den beiden Referenzpunkten befinden
+class SdrMeasureHelpline1LenItem: public SdrMetricItem {
+public:
+ SdrMeasureHelpline1LenItem(long nVal=0): SdrMetricItem(SDRATTR_MEASUREHELPLINE1LEN,nVal) {}
+ SdrMeasureHelpline1LenItem(SvStream& rIn): SdrMetricItem(SDRATTR_MEASUREHELPLINE1LEN,rIn) {}
+};
+class SdrMeasureHelpline2LenItem: public SdrMetricItem {
+public:
+ SdrMeasureHelpline2LenItem(long nVal=0): SdrMetricItem(SDRATTR_MEASUREHELPLINE2LEN,nVal) {}
+ SdrMeasureHelpline2LenItem(SvStream& rIn): SdrMetricItem(SDRATTR_MEASUREHELPLINE2LEN,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmoitm.hxx b/svx/inc/svx/sxmoitm.hxx
new file mode 100644
index 000000000000..091c66ec49ac
--- /dev/null
+++ b/svx/inc/svx/sxmoitm.hxx
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMOITM_HXX
+#define _SXMOITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+// Ueberstand der Masslinie ueber die Masshilfslinien
+// Nur wenn die Masspfeile aussen sind (n.i.)
+class SdrMeasureOverhangItem: public SdrMetricItem {
+public:
+ SdrMeasureOverhangItem(long nVal=0): SdrMetricItem(SDRATTR_MEASUREOVERHANG,nVal) {}
+ SdrMeasureOverhangItem(SvStream& rIn): SdrMetricItem(SDRATTR_MEASUREOVERHANG,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmovitm.hxx b/svx/inc/svx/sxmovitm.hxx
new file mode 100644
index 000000000000..360adfc52e1a
--- /dev/null
+++ b/svx/inc/svx/sxmovitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMOVITM_HXX
+#define _SXMOVITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------
+// class SdrMoveXItem
+//------------------------------
+class SdrMoveXItem: public SdrMetricItem {
+public:
+ SdrMoveXItem(long n=0): SdrMetricItem(SDRATTR_MOVEX,n) {}
+ SdrMoveXItem(SvStream& rIn): SdrMetricItem(SDRATTR_MOVEX,rIn) {}
+};
+
+//------------------------------
+// class SdrMoveYItem
+//------------------------------
+class SdrMoveYItem: public SdrMetricItem {
+public:
+ SdrMoveYItem(long n=0): SdrMetricItem(SDRATTR_MOVEY,n) {}
+ SdrMoveYItem(SvStream& rIn): SdrMetricItem(SDRATTR_MOVEY,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmsitm.hxx b/svx/inc/svx/sxmsitm.hxx
new file mode 100644
index 000000000000..b58b30091569
--- /dev/null
+++ b/svx/inc/svx/sxmsitm.hxx
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMSITM_HXX
+#define _SXMSITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sxsiitm.hxx>
+
+// Massstabsvorgabe. Wenn bereits am Model ein Massstab (UIScale) gesetzt
+// ist wird dieser nicht ueberschrieben. Stattdessen werden beide Massstaebe
+// miteinander multipliziert.
+class SdrMeasureScaleItem: public SdrScaleItem {
+public:
+ SdrMeasureScaleItem() : SdrScaleItem(SDRATTR_MEASURESCALE,Fraction(1,1)) {}
+ SdrMeasureScaleItem(const Fraction& rFr): SdrScaleItem(SDRATTR_MEASURESCALE,rFr) {}
+ SdrMeasureScaleItem(SvStream& rIn) : SdrScaleItem(SDRATTR_MEASURESCALE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmspitm.hxx b/svx/inc/svx/sxmspitm.hxx
new file mode 100644
index 000000000000..3af212ffbad1
--- /dev/null
+++ b/svx/inc/svx/sxmspitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMSPITM_HXX
+#define _SXMSPITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+
+//------------------------------
+// class SdrMoveProtectItem
+//------------------------------
+class SdrObjMoveProtectItem: public SdrYesNoItem {
+public:
+ SdrObjMoveProtectItem(bool bOn=false): SdrYesNoItem(SDRATTR_OBJMOVEPROTECT,bOn) {}
+ SdrObjMoveProtectItem(SvStream& rIn): SdrYesNoItem(SDRATTR_OBJMOVEPROTECT,rIn) {}
+};
+
+//------------------------------
+// class SdrSizeProtectItem
+//------------------------------
+class SdrObjSizeProtectItem: public SdrYesNoItem {
+public:
+ SdrObjSizeProtectItem(bool bOn=false): SdrYesNoItem(SDRATTR_OBJSIZEPROTECT,bOn) {}
+ SdrObjSizeProtectItem(SvStream& rIn): SdrYesNoItem(SDRATTR_OBJSIZEPROTECT,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmsuitm.hxx b/svx/inc/svx/sxmsuitm.hxx
new file mode 100644
index 000000000000..bc572a8319ff
--- /dev/null
+++ b/svx/inc/svx/sxmsuitm.hxx
@@ -0,0 +1,40 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMSUITM_HXX
+#define _SXMSUITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+
+// Die Masseinheit mit anzeigen
+class SdrMeasureShowUnitItem: public SdrYesNoItem {
+public:
+ SdrMeasureShowUnitItem(bool bOn=false): SdrYesNoItem(SDRATTR_MEASURESHOWUNIT,bOn) {}
+ SdrMeasureShowUnitItem(SvStream& rIn): SdrYesNoItem(SDRATTR_MEASURESHOWUNIT,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmtaitm.hxx b/svx/inc/svx/sxmtaitm.hxx
new file mode 100644
index 000000000000..e9b35bc425bc
--- /dev/null
+++ b/svx/inc/svx/sxmtaitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMTAITM_HXX
+#define _SXMTAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdangitm.hxx>
+
+// Den Text automatisch zurechtdrehen (Automatisches UpsideDown).
+// TextUpsideDown bleibt trotzdem weiterhin wirksam und dreht
+// den Text bei TRUE nochmal.
+class SdrMeasureTextAutoAngleItem: public SdrYesNoItem {
+public:
+ SdrMeasureTextAutoAngleItem(bool bOn=true): SdrYesNoItem(SDRATTR_MEASURETEXTAUTOANGLE,bOn) {}
+ SdrMeasureTextAutoAngleItem(SvStream& rIn): SdrYesNoItem(SDRATTR_MEASURETEXTAUTOANGLE,rIn) {}
+};
+
+// Der bevorzugte Blickwinkel zum lesen des Textes. Wird nur ausgewertet, wenn
+// TextAutoAngle=TRUE. Winkel in 1/100deg aus der Zeichnung zum Betrachter.
+class SdrMeasureTextAutoAngleViewItem: public SdrAngleItem {
+public:
+ SdrMeasureTextAutoAngleViewItem(long nVal=31500): SdrAngleItem(SDRATTR_MEASURETEXTAUTOANGLEVIEW,nVal) {}
+ SdrMeasureTextAutoAngleViewItem(SvStream& rIn): SdrAngleItem(SDRATTR_MEASURETEXTAUTOANGLEVIEW,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmtfitm.hxx b/svx/inc/svx/sxmtfitm.hxx
new file mode 100644
index 000000000000..c971f69f652f
--- /dev/null
+++ b/svx/inc/svx/sxmtfitm.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMTFITM_HXX
+#define _SXMTFITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdangitm.hxx>
+
+// die 2 folgenden sind noch nicht implementiert!
+// Text auf einen wirklich fixen Winkel festnageln.
+// Der Textwinkel ist dann auch unabhaengig vom Winkel der Masslinie.
+// Setzt TextUpsideDown, TextRota90 sowie TextAutoAngle ausser Kraft. (n.i.)
+class SdrMeasureTextIsFixedAngleItem: public SdrYesNoItem {
+public:
+ SdrMeasureTextIsFixedAngleItem(bool bOn=false): SdrYesNoItem(SDRATTR_MEASURETEXTISFIXEDANGLE,bOn) {}
+ SdrMeasureTextIsFixedAngleItem(SvStream& rIn): SdrYesNoItem(SDRATTR_MEASURETEXTISFIXEDANGLE,rIn) {}
+};
+
+// Der Winkel des Textes in 1/100deg. 0=Horizontal von links nach rechts zu lesen. (n.i.)
+class SdrMeasureTextFixedAngleItem: public SdrAngleItem {
+public:
+ SdrMeasureTextFixedAngleItem(long nVal=0): SdrAngleItem(SDRATTR_MEASURETEXTFIXEDANGLE,nVal) {}
+ SdrMeasureTextFixedAngleItem(SvStream& rIn): SdrAngleItem(SDRATTR_MEASURETEXTFIXEDANGLE,rIn) {}
+};
+
+// The decimal places used for the measure value
+class SdrMeasureDecimalPlacesItem: public SfxInt16Item {
+public:
+ SdrMeasureDecimalPlacesItem(INT16 nVal=2): SfxInt16Item(SDRATTR_MEASUREDECIMALPLACES,nVal) {}
+ SdrMeasureDecimalPlacesItem(SvStream& rIn): SfxInt16Item(SDRATTR_MEASUREDECIMALPLACES,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmtpitm.hxx b/svx/inc/svx/sxmtpitm.hxx
new file mode 100644
index 000000000000..f056c4cc732e
--- /dev/null
+++ b/svx/inc/svx/sxmtpitm.hxx
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMTPITM_HXX
+#define _SXMTPITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+enum SdrMeasureTextHPos {SDRMEASURE_TEXTHAUTO,SDRMEASURE_TEXTLEFTOUTSIDE,SDRMEASURE_TEXTINSIDE,SDRMEASURE_TEXTRIGHTOUTSIDE};
+enum SdrMeasureTextVPos {SDRMEASURE_TEXTVAUTO,SDRMEASURE_ABOVE,SDRMEASURETEXT_BREAKEDLINE,SDRMEASURE_BELOW,SDRMEASURETEXT_VERTICALCENTERED};
+
+//------------------------------
+// class SdrMeasureTextHPosItem
+//------------------------------
+class SVX_DLLPUBLIC SdrMeasureTextHPosItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrMeasureTextHPosItem(SdrMeasureTextHPos ePos=SDRMEASURE_TEXTHAUTO): SfxEnumItem(SDRATTR_MEASURETEXTHPOS,sal::static_int_cast< USHORT >(ePos)) {}
+ SdrMeasureTextHPosItem(SvStream& rIn) : SfxEnumItem(SDRATTR_MEASURETEXTHPOS,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 4; }
+ SdrMeasureTextHPos GetValue() const { return (SdrMeasureTextHPos)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+//------------------------------
+// class SdrMeasureTextVPosItem
+//------------------------------
+class SVX_DLLPUBLIC SdrMeasureTextVPosItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrMeasureTextVPosItem(SdrMeasureTextVPos ePos=SDRMEASURE_TEXTVAUTO): SfxEnumItem(SDRATTR_MEASURETEXTVPOS,sal::static_int_cast< USHORT >(ePos)) {}
+ SdrMeasureTextVPosItem(SvStream& rIn) : SfxEnumItem(SDRATTR_MEASURETEXTVPOS,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 5; }
+ SdrMeasureTextVPos GetValue() const { return (SdrMeasureTextVPos)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxmtritm.hxx b/svx/inc/svx/sxmtritm.hxx
new file mode 100644
index 000000000000..c74c26f66535
--- /dev/null
+++ b/svx/inc/svx/sxmtritm.hxx
@@ -0,0 +1,49 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMTRITM_HXX
+#define _SXMTRITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+
+// Den Text quer zur Masslinie (90deg Drehung nach links)
+class SdrMeasureTextRota90Item: public SdrYesNoItem {
+public:
+ SdrMeasureTextRota90Item(bool bOn=false): SdrYesNoItem(SDRATTR_MEASURETEXTROTA90,bOn) {}
+ SdrMeasureTextRota90Item(SvStream& rIn): SdrYesNoItem(SDRATTR_MEASURETEXTROTA90,rIn) {}
+};
+
+// Das von mir berechnete TextRect um 180 deg drehen
+// Der Text wird dann aber auch auf die andere Seite der
+// Masslinie gebracht (wenn nicht Rota90)
+class SdrMeasureTextUpsideDownItem: public SdrYesNoItem {
+public:
+ SdrMeasureTextUpsideDownItem(bool bOn=false): SdrYesNoItem(SDRATTR_MEASURETEXTUPSIDEDOWN,bOn) {}
+ SdrMeasureTextUpsideDownItem(SvStream& rIn): SdrYesNoItem(SDRATTR_MEASURETEXTUPSIDEDOWN,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxmuitm.hxx b/svx/inc/svx/sxmuitm.hxx
new file mode 100644
index 000000000000..d8c65975c92a
--- /dev/null
+++ b/svx/inc/svx/sxmuitm.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXMUITM_HXX
+#define _SXMUITM_HXX
+
+#include <vcl/field.hxx>
+#include <svx/svddef.hxx>
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+// Vorgabe einer Masseinheit. Der Zahlenwert wird in diese Einheit umgerechnet
+// (ausgehend von der MapUnit des Models). Diese Einheit wird dann ggf. auch angezeigt.
+class SVX_DLLPUBLIC SdrMeasureUnitItem: public SfxEnumItem {
+public:
+ TYPEINFO();
+ SdrMeasureUnitItem(FieldUnit eUnit=FUNIT_NONE): SfxEnumItem(SDRATTR_MEASUREUNIT,sal::static_int_cast< USHORT >(eUnit)) {}
+ SdrMeasureUnitItem(SvStream& rIn) : SfxEnumItem(SDRATTR_MEASUREUNIT,rIn) {}
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const; // { return 14; }
+ FieldUnit GetValue() const { return (FieldUnit)SfxEnumItem::GetValue(); }
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual String GetValueTextByPos(USHORT nPos) const;
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePres, SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric, String& rText, const IntlWrapper * = 0) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxoneitm.hxx b/svx/inc/svx/sxoneitm.hxx
new file mode 100644
index 000000000000..00285b23265a
--- /dev/null
+++ b/svx/inc/svx/sxoneitm.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXONEITM_HXX
+#define _SXONEITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------
+// class SdrOnePositionXItem
+//------------------------------
+class SdrOnePositionXItem: public SdrMetricItem {
+public:
+ SdrOnePositionXItem(long nPosX=0): SdrMetricItem(SDRATTR_ONEPOSITIONX,nPosX) {}
+ SdrOnePositionXItem(SvStream& rIn): SdrMetricItem(SDRATTR_ONEPOSITIONX,rIn) {}
+};
+
+//------------------------------
+// class SdrOnePositionYItem
+//------------------------------
+class SdrOnePositionYItem: public SdrMetricItem {
+public:
+ SdrOnePositionYItem(long nPosY=0): SdrMetricItem(SDRATTR_ONEPOSITIONY,nPosY) {}
+ SdrOnePositionYItem(SvStream& rIn): SdrMetricItem(SDRATTR_ONEPOSITIONY,rIn) {}
+};
+
+//------------------------------
+// class SdrOneSizeWidthItem
+//------------------------------
+class SdrOneSizeWidthItem: public SdrMetricItem {
+public:
+ SdrOneSizeWidthItem(long nWdt=0): SdrMetricItem(SDRATTR_ONESIZEWIDTH,nWdt) {}
+ SdrOneSizeWidthItem(SvStream& rIn): SdrMetricItem(SDRATTR_ONESIZEWIDTH,rIn) {}
+};
+
+//------------------------------
+// class SdrOneSizeWidthItem
+//------------------------------
+class SdrOneSizeHeightItem: public SdrMetricItem {
+public:
+ SdrOneSizeHeightItem(long nHgt=0): SdrMetricItem(SDRATTR_ONESIZEHEIGHT,nHgt) {}
+ SdrOneSizeHeightItem(SvStream& rIn): SdrMetricItem(SDRATTR_ONESIZEHEIGHT,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxonitm.hxx b/svx/inc/svx/sxonitm.hxx
new file mode 100644
index 000000000000..35fa8b54dc28
--- /dev/null
+++ b/svx/inc/svx/sxonitm.hxx
@@ -0,0 +1,44 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXONITM_HXX
+#define _SXONITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svl/stritem.hxx>
+
+//------------------------------
+// class SdrObjectNameItem
+//------------------------------
+
+class SdrObjectNameItem: public SfxStringItem {
+public:
+ SdrObjectNameItem() : SfxStringItem() { SetWhich(SDRATTR_OBJECTNAME); }
+ SdrObjectNameItem(const String& rStr) : SfxStringItem(SDRATTR_OBJECTNAME,rStr) {}
+ SdrObjectNameItem(SvStream& rIn) : SfxStringItem(SDRATTR_OBJECTNAME,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxopitm.hxx b/svx/inc/svx/sxopitm.hxx
new file mode 100644
index 000000000000..dd402c3a0915
--- /dev/null
+++ b/svx/inc/svx/sxopitm.hxx
@@ -0,0 +1,48 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXOPITM_HXX
+#define _SXOPITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdynitm.hxx>
+
+//------------------------------
+// class SdrObjPrintableItem
+//------------------------------
+class SdrObjPrintableItem: public SdrYesNoItem {
+public:
+ SdrObjPrintableItem(bool bOn=false): SdrYesNoItem(SDRATTR_OBJPRINTABLE,bOn) {}
+ SdrObjPrintableItem(SvStream& rIn): SdrYesNoItem(SDRATTR_OBJPRINTABLE,rIn) {}
+};
+
+class SdrObjVisibleItem: public SdrYesNoItem {
+public:
+ SdrObjVisibleItem(bool bOn=true): SdrYesNoItem(SDRATTR_OBJVISIBLE,bOn) {}
+ SdrObjVisibleItem(SvStream& rIn): SdrYesNoItem(SDRATTR_OBJVISIBLE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxraitm.hxx b/svx/inc/svx/sxraitm.hxx
new file mode 100644
index 000000000000..d0c48d8109ea
--- /dev/null
+++ b/svx/inc/svx/sxraitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXRAITM_HXX
+#define _SXRAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrRotateAngleItem
+//------------------------------
+class SdrRotateAngleItem: public SdrAngleItem {
+public:
+ SdrRotateAngleItem(long nAngle=0): SdrAngleItem(SDRATTR_ROTATEANGLE,nAngle) {}
+ SdrRotateAngleItem(SvStream& rIn): SdrAngleItem(SDRATTR_ROTATEANGLE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxreaitm.hxx b/svx/inc/svx/sxreaitm.hxx
new file mode 100644
index 000000000000..ea539f63d12b
--- /dev/null
+++ b/svx/inc/svx/sxreaitm.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXREAITM_HXX
+#define _SXREAITM_HXX
+
+#include <svx/svddef.hxx>
+
+#ifndef _SXFIITM_HXX
+#include <svx/sxfiitm.hxx>
+#endif
+
+//------------------------------
+// class SdrResizeXAllItem
+//------------------------------
+class SdrResizeXAllItem: public SdrFractionItem {
+public:
+ SdrResizeXAllItem(): SdrFractionItem(SDRATTR_RESIZEXALL,Fraction(1,1)) {}
+ SdrResizeXAllItem(const Fraction& rFact): SdrFractionItem(SDRATTR_RESIZEXALL,rFact) {}
+ SdrResizeXAllItem(SvStream& rIn): SdrFractionItem(SDRATTR_RESIZEXALL,rIn) {}
+};
+
+//------------------------------
+// class SdrResizeYAllItem
+//------------------------------
+class SdrResizeYAllItem: public SdrFractionItem {
+public:
+ SdrResizeYAllItem(): SdrFractionItem(SDRATTR_RESIZEYALL,Fraction(1,1)) {}
+ SdrResizeYAllItem(const Fraction& rFact): SdrFractionItem(SDRATTR_RESIZEYALL,rFact) {}
+ SdrResizeYAllItem(SvStream& rIn): SdrFractionItem(SDRATTR_RESIZEYALL,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxreoitm.hxx b/svx/inc/svx/sxreoitm.hxx
new file mode 100644
index 000000000000..1d090c4b7277
--- /dev/null
+++ b/svx/inc/svx/sxreoitm.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXREOITM_HXX
+#define _SXREOITM_HXX
+
+#include <svx/svddef.hxx>
+
+#ifndef _SXFIITM_HXX
+#include <svx/sxfiitm.hxx>
+#endif
+
+//------------------------------
+// class SdrResizeXOneItem
+//------------------------------
+class SdrResizeXOneItem: public SdrFractionItem {
+public:
+ SdrResizeXOneItem(): SdrFractionItem(SDRATTR_RESIZEXONE,Fraction(1,1)) {}
+ SdrResizeXOneItem(const Fraction& rFact): SdrFractionItem(SDRATTR_RESIZEXONE,rFact) {}
+ SdrResizeXOneItem(SvStream& rIn): SdrFractionItem(SDRATTR_RESIZEXONE,rIn) {}
+};
+
+//------------------------------
+// class SdrResizeYOneItem
+//------------------------------
+class SdrResizeYOneItem: public SdrFractionItem {
+public:
+ SdrResizeYOneItem(): SdrFractionItem(SDRATTR_RESIZEYONE,Fraction(1,1)) {}
+ SdrResizeYOneItem(const Fraction& rFact): SdrFractionItem(SDRATTR_RESIZEYONE,rFact) {}
+ SdrResizeYOneItem(SvStream& rIn): SdrFractionItem(SDRATTR_RESIZEYONE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxroaitm.hxx b/svx/inc/svx/sxroaitm.hxx
new file mode 100644
index 000000000000..739e3d653f24
--- /dev/null
+++ b/svx/inc/svx/sxroaitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXROAITM_HXX
+#define _SXROAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrRotateAllItem
+//------------------------------
+class SdrRotateAllItem: public SdrAngleItem {
+public:
+ SdrRotateAllItem(long nAngle=0): SdrAngleItem(SDRATTR_ROTATEALL,nAngle) {}
+ SdrRotateAllItem(SvStream& rIn): SdrAngleItem(SDRATTR_ROTATEALL,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxrooitm.hxx b/svx/inc/svx/sxrooitm.hxx
new file mode 100644
index 000000000000..955ce2bdf6d4
--- /dev/null
+++ b/svx/inc/svx/sxrooitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXROOITM_HXX
+#define _SXROOITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrRotateOneItem
+//------------------------------
+class SdrRotateOneItem: public SdrAngleItem {
+public:
+ SdrRotateOneItem(long nAngle=0): SdrAngleItem(SDRATTR_ROTATEONE,nAngle) {}
+ SdrRotateOneItem(SvStream& rIn): SdrAngleItem(SDRATTR_ROTATEONE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxsaitm.hxx b/svx/inc/svx/sxsaitm.hxx
new file mode 100644
index 000000000000..095e017d22e7
--- /dev/null
+++ b/svx/inc/svx/sxsaitm.hxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXSAITM_HXX
+#define _SXSAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrShearAngleItem
+//------------------------------
+class SdrShearAngleItem: public SdrAngleItem {
+public:
+ SdrShearAngleItem(long nAngle=0): SdrAngleItem(SDRATTR_SHEARANGLE,nAngle) {}
+ SdrShearAngleItem(SvStream& rIn): SdrAngleItem(SDRATTR_SHEARANGLE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxsalitm.hxx b/svx/inc/svx/sxsalitm.hxx
new file mode 100644
index 000000000000..c189934afbb3
--- /dev/null
+++ b/svx/inc/svx/sxsalitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXSALITM_HXX
+#define _SXSALITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrHorzShearAllItem
+//------------------------------
+class SdrHorzShearAllItem: public SdrAngleItem {
+public:
+ SdrHorzShearAllItem(long nAngle=0): SdrAngleItem(SDRATTR_HORZSHEARALL,nAngle) {}
+ SdrHorzShearAllItem(SvStream& rIn): SdrAngleItem(SDRATTR_HORZSHEARALL,rIn) {}
+};
+
+//------------------------------
+// class SdrVertShearAllItem
+//------------------------------
+class SdrVertShearAllItem: public SdrAngleItem {
+public:
+ SdrVertShearAllItem(long nAngle=0): SdrAngleItem(SDRATTR_VERTSHEARALL,nAngle) {}
+ SdrVertShearAllItem(SvStream& rIn): SdrAngleItem(SDRATTR_VERTSHEARALL,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxsiitm.hxx b/svx/inc/svx/sxsiitm.hxx
new file mode 100644
index 000000000000..e3f11e57bc3a
--- /dev/null
+++ b/svx/inc/svx/sxsiitm.hxx
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXSIITM_HXX
+#define _SXSIITM_HXX
+
+#ifndef _SXFIITM_HXX
+#include <svx/sxfiitm.hxx>
+#endif
+
+class SdrScaleItem: public SdrFractionItem {
+public:
+ TYPEINFO();
+ SdrScaleItem(USHORT nId=0): SdrFractionItem(nId,Fraction(1,1)) {}
+ SdrScaleItem(USHORT nId, const Fraction& rVal): SdrFractionItem(nId,rVal) {}
+ SdrScaleItem(USHORT nId, SvStream& rIn): SdrFractionItem(nId,rIn) {}
+ virtual SfxItemPresentation GetPresentation(SfxItemPresentation ePresentation, SfxMapUnit eCoreMetric, SfxMapUnit ePresentationMetric, String &rText, const IntlWrapper * = 0) const;
+ virtual SfxPoolItem* Create(SvStream&, USHORT nVer) const;
+ virtual SfxPoolItem* Clone(SfxItemPool *pPool=NULL) const;
+};
+
+#endif
diff --git a/svx/inc/svx/sxsoitm.hxx b/svx/inc/svx/sxsoitm.hxx
new file mode 100644
index 000000000000..2a0139f9372a
--- /dev/null
+++ b/svx/inc/svx/sxsoitm.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXSOITM_HXX
+#define _SXSOITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdangitm.hxx>
+
+//------------------------------
+// class SdrHorzShearOneItem
+//------------------------------
+class SdrHorzShearOneItem: public SdrAngleItem {
+public:
+ SdrHorzShearOneItem(long nAngle=0): SdrAngleItem(SDRATTR_HORZSHEARONE,nAngle) {}
+ SdrHorzShearOneItem(SvStream& rIn): SdrAngleItem(SDRATTR_HORZSHEARONE,rIn) {}
+};
+
+//------------------------------
+// class SdrVertShearOneItem
+//------------------------------
+class SdrVertShearOneItem: public SdrAngleItem {
+public:
+ SdrVertShearOneItem(long nAngle=0): SdrAngleItem(SDRATTR_VERTSHEARONE,nAngle) {}
+ SdrVertShearOneItem(SvStream& rIn): SdrAngleItem(SDRATTR_VERTSHEARONE,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/sxtraitm.hxx b/svx/inc/svx/sxtraitm.hxx
new file mode 100644
index 000000000000..bbea7b712c06
--- /dev/null
+++ b/svx/inc/svx/sxtraitm.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SXTRAITM_HXX
+#define _SXTRAITM_HXX
+
+#include <svx/svddef.hxx>
+#include <svx/sdmetitm.hxx>
+
+//------------------------------
+// class SdrTransformRef1XItem
+//------------------------------
+class SdrTransformRef1XItem: public SdrMetricItem {
+public:
+ SdrTransformRef1XItem(long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF1X,nHgt) {}
+ SdrTransformRef1XItem(SvStream& rIn): SdrMetricItem(SDRATTR_TRANSFORMREF1X,rIn) {}
+};
+
+//------------------------------
+// class SdrTransformRef1YItem
+//------------------------------
+class SdrTransformRef1YItem: public SdrMetricItem {
+public:
+ SdrTransformRef1YItem(long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF1Y,nHgt) {}
+ SdrTransformRef1YItem(SvStream& rIn): SdrMetricItem(SDRATTR_TRANSFORMREF1Y,rIn) {}
+};
+
+//------------------------------
+// class SdrTransformRef2XItem
+//------------------------------
+class SdrTransformRef2XItem: public SdrMetricItem {
+public:
+ SdrTransformRef2XItem(long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF2X,nHgt) {}
+ SdrTransformRef2XItem(SvStream& rIn): SdrMetricItem(SDRATTR_TRANSFORMREF2X,rIn) {}
+};
+
+//------------------------------
+// class SdrTransformRef2YItem
+//------------------------------
+class SdrTransformRef2YItem: public SdrMetricItem {
+public:
+ SdrTransformRef2YItem(long nHgt=0): SdrMetricItem(SDRATTR_TRANSFORMREF2Y,nHgt) {}
+ SdrTransformRef2YItem(SvStream& rIn): SdrMetricItem(SDRATTR_TRANSFORMREF2Y,rIn) {}
+};
+
+#endif
diff --git a/svx/inc/svx/tabarea.hxx b/svx/inc/svx/tabarea.hxx
new file mode 100644
index 000000000000..873dbc576f7c
--- /dev/null
+++ b/svx/inc/svx/tabarea.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_TAB_AREA_HXX
+#define _SVX_TAB_AREA_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svtools/valueset.hxx>
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#include <svx/dlgctrl.hxx>
+#include <svx/xsetit.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xfillit.hxx>
+
+// enum ------------------------------------------------------------------
+
+enum ColorModel
+{
+ CM_RGB,
+ CM_CMYK // kann um weitere Modelle, z.B. HSV erweitert werden
+};
+
+enum PageType
+{
+ PT_AREA,
+ PT_GRADIENT,
+ PT_HATCH,
+ PT_BITMAP,
+ PT_COLOR,
+ PT_SHADOW,
+ PT_TRANSPARENCE
+};
+
+// define ----------------------------------------------------------------
+
+typedef USHORT ChangeType; // auch in tab_line.hxx (mitpflegen !!!)
+
+#define CT_NONE ( (ChangeType) 0x0000 )
+#define CT_MODIFIED ( (ChangeType) 0x0001 )
+#define CT_CHANGED ( (ChangeType) 0x0002 )
+#define CT_SAVED ( (ChangeType) 0x0004 )
+
+class SdrModel;
+class SdrView;
+
+#endif // _SVX_TAB_AREA_HXX
+
diff --git a/svx/inc/svx/tabline.hxx b/svx/inc/svx/tabline.hxx
new file mode 100644
index 000000000000..7ccc189b0083
--- /dev/null
+++ b/svx/inc/svx/tabline.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_TAB_LINE_HXX
+#define _SVX_TAB_LINE_HXX
+
+// include ---------------------------------------------------------------
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#include <svtools/stdctrl.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xlineit.hxx>
+#include <svx/xsetit.hxx>
+#include <svx/dlgctrl.hxx>
+#include <vcl/menubtn.hxx>
+class SvxBrushItem;
+// define ----------------------------------------------------------------
+
+typedef USHORT ChangeType; // auch in tab_area.hxx (mitpflegen !!!)
+
+#define CT_NONE ( (ChangeType) 0x0000 )
+#define CT_MODIFIED ( (ChangeType) 0x0001 )
+#define CT_CHANGED ( (ChangeType) 0x0002 )
+#define CT_SAVED ( (ChangeType) 0x0004 )
+
+class SdrModel;
+class SdrObject;
+
+//defines fuer die Symbolauswahl auf der Page
+//Positive Werte (0,...n) gibt den Indes in pSymbollist an, sonst :
+#define SVX_SYMBOLTYPE_NONE (-3) //Symbol unsichtbar
+#define SVX_SYMBOLTYPE_AUTO (-2) //Symbol automatisch erzeugen
+#define SVX_SYMBOLTYPE_BRUSHITEM (-1) //Symbol ist als Graphic im Item enthalten:
+#define SVX_SYMBOLTYPE_UNKNOWN (-100) //unbekannt/nicht initialisiert
+
+#endif // _SVX_TAB_LINE_HXX
+
diff --git a/svx/inc/svx/tbcontrl.hxx b/svx/inc/svx/tbcontrl.hxx
new file mode 100644
index 000000000000..0fb270351df9
--- /dev/null
+++ b/svx/inc/svx/tbcontrl.hxx
@@ -0,0 +1,447 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_TBCONTRL_HXX
+#define _SVX_TBCONTRL_HXX
+
+/*--------------------------------------------------------------*\
+
+ Beschreibung:
+ -------------
+ ToolBox-Controler fuer:
+ Font-Name, Font-Hoehe, Font-Farbe
+ Vorder-/Hintergrundfarbe /-Muster
+ Rahmen, Linien
+ (Absatz-)Vorlagen
+
+ Bedienung:
+ ----------
+ SvxFontNameToolBoxControl
+ -------------------------
+ Item-Typ: SvxFontItem
+ Execute-Id: SID_ATTR_CHAR_FONT
+ -> SvxFontItem
+ Zusatzdaten
+ aus DocShell: SvxFontListItem (SID_ATTR_CHAR_FONTLIST)
+
+ SvxFontHeightToolBoxControl
+ ---------------------------
+ Item-Typ: SvxFontHeightItem
+ Execute-Id: SID_ATTR_CHAR_FONTHEIGHT
+ -> SvxFontHeightItem
+ Zusatzdaten
+ aus DocShell: SvxFontListItem (SID_ATTR_CHAR_FONTLIST)
+
+ SvxFontColorToolBoxControl
+ --------------------------
+ Item-Typ: SvxFontColorItem
+ Execute-Id: SID_ATTR_CHAR_COLOR
+ -> SvxFontColorItem
+ Zusatzdaten
+ aus DocShell: z.Zt. keine
+ in Zukunft: Farbpalette
+
+ class SvxFontColorExtToolBoxControl
+ -----------------------------------
+ fuer die Zeichenfarbe
+ Item-Typ SvxColorItem
+ und SfxBoolItem
+ Execute-Id SID_ATTR_CHAR_COLOR
+ und SID_ATTR_CHAR_COLOR_EXT
+
+ fuer den Zeichenhintergrund
+ Item-Typ SvxColorItem
+ und SfxBoolItem
+ Execute-Id SID_ATTR_CHAR_COLOR_BACKGROUND
+ und SID_ATTR_CHAR_COLOR_BACKGROUND_EXT
+
+ SvxColorToolBoxControl
+ --------------------------------
+ Item-Typ: SvxBrushItem
+ Execute-Id: SID_BACKGROUND_COLOR
+ -> SvxColorItem
+ Zusatzdaten
+ aus DocShell: z.Zt. keine
+ in Zukunft: Farbpalette
+
+ SvxPatternToolBoxControl
+ ------------------------
+ Item-Typ: SvxBrushItem
+ Execute-Id: SID_BACKGROUND_PATTERN
+ -> SvxBrushItem
+ Zusatzdaten
+ aus DocShell: z.Zt. keine
+ in Zukunft: Farbpalette
+ Bemerkung: Auswertung des BrushItems:
+ Die Brush-FillColor() wird als Schalter
+ missbraucht, um zu unterscheiden, ob ein
+ neuer Style oder eine neue Farbe
+ gesetzt wurde:
+
+ GetFillColor() == COL_BLACK -> GetStyle() auswerten,
+ GetFillColor() == COL_WHITE -> GetColor() auswerten
+
+ SvxFrameToolBoxControl
+ ----------------------
+ Item-Typ: SvxBoxItem
+ Execute-Id: SID_ATTR_BORDER
+ -> SvxBoxItem & SvxBoxInfoItem
+ Zusatzdaten
+ aus DocShell: keine
+ Bemerkung: liefert je nach gewaehltem ValueSet-Item
+ nur SvxBoxItem oder zusaetzlich SvxBoxInfoItem
+ Wird dem Controller ein SfxUInt16Item mit einem
+ Wert != 0 geschickt, so wird der Paragraph-Mode
+ eingeschaltet, d.h. die letzte Zeile wird
+ ausgeblendet. Ein Wert == 0 schaltet wieder in
+ den Tabellenmodus.
+
+ SvxFrameLineStyleToolBoxControl
+ -------------------------------
+ Item-Typ: SvxLineItem
+ Execute-Id: SID_FRAME_LINESTYLE
+ -> SvxLineItem
+ Zusatzdaten
+ aus DocShell: keine
+ Bemerkung: liefert ein SvxLineItem, welches eine SvxBorderLine
+ ohne Farbinformation liefert.
+
+ SvxFrameLineColorToolBoxControl
+ -------------------------------
+ Item-Typ: SvxColorItem
+ Execute-Id: SID_FRAME_LINECOLOR
+ -> SvxColorItem
+ Zusatzdaten
+ aus DocShell: keine
+
+ SvxStyleToolBoxControl
+ ----------------------
+ Item-Typ: SfxTemplateItem
+ Execute-Id: SID_TEMPLATE_APPLY
+ -> StyleName (SfxStringItem)
+ -> eStyleFamily (SfxUInt16Item)
+ Zusatzdaten
+ aus DocShell: keine
+ Bemerkung: Umschalten der Familie ueber Invalidate
+ an den Bindings (->SfxStyleControllerItem)
+
+\*--------------------------------------------------------------*/
+
+// include ---------------------------------------------------------------
+
+// ITEMID_...-Defines im *.cxx
+
+#include <rsc/rscsfx.hxx>
+#include <svl/lstner.hxx>
+#include <sfx2/tbxctrl.hxx>
+#include <svx/strarray.hxx>
+#include "svx/svxdllapi.h"
+
+#include <com/sun/star/awt/FontDescriptor.hpp>
+
+// wichtig im mit HeDaBu erzeugtem tbxctrls.hxx!!!
+class SvxLineItem;
+class SvxBoxInfoItem;
+class SvxFontItem;
+class SvxFontHeightItem;
+class SfxStyleControllerItem_Impl;
+class SfxStyleSheetBasePool;
+class SfxTemplateItem;
+
+namespace svx
+{
+ class ToolboxButtonColorUpdater;
+}
+//########################################################################
+
+//========================================================================
+// class SvxStyleToolBoxControl ------------------------------------------
+//========================================================================
+class SVX_DLLPUBLIC SvxStyleToolBoxControl : public SfxToolBoxControl
+{
+ struct Impl;
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxStyleToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxStyleToolBoxControl();
+
+ virtual Window* CreateItemWindow( Window *pParent );
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+ DECL_LINK( VisibilityNotification, void* );
+protected:
+ // XInitialization
+ virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+
+ // XUpdatable
+ virtual void SAL_CALL update() throw (::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
+
+private:
+
+#define MAX_FAMILIES 5
+
+ SfxStyleSheetBasePool* pStyleSheetPool;
+ SfxStyleControllerItem_Impl* pBoundItems [MAX_FAMILIES];
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > m_xBoundItems[MAX_FAMILIES];
+ SfxTemplateItem* pFamilyState[MAX_FAMILIES];
+ USHORT nActFamily; // Id in der ToolBox = Position - 1
+ USHORT nActFilter; // FilterIdx
+ USHORT nAppFilter; // Filter, den die App gesetzt hat
+ String aCurSel;
+ BOOL bListening;
+ Impl* pImpl;
+
+ SVX_DLLPRIVATE void Update();
+ SVX_DLLPRIVATE void FillStyleBox();
+ SVX_DLLPRIVATE void SelectStyle( const String& rStyleName );
+
+friend class SfxStyleControllerItem_Impl;
+
+ SVX_DLLPRIVATE void SetFamilyState ( USHORT nIdx, const SfxTemplateItem* pItem );
+ SVX_DLLPRIVATE SfxStyleFamily GetActFamily ();
+};
+
+//========================================================================
+// class SvxFontNameToolBoxControl ---------------------------------------
+//========================================================================
+
+
+class SVX_DLLPUBLIC SvxFontNameToolBoxControl : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFontNameToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+
+ virtual void StateChanged ( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual Window* CreateItemWindow ( Window *pParent );
+};
+
+
+
+//========================================================================
+// class SvxFontHeightToolBoxControl -------------------------------------
+//========================================================================
+
+/*
+class SvxFontSizeItem;
+class SvxFontItem;
+class SvxFontSizeBox_Impl;
+
+class SVX_DLLPUBLIC SvxFontHeightToolBoxControl : public SfxToolBoxControl
+{
+ SvxFontSizeBox_Impl* pBox; // ItemWindow f"ur quick-access
+ ::com::sun::star::awt::FontDescriptor aCurrentFont; // Kopie des aktuellen Fonts
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFontHeightToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxFontHeightToolBoxControl();
+
+ // new controller API
+ // XStatusListener
+ virtual void SAL_CALL statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event )
+ throw ( ::com::sun::star::uno::RuntimeException );
+
+ virtual Window* CreateItemWindow( Window *pParent );
+};
+*/
+
+
+//========================================================================
+// class SvxFontColorToolBoxControl --------------------------------------
+//========================================================================
+
+
+
+class SVX_DLLPUBLIC SvxFontColorToolBoxControl : public SfxToolBoxControl
+{
+ ::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFontColorToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxFontColorToolBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
+
+
+//========================================================================
+// class SvxFontColorExtToolBoxControl --------------------------------------
+//========================================================================
+
+
+
+class SVX_DLLPUBLIC SvxFontColorExtToolBoxControl : public SfxToolBoxControl
+{
+ using SfxToolBoxControl::StateChanged;
+ using SfxToolBoxControl::Select;
+
+ // SfxStatusForwarder aForward;
+ ::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFontColorExtToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxFontColorExtToolBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+ virtual void Select( BOOL bMod1 = FALSE );
+
+};
+
+
+
+//========================================================================
+// class SvxColorToolBoxControl ------------------------------------------
+//========================================================================
+
+
+class SVX_DLLPUBLIC SvxColorToolBoxControl : public SfxToolBoxControl
+{
+ ::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxColorToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxColorToolBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
+
+
+//========================================================================
+// class SvxFrameToolBoxControl ------------------------------------------
+//========================================================================
+
+
+class SVX_DLLPUBLIC SvxFrameToolBoxControl : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFrameToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+
+};
+
+
+
+//========================================================================
+// class SvxLineStyleToolBoxControl --------------------------------------
+//========================================================================
+
+
+class SVX_DLLPUBLIC SvxFrameLineStyleToolBoxControl : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFrameLineStyleToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+
+
+
+//========================================================================
+// class SvxFrameLineColorToolBoxControl ---------------------------------
+//========================================================================
+
+
+class SVX_DLLPUBLIC SvxFrameLineColorToolBoxControl : public SfxToolBoxControl
+{
+ ::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFrameLineColorToolBoxControl( USHORT nSlotId,
+ USHORT nId,
+ ToolBox& rTbx );
+ ~SvxFrameLineColorToolBoxControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
+
+
+class SvxReloadControllerItem_Impl;
+class SvxReloadControllerItem : public SfxToolBoxControl
+{
+private:
+ SvxReloadControllerItem_Impl* pImpl;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxReloadControllerItem( USHORT nSlotId,
+ USHORT nId,
+ ToolBox& rTbx );
+ ~SvxReloadControllerItem();
+
+protected:
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+
+class SVX_DLLPUBLIC SvxSimpleUndoRedoController : public SfxToolBoxControl
+{
+private:
+ ::rtl::OUString aDefaultText;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxSimpleUndoRedoController( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
+ ~SvxSimpleUndoRedoController();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+
+#endif // #ifndef _SVX_TBCONTRL_HXX
diff --git a/svx/inc/svx/tbxcolorupdate.hxx b/svx/inc/svx/tbxcolorupdate.hxx
new file mode 100644
index 000000000000..892a03257e5b
--- /dev/null
+++ b/svx/inc/svx/tbxcolorupdate.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_TBXCOLORUPDATE_HXX
+#define SVX_TBXCOLORUPDATE_HXX
+
+#include <svx/svxdllapi.h>
+
+#include <tools/gen.hxx>
+#include <tools/color.hxx>
+
+class ToolBox;
+class VirtualDevice;
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+#define TBX_UPDATER_MODE_NONE 0x00
+#define TBX_UPDATER_MODE_CHAR_COLOR 0x01
+#define TBX_UPDATER_MODE_CHAR_BACKGROUND 0x02
+#define TBX_UPDATER_MODE_CHAR_COLOR_NEW 0x03
+
+ //====================================================================
+ //= ToolboxButtonColorUpdater
+ //====================================================================
+ /** helper class to update a color in a toolbox button image
+
+ formerly known as SvxTbxButtonColorUpdater_Impl, residing in svx/source/tbxctrls/colorwindow.hxx.
+ */
+ class SVX_DLLPUBLIC ToolboxButtonColorUpdater
+ {
+ public:
+ ToolboxButtonColorUpdater( USHORT nSlotId,
+ USHORT nTbxBtnId,
+ ToolBox* ptrTbx,
+ USHORT nMode = 0 );
+ ~ToolboxButtonColorUpdater();
+
+ void Update( const Color& rColor );
+
+ protected:
+ void DrawChar(VirtualDevice&, const Color&);
+
+ private:
+ USHORT mnDrawMode;
+ USHORT mnBtnId;
+ USHORT mnSlotId;
+ ToolBox* mpTbx;
+ Color maCurColor;
+ Rectangle maUpdRect;
+ Size maBmpSize;
+ BOOL mbWasHiContrastMode;
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SVX_TBXCOLORUPDATE_HXX
diff --git a/svx/inc/svx/ucsubset.hrc b/svx/inc/svx/ucsubset.hrc
new file mode 100644
index 000000000000..50f7e62162e6
--- /dev/null
+++ b/svx/inc/svx/ucsubset.hrc
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <svx/dialogs.hrc>
+
+// strings for unicode range descriptions (used e.g. by Charmap dialog)
+// (see the Unicode spec and TrueType::OS2.ulUnicodeRange description)
+#define RID_SUBSETMAP 1243
+#define RID_SUBSET_START (RID_SVX_START + 901)
+#define RID_SUBSET_COUNT 95
+
+#define RID_SUBSETSTR_BASIC_LATIN (RID_SUBSET_START + 0)
+#define RID_SUBSETSTR_LATIN_1 (RID_SUBSET_START + 1)
+#define RID_SUBSETSTR_LATIN_EXTENDED_A (RID_SUBSET_START + 2)
+#define RID_SUBSETSTR_LATIN_EXTENDED_B (RID_SUBSET_START + 3)
+#define RID_SUBSETSTR_IPA_EXTENSIONS (RID_SUBSET_START + 4)
+#define RID_SUBSETSTR_SPACING_MODIFIERS (RID_SUBSET_START + 5)
+#define RID_SUBSETSTR_COMB_DIACRITICAL (RID_SUBSET_START + 6)
+#define RID_SUBSETSTR_BASIC_GREEK (RID_SUBSET_START + 7)
+#define RID_SUBSETSTR_GREEK_SYMS_COPTIC (RID_SUBSET_START + 8)
+#define RID_SUBSETSTR_CYRILLIC (RID_SUBSET_START + 9)
+#define RID_SUBSETSTR_CYRILLIC_SUPPL (RID_SUBSET_START + 200)
+#define RID_SUBSETSTR_ARMENIAN (RID_SUBSET_START + 10)
+#define RID_SUBSETSTR_HEBREW_EXTENDED (RID_SUBSET_START + 11)
+#define RID_SUBSETSTR_BASIC_HEBREW (RID_SUBSET_START + 12)
+#define RID_SUBSETSTR_BASIC_ARABIC (RID_SUBSET_START + 13)
+#define RID_SUBSETSTR_ARABIC_EXTENDED (RID_SUBSET_START + 14)
+#define RID_SUBSETSTR_DEVANAGARI (RID_SUBSET_START + 15)
+#define RID_SUBSETSTR_BENGALI (RID_SUBSET_START + 16)
+#define RID_SUBSETSTR_GURMUKHI (RID_SUBSET_START + 17)
+#define RID_SUBSETSTR_GUJARATI (RID_SUBSET_START + 18)
+#define RID_SUBSETSTR_ORIYA (RID_SUBSET_START + 19)
+#define RID_SUBSETSTR_TAMIL (RID_SUBSET_START + 20)
+#define RID_SUBSETSTR_TELUGU (RID_SUBSET_START + 21)
+#define RID_SUBSETSTR_KANNADA (RID_SUBSET_START + 22)
+#define RID_SUBSETSTR_MALAYALAM (RID_SUBSET_START + 23)
+#define RID_SUBSETSTR_THAI (RID_SUBSET_START + 24)
+#define RID_SUBSETSTR_LAO (RID_SUBSET_START + 25)
+#define RID_SUBSETSTR_BASIC_GEORGIAN (RID_SUBSET_START + 26)
+#define RID_SUBSETSTR_GEORGIAN_EXTENDED (RID_SUBSET_START + 27)
+#define RID_SUBSETSTR_HANGUL_JAMO (RID_SUBSET_START + 28)
+#define RID_SUBSETSTR_LATIN_EXTENDED_ADDS (RID_SUBSET_START + 29)
+#define RID_SUBSETSTR_GREEK_EXTENDED (RID_SUBSET_START + 30)
+#define RID_SUBSETSTR_GENERAL_PUNCTUATION (RID_SUBSET_START + 31)
+#define RID_SUBSETSTR_SUB_SUPER_SCRIPTS (RID_SUBSET_START + 32)
+#define RID_SUBSETSTR_CURRENCY_SYMBOLS (RID_SUBSET_START + 33)
+#define RID_SUBSETSTR_COMB_DIACRITIC_SYMS (RID_SUBSET_START + 34)
+#define RID_SUBSETSTR_LETTERLIKE_SYMBOLS (RID_SUBSET_START + 35)
+#define RID_SUBSETSTR_NUMBER_FORMS (RID_SUBSET_START + 36)
+#define RID_SUBSETSTR_ARROWS (RID_SUBSET_START + 37)
+#define RID_SUBSETSTR_MATH_OPERATORS (RID_SUBSET_START + 38)
+#define RID_SUBSETSTR_MISC_TECHNICAL (RID_SUBSET_START + 39)
+#define RID_SUBSETSTR_CONTROL_PICTURES (RID_SUBSET_START + 40)
+#define RID_SUBSETSTR_OPTICAL_CHAR_REC (RID_SUBSET_START + 41)
+#define RID_SUBSETSTR_ENCLOSED_ALPHANUM (RID_SUBSET_START + 42)
+#define RID_SUBSETSTR_BOX_DRAWING (RID_SUBSET_START + 43)
+#define RID_SUBSETSTR_BLOCK_ELEMENTS (RID_SUBSET_START + 44)
+#define RID_SUBSETSTR_GEOMETRIC_SHAPES (RID_SUBSET_START + 45)
+#define RID_SUBSETSTR_MISC_DINGBATS (RID_SUBSET_START + 46)
+#define RID_SUBSETSTR_DINGBATS (RID_SUBSET_START + 47)
+#define RID_SUBSETSTR_CJK_SYMS_PUNCTUATION (RID_SUBSET_START + 48)
+#define RID_SUBSETSTR_HIRAGANA (RID_SUBSET_START + 49)
+#define RID_SUBSETSTR_KATAKANA (RID_SUBSET_START + 50)
+#define RID_SUBSETSTR_BOPOMOFO (RID_SUBSET_START + 51)
+#define RID_SUBSETSTR_HANGUL_COMPAT_JAMO (RID_SUBSET_START + 52)
+#define RID_SUBSETSTR_CJK_MISC (RID_SUBSET_START + 53)
+#define RID_SUBSETSTR_ENCLOSED_CJK_LETTERS (RID_SUBSET_START + 54)
+#define RID_SUBSETSTR_CJK_COMPATIBILITY (RID_SUBSET_START + 55)
+#define RID_SUBSETSTR_HANGUL (RID_SUBSET_START + 56)
+
+#define RID_SUBSETSTR_CJK_UNIFIED_IDGRAPH (RID_SUBSET_START + 59)
+#define RID_SUBSETSTR_PRIVATE_USE_AREA (RID_SUBSET_START + 60)
+#define RID_SUBSETSTR_CJK_COMPAT_IDGRAPHS (RID_SUBSET_START + 61)
+#define RID_SUBSETSTR_ALPHA_PRESENTATION (RID_SUBSET_START + 62)
+#define RID_SUBSETSTR_ARABIC_PRESENT_A (RID_SUBSET_START + 63)
+#define RID_SUBSETSTR_COMBINING_HALF_MARKS (RID_SUBSET_START + 64)
+#define RID_SUBSETSTR_CJK_COMPAT_FORMS (RID_SUBSET_START + 65)
+#define RID_SUBSETSTR_SMALL_FORM_VARIANTS (RID_SUBSET_START + 66)
+#define RID_SUBSETSTR_ARABIC_PRESENT_B (RID_SUBSET_START + 67)
+#define RID_SUBSETSTR_HALFW_FULLW_FORMS (RID_SUBSET_START + 68)
+#define RID_SUBSETSTR_SPECIALS (RID_SUBSET_START + 69)
+
+#define RID_SUBSETSTR_HANGUL_GA (RID_SUBSET_START + 150)
+#define RID_SUBSETSTR_HANGUL_NA (RID_SUBSET_START + 151)
+#define RID_SUBSETSTR_HANGUL_DA (RID_SUBSET_START + 152)
+#define RID_SUBSETSTR_HANGUL_RA (RID_SUBSET_START + 153)
+#define RID_SUBSETSTR_HANGUL_MA (RID_SUBSET_START + 154)
+#define RID_SUBSETSTR_HANGUL_BA (RID_SUBSET_START + 155)
+#define RID_SUBSETSTR_HANGUL_SA (RID_SUBSET_START + 156)
+#define RID_SUBSETSTR_HANGUL_AH (RID_SUBSET_START + 157)
+#define RID_SUBSETSTR_HANGUL_JA (RID_SUBSET_START + 158)
+#define RID_SUBSETSTR_HANGUL_CHA (RID_SUBSET_START + 159)
+#define RID_SUBSETSTR_HANGUL_KA (RID_SUBSET_START + 160)
+#define RID_SUBSETSTR_HANGUL_TA (RID_SUBSET_START + 161)
+#define RID_SUBSETSTR_HANGUL_PA (RID_SUBSET_START + 162)
+#define RID_SUBSETSTR_HANGUL_HA (RID_SUBSET_START + 163)
+#define RID_SUBSETSTR_YI (RID_SUBSET_START + 164)
+
+#define RID_SUBSETSTR_SINHALA (RID_SUBSET_START + 165)
+#define RID_SUBSETSTR_TIBETAN (RID_SUBSET_START + 166)
+#define RID_SUBSETSTR_MYANMAR (RID_SUBSET_START + 167)
+#define RID_SUBSETSTR_KHMER (RID_SUBSET_START + 168)
+
+#define RID_SUBSETSTR_OGHAM (RID_SUBSET_START + 170)
+#define RID_SUBSETSTR_RUNIC (RID_SUBSET_START + 171)
+#define RID_SUBSETSTR_SYRIAC (RID_SUBSET_START + 172)
+#define RID_SUBSETSTR_THAANA (RID_SUBSET_START + 173)
+#define RID_SUBSETSTR_ETHIOPIC (RID_SUBSET_START + 174)
+#define RID_SUBSETSTR_CHEROKEE (RID_SUBSET_START + 175)
+#define RID_SUBSETSTR_CANADIAN_ABORIGINAL (RID_SUBSET_START + 176)
+#define RID_SUBSETSTR_MONGOLIAN (RID_SUBSET_START + 177)
+#define RID_SUBSETSTR_CJK_EXT_A_UNIFIED_IDGRAPH (RID_SUBSET_START + 178)
+
+#define RID_SUBSETSTR_MISC_MATH_SYMS_A (RID_SUBSET_START + 210)
+#define RID_SUBSETSTR_SUPPL_ARROWS_A (RID_SUBSET_START + 211)
+#define RID_SUBSETSTR_BRAILLE_PATTERNS (RID_SUBSET_START + 212)
+#define RID_SUBSETSTR_SUPPL_ARROWS_B (RID_SUBSET_START + 213)
+#define RID_SUBSETSTR_MISC_MATH_SYMS_B (RID_SUBSET_START + 214)
+#define RID_SUBSETSTR_CJK_RADICAL_SUPPL (RID_SUBSET_START + 215)
+#define RID_SUBSETSTR_KANXI_RADICALS (RID_SUBSET_START + 216)
+#define RID_SUBSETSTR_IDEO_DESC_CHARS (RID_SUBSET_START + 217)
+
+#define RID_SUBSETSTR_TAGALOG (RID_SUBSET_START + 220)
+#define RID_SUBSETSTR_HANUNOO (RID_SUBSET_START + 221)
+#define RID_SUBSETSTR_TAGBANWA (RID_SUBSET_START + 222)
+#define RID_SUBSETSTR_BUHID (RID_SUBSET_START + 223)
+#define RID_SUBSETSTR_KANBUN (RID_SUBSET_START + 224)
+#define RID_SUBSETSTR_BOPOMOFO_EXTENDED (RID_SUBSET_START + 225)
+#define RID_SUBSETSTR_KATAKANA_PHONETIC (RID_SUBSET_START + 226)
+
+#define RID_SUBSET_END (RID_SUBSET_START + 299)
diff --git a/svx/inc/svx/ucsubset.hxx b/svx/inc/svx/ucsubset.hxx
new file mode 100644
index 000000000000..0d6e35bcaf38
--- /dev/null
+++ b/svx/inc/svx/ucsubset.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_SUBSETMAP_HXX
+#define _SVX_SUBSETMAP_HXX
+
+#include "svx/svxdllapi.h"
+
+#include <svx/ucsubset.hrc>
+#include <vcl/metric.hxx>
+
+#include <list>
+
+class FontCharMap;
+
+// classes Subset & SubsetMap --------------------------------------------
+// TODO: should be moved into Font Attributes territory,
+// we let them mature here though because this is currently the only use
+
+class Subset
+{
+public:
+ Subset( sal_UCS4 nMin, sal_UCS4 nMax, const String& aName )
+ : mnRangeMin(nMin), mnRangeMax(nMax), maRangeName(aName)
+ {}
+
+ Subset( sal_UCS4 nMin, sal_UCS4 nMax, int resId );
+
+ sal_UCS4 GetRangeMin() const { return mnRangeMin;}
+ sal_UCS4 GetRangeMax() const { return mnRangeMax;}
+ const String GetName() const { return maRangeName;}
+
+private:
+ sal_UCS4 mnRangeMin;
+ sal_UCS4 mnRangeMax;
+ String maRangeName;
+};
+
+typedef ::std::list<Subset> SubsetList;
+
+class SVX_DLLPUBLIC SubsetMap : private Resource
+{
+public:
+ SubsetMap( const FontCharMap* );
+
+ const Subset* GetSubsetByUnicode( sal_UCS4 ) const;
+ const Subset* GetNextSubset( bool bFirst ) const;
+
+private:
+ SubsetList maSubsets;
+ mutable SubsetList::const_iterator maSubsetIterator;
+
+ SVX_DLLPRIVATE void InitList();
+ SVX_DLLPRIVATE void ApplyCharMap( const FontCharMap* );
+};
+
+#endif
diff --git a/svx/inc/svx/unomid.hxx b/svx/inc/svx/unomid.hxx
new file mode 100644
index 000000000000..283a38d15bbe
--- /dev/null
+++ b/svx/inc/svx/unomid.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_UNOMID_HXX
+#define _SVX_UNOMID_HXX
+
+//AdjustItem
+#define MID_PARA_ADJUST 0
+#define MID_LAST_LINE_ADJUST 1
+#define MID_EXPAND_SINGLE 2
+
+//SvxPageItem
+#define MID_PAGE_NUMTYPE 0
+#define MID_PAGE_ORIENTATION 1
+#define MID_PAGE_LAYOUT 2
+
+//SvxMarginItem
+#define MID_MARGIN_LR_MARGIN 0
+#define MID_MARGIN_UL_MARGIN 1
+#define MID_MARGIN_L_MARGIN 2
+#define MID_MARGIN_R_MARGIN 3
+#define MID_MARGIN_UP_MARGIN 4
+#define MID_MARGIN_LO_MARGIN 5
+
+#define ALL_BORDER 10
+#define ALL_BORDER_PADDING 11
+#define LEFT_BORDER_PADDING 12
+#define RIGHT_BORDER_PADDING 13
+#define TOP_BORDER_PADDING 14
+#define BOTTOM_BORDER_PADDING 15
+#define ALL_BORDER_LINE_WIDTH 16
+#define LEFT_BORDER_LINE_WIDTH 17
+#define RIGHT_BORDER_LINE_WIDTH 18
+#define TOP_BORDER_LINE_WIDTH 19
+#define BOTTOM_BORDER_LINE_WIDTH 20
+
+// XFillBitmapItem (is also a NameOrIndex)
+#define MID_BITMAP 8
+
+// SvxHorJustifyItem
+#define MID_HORJUST_HORJUST 0
+#define MID_HORJUST_ADJUST 1
+
+// SvxZoomItem
+#define MID_VALUE 2
+
+// SvxObjectItem
+#define MID_START_X 1
+#define MID_START_Y 2
+#define MID_END_X 3
+#define MID_END_Y 4
+#define MID_LIMIT 5
+
+// SvxColumnItem
+#define MID_COLUMNARRAY 7
+#define MID_ACTUAL 4
+#define MID_TABLE 5
+#define MID_ORTHO 6
+
+// XFillGradientItem
+// Don't use 0 as it used for the whole struct
+#define MID_FILLGRADIENT 1
+#define MID_GRADIENT_STYLE 2
+#define MID_GRADIENT_STARTCOLOR 3
+#define MID_GRADIENT_ENDCOLOR 4
+#define MID_GRADIENT_ANGLE 5
+#define MID_GRADIENT_BORDER 6
+#define MID_GRADIENT_XOFFSET 7
+#define MID_GRADIENT_YOFFSET 8
+#define MID_GRADIENT_STARTINTENSITY 9
+#define MID_GRADIENT_ENDINTENSITY 10
+#define MID_GRADIENT_STEPCOUNT 11
+
+// XFillHatchItem
+// Don't use 0 as it used for the whole struct
+#define MID_FILLHATCH 1
+#define MID_HATCH_STYLE 2
+#define MID_HATCH_COLOR 3
+#define MID_HATCH_DISTANCE 4
+#define MID_HATCH_ANGLE 5
+
+// XLineDashItem
+// Don't use 0 as it used for the whole struct
+#define MID_LINEDASH 1
+#define MID_LINEDASH_STYLE 2
+#define MID_LINEDASH_DOTS 3
+#define MID_LINEDASH_DOTLEN 4
+#define MID_LINEDASH_DASHES 5
+#define MID_LINEDASH_DASHLEN 6
+#define MID_LINEDASH_DISTANCE 7
+
+#define MID_LEFT 3
+
+#endif
diff --git a/svx/inc/svx/unomod.hxx b/svx/inc/svx/unomod.hxx
new file mode 100644
index 000000000000..9b55428aa76f
--- /dev/null
+++ b/svx/inc/svx/unomod.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_UNOMOD_HXX
+#define SVX_UNOMOD_HXX
+
+#include <com/sun/star/document/EventObject.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/container/XIndexReplace.hpp>
+#include "svx/svxdllapi.h"
+
+class SdrHint;
+class SdrModel;
+class SdrModel;
+
+SVX_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexReplace > SvxCreateNumRule( SdrModel* pModel ) throw();
+
+class SVX_DLLPUBLIC SvxUnoDrawMSFactory : public ::com::sun::star::lang::XMultiServiceFactory
+{
+public:
+ SvxUnoDrawMSFactory() throw() {};
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& aServiceSpecifier ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createTextField( const ::rtl::OUString& aServiceSpecifier ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+ // internal
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >
+ concatServiceNames( ::com::sun::star::uno::Sequence< ::rtl::OUString >& rServices1,
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >& rServices2 ) throw();
+
+ /** fills the given EventObject from the given SdrHint.
+ @returns
+ true if the SdrHint could be translated to an EventObject<br>
+ false if not
+ */
+ static sal_Bool createEvent( const SdrModel* pDoc, const SdrHint* pSdrHint, ::com::sun::star::document::EventObject& aEvent );
+};
+
+#endif
+
diff --git a/svx/inc/svx/unomodel.hxx b/svx/inc/svx/unomodel.hxx
new file mode 100644
index 000000000000..35d53a655a86
--- /dev/null
+++ b/svx/inc/svx/unomodel.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_UNOMODEL_HXX
+#define SVX_UNOMODEL_HXX
+
+#ifndef SVX_LIGHT
+
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/ucb/XAnyCompareFactory.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <sfx2/sfxbasemodel.hxx>
+#include <svx/fmdmod.hxx>
+#include "svx/svxdllapi.h"
+
+class SdrModel;
+
+class SVX_DLLPUBLIC SvxUnoDrawingModel : public SfxBaseModel, // implements SfxListener, OWEAKOBJECT & other
+ public SvxFmMSFactory,
+ public ::com::sun::star::drawing::XDrawPagesSupplier,
+ public ::com::sun::star::lang::XServiceInfo,
+ public ::com::sun::star::ucb::XAnyCompareFactory
+{
+ friend class SvxUnoDrawPagesAccess;
+
+private:
+ SdrModel* mpDoc;
+
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::drawing::XDrawPages > mxDrawPagesAccess;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDashTable;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxGradientTable;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxHatchTable;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxBitmapTable;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxTransGradientTable;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxMarkerTable;
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > maTypeSequence;
+
+public:
+ SvxUnoDrawingModel( SdrModel* pDoc ) throw();
+ virtual ~SvxUnoDrawingModel() throw();
+
+ SdrModel* GetDoc() const { return mpDoc; }
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XModel
+ virtual void SAL_CALL lockControllers( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL unlockControllers( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasControllersLocked( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XDrawPagesSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > SAL_CALL getDrawPages( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XMultiServiceFactory ( SvxFmMSFactory )
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& aServiceSpecifier ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ // XAnyCompareFactory
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XAnyCompare > SAL_CALL createAnyCompareByName( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOut );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOut, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOut, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent, const char* pExportService );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent, const char* pImportService );
+
+#endif
+
+#endif
+
diff --git a/svx/inc/svx/unopage.hxx b/svx/inc/svx/unopage.hxx
new file mode 100644
index 000000000000..5c227112342b
--- /dev/null
+++ b/svx/inc/svx/unopage.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_UNOWPAGE_HXX
+#define _SVX_UNOWPAGE_HXX
+
+#include <com/sun/star/lang/XComponent.hpp>
+#include <cppuhelper/interfacecontainer.hxx>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XShapeGrouper.hpp>
+#include <com/sun/star/drawing/XShapeCombiner.hpp>
+#include <com/sun/star/drawing/XShapeBinder.hpp>
+#ifndef _COM_SUN_STAR_UNO_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <svl/lstner.hxx>
+#include <editeng/mutxhelp.hxx>
+#include "svx/svxdllapi.h"
+
+#include <cppuhelper/implbase5.hxx>
+#include <comphelper/servicehelper.hxx>
+
+#include <svx/unoprov.hxx>
+
+class SdrPage;
+class SdrModel;
+class SdrView;
+class SdrPageView;
+class SdrObject;
+class List;
+class SvxShapeDescriptor;
+class SvxShape;
+class SvxShapeGroup;
+class SvxShapeConnector;
+class SvxShapeList;
+class SvxDrawPageList;
+
+/***********************************************************************
+* Macros fuer Umrechnung Twips<->100tel mm *
+***********************************************************************/
+#define TWIPS_TO_MM(val) ((val * 127 + 36) / 72)
+#define MM_TO_TWIPS(val) ((val * 72 + 63) / 127)
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SVX_DLLPUBLIC SvxDrawPage : public ::cppu::WeakAggImplHelper5< ::com::sun::star::drawing::XDrawPage,
+ ::com::sun::star::drawing::XShapeGrouper,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::lang::XComponent>,
+ public SfxListener,
+ protected SvxMutexHelper
+{
+ protected:
+ cppu::OBroadcastHelper mrBHelper;
+
+ SdrPage* mpPage;
+ SdrModel* mpModel;
+ SdrView* mpView;
+
+ void _SelectObjectsInView( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& aShapes, SdrPageView* pPageView ) throw ();
+ void _SelectObjectInView( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, SdrPageView* pPageView ) throw();
+
+ virtual void disposing() throw();
+
+ public:
+ SvxDrawPage( SdrPage* pPage ) throw();
+ SvxDrawPage() throw();
+ virtual ~SvxDrawPage() throw();
+
+ // Internals
+ SdrPage* GetSdrPage() const { return mpPage; }
+ void ChangeModel( SdrModel* pNewModel );
+
+ // Erzeugen eines SdrObjects und Einfugen in die SdrPage
+ SdrObject *CreateSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw();
+
+ // Typ und Inventor bestimmen
+ void GetTypeAndInventor( sal_uInt16& rType, sal_uInt32& rInventor, const ::rtl::OUString& aName ) const throw();
+
+ // Erzeugen eines SdrObjects anhand einer Description. Kann von
+ // abgeleiteten Klassen dazu benutzt werden, eigene Shapes zu
+ // unterstuetzen (z.B. Controls)
+ virtual SdrObject *_CreateSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw();
+
+ static SvxShape* CreateShapeByTypeAndInventor( sal_uInt16 nType, sal_uInt32 nInventor, SdrObject *pObj = NULL, SvxDrawPage *pPage = NULL ) throw();
+
+ // Die folgende Methode wird gerufen, wenn ein SvxShape-Objekt angelegt
+ // werden soll. abgeleitete Klassen koennen hier eine Ableitung oder
+ // ein ein SvxShape aggregierenden Objekt anlegen.
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > _CreateShape( SdrObject *pObj ) const throw();
+
+ static SvxDrawPage* GetPageForSdrPage( SdrPage* pPage ) throw();
+
+ UNO3_GETIMPLEMENTATION_DECL( SvxDrawPage )
+
+ // SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XInterface
+ virtual void SAL_CALL release() throw();
+
+ // XShapes
+ virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ;
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XShapeGrouper
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapeGroup > SAL_CALL group( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xShapes ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL ungroup( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapeGroup >& aGroup ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+#endif
+
diff --git a/svx/inc/svx/unoprov.hxx b/svx/inc/svx/unoprov.hxx
new file mode 100644
index 000000000000..34cb60371582
--- /dev/null
+++ b/svx/inc/svx/unoprov.hxx
@@ -0,0 +1,149 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_UNOPROV_HXX
+#define SVX_UNOPROV_HXX
+
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <svl/itemprop.hxx>
+#include <tools/list.hxx>
+#include "svx/svxdllapi.h"
+
+class SvxItemPropertySet;
+class SfxItemPool;
+
+/***********************************************************************
+* class UHashMap *
+***********************************************************************/
+
+struct UHashMapEntry
+{
+ ::rtl::OUString aIdentifier;
+ UINT32 nId;
+
+ UHashMapEntry(const sal_Char * value, sal_Int32 length, UINT32 _nId) : aIdentifier(value,length,RTL_TEXTENCODING_ASCII_US), nId(_nId) { }
+};
+
+DECLARE_LIST( UHashMapEntryList, UHashMapEntry* )
+
+#define HASHARRAYSIZE 0x10
+#define UHASHMAP_NOTFOUND sal::static_int_cast< UINT32 >(~0)
+
+class UHashMap
+{
+private:
+ UHashMapEntryList m_aHashList[HASHARRAYSIZE];
+
+public:
+ UHashMap( UHashMapEntry* pMap );
+ ~UHashMap() {};
+
+ UINT32 getId( const ::rtl::OUString& rCompareString );
+};
+
+/***********************************************************************
+* Soriterer *
+***********************************************************************/
+
+#define SVXMAP_SHAPE 0
+#define SVXMAP_CONNECTOR 1
+#define SVXMAP_DIMENSIONING 2
+#define SVXMAP_CIRCLE 3
+#define SVXMAP_POLYPOLYGON 4
+#define SVXMAP_POLYPOLYGONBEZIER 5
+#define SVXMAP_GRAPHICOBJECT 6
+#define SVXMAP_3DSCENEOBJECT 7
+#define SVXMAP_3DCUBEOBJEKT 8
+#define SVXMAP_3DSPHEREOBJECT 9
+#define SVXMAP_3DLATHEOBJECT 10
+#define SVXMAP_3DEXTRUDEOBJECT 11
+#define SVXMAP_3DPOLYGONOBJECT 12
+#define SVXMAP_ALL 13
+#define SVXMAP_GROUP 14
+#define SVXMAP_CAPTION 15
+#define SVXMAP_OLE2 16
+#define SVXMAP_PLUGIN 17
+#define SVXMAP_FRAME 18
+#define SVXMAP_APPLET 19
+#define SVXMAP_CONTROL 20
+#define SVXMAP_TEXT 21
+#define SVXMAP_CUSTOMSHAPE 22
+#define SVXMAP_MEDIA 23
+#define SVXMAP_TABLE 24
+#define SVXMAP_PAGE 25
+#define SVXMAP_END 26 // last+1 !
+/***********************************************************************
+* SvxUnoPropertyMapProvider *
+***********************************************************************/
+class SVX_DLLPUBLIC SvxUnoPropertyMapProvider
+{
+ SfxItemPropertyMapEntry* aMapArr[SVXMAP_END];
+ SvxItemPropertySet* aSetArr[SVXMAP_END];
+// void Sort(USHORT nId);
+public:
+ SvxUnoPropertyMapProvider();
+ ~SvxUnoPropertyMapProvider();
+ const SfxItemPropertyMapEntry* GetMap(UINT16 nPropertyId);
+ const SvxItemPropertySet* GetPropertySet(UINT16 nPropertyId, SfxItemPool& rPool);
+};
+
+/***********************************************************************
+* Globals *
+***********************************************************************/
+
+const sal_Int16 OBJ_OLE2_APPLET = 100;
+const sal_Int16 OBJ_OLE2_PLUGIN = 101;
+
+extern SvxUnoPropertyMapProvider aSvxMapProvider;
+extern UHashMapEntry pSdrShapeIdentifierMap[];
+extern UHashMap aSdrShapeIdentifierMap;
+
+#define E3D_INVENTOR_FLAG (0x80000000)
+
+#include <editeng/unoipset.hxx>
+
+/***********************************************************************
+* class SvxPropertySetInfoPool *
+***********************************************************************/
+
+const sal_Int32 SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS = 0;
+const sal_Int32 SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER = 1;
+const sal_Int32 SVXUNO_SERVICEID_LASTID = 1;
+
+namespace comphelper { class PropertySetInfo; }
+
+class SvxPropertySetInfoPool
+{
+public:
+ SVX_DLLPUBLIC static comphelper::PropertySetInfo* getOrCreate( sal_Int32 nServiceId ) throw();
+
+private:
+ static comphelper::PropertySetInfo* mpInfos[SVXUNO_SERVICEID_LASTID+1];
+};
+
+#endif
+
diff --git a/svx/inc/svx/unoshape.hxx b/svx/inc/svx/unoshape.hxx
new file mode 100644
index 000000000000..6b749c05be61
--- /dev/null
+++ b/svx/inc/svx/unoshape.hxx
@@ -0,0 +1,892 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_UNOSHAPE_HXX
+#define _SVX_UNOSHAPE_HXX
+
+#include <com/sun/star/document/XActionLockable.hpp>
+#include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp>
+#include <com/sun/star/drawing/XGluePointsSupplier.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertyState.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XAggregation.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/drawing/PolygonKind.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertyStates.hpp>
+#include <tools/gen.hxx>
+#include <tools/weakbase.hxx>
+#include <svl/lstner.hxx>
+#include <editeng/unoipset.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <osl/mutex.hxx>
+#include "svx/svxdllapi.h"
+#include <rtl/ref.hxx>
+#include <com/sun/star/uno/Any.hxx>
+
+#include <svx/svdouno.hxx>
+
+#include <comphelper/servicehelper.hxx>
+
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/implbase12.hxx>
+
+#include <svx/unoprov.hxx>
+
+class SfxItemSet;
+class SdrModel;
+class SvxDrawPage;
+class SvGlobalName;
+// --> OD 2009-01-16 #i59051#
+namespace basegfx
+ {
+ class B2DPolyPolygon;
+ } // end of namespace basegfx
+// <--
+
+class SvxShapeMutex
+{
+protected:
+ ::osl::Mutex maMutex;
+};
+
+struct SvxShapeImpl;
+class SvxShapeMaster;
+class SvxItemPropertySet;
+class SvxItemPropertySimpleEntry;
+class SfxItemSet;
+
+void SVX_DLLPUBLIC SvxItemPropertySet_setPropertyValue( const SvxItemPropertySet& rPropSet, const SfxItemPropertySimpleEntry* pMap,
+ const com::sun::star::uno::Any& rVal, SfxItemSet& rSet );
+
+com::sun::star::uno::Any SVX_DLLPUBLIC SvxItemPropertySet_getPropertyValue( const SvxItemPropertySet& rPropSet, const SfxItemPropertySimpleEntry* pMap, const SfxItemSet& rSet );
+
+
+// WARNING: if you update the supported interfaces,
+// also update SvxShape::_getTypes()
+typedef ::cppu::WeakAggImplHelper12<
+ ::com::sun::star::drawing::XShape,
+ ::com::sun::star::lang::XComponent,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::beans::XMultiPropertySet,
+ ::com::sun::star::beans::XPropertyState,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::drawing::XGluePointsSupplier,
+ ::com::sun::star::container::XChild,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::document::XActionLockable,
+ ::com::sun::star::beans::XMultiPropertyStates> SvxShape_UnoImplHelper;
+
+class SVX_DLLPUBLIC SvxShape : public SvxShape_UnoImplHelper,
+ public SfxListener,
+ public SvxShapeMutex
+{
+private:
+ ::com::sun::star::awt::Size maSize;
+ ::com::sun::star::awt::Point maPosition;
+ ::rtl::OUString maShapeType;
+ ::rtl::OUString maShapeName;
+
+ /** these members are used to optimize XMultiProperty calls */
+ SvxShapeImpl* mpImpl;
+ bool mbIsMultiPropertyCall;
+
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XIndexContainer > mxGluePoints;
+
+protected:
+ friend class SvxDrawPage;
+ friend class SvxShapeConnector;
+ friend class SdXShape;
+
+ const SvxItemPropertySet* mpPropSet;
+ const SfxItemPropertyMapEntry* maPropMapEntries;
+
+ ::tools::WeakReference< SdrObject > mpObj;
+ SdrModel* mpModel;
+ // Umrechnungen fuer den Writer, der in TWIPS arbeitet
+ void ForceMetricToItemPoolMetric(Pair& rPoint) const throw();
+ void ForceMetricTo100th_mm(Pair& rPoint) const throw();
+ // --> OD 2009-01-16 #i59051#
+ void ForceMetricToItemPoolMetric(basegfx::B2DPolyPolygon& rPolyPolygon) const throw();
+ void ForceMetricTo100th_mm(basegfx::B2DPolyPolygon& rPolyPolygon) const throw();
+ // <--
+
+ ::com::sun::star::uno::Any GetAnyForItem( SfxItemSet& aSet, const SfxItemPropertySimpleEntry* pMap ) const;
+
+ sal_Bool tryQueryAggregation( const com::sun::star::uno::Type & rType, com::sun::star::uno::Any& rAny );
+
+ sal_Bool SAL_CALL SetFillAttribute( sal_Int32 nWID, const ::rtl::OUString& rName );
+
+ /** called from the XActionLockable interface methods on initial locking */
+ virtual void lock();
+
+ /** called from the XActionLockable interface methods on final unlock */
+ virtual void unlock();
+
+ /** used from the XActionLockable interface */
+ sal_uInt16 mnLockCount;
+
+ const SfxItemPropertyMapEntry* getPropertyMapEntries() const { return maPropMapEntries; }
+
+ void updateShapeKind();
+ void endSetPropertyValues();
+
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyStateImpl( const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::beans::PropertyState& rState ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual bool setPropertyToDefaultImpl( const SfxItemPropertySimpleEntry* pProperty ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ SvxShape( SdrObject* pObj ) throw ();
+ SvxShape( SdrObject* pObject, const SfxItemPropertyMapEntry* pEntries, const SvxItemPropertySet* pPropertySet ) throw ();
+ SvxShape() throw ();
+ virtual ~SvxShape() throw ();
+
+ // Internals
+ void ObtainSettingsFromPropertySet(const SvxItemPropertySet& rPropSet);
+ virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
+ /** takes the ownership of the SdrObject.
+
+ When the shape is disposed, and it has the ownership of its associated SdrObject, then
+ it will delete this object.
+ */
+ void TakeSdrObjectOwnership();
+ bool HasSdrObjectOwnership() const;
+
+ void ChangeModel( SdrModel* pNewModel );
+
+ void InvalidateSdrObject() { mpObj.reset( NULL ); };
+ const SvxItemPropertySet& GetPropertySet() { return *mpPropSet; }
+ SdrObject* GetSdrObject() const {return mpObj.get();}
+ void SetShapeType( const ::rtl::OUString& ShapeType ) { maShapeType = ShapeType; }
+ ::com::sun::star::uno::Any GetBitmap( BOOL bMetaFile = FALSE ) const throw ();
+ static SvxShape* GetShapeForSdrObj( SdrObject* pObj ) throw ();
+
+ ::svx::PropertyChangeNotifier& getShapePropertyChangeNotifier();
+
+ void setShapeKind( sal_uInt32 nKind );
+ sal_uInt32 getShapeKind() const;
+
+ // styles need this
+ static sal_Bool SAL_CALL SetFillAttribute( sal_Int32 nWID, const ::rtl::OUString& rName, SfxItemSet& rSet, SdrModel* pModel );
+ static sal_Bool SAL_CALL SetFillAttribute( sal_Int32 nWID, const ::rtl::OUString& rName, SfxItemSet& rSet );
+
+ /** same as SetFillAttribute but for property names instead of which ids,
+ and the property found is returned instead of set at the object
+ directly.
+ */
+// os: unused function
+// static ::com::sun::star::uno::Any SAL_CALL GetFillAttributeByName(
+// const ::rtl::OUString& rPropertyName, const ::rtl::OUString& rName, SdrModel* pModel );
+
+ UNO3_GETIMPLEMENTATION_DECL( SvxShape )
+
+ // access methods for master objects
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL _getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
+ void SAL_CALL _setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Any SAL_CALL _getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ ::com::sun::star::beans::PropertyState SAL_CALL _getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ void SAL_CALL _setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Any SAL_CALL _getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL _getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ void setMaster( SvxShapeMaster* pMaster );
+ const SvxShapeMaster* getMaster() const;
+ SvxShapeMaster* getMaster();
+
+ // SfxListener
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) throw ();
+
+
+ /** @obsolete
+ not used anymore
+ */
+ virtual void onUserCall(SdrUserCallType eUserCall, const Rectangle& rBoundRect);
+
+ // XAggregation
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XShapeDescriptor
+ virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
+
+ // XShape
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XMultiPropertySet
+ virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XPropertyState
+ virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XMultiPropertyStates
+ virtual void SAL_CALL setAllPropertiesToDefault()
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertiesToDefault(
+ const ::com::sun::star::uno::Sequence<
+ ::rtl::OUString >& aPropertyNames )
+ throw (::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
+ SAL_CALL getPropertyDefaults(
+ const ::com::sun::star::uno::Sequence<
+ ::rtl::OUString >& aPropertyNames )
+ throw (::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XGluePointsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > SAL_CALL getGluePoints( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XChild
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XActionLockable
+ virtual sal_Bool SAL_CALL isActionLocked( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addActionLock( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeActionLock( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setActionLocks( sal_Int16 nLock ) throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL resetActionLocks( ) throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ /** initializes SdrObj-dependent members. Only to be called when GetSdrObject() != NULL
+ */
+ SVX_DLLPRIVATE void impl_initFromSdrObject();
+ /// CTOR-Impl
+ SVX_DLLPRIVATE void impl_construct();
+};
+
+#include <editeng/unotext.hxx>
+
+class SVX_DLLPUBLIC SvxShapeText : public SvxShape, public SvxUnoTextBase
+{
+protected:
+ /** called from the XActionLockable interface methods on initial locking */
+ virtual void lock();
+
+ /** called from the XActionLockable interface methods on final unlock */
+ virtual void unlock();
+
+protected:
+ using SvxUnoTextRangeBase::setPropertyValue;
+ using SvxUnoTextRangeBase::getPropertyValue;
+
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyStateImpl( const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::beans::PropertyState& rState ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual bool setPropertyToDefaultImpl( const SfxItemPropertySimpleEntry* pProperty ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ SvxShapeText() throw ();
+ SvxShapeText( SdrObject* pObj ) throw ();
+ SvxShapeText( SdrObject* pObject, const SfxItemPropertyMapEntry* pPropertyMap, const SvxItemPropertySet* pPropertySet ) throw ();
+ virtual ~SvxShapeText() throw ();
+
+ virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
+
+ // ::com::sun::star::text::XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setString( const ::rtl::OUString& aString ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+class SvxShapeRect : public SvxShapeText
+{
+public:
+ SvxShapeRect( SdrObject* pObj ) throw ();
+ virtual ~SvxShapeRect() throw ();
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+};
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/XShapeGroup.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SvxShapeGroup : public SvxShape,
+ public ::com::sun::star::drawing::XShapeGroup,
+ public ::com::sun::star::drawing::XShapes
+{
+private:
+ rtl::Reference< SvxDrawPage> mxPage;
+
+public:
+ SvxShapeGroup( SdrObject* pObj,SvxDrawPage* pDrawPage ) throw ();
+ virtual ~SvxShapeGroup() throw ();
+
+ virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XShapes
+ virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ;
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XShapeDescriptor
+ virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
+
+ // XShape
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ // XShapeGroup
+ virtual void SAL_CALL enterGroup( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL leaveGroup( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+};
+#include <com/sun/star/drawing/XConnectorShape.hpp>
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SvxShapeConnector : public ::com::sun::star::drawing::XConnectorShape,
+ public SvxShapeText
+{
+public:
+ SvxShapeConnector( SdrObject* pObj ) throw();
+ virtual ~SvxShapeConnector() throw();
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XShapeDescriptor
+ virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
+
+ // XShape
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ // XConnectorShape
+ virtual void SAL_CALL connectStart( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape, ::com::sun::star::drawing::ConnectionType nPos ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL connectEnd( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape, ::com::sun::star::drawing::ConnectionType nPos ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL disconnectBegin( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL disconnectEnd( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+};
+#include <com/sun/star/drawing/XControlShape.hpp>
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SVX_DLLPUBLIC SvxShapeControl : public ::com::sun::star::drawing::XControlShape, public SvxShapeText
+{
+protected:
+ using SvxUnoTextRangeBase::setPropertyValue;
+ using SvxUnoTextRangeBase::getPropertyValue;
+
+public:
+ SvxShapeControl( SdrObject* pObj ) throw();
+ virtual ~SvxShapeControl() throw();
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XPropertySet
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XPropertyState
+ virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XShapeDescriptor
+ virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
+
+ // XShape
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ // XControlShape
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > SAL_CALL getControl() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& xControl ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SvxShapeDimensioning : public SvxShapeText
+{
+public:
+ SvxShapeDimensioning( SdrObject* pObj ) throw();
+ virtual ~SvxShapeDimensioning() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SvxShapeCircle : public SvxShapeText
+{
+public:
+ SvxShapeCircle( SdrObject* pObj ) throw ();
+ virtual ~SvxShapeCircle() throw ();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+
+class SVX_DLLPUBLIC SvxOle2Shape : public SvxShape
+{
+protected:
+// overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ void resetModifiedState();
+
+ const SvGlobalName GetClassName_Impl(rtl::OUString& rHexCLSID);
+public:
+ SvxOle2Shape( SdrObject* pObj ) throw();
+ SvxOle2Shape( SdrObject* pObject, const SfxItemPropertyMapEntry* pPropertyMap, const SvxItemPropertySet* pPropertySet ) throw ();
+ virtual ~SvxOle2Shape() throw();
+
+ sal_Bool createObject( const SvGlobalName &aClassName );
+
+ sal_Bool createLink( const ::rtl::OUString& aLinkURL );
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SvxShapePolyPolygon : public SvxShapeText
+{
+private:
+ ::com::sun::star::drawing::PolygonKind mePolygonKind;
+
+protected:
+ using SvxUnoTextRangeBase::setPropertyValue;
+ using SvxUnoTextRangeBase::getPropertyValue;
+
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ SvxShapePolyPolygon( SdrObject* pObj , ::com::sun::star::drawing::PolygonKind eNew = com::sun::star::drawing::PolygonKind_LINE ) throw(com::sun::star::lang::IllegalArgumentException, com::sun::star::beans::PropertyVetoException);
+ virtual ~SvxShapePolyPolygon() throw();
+
+ // Local support functions
+ ::com::sun::star::drawing::PolygonKind GetPolygonKind() const throw();
+ void SetPolygon(const basegfx::B2DPolyPolygon& rNew) throw();
+ basegfx::B2DPolyPolygon GetPolygon() const throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+
+class SvxShapePolyPolygonBezier : public SvxShapeText
+{
+private:
+ ::com::sun::star::drawing::PolygonKind mePolygonKind;
+
+protected:
+ using SvxUnoTextRangeBase::setPropertyValue;
+ using SvxUnoTextRangeBase::getPropertyValue;
+
+public:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ SvxShapePolyPolygonBezier( SdrObject* pObj , ::com::sun::star::drawing::PolygonKind eNew = com::sun::star::drawing::PolygonKind_PATHLINE) throw();
+ virtual ~SvxShapePolyPolygonBezier() throw();
+
+ // Local support functions
+ ::com::sun::star::drawing::PolygonKind GetPolygonKind() const throw();
+ void SetPolygon(const basegfx::B2DPolyPolygon & rNew) throw();
+ basegfx::B2DPolyPolygon GetPolygon() const throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class SvxGraphicObject : public SvxShapeText
+{
+protected:
+ using SvxUnoTextRangeBase::setPropertyValue;
+ using SvxUnoTextRangeBase::getPropertyValue;
+
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ SvxGraphicObject( SdrObject* pObj ) throw();
+ virtual ~SvxGraphicObject() throw();
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class Svx3DSceneObject : public ::com::sun::star::drawing::XShapes, public SvxShape
+{
+private:
+ rtl::Reference< SvxDrawPage > mxPage;
+
+protected:
+ using SvxShape::setPropertyValue;
+ using SvxShape::getPropertyValue;
+
+public:
+ Svx3DSceneObject( SdrObject* pObj, SvxDrawPage* pDrawPage ) throw();
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ virtual ~Svx3DSceneObject() throw();
+
+ virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XShapes
+ virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException) ;
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class Svx3DCubeObject : public SvxShape
+{
+protected:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ Svx3DCubeObject( SdrObject* pObj ) throw();
+ virtual ~Svx3DCubeObject() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class Svx3DSphereObject : public SvxShape
+{
+public:
+ Svx3DSphereObject( SdrObject* pObj ) throw();
+protected:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ virtual ~Svx3DSphereObject() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class Svx3DLatheObject : public SvxShape
+{
+protected:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ Svx3DLatheObject( SdrObject* pObj ) throw();
+ virtual ~Svx3DLatheObject() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class Svx3DExtrudeObject : public SvxShape
+{
+public:
+ Svx3DExtrudeObject( SdrObject* pObj ) throw();
+protected:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ virtual ~Svx3DExtrudeObject() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+class Svx3DPolygonObject : public SvxShape
+{
+protected:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+public:
+ Svx3DPolygonObject( SdrObject* pObj ) throw();
+ virtual ~Svx3DPolygonObject() throw();
+
+ // XServiceInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+typedef ::cppu::WeakAggImplHelper1<
+ ::com::sun::star::drawing::XEnhancedCustomShapeDefaulter
+ > SvxShape_UnoImplHelper1;
+
+class SVX_DLLPUBLIC SvxCustomShape : public SvxShapeText, public SvxShape_UnoImplHelper1
+{
+private:
+ rtl::Reference< SvxDrawPage > mxPage;
+
+protected:
+ using SvxUnoTextRangeBase::setPropertyValue;
+ using SvxUnoTextRangeBase::getPropertyValue;
+
+public:
+ SvxCustomShape( SdrObject* pObj ) throw ();
+ // overide these for special property handling in subcasses. Return true if property is handled
+ //virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertyMapEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+
+ virtual ~SvxCustomShape() throw ();
+
+ virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw();
+ virtual void SAL_CALL release() throw();
+
+ // XShapeDescriptor
+ virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
+
+ // XShape
+ virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, com::sun::star::beans::PropertyVetoException, com::sun::star::lang::IllegalArgumentException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XEnhancedCustomShapeDefaulter
+ virtual void SAL_CALL createCustomShapeDefaults( const rtl::OUString& rShapeType ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+/***********************************************************************
+* *
+***********************************************************************/
+
+class SvxMediaShape : public SvxShape
+{
+public:
+ SvxMediaShape( SdrObject* pObj ) throw();
+ virtual ~SvxMediaShape() throw();
+
+protected:
+ // overide these for special property handling in subcasses. Return true if property is handled
+ virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+};
+
+#endif
diff --git a/svx/inc/svx/unoshprp.hxx b/svx/inc/svx/unoshprp.hxx
new file mode 100644
index 000000000000..232708d9a14a
--- /dev/null
+++ b/svx/inc/svx/unoshprp.hxx
@@ -0,0 +1,534 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_UNOSHPRP_HXX
+#define _SVX_UNOSHPRP_HXX
+
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/drawing/PointSequence.hpp>
+#include <com/sun/star/drawing/PointSequenceSequence.hpp>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/drawing/RectanglePoint.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/drawing/Hatch.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/LineDash.hpp>
+#include <com/sun/star/drawing/LineJoint.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/drawing/TextAnimationDirection.hpp>
+#include <com/sun/star/drawing/TextAnimationKind.hpp>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+#include <com/sun/star/drawing/ConnectorType.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/drawing/MeasureKind.hpp>
+#include <com/sun/star/drawing/MeasureTextHorzPos.hpp>
+#include <com/sun/star/drawing/MeasureTextVertPos.hpp>
+#include <com/sun/star/drawing/HomogenMatrix3.hpp>
+#include <com/sun/star/drawing/CircleKind.hpp>
+#include <com/sun/star/drawing/PolygonKind.hpp>
+#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <com/sun/star/drawing/ColorMode.hpp>
+#include <com/sun/star/drawing/HomogenMatrix.hpp>
+#include <com/sun/star/drawing/Direction3D.hpp>
+#include <com/sun/star/drawing/ProjectionMode.hpp>
+#include <com/sun/star/drawing/ShadeMode.hpp>
+#include <com/sun/star/drawing/Position3D.hpp>
+#include <com/sun/star/drawing/NormalsKind.hpp>
+#include <com/sun/star/drawing/TextureKind.hpp>
+#include <com/sun/star/drawing/TextureMode.hpp>
+#include <com/sun/star/drawing/TextureProjectionMode.hpp>
+#include <com/sun/star/drawing/PolyPolygonShape3D.hpp>
+#include <com/sun/star/text/GraphicCrop.hpp>
+#include <com/sun/star/drawing/BitmapMode.hpp>
+#include <com/sun/star/drawing/CameraGeometry.hpp>
+#include <com/sun/star/text/WritingMode.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+
+#define _SVX_USE_UNOGLOBALS_
+#include <svx/unoprov.hxx>
+#include <editeng/unoprnms.hxx>
+#include <svx/unomid.hxx>
+#include <editeng/unotext.hxx>
+#include <svl/itemprop.hxx>
+
+#include <svx/svxids.hrc>
+
+#ifndef SEQTYPE
+ #if defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)
+ #define SEQTYPE(x) (new ::com::sun::star::uno::Type( x ))
+ #else
+ #define SEQTYPE(x) &(x)
+ #endif
+#endif
+
+#define OWN_ATTR_VALUE_START_TEXT (OWN_ATTR_VALUE_START+0) // the next 10 entries are reserved for text
+#define OWN_ATTR_VALUE_POLYGONKIND (OWN_ATTR_VALUE_START+10)
+#define OWN_ATTR_VALUE_POLYPOLYGON (OWN_ATTR_VALUE_START+11)
+#define OWN_ATTR_VALUE_POLYPOLYGONBEZIER (OWN_ATTR_VALUE_START+12)
+#define OWN_ATTR_VALUE_FILLBITMAP (OWN_ATTR_VALUE_START+13)
+#define OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX (OWN_ATTR_VALUE_START+14)
+#define OWN_ATTR_3D_VALUE_POSITION (OWN_ATTR_VALUE_START+15)
+#define OWN_ATTR_3D_VALUE_SIZE (OWN_ATTR_VALUE_START+16)
+#define OWN_ATTR_3D_VALUE_POS_IS_CENTER (OWN_ATTR_VALUE_START+17)
+#define OWN_ATTR_3D_VALUE_POLYPOLYGON3D (OWN_ATTR_VALUE_START+18)
+#define OWN_ATTR_3D_VALUE_LINEONLY (OWN_ATTR_VALUE_START+19)
+#define OWN_ATTR_BITMAP (OWN_ATTR_VALUE_START+20)
+#define OWN_ATTR_EDGE_START_OBJ (OWN_ATTR_VALUE_START+21)
+#define OWN_ATTR_EDGE_START_POS (OWN_ATTR_VALUE_START+22)
+#define OWN_ATTR_EDGE_END_OBJ (OWN_ATTR_VALUE_START+23)
+#define OWN_ATTR_EDGE_END_POS (OWN_ATTR_VALUE_START+24)
+#define OWN_ATTR_FRAMERECT (OWN_ATTR_VALUE_START+25)
+#define OWN_ATTR_VALUE_POLYGON (OWN_ATTR_VALUE_START+26)
+#define OWN_ATTR_METAFILE (OWN_ATTR_VALUE_START+27)
+#define OWN_ATTR_ISFONTWORK (OWN_ATTR_VALUE_START+28)
+#define OWN_ATTR_BOUNDRECT (OWN_ATTR_VALUE_START+29)
+#define OWN_ATTR_LDNAME (OWN_ATTR_VALUE_START+30)
+#define OWN_ATTR_LDBITMAP (OWN_ATTR_VALUE_START+31)
+#define OWN_ATTR_OLESIZE (OWN_ATTR_VALUE_START+32)
+#define OWN_ATTR_GRAFURL (OWN_ATTR_VALUE_START+33)
+#define OWN_ATTR_OLEMODEL (OWN_ATTR_VALUE_START+34)
+#define OWN_ATTR_MIRRORED (OWN_ATTR_VALUE_START+35)
+#define OWN_ATTR_CLSID (OWN_ATTR_VALUE_START+36)
+#define OWN_ATTR_GLUEID_TAIL (OWN_ATTR_VALUE_START+37)
+#define OWN_ATTR_GLUEID_HEAD (OWN_ATTR_VALUE_START+38)
+#define OWN_ATTR_ZORDER (OWN_ATTR_VALUE_START+39)
+#define OWN_ATTR_MEASURE_START_POS (OWN_ATTR_VALUE_START+40)
+#define OWN_ATTR_MEASURE_END_POS (OWN_ATTR_VALUE_START+41)
+#define OWN_ATTR_3D_VALUE_CAMERA_GEOMETRY (OWN_ATTR_VALUE_START+42)
+#define OWN_ATTR_WRITINGMODE (OWN_ATTR_VALUE_START+43)
+#define OWN_ATTR_GRAFSTREAMURL (OWN_ATTR_VALUE_START+44)
+#define OWN_ATTR_FILLBMP_MODE (OWN_ATTR_VALUE_START+45)
+#define OWN_ATTR_TRANSFORMATION (OWN_ATTR_VALUE_START+46)
+#define OWN_ATTR_BASE_GEOMETRY (OWN_ATTR_VALUE_START+47)
+
+#define OWN_ATTR_APPLET_DOCBASE (OWN_ATTR_VALUE_START+48)
+#define OWN_ATTR_APPLET_CODEBASE (OWN_ATTR_VALUE_START+49)
+#define OWN_ATTR_APPLET_NAME (OWN_ATTR_VALUE_START+50)
+#define OWN_ATTR_APPLET_CODE (OWN_ATTR_VALUE_START+51)
+#define OWN_ATTR_APPLET_COMMANDS (OWN_ATTR_VALUE_START+52)
+#define OWN_ATTR_APPLET_ISSCRIPT (OWN_ATTR_VALUE_START+53)
+#define OWN_ATTR_PLUGIN_MIMETYPE (OWN_ATTR_VALUE_START+54)
+#define OWN_ATTR_PLUGIN_URL (OWN_ATTR_VALUE_START+55)
+#define OWN_ATTR_PLUGIN_COMMANDS (OWN_ATTR_VALUE_START+56)
+#define OWN_ATTR_FRAME_URL (OWN_ATTR_VALUE_START+57)
+#define OWN_ATTR_FRAME_NAME (OWN_ATTR_VALUE_START+58)
+#define OWN_ATTR_FRAME_ISAUTOSCROLL (OWN_ATTR_VALUE_START+59)
+#define OWN_ATTR_FRAME_ISBORDER (OWN_ATTR_VALUE_START+60)
+#define OWN_ATTR_FRAME_MARGIN_WIDTH (OWN_ATTR_VALUE_START+61)
+#define OWN_ATTR_FRAME_MARGIN_HEIGHT (OWN_ATTR_VALUE_START+62)
+
+// reuse own attr from ole shapes for tables
+#define OWN_ATTR_TABLETEMPLATE (OWN_ATTR_VALUE_START+48)
+#define OWN_ATTR_TABLETEMPLATE_FIRSTROW (OWN_ATTR_VALUE_START+49)
+#define OWN_ATTR_TABLETEMPLATE_LASTROW (OWN_ATTR_VALUE_START+50)
+#define OWN_ATTR_TABLETEMPLATE_FIRSTCOLUMN (OWN_ATTR_VALUE_START+51)
+#define OWN_ATTR_TABLETEMPLATE_LASTCOLUMN (OWN_ATTR_VALUE_START+52)
+#define OWN_ATTR_TABLETEMPLATE_BANDINGROWS (OWN_ATTR_VALUE_START+53)
+#define OWN_ATTR_TABLETEMPLATE_BANDINGCOULUMNS (OWN_ATTR_VALUE_START+54)
+#define OWN_ATTR_TABLEBORDER (OWN_ATTR_VALUE_START+55)
+
+#define OWN_ATTR_OLE_VISAREA (OWN_ATTR_VALUE_START+63)
+#define OWN_ATTR_CAPTION_POINT (OWN_ATTR_VALUE_START+64)
+#define OWN_ATTR_PAGE_NUMBER (OWN_ATTR_VALUE_START+65)
+#define OWN_ATTR_THUMBNAIL (OWN_ATTR_VALUE_START+66)
+#define OWN_ATTR_PERSISTNAME (OWN_ATTR_VALUE_START+67)
+#define OWN_ATTR_OLE_EMBEDDED_OBJECT_NONEWCLIENT (OWN_ATTR_VALUE_START+68)
+#define OWN_ATTR_MEDIA_URL (OWN_ATTR_VALUE_START+69)
+#define OWN_ATTR_MEDIA_PREFERREDSIZE (OWN_ATTR_VALUE_START+70)
+#define OWN_ATTR_MEDIA_LOOP (OWN_ATTR_VALUE_START+71)
+#define OWN_ATTR_MEDIA_MUTE (OWN_ATTR_VALUE_START+72)
+#define OWN_ATTR_MEDIA_VOLUMEDB (OWN_ATTR_VALUE_START+73)
+#define OWN_ATTR_MEDIA_ZOOM (OWN_ATTR_VALUE_START+74)
+#define OWN_ATTR_UINAME_SINGULAR (OWN_ATTR_VALUE_START+75)
+#define OWN_ATTR_UINAME_PLURAL (OWN_ATTR_VALUE_START+76)
+#define OWN_ATTR_VALUE_GRAPHIC (OWN_ATTR_VALUE_START+77)
+#define OWN_ATTR_INTERNAL_OLE (OWN_ATTR_VALUE_START+78)
+#define OWN_ATTR_OLE_EMBEDDED_OBJECT (OWN_ATTR_VALUE_START+79)
+#define OWN_ATTR_OLE_ASPECT (OWN_ATTR_VALUE_START+80)
+
+// #i68101#
+#define OWN_ATTR_MISC_OBJ_TITLE (OWN_ATTR_VALUE_START+81)
+#define OWN_ATTR_MISC_OBJ_DESCRIPTION (OWN_ATTR_VALUE_START+82)
+
+#define OWN_ATTR_GRAPHIC_STREAM (OWN_ATTR_VALUE_START+83)
+#define OWN_ATTR_3D_VALUE_NORMALSPOLYGON3D (OWN_ATTR_VALUE_START+84)
+#define OWN_ATTR_3D_VALUE_TEXTUREPOLYGON3D (OWN_ATTR_VALUE_START+85)
+
+#define OWN_ATTR_OLE_LINKURL (OWN_ATTR_VALUE_START+86)
+
+#define OWN_ATTR_STYLE (OWN_ATTR_VALUE_START+87)
+
+#define OWN_ATTR_EDGE_POLYPOLYGONBEZIER (OWN_ATTR_VALUE_START+88) // maximum is OWN_ATTR_VALUE_START+88, see svl/inc/svl/solar.hrc
+
+// #FontWork#
+#define FONTWORK_PROPERTIES \
+ { MAP_CHAR_LEN("FontWorkStyle"), XATTR_FORMTXTSTYLE, /*ENUM*/&::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkAdjust"), XATTR_FORMTXTADJUST, /*ENUM*/&::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkDistance"), XATTR_FORMTXTDISTANCE, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN("FontWorkStart"), XATTR_FORMTXTSTART, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN("FontWorkMirror"), XATTR_FORMTXTMIRROR, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkOutline"), XATTR_FORMTXTOUTLINE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkShadow"), XATTR_FORMTXTSHADOW, /*ENUM*/&::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkShadowColor"), XATTR_FORMTXTSHDWCOLOR, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkShadowOffsetX"), XATTR_FORMTXTSHDWXVAL, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN("FontWorkShadowOffsetY"), XATTR_FORMTXTSHDWYVAL, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN("FontWorkForm"), XATTR_FORMTXTSTDFORM, /*ENUM*/&::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkHideForm"), XATTR_FORMTXTHIDEFORM, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN("FontWorkShadowTransparence"),XATTR_FORMTXTSHDWTRANSP, &::getCppuType((const sal_Int16*)0), 0, 0},
+
+#define SHADOW_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_SHADOW), SDRATTR_SHADOW, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_SHADOWCOLOR), SDRATTR_SHADOWCOLOR, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_SHADOWTRANSPARENCE),SDRATTR_SHADOWTRANSPARENCE, &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_SHADOWXDIST), SDRATTR_SHADOWXDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_SHADOWYDIST), SDRATTR_SHADOWYDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM},
+
+#define LINE_PROPERTIES_DEFAULTS\
+ { MAP_CHAR_LEN(UNO_NAME_LINECOLOR), XATTR_LINECOLOR, &::getCppuType((const sal_Int32*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINEENDCENTER), XATTR_LINEENDCENTER, &::getBooleanCppuType() , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINEENDWIDTH), XATTR_LINEENDWIDTH, &::getCppuType((const sal_Int32*)0) , 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINEJOINT), XATTR_LINEJOINT, &::getCppuType((const ::com::sun::star::drawing::LineJoint*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINESTARTCENTER), XATTR_LINESTARTCENTER, &::getBooleanCppuType() , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINESTARTWIDTH), XATTR_LINESTARTWIDTH, &::getCppuType((const sal_Int32*)0) , 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINESTYLE), XATTR_LINESTYLE, &::getCppuType((const ::com::sun::star::drawing::LineStyle*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINETRANSPARENCE), XATTR_LINETRANSPARENCE, &::getCppuType((const sal_Int16*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINEWIDTH), XATTR_LINEWIDTH, &::getCppuType((const sal_Int32*)0) , 0, SFX_METRIC_ITEM},
+
+#define LINE_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_LINEDASH), XATTR_LINEDASH, &::getCppuType((const ::com::sun::star::drawing::LineDash*)0) , 0, MID_LINEDASH}, \
+ { MAP_CHAR_LEN("LineDashName"), XATTR_LINEDASH, &::getCppuType((const ::rtl::OUString*)0) , 0, MID_NAME}, \
+ LINE_PROPERTIES_DEFAULTS
+
+#define LINE_PROPERTIES_START_END \
+ { MAP_CHAR_LEN(UNO_NAME_LINEEND), XATTR_LINEEND, SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0)), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0}, \
+ { MAP_CHAR_LEN("LineEndName"), XATTR_LINEEND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
+ { MAP_CHAR_LEN(UNO_NAME_LINESTART), XATTR_LINESTART, SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0)), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0}, \
+ { MAP_CHAR_LEN("LineStartName"), XATTR_LINESTART, &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME },
+
+#define FILL_PROPERTIES_BMP \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_LOGICAL_SIZE), XATTR_FILLBMP_SIZELOG, &::getBooleanCppuType() , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_OFFSET_X), XATTR_FILLBMP_TILEOFFSETX, &::getCppuType((const sal_Int32*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_OFFSET_Y), XATTR_FILLBMP_TILEOFFSETY, &::getCppuType((const sal_Int32*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_POSITION_OFFSET_X), XATTR_FILLBMP_POSOFFSETX, &::getCppuType((const sal_Int32*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_POSITION_OFFSET_Y), XATTR_FILLBMP_POSOFFSETY, &::getCppuType((const sal_Int32*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_RECTANGLE_POINT), XATTR_FILLBMP_POS, &::getCppuType((const ::com::sun::star::drawing::RectanglePoint*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_SIZE_X), XATTR_FILLBMP_SIZEX, &::getCppuType((const sal_Int32*)0) , 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_SIZE_Y), XATTR_FILLBMP_SIZEY, &::getCppuType((const sal_Int32*)0) , 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_STRETCH), XATTR_FILLBMP_STRETCH, &::getBooleanCppuType() , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_TILE), XATTR_FILLBMP_TILE, &::getBooleanCppuType() , 0, 0},\
+ { MAP_CHAR_LEN(UNO_NAME_FILLBMP_MODE), OWN_ATTR_FILLBMP_MODE, &::getCppuType((const ::com::sun::star::drawing::BitmapMode*)0), 0, 0},
+
+#define FILL_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_FILLCOLOR), XATTR_FILLCOLOR , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+
+#define FILL_PROPERTIES \
+ FILL_PROPERTIES_BMP \
+ FILL_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBACKGROUND), XATTR_FILLBACKGROUND , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLBITMAP), XATTR_FILLBITMAP , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0) , 0, MID_BITMAP}, \
+ { MAP_CHAR_LEN("FillBitmapName"), XATTR_FILLBITMAP , &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
+ { MAP_CHAR_LEN("FillBitmapURL"), XATTR_FILLBITMAP , &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAFURL }, \
+ { MAP_CHAR_LEN("FillGradientStepCount"), XATTR_GRADIENTSTEPCOUNT , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLGRADIENT), XATTR_FILLGRADIENT , &::getCppuType((const ::com::sun::star::awt::Gradient*)0), 0, MID_FILLGRADIENT}, \
+ { MAP_CHAR_LEN("FillGradientName"), XATTR_FILLGRADIENT , &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLHATCH), XATTR_FILLHATCH , &::getCppuType((const ::com::sun::star::drawing::Hatch*)0), 0, MID_FILLHATCH}, \
+ { MAP_CHAR_LEN("FillHatchName"), XATTR_FILLHATCH , &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLSTYLE), XATTR_FILLSTYLE , &::getCppuType((const ::com::sun::star::drawing::FillStyle*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_FILL_TRANSPARENCE), XATTR_FILLTRANSPARENCE, &::getCppuType((const sal_Int16*)0) , 0, 0}, \
+ { MAP_CHAR_LEN("FillTransparenceGradient"), XATTR_FILLFLOATTRANSPARENCE, &::getCppuType((const ::com::sun::star::awt::Gradient*)0), 0, MID_FILLGRADIENT}, \
+ { MAP_CHAR_LEN("FillTransparenceGradientName"), XATTR_FILLFLOATTRANSPARENCE, &::getCppuType((const ::rtl::OUString*)0), 0, MID_NAME }, \
+ { MAP_CHAR_LEN(UNO_NAME_FILLCOLOR_2), XATTR_SECONDARYFILLCOLOR, &::getCppuType((const sal_Int32*)0), 0, 0},
+
+#define EDGERADIUS_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_EDGERADIUS), SDRATTR_ECKENRADIUS , &::getCppuType((const sal_Int32*)0) , 0, SFX_METRIC_ITEM},
+
+#define TEXT_PROPERTIES_DEFAULTS\
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_WRITINGMODE), SDRATTR_TEXTDIRECTION, &::getCppuType((const ::com::sun::star::text::WritingMode*)0), 0, 0},\
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIAMOUNT), SDRATTR_TEXT_ANIAMOUNT, &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANICOUNT), SDRATTR_TEXT_ANICOUNT, &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIDELAY), SDRATTR_TEXT_ANIDELAY, &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIDIRECTION), SDRATTR_TEXT_ANIDIRECTION, &::getCppuType((const ::com::sun::star::drawing::TextAnimationDirection*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANIKIND), SDRATTR_TEXT_ANIKIND, &::getCppuType((const ::com::sun::star::drawing::TextAnimationKind*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANISTARTINSIDE), SDRATTR_TEXT_ANISTARTINSIDE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_ANISTOPINSIDE), SDRATTR_TEXT_ANISTOPINSIDE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_AUTOGROWHEIGHT), SDRATTR_TEXT_AUTOGROWHEIGHT, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_AUTOGROWWIDTH), SDRATTR_TEXT_AUTOGROWWIDTH, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_CONTOURFRAME), SDRATTR_TEXT_CONTOURFRAME, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_FITTOSIZE), SDRATTR_TEXT_FITTOSIZE, &::getCppuType((const ::com::sun::star::drawing::TextFitToSizeType*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_HORZADJUST), SDRATTR_TEXT_HORZADJUST, &::getCppuType((const ::com::sun::star::drawing::TextHorizontalAdjust*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_LEFTDIST), SDRATTR_TEXT_LEFTDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_LOWERDIST), SDRATTR_TEXT_LOWERDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_MAXFRAMEHEIGHT), SDRATTR_TEXT_MAXFRAMEHEIGHT, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_MAXFRAMEWIDTH), SDRATTR_TEXT_MAXFRAMEWIDTH, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_MINFRAMEHEIGHT), SDRATTR_TEXT_MINFRAMEHEIGHT, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_MINFRAMEWIDTH), SDRATTR_TEXT_MINFRAMEWIDTH, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_RIGHTDIST), SDRATTR_TEXT_RIGHTDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_UPPERDIST), SDRATTR_TEXT_UPPERDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_FONTINDEPENDENTLINESPACING),SDRATTR_TEXT_USEFIXEDCELLHEIGHT,&::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_VERTADJUST), SDRATTR_TEXT_VERTADJUST, &::getCppuType((const ::com::sun::star::drawing::TextVerticalAdjust*)0), 0, 0},\
+ { MAP_CHAR_LEN(UNO_NAME_TEXT_WORDWRAP), SDRATTR_TEXT_WORDWRAP, &::getBooleanCppuType(), 0, 0}, \
+ SVX_UNOEDIT_CHAR_PROPERTIES, \
+ SVX_UNOEDIT_PARA_PROPERTIES,
+
+#define TEXT_PROPERTIES \
+ SVX_UNOEDIT_NUMBERING_PROPERTIE, \
+ TEXT_PROPERTIES_DEFAULTS
+
+// { MAP_CHAR_LEN("HasLevels"), OWN_ATTR_HASLEVELS, &::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
+
+#define MISC_OBJ_PROPERTIES_NO_SHEAR \
+ { MAP_CHAR_LEN("Transformation"), OWN_ATTR_TRANSFORMATION, &::getCppuType((const struct com::sun::star::drawing::HomogenMatrix3*)0), 0, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_ZORDER), OWN_ATTR_ZORDER, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_FRAMERECT), OWN_ATTR_FRAMERECT, &::getCppuType((const ::com::sun::star::awt::Rectangle*)0), 0, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_ROTATEANGLE), SDRATTR_ROTATEANGLE, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_BITMAP), OWN_ATTR_BITMAP, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_OLE2_METAFILE), OWN_ATTR_METAFILE, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ { MAP_CHAR_LEN("IsFontwork"), OWN_ATTR_ISFONTWORK, &::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_BOUNDRECT), OWN_ATTR_BOUNDRECT, &::getCppuType((const ::com::sun::star::awt::Rectangle*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
+
+#define MISC_OBJ_PROPERTIES \
+ MISC_OBJ_PROPERTIES_NO_SHEAR \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_SHEARANGLE), SDRATTR_SHEARANGLE, &::getCppuType((const sal_Int32*)0), 0, 0},
+
+
+#define SHAPE_DESCRIPTOR_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_LAYERID), SDRATTR_LAYERID , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_LAYERNAME), SDRATTR_LAYERNAME , &::getCppuType((const ::rtl::OUString*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_MOVEPROTECT), SDRATTR_OBJMOVEPROTECT , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_NAME), SDRATTR_OBJECTNAME , &::getCppuType((const ::rtl::OUString*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_PRINTABLE), SDRATTR_OBJPRINTABLE , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN("Visible"), SDRATTR_OBJVISIBLE , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_SIZEPROTECT), SDRATTR_OBJSIZEPROTECT , &::getBooleanCppuType(), 0, 0},\
+ { MAP_CHAR_LEN("UINameSingular"), OWN_ATTR_UINAME_SINGULAR , &::getCppuType((const ::rtl::OUString*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ { MAP_CHAR_LEN("UINamePlural"), OWN_ATTR_UINAME_PLURAL , &::getCppuType((const ::rtl::OUString*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ /* #i68101# */ \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_TITLE), OWN_ATTR_MISC_OBJ_TITLE , &::getCppuType((const ::rtl::OUString*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MISC_OBJ_DESCRIPTION), OWN_ATTR_MISC_OBJ_DESCRIPTION , &::getCppuType((const ::rtl::OUString*)0), 0, 0},
+
+#define LINKTARGET_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME), OWN_ATTR_LDNAME , &::getCppuType((const ::rtl::OUString*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP), OWN_ATTR_LDBITMAP , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
+
+
+#define CONNECTOR_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_EDGEKIND), SDRATTR_EDGEKIND, &::getCppuType((const ::com::sun::star::drawing::ConnectorType*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_EDGENODE1HORZDIST), SDRATTR_EDGENODE1HORZDIST, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_EDGENODE1VERTDIST), SDRATTR_EDGENODE1VERTDIST, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_EDGENODE2HORZDIST), SDRATTR_EDGENODE2HORZDIST, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_EDGENODE2VERTDIST), SDRATTR_EDGENODE2VERTDIST, &::getCppuType((const sal_Int32*)0), 0, 0},
+
+#define SPECIAL_CONNECTOR_PROPERTIES \
+ CONNECTOR_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_EDGELINE1DELTA), SDRATTR_EDGELINE1DELTA, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_EDGELINE2DELTA), SDRATTR_EDGELINE2DELTA, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_EDGELINE3DELTA), SDRATTR_EDGELINE3DELTA, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN("StartShape"), OWN_ATTR_EDGE_START_OBJ, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >*)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0}, \
+ { MAP_CHAR_LEN("StartGluePointIndex"), OWN_ATTR_GLUEID_HEAD, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN("StartPosition"), OWN_ATTR_EDGE_START_POS, &::getCppuType((const ::com::sun::star::awt::Point*)0), 0, 0}, \
+ { MAP_CHAR_LEN("EndShape"), OWN_ATTR_EDGE_END_OBJ, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>*)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0}, \
+ { MAP_CHAR_LEN("EndPosition"), OWN_ATTR_EDGE_END_POS, &::getCppuType((const ::com::sun::star::awt::Point*)0), 0, 0},\
+ { MAP_CHAR_LEN("EndGluePointIndex"), OWN_ATTR_GLUEID_TAIL, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+\
+ { MAP_CHAR_LEN("EdgeStartConnection"), OWN_ATTR_EDGE_START_OBJ, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >*)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0}, \
+ { MAP_CHAR_LEN("EdgeStartPoint"), OWN_ATTR_EDGE_START_POS, &::getCppuType((const ::com::sun::star::awt::Point*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+ { MAP_CHAR_LEN("EdgeEndConnection"), OWN_ATTR_EDGE_END_OBJ, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>*)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0}, \
+ { MAP_CHAR_LEN("EdgeEndPoint"), OWN_ATTR_EDGE_END_POS, &::getCppuType((const ::com::sun::star::awt::Point*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \
+\
+ { MAP_CHAR_LEN(UNO_NAME_POLYPOLYGONBEZIER), OWN_ATTR_EDGE_POLYPOLYGONBEZIER, &::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0), 0, 0},
+
+#define SPECIAL_DIMENSIONING_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREBELOWREFEDGE), SDRATTR_MEASUREBELOWREFEDGE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREFORMATSTRING), SDRATTR_MEASUREFORMATSTRING, &::getCppuType((const ::rtl::OUString*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINE1LEN), SDRATTR_MEASUREHELPLINE1LEN, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINE2LEN), SDRATTR_MEASUREHELPLINE2LEN, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINEDIST), SDRATTR_MEASUREHELPLINEDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREHELPLINEOVERHANG), SDRATTR_MEASUREHELPLINEOVERHANG, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREKIND), SDRATTR_MEASUREKIND, &::getCppuType((const ::com::sun::star::drawing::MeasureKind*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURELINEDIST), SDRATTR_MEASURELINEDIST, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREOVERHANG), SDRATTR_MEASUREOVERHANG, &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASUREUNIT), SDRATTR_MEASUREUNIT, &::getCppuType((const sal_Int32*)0), 0, 0},\
+ { MAP_CHAR_LEN(UNO_NAME_MEASURESHOWUNIT), SDRATTR_MEASURESHOWUNIT, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTAUTOANGLE), SDRATTR_MEASURETEXTAUTOANGLE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTAUTOANGLEVIEW), SDRATTR_MEASURETEXTAUTOANGLEVIEW, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTFIXEDANGLE), SDRATTR_MEASURETEXTFIXEDANGLE, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTHPOS), SDRATTR_MEASURETEXTHPOS, &::getCppuType((const ::com::sun::star::drawing::MeasureTextHorzPos*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTISFIXEDANGLE), SDRATTR_MEASURETEXTISFIXEDANGLE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTROTA90), SDRATTR_MEASURETEXTROTA90, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTUPSIDEDOWN), SDRATTR_MEASURETEXTUPSIDEDOWN, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_MEASURETEXTVPOS), SDRATTR_MEASURETEXTVPOS, &::getCppuType((const ::com::sun::star::drawing::MeasureTextVertPos*)0), 0, 0}, \
+ { MAP_CHAR_LEN("MeasureDecimalPlaces"), SDRATTR_MEASUREDECIMALPLACES, &::getCppuType((const sal_Int16*)0), 0, 0},
+
+
+#define SPECIAL_DIMENSIONING_PROPERTIES \
+ SPECIAL_DIMENSIONING_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN("StartPosition"), OWN_ATTR_MEASURE_START_POS, &::getCppuType((const ::com::sun::star::awt::Point*)0), 0, 0},\
+ { MAP_CHAR_LEN("EndPosition"), OWN_ATTR_MEASURE_END_POS, &::getCppuType((const ::com::sun::star::awt::Point*)0), 0, 0},
+
+#define SPECIAL_CIRCLE_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_CIRCENDANGLE), SDRATTR_CIRCENDANGLE, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_CIRCKIND), SDRATTR_CIRCKIND, &::getCppuType((const ::com::sun::star::drawing::CircleKind*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_CIRCSTARTANGLE),SDRATTR_CIRCSTARTANGLE, &::getCppuType((const sal_Int32*)0), 0, 0},
+
+#define SPECIAL_POLYGON_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_POLYGONKIND), OWN_ATTR_VALUE_POLYGONKIND, &::getCppuType((const ::com::sun::star::drawing::PolygonKind*)0), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},
+
+#define SPECIAL_POLYPOLYGON_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_POLYPOLYGON), OWN_ATTR_VALUE_POLYPOLYGON, SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PointSequenceSequence*)0)), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_POLYGON), OWN_ATTR_VALUE_POLYGON, SEQTYPE(::getCppuType((const ::com::sun::star::drawing::PointSequence*)0)), 0, 0},
+
+#define SPECIAL_POLYPOLYGONBEZIER_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_POLYPOLYGONBEZIER), OWN_ATTR_VALUE_POLYPOLYGONBEZIER, &::getCppuType((const ::com::sun::star::drawing::PolyPolygonBezierCoords*)0), 0, 0},
+
+#define SPECIAL_GRAPHOBJ_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_LUMINANCE), SDRATTR_GRAFLUMINANCE , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_CONTRAST), SDRATTR_GRAFCONTRAST , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_RED), SDRATTR_GRAFRED , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_GREEN), SDRATTR_GRAFGREEN , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_BLUE), SDRATTR_GRAFBLUE , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_GAMMA), SDRATTR_GRAFGAMMA , &::getCppuType((const double*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_TRANSPARENCY), SDRATTR_GRAFTRANSPARENCE , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_COLOR_MODE), SDRATTR_GRAFMODE , &::getCppuType((const ::com::sun::star::drawing::ColorMode*)0), 0, 0},
+
+#define SPECIAL_GRAPHOBJ_PROPERTIES \
+ SPECIAL_GRAPHOBJ_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHIC_GRAPHICCROP), SDRATTR_GRAFCROP , &::getCppuType((const ::com::sun::star::text::GraphicCrop*)0), 0, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_GRAFURL), OWN_ATTR_GRAFURL , &::getCppuType((const ::rtl::OUString*)0), 0, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_GRAFSTREAMURL),OWN_ATTR_GRAFSTREAMURL , &::getCppuType((const ::rtl::OUString*)0), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_FILLBITMAP), OWN_ATTR_VALUE_FILLBITMAP , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap>*)0) , 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_GRAPHOBJ_GRAPHIC), OWN_ATTR_VALUE_GRAPHIC , &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic>*)0) , 0, 0},
+
+
+#define SPECIAL_3DSCENEOBJECT_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_AMBIENTCOLOR), SDRATTR_3DSCENE_AMBIENTCOLOR , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_DISTANCE), SDRATTR_3DSCENE_DISTANCE , &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_FOCAL_LENGTH), SDRATTR_3DSCENE_FOCAL_LENGTH , &::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_1), SDRATTR_3DSCENE_LIGHTCOLOR_1 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_2), SDRATTR_3DSCENE_LIGHTCOLOR_2 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_3), SDRATTR_3DSCENE_LIGHTCOLOR_3 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_4), SDRATTR_3DSCENE_LIGHTCOLOR_4 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_5), SDRATTR_3DSCENE_LIGHTCOLOR_5 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_6), SDRATTR_3DSCENE_LIGHTCOLOR_6 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_7), SDRATTR_3DSCENE_LIGHTCOLOR_7 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTCOLOR_8), SDRATTR_3DSCENE_LIGHTCOLOR_8 , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_1), SDRATTR_3DSCENE_LIGHTDIRECTION_1 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_2), SDRATTR_3DSCENE_LIGHTDIRECTION_2 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_3), SDRATTR_3DSCENE_LIGHTDIRECTION_3 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_4), SDRATTR_3DSCENE_LIGHTDIRECTION_4 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_5), SDRATTR_3DSCENE_LIGHTDIRECTION_5 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_6), SDRATTR_3DSCENE_LIGHTDIRECTION_6 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_7), SDRATTR_3DSCENE_LIGHTDIRECTION_7 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTDIRECTION_8), SDRATTR_3DSCENE_LIGHTDIRECTION_8 , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_1), SDRATTR_3DSCENE_LIGHTON_1 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_2), SDRATTR_3DSCENE_LIGHTON_2 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_3), SDRATTR_3DSCENE_LIGHTON_3 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_4), SDRATTR_3DSCENE_LIGHTON_4 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_5), SDRATTR_3DSCENE_LIGHTON_5 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_6), SDRATTR_3DSCENE_LIGHTON_6 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_7), SDRATTR_3DSCENE_LIGHTON_7 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_LIGHTON_8), SDRATTR_3DSCENE_LIGHTON_8 , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_PERSPECTIVE), SDRATTR_3DSCENE_PERSPECTIVE , &::getCppuType((const ::com::sun::star::drawing::ProjectionMode*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_SHADOW_SLANT), SDRATTR_3DSCENE_SHADOW_SLANT , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_SHADE_MODE), SDRATTR_3DSCENE_SHADE_MODE , &::getCppuType((const ::com::sun::star::drawing::ShadeMode*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SCENE_TWO_SIDED_LIGHTING),SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, &::getBooleanCppuType(), 0, 0},
+
+#define SPECIAL_3DSCENEOBJECT_PROPERTIES \
+ SPECIAL_3DSCENEOBJECT_PROPERTIES_DEFAULTS \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX), OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_CAMERA_GEOMETRY), OWN_ATTR_3D_VALUE_CAMERA_GEOMETRY , &::getCppuType((const ::com::sun::star::drawing::CameraGeometry*)0), 0, 0},
+
+// #i28528#
+// Added extra Item (Bool) for chart2 to be able to show reduced line geometry (SDRATTR_3DOBJ_REDUCED_LINE_GEOMETRY)
+#define MISC_3D_OBJ_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_DOUBLE_SIDED ),SDRATTR_3DOBJ_DOUBLE_SIDED , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_MAT_COLOR ),SDRATTR_3DOBJ_MAT_COLOR , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_MAT_EMISSION ),SDRATTR_3DOBJ_MAT_EMISSION , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_MAT_SPECULAR ),SDRATTR_3DOBJ_MAT_SPECULAR , &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_MAT_SPECULAR_INTENSITY ),SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY , &::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_NORMALS_INVERT ),SDRATTR_3DOBJ_NORMALS_INVERT , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_NORMALS_KIND ),SDRATTR_3DOBJ_NORMALS_KIND , &::getCppuType((const ::com::sun::star::drawing::NormalsKind*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SHADOW_3D ),SDRATTR_3DOBJ_SHADOW_3D , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_FILTER ),SDRATTR_3DOBJ_TEXTURE_FILTER , &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_KIND ),SDRATTR_3DOBJ_TEXTURE_KIND , &::getCppuType((const ::com::sun::star::drawing::TextureKind*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_MODE ),SDRATTR_3DOBJ_TEXTURE_MODE , &::getCppuType((const ::com::sun::star::drawing::TextureMode*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_PROJ_X ),SDRATTR_3DOBJ_TEXTURE_PROJ_X , &::getCppuType((const ::com::sun::star::drawing::TextureProjectionMode*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TEXTURE_PROJ_Y ),SDRATTR_3DOBJ_TEXTURE_PROJ_Y , &::getCppuType((const ::com::sun::star::drawing::TextureProjectionMode*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_REDUCED_LINE_GEOMETRY ),SDRATTR_3DOBJ_REDUCED_LINE_GEOMETRY , &::getBooleanCppuType(), 0, 0},
+
+#define SPECIAL_3DCUBEOBJECT_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_POS ),OWN_ATTR_3D_VALUE_POSITION , &::getCppuType((const ::com::sun::star::drawing::Position3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SIZE ),OWN_ATTR_3D_VALUE_SIZE , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_POS_IS_CENTER ),OWN_ATTR_3D_VALUE_POS_IS_CENTER , &::getBooleanCppuType(), 0, 0},
+
+#define SPECIAL_3DSPHEREOBJECT_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_POS ),OWN_ATTR_3D_VALUE_POSITION , &::getCppuType((const ::com::sun::star::drawing::Position3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SIZE ),OWN_ATTR_3D_VALUE_SIZE , &::getCppuType((const ::com::sun::star::drawing::Direction3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_HORZ_SEGS ),SDRATTR_3DOBJ_HORZ_SEGS, &::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_VERT_SEGS ),SDRATTR_3DOBJ_VERT_SEGS, &::getCppuType((const sal_Int32*)0), 0, 0},
+
+// #107245# New 3D properties which are possible for lathe and extrude 3d objects
+#define SPECIAL_3DLATHEANDEXTRUDEOBJ_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SMOOTH_NORMALS ), SDRATTR_3DOBJ_SMOOTH_NORMALS, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_SMOOTH_LIDS ), SDRATTR_3DOBJ_SMOOTH_LIDS, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_CHARACTER_MODE ), SDRATTR_3DOBJ_CHARACTER_MODE, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_CLOSE_FRONT ), SDRATTR_3DOBJ_CLOSE_FRONT, &::getBooleanCppuType(), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_CLOSE_BACK ), SDRATTR_3DOBJ_CLOSE_BACK, &::getBooleanCppuType(), 0, 0},
+
+#define SPECIAL_3DLATHEOBJECT_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX ,&::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_POLYPOLYGON3D ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D ,&::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_LATHE_END_ANGLE ),SDRATTR_3DOBJ_END_ANGLE ,&::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_HORZ_SEGS ),SDRATTR_3DOBJ_HORZ_SEGS ,&::getCppuType((const sal_Int32*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_PERCENT_DIAGONAL ),SDRATTR_3DOBJ_PERCENT_DIAGONAL ,&::getCppuType((const sal_Int16*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_VERT_SEGS ),SDRATTR_3DOBJ_VERT_SEGS ,&::getCppuType((const sal_Int32*)0), 0, 0},
+
+#define SPECIAL_3DEXTRUDEOBJECT_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX ,&::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_POLYPOLYGON3D ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D ,&::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_EXTRUDE_DEPTH ),SDRATTR_3DOBJ_DEPTH ,&::getCppuType((const sal_Int32*)0), 0, SFX_METRIC_ITEM}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_PERCENT_DIAGONAL ),SDRATTR_3DOBJ_PERCENT_DIAGONAL ,&::getCppuType((const sal_Int16*)0), 0, 0},
+
+#define SPECIAL_3DPOLYGONOBJECT_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TRANSFORM_MATRIX ),OWN_ATTR_3D_VALUE_TRANSFORM_MATRIX , &::getCppuType((const ::com::sun::star::drawing::HomogenMatrix*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_POLYPOLYGON3D ),OWN_ATTR_3D_VALUE_POLYPOLYGON3D , &::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_NORMALSPOLYGON3D ),OWN_ATTR_3D_VALUE_NORMALSPOLYGON3D, &::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_TEXTUREPOLYGON3D ),OWN_ATTR_3D_VALUE_TEXTUREPOLYGON3D, &::getCppuType((const ::com::sun::star::drawing::PolyPolygonShape3D*)0), 0, 0}, \
+ { MAP_CHAR_LEN(UNO_NAME_3D_LINEONLY ),OWN_ATTR_3D_VALUE_LINEONLY , &::getBooleanCppuType(), 0, 0},
+
+#define SPECIAL_3DBACKSCALE_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_3D_BACKSCALE ),SDRATTR_3DOBJ_BACKSCALE ,&::getCppuType((const sal_Int16*)0), 0, 0}, \
+
+#define CUSTOMSHAPE_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOMSHAPE_ADJUSTMENT),SDRATTR_CUSTOMSHAPE_ADJUSTMENT, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int32>*)0)), 0, 0}, \
+
+#endif
+
diff --git a/svx/inc/svx/unoshtxt.hxx b/svx/inc/svx/unoshtxt.hxx
new file mode 100644
index 000000000000..c06d3955b442
--- /dev/null
+++ b/svx/inc/svx/unoshtxt.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_UNOSHTXT_HXX
+#define SVX_UNOSHTXT_HXX
+
+#include <memory>
+#include <editeng/unoedsrc.hxx>
+#include "svx/svxdllapi.h"
+
+namespace com { namespace sun { namespace star {
+ namespace uno {
+ class XInterface;
+ }
+ namespace accessibility {
+ struct TextSegment;
+ }
+} } }
+
+class SvxTextForwarder;
+class SdrObject;
+class SdrModel;
+class SdrView;
+class Window;
+class SvxTextEditSourceImpl;
+class SdrText;
+
+class SVX_DLLPUBLIC SvxTextEditSource : public SvxEditSource, public SvxViewForwarder
+{
+public:
+ SvxTextEditSource( SdrObject* pObj, SdrText* pText, ::com::sun::star::uno::XInterface* pOwner);
+
+ /** Since the views don't broadcast their dying, make sure that
+ this object gets destroyed if the view becomes invalid
+
+ The window is necessary, since our views can display on multiple windows
+ */
+ SvxTextEditSource( SdrObject& rObj, SdrText* pText, SdrView& rView, const Window& rViewWindow );
+
+ virtual ~SvxTextEditSource();
+
+ virtual SvxEditSource* Clone() const;
+ virtual SvxTextForwarder* GetTextForwarder();
+ virtual SvxViewForwarder* GetViewForwarder();
+ virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate = sal_False );
+ virtual void UpdateData();
+
+ virtual void addRange( SvxUnoTextRangeBase* pNewRange );
+ virtual void removeRange( SvxUnoTextRangeBase* pOldRange );
+ virtual const SvxUnoTextRangeBaseList& getRanges() const;
+
+ virtual SfxBroadcaster& GetBroadcaster() const;
+
+ SdrObject* GetSdrObject() const;
+
+ void lock();
+ void unlock();
+
+// static sal_Bool hasLevels( const SdrObject* pObject );
+
+ // the SvxViewForwarder interface
+ virtual BOOL IsValid() const;
+ virtual Rectangle GetVisArea() const;
+ virtual Point LogicToPixel( const Point&, const MapMode& ) const;
+ virtual Point PixelToLogic( const Point&, const MapMode& ) const;
+
+ void ChangeModel( SdrModel* pNewModel );
+
+private:
+ SVX_DLLPRIVATE SvxTextEditSource( SvxTextEditSourceImpl* pImpl );
+
+ SvxTextEditSourceImpl* mpImpl;
+};
+
+#endif
diff --git a/svx/inc/svx/view3d.hxx b/svx/inc/svx/view3d.hxx
new file mode 100644
index 000000000000..ec17badd0052
--- /dev/null
+++ b/svx/inc/svx/view3d.hxx
@@ -0,0 +1,277 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _E3D_VIEW3D_HXX
+#define _E3D_VIEW3D_HXX
+
+#include <svx/svdview.hxx>
+#include <svx/def3d.hxx>
+#include <svx/deflt3d.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include "svx/svxdllapi.h"
+
+//************************************************************
+// Vorausdeklarationen
+//************************************************************
+
+class E3dObject;
+class E3dScene;
+class SceneList;
+class Impl3DMirrorConstructOverlay;
+
+/*************************************************************************
+|*
+|* Ableitung von SdrView zur Bearbeitung von 3D-Objekten
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC E3dView : public SdrView
+{
+protected:
+ E3dDefaultAttributes a3DDefaultAttr;
+ MouseEvent aMouseEvent; // Die Parameter der letzten Events (Mouse, Keyboard)
+ Color aDefaultLightColor; // dito mit den Farben
+ Color aDefaultAmbientColor;
+
+ double fDefaultScaleX; // Verzerrungen
+ double fDefaultScaleY;
+ double fDefaultScaleZ;
+ double fDefaultRotateX; // und Drehungen
+ double fDefaultRotateY;
+ double fDefaultRotateZ;
+ double fDefaultExtrusionDeepth; // Extrusionstiefe
+ double fDefaultLightIntensity; // Intensitaeten der beiden (notwendigen) Licht-
+ double fDefaultAmbientIntensity; // quellen
+ long nHDefaultSegments; // wieviele HSegmente braucht mein Lathe-Ojekt
+ long nVDefaultSegments; // wieviele VSegmente braucht mein Lathe-Ojekt
+
+ E3dDragConstraint eDragConstraint;
+
+ // Migrate selections
+ Impl3DMirrorConstructOverlay* mpMirrorOverlay;
+
+ BOOL bDoubleSided;
+
+ void InitView();
+
+ void ImpCreate3DObject(E3dScene* pScene, SdrObject* pObj, BOOL bExtrude, double fDepth, basegfx::B2DHomMatrix& rLatheMat);
+ void ImpCreateSingle3DObjectFlat(E3dScene* pScene, SdrObject* pObj, BOOL bExtrude, double fDepth, basegfx::B2DHomMatrix& rLatheMat);
+ void ImpChangeSomeAttributesFor3DConversion(SdrObject* pObj);
+ void ImpChangeSomeAttributesFor3DConversion2(SdrObject* pObj);
+
+ void InitScene(E3dScene* pScene, double fW, double fH, double fCamZ);
+ void ImpIsConvertTo3DPossible(SdrObject* pObj, BOOL& rAny3D, BOOL& rGroupSelected) const;
+ void BreakSingle3DObj(E3dObject* pObj);
+
+public:
+ TYPEINFO();
+ E3dView(SdrModel* pModel, OutputDevice* pOut = 0L);
+ virtual ~E3dView();
+
+ // Alle markierten Objekte auf dem angegebenen OutputDevice ausgeben.
+ virtual void DrawMarkedObj(OutputDevice& rOut) const;
+
+ // Zugriff auf die Default-Attribute
+ E3dDefaultAttributes& Get3DDefaultAttributes() { return a3DDefaultAttr; }
+ virtual BOOL BegDragObj(const Point& rPnt, OutputDevice* pOut = NULL, SdrHdl* pHdl = NULL, short nMinMov = -3, SdrDragMethod* pForcedMeth = NULL);
+ virtual void CheckPossibilities();
+
+ // Event setzen/rausruecken
+ void SetMouseEvent(const MouseEvent& rNew) { aMouseEvent = rNew; }
+ const MouseEvent& GetMouseEvent() { return aMouseEvent; }
+
+ // Model holen ueberladen, da bei einzelnen 3D Objekten noch eine Szene
+ // untergeschoben werden muss
+ virtual SdrModel* GetMarkedObjModel() const;
+
+ // Bei Paste muss - falls in eine Scene eingefuegt wird - die
+ // Objekte der Szene eingefuegt werden, die Szene selbst aber nicht
+ using SdrView::Paste;
+ virtual BOOL Paste(const SdrModel& rMod, const Point& rPos, SdrObjList* pLst=NULL, UINT32 nOptions=0);
+
+ // #83403# Service routine used from local Clone() and from SdrCreateView::EndCreateObj(...)
+ BOOL ImpCloneAll3DObjectsToDestScene(E3dScene* pSrcScene, E3dScene* pDstScene, Point aOffset);
+
+ BOOL HasMarkedScene();
+ E3dScene* GetMarkedScene();
+
+ BOOL IsConvertTo3DObjPossible() const;
+ void ConvertMarkedObjTo3D(BOOL bExtrude=TRUE, basegfx::B2DPoint aPnt1 = basegfx::B2DPoint(0.0, 0.0), basegfx::B2DPoint aPnt2 = basegfx::B2DPoint(0.0, 1.0));
+
+ // Nachtraeglichhe Korrekturmoeglichkeit um alle Extrudes in einer
+ // bestimmten Tiefensortierung anzulegen
+ void DoDepthArrange(E3dScene* pScene, double fDepth);
+ void ConvertMarkedToPolyObj(BOOL bLineToArea);
+ E3dScene* SetCurrent3DObj(E3dObject* p3DObj);
+ void Start3DCreation();
+
+ // migration of overlay
+ sal_Bool Is3DRotationCreationActive() const { return (0L != mpMirrorOverlay); }
+
+ virtual void MovAction(const Point& rPnt);
+ void End3DCreation(BOOL bUseDefaultValuesForMirrorAxes=FALSE);
+ void ResetCreationActive();
+
+ double GetDefaultCamPosZ();
+
+ double &DefaultScaleX ()
+ {
+ return fDefaultScaleX;
+ }
+
+ double DefaultScaleX () const
+ {
+ return fDefaultScaleX;
+ }
+
+ double &DefaultScaleY ()
+ {
+ return fDefaultScaleY;
+ }
+
+ double DefaultScaleY () const
+ {
+ return fDefaultScaleY;
+ }
+
+ double &DefaultScaleZ ()
+ {
+ return fDefaultScaleZ;
+ }
+
+ double DefaultScaleZ () const
+ {
+ return fDefaultScaleZ;
+ }
+
+ double &DefaultRotateX ()
+ {
+ return fDefaultRotateX;
+ }
+
+ double DefaultRotateX () const
+ {
+ return fDefaultRotateX;
+ }
+
+ double &DefaultRotateY ()
+ {
+ return fDefaultRotateY;
+ }
+
+ double DefaultRotateY () const
+ {
+ return fDefaultRotateY;
+ }
+
+ double &DefaultRotateZ ()
+ {
+ return fDefaultRotateZ;
+ }
+
+ double DefaultRotateZ () const
+ {
+ return fDefaultRotateZ;
+ }
+
+ double &DefaultExtrusionDeepth ()
+ {
+ return fDefaultExtrusionDeepth;
+ }
+
+ double DefaultExtrusionDeepth () const
+ {
+ return fDefaultExtrusionDeepth;
+ }
+
+ double GetDefaultCamFocal();
+
+ double &DefaultLightIntensity ()
+ {
+ return fDefaultLightIntensity;
+ }
+
+ double DefaultLightIntensity () const
+ {
+ return fDefaultLightIntensity;
+ }
+
+ double &DefaultAmbientIntensity ()
+ {
+ return fDefaultAmbientIntensity;
+ }
+
+ double DefaultAmbientIntensity () const
+ {
+ return fDefaultAmbientIntensity;
+ }
+
+ const Color &DefaultLightColor () const
+ {
+ return aDefaultLightColor;
+ }
+
+ Color DefaultLightColor ()
+ {
+ return aDefaultLightColor;
+ }
+
+ const Color &DefaultAmbientColor () const
+ {
+ return aDefaultAmbientColor;
+ }
+
+ Color DefaultAmbientColor ()
+ {
+ return aDefaultAmbientColor;
+ }
+
+ long GetHDefaultSegments() const { return nHDefaultSegments; }
+ void SetHDefaultSegments(long nSegs) { nHDefaultSegments = nSegs; }
+
+ long GetVDefaultSegments() const { return nVDefaultSegments; }
+ void SetVDefaultSegments(long nSegs) { nVDefaultSegments = nSegs; }
+
+ BOOL IsBreak3DObjPossible() const;
+ void Break3DObj();
+
+ BOOL DoubleSided () const
+ {
+ return bDoubleSided;
+ }
+
+ BOOL &DoubleSided ()
+ {
+ return bDoubleSided;
+ }
+
+ void MergeScenes();
+ SfxItemSet Get3DAttributes(E3dScene* pInScene = NULL, BOOL bOnly3DAttr=FALSE) const;
+ void Set3DAttributes(const SfxItemSet& rAttr, E3dScene* pInScene = NULL, BOOL bOnly3DAttr=FALSE);
+};
+
+#endif // _E3D_VIEW3D_HXX
diff --git a/svx/inc/svx/viewlayoutitem.hxx b/svx/inc/svx/viewlayoutitem.hxx
new file mode 100644
index 000000000000..fe79fc2641e0
--- /dev/null
+++ b/svx/inc/svx/viewlayoutitem.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_VIEWLAYOUTITEM_HXX
+#define _SVX_VIEWLAYOUTITEM_HXX
+
+#include <svl/intitem.hxx>
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include "svx/svxdllapi.h"
+
+//-------------------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxViewLayoutItem: public SfxUInt16Item
+{
+ bool mbBookMode;
+
+public:
+ TYPEINFO();
+
+ SvxViewLayoutItem( USHORT nColumns = 0, bool bBookMode = false, USHORT nWhich = SID_ATTR_VIEWLAYOUT );
+ SvxViewLayoutItem( const SvxViewLayoutItem& );
+ ~SvxViewLayoutItem();
+
+ void SetBookMode( bool bNew ) {mbBookMode = bNew; }
+ bool IsBookMode() const {return mbBookMode; }
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStrm, USHORT nVersion ) const; // leer
+ virtual SvStream& Store( SvStream& rStrm , USHORT nItemVersion ) const; // leer
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const; // leer
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ); // leer
+};
+
+//------------------------------------------------------------------------
+
+#endif
diff --git a/svx/inc/svx/viewpt3d.hxx b/svx/inc/svx/viewpt3d.hxx
new file mode 100644
index 000000000000..a26f559b23b2
--- /dev/null
+++ b/svx/inc/svx/viewpt3d.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _VIEWPT3D_HXX
+#define _VIEWPT3D_HXX
+
+#include "svx/svxdllapi.h"
+#include <basegfx/matrix/b3dhommatrix.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <tools/gen.hxx>
+
+// predefines
+namespace basegfx { class B3DRange; } // end of namespace basegfx
+
+/*************************************************************************
+|*
+|* enums fuer Projektion und Seitenverhaeltnis
+|*
+\************************************************************************/
+
+enum ProjectionType { PR_PARALLEL, PR_PERSPECTIVE };
+enum AspectMapType { AS_NO_MAPPING, AS_HOLD_SIZE, AS_HOLD_X, AS_HOLD_Y };
+
+
+/*************************************************************************
+|*
+|* 3D-Viewport nach PHIGS
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC Viewport3D
+{
+ protected:
+ basegfx::B3DHomMatrix aViewTf; // die eigentliche Transformationsmatrix
+ basegfx::B3DPoint aVRP; // View Reference Point
+ basegfx::B3DVector aVPN; // View Plane Normal
+ basegfx::B3DVector aVUV; // View Up Vector
+ basegfx::B3DPoint aPRP; // Projection Reference Point(View-Koordinaten)
+ // bisher wird nur die Z-Koordinate beachtet
+ double fVPD; // View Plane Distance
+ double fNearClipDist; // Abstand der vorderen Clippingebene
+ double fFarClipDist; // Abstand der hinteren Clippingebene
+
+ ProjectionType eProjection; // Art der Projektion
+ AspectMapType eAspectMapping; // Flag fuer Seitenverhaeltnis-Anpassung
+ // bei Ausgabe auf das Geraet
+ Rectangle aDeviceRect; // Position und Groesse des Ausgabebereichs
+
+ struct
+ {
+ double X, Y, W, H; // Position und Groesse des View-Windows
+ } aViewWin; // in View-Koordinaten
+
+ basegfx::B3DPoint aViewPoint; // Beobachterstandpunkt in Weltkoordinaten;
+ // wird mit der Transformation berechnet
+ BOOL bTfValid; // Flag, ob Transformation gueltig ist
+
+ double fWRatio; // Device/View-Seitenverhaeltnisse
+ double fHRatio;
+
+ void MakeTransform(void);
+
+ public:
+ Viewport3D();
+
+ void SetVRP(const basegfx::B3DPoint& rNewVRP);
+ void SetVPN(const basegfx::B3DVector& rNewVPN);
+ void SetVUV(const basegfx::B3DVector& rNewVUV);
+ void SetPRP(const basegfx::B3DPoint& rNewPRP);
+ void SetVPD(double fNewVPD);
+ void SetNearClipDist(double fNewNCD);
+ void SetFarClipDist(double fNewFCD);
+
+ const basegfx::B3DPoint& GetVRP() const { return aVRP; }
+ const basegfx::B3DVector& GetVPN() const { return aVPN; }
+ const basegfx::B3DVector& GetVUV() const { return aVUV; }
+ const basegfx::B3DPoint& GetPRP() const { return aPRP; }
+ double GetVPD() const { return fVPD; }
+ double GetNearClipDist() const { return fNearClipDist; }
+ double GetFarClipDist() const { return fFarClipDist; }
+
+ void SetProjection(ProjectionType ePrj)
+ { eProjection = ePrj; bTfValid = FALSE; }
+ ProjectionType GetProjection() const { return(eProjection); }
+
+ void SetAspectMapping(AspectMapType eAsp)
+ { eAspectMapping = eAsp; bTfValid = FALSE; }
+ AspectMapType GetAspectMapping() { return eAspectMapping; }
+
+ void SetViewWindow(double fX, double fY, double fW, double fH);
+ void GetViewWindow(double& rX, double& rY, double& rW, double& rH) const;
+
+ void SetDeviceWindow(const Rectangle& rRect);
+ const Rectangle& GetDeviceWindow() const { return aDeviceRect; }
+
+ // Beobachterstandpunkt in Weltkoordinaten zurueckgeben
+ const basegfx::B3DPoint& GetViewPoint();
+
+ // View-Transformationen
+ const basegfx::B3DHomMatrix& GetViewTransform();
+
+ // Projektion und Mapping
+ basegfx::B3DPoint DoProjection(const basegfx::B3DPoint& rVec) const;
+ basegfx::B3DPoint MapToDevice(const basegfx::B3DPoint& rVec) const;
+};
+
+#endif // _VIEWPT3D_HXX
diff --git a/svx/inc/svx/volume3d.hxx b/svx/inc/svx/volume3d.hxx
new file mode 100644
index 000000000000..42e90a9955a6
--- /dev/null
+++ b/svx/inc/svx/volume3d.hxx
@@ -0,0 +1,33 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _VOLUME3D_HXX
+#define _VOLUME3D_HXX
+
+#include <basegfx/range/b3drange.hxx>
+
+#endif // _VOLUME3D_HXX
diff --git a/svx/inc/svx/xbitmap.hxx b/svx/inc/svx/xbitmap.hxx
new file mode 100644
index 000000000000..f3b2d98c138d
--- /dev/null
+++ b/svx/inc/svx/xbitmap.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XBITMAP_HXX
+#define _SVX_XBITMAP_HXX
+
+#include <tools/color.hxx>
+#ifndef _BITMAP_HXX //autogen
+#include <vcl/bitmap.hxx>
+#endif
+#include <svtools/grfmgr.hxx>
+#include <svx/xenum.hxx>
+#include "svx/svxdllapi.h"
+
+//---------------
+// class XOBitmap
+//---------------
+
+#if defined HP9000 || defined SINIX
+static Size aXOBitmapDefaultSize( 8, 8 );
+#endif
+
+class SVX_DLLPUBLIC XOBitmap
+{
+protected:
+ XBitmapType eType;
+ XBitmapStyle eStyle;
+ GraphicObject aGraphicObject;
+ USHORT* pPixelArray;
+ Size aArraySize;
+ Color aPixelColor;
+ Color aBckgrColor;
+ BOOL bGraphicDirty;
+
+public:
+ XOBitmap();
+ XOBitmap( const GraphicObject& rGraphicObject, XBitmapStyle eStyle = XBITMAP_TILE );
+ XOBitmap( const Bitmap& rBitmap, XBitmapStyle eStyle = XBITMAP_TILE );
+#if defined HP9000 || defined SINIX
+ XOBitmap( const USHORT* pArray, const Color& aPixelColor,
+ const Color& aBckgrColor, const Size& rSize = aXOBitmapDefaultSize,
+ XBitmapStyle eStyle = XBITMAP_TILE );
+#else
+ XOBitmap( const USHORT* pArray, const Color& aPixelColor,
+ const Color& aBckgrColor, const Size& rSize = Size( 8, 8 ),
+ XBitmapStyle eStyle = XBITMAP_TILE );
+#endif
+ XOBitmap( const XOBitmap& rXBmp );
+ ~XOBitmap();
+
+ XOBitmap& operator=( const XOBitmap& rXOBitmap );
+ int operator==( const XOBitmap& rXOBitmap ) const;
+
+ void Bitmap2Array();
+ void Array2Bitmap();
+
+ void SetGraphicObject( const GraphicObject& rObj ) { aGraphicObject = rObj; bGraphicDirty = FALSE; }
+ void SetBitmap( const Bitmap& rBmp ) { aGraphicObject = GraphicObject( Graphic( rBmp ) ); bGraphicDirty = FALSE; }
+ void SetBitmapType( XBitmapType eNewType ) { eType = eNewType; }
+ void SetBitmapStyle( XBitmapStyle eNewStyle ) { eStyle = eNewStyle; }
+ void SetPixelArray( const USHORT* pArray );
+ void SetPixelSize( const Size& rSize ) { aArraySize = rSize; bGraphicDirty = TRUE; }
+ void SetPixelColor( const Color& rColor ) { aPixelColor = rColor; bGraphicDirty = TRUE; }
+ void SetBackgroundColor( const Color& rColor ) { aBckgrColor = rColor; bGraphicDirty = TRUE; }
+
+ XBitmapType GetBitmapType() const { return eType; }
+ XBitmapStyle GetBitmapStyle() const { return eStyle; }
+ const GraphicObject& GetGraphicObject() const;
+ Bitmap GetBitmap() const;
+ USHORT* GetPixelArray() const { return pPixelArray; }
+ Color GetPixelColor() const { return aPixelColor; }
+ Color GetBackgroundColor() const { return aBckgrColor; }
+};
+
+#endif
+
diff --git a/svx/inc/svx/xbtmpit.hxx b/svx/inc/svx/xbtmpit.hxx
new file mode 100644
index 000000000000..5b0a214b67ed
--- /dev/null
+++ b/svx/inc/svx/xbtmpit.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XBTMPIT_HXX
+#define _SVX_XBTMPIT_HXX
+
+#include "svx/svxdllapi.h"
+
+#include <svx/xbitmap.hxx>
+#include <svx/xit.hxx>
+
+class SdrModel;
+
+//----------------------
+// class XFillBitmapItem
+//----------------------
+class SVX_DLLPUBLIC XFillBitmapItem : public NameOrIndex
+{
+ XOBitmap aXOBitmap;
+
+public:
+ TYPEINFO();
+ XFillBitmapItem() : NameOrIndex(XATTR_FILLBITMAP, -1 ) {}
+ XFillBitmapItem( long nIndex, const XOBitmap& rTheBitmap );
+ XFillBitmapItem( const String& rName, const XOBitmap& rTheBitmap );
+ XFillBitmapItem( SfxItemPool* pPool, const XOBitmap& rTheBitmap );
+ XFillBitmapItem( SfxItemPool* pPool );
+ XFillBitmapItem( const XFillBitmapItem& rItem );
+ XFillBitmapItem( SvStream& rIn, USHORT nVer = 0 );
+
+ virtual int operator==( const SfxPoolItem& rItem ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream& rOut, USHORT nItemVersion ) const;
+ virtual USHORT GetVersion( USHORT nFileFormatVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ const XOBitmap& GetBitmapValue( const XBitmapTable* pTable = 0 ) const; // GetValue -> GetBitmapValue
+ void SetBitmapValue( const XOBitmap& rNew ) { aXOBitmap = rNew; Detach(); } // SetValue -> SetBitmapValue
+
+ static BOOL CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 );
+ XFillBitmapItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xcolit.hxx b/svx/inc/svx/xcolit.hxx
new file mode 100644
index 000000000000..d1827a37ad8c
--- /dev/null
+++ b/svx/inc/svx/xcolit.hxx
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XCOLORITEM_HXX
+#define _SVX_XCOLORITEM_HXX
+
+#include <tools/color.hxx>
+#include "svx/svxdllapi.h"
+
+#include <svx/xit.hxx>
+
+class XColorTable;
+
+//-----------------
+// class XColorItem
+//-----------------
+class SVX_DLLPUBLIC XColorItem : public NameOrIndex
+{
+ Color aColor;
+
+public:
+ TYPEINFO();
+ XColorItem() {}
+ XColorItem(USHORT nWhich, INT32 nIndex, const Color& rTheColor);
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ XColorItem(USHORT nWhich, const String& rName, const Color& rTheColor);
+ XColorItem(USHORT nWhich, SvStream& rIn);
+ XColorItem(const XColorItem& rItem);
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+
+ const Color& GetColorValue(const XColorTable* pTable = 0) const;
+ void SetColorValue(const Color& rNew) { aColor = rNew; Detach(); }
+};
+
+#endif
+
diff --git a/svx/inc/svx/xdash.hxx b/svx/inc/svx/xdash.hxx
new file mode 100644
index 000000000000..3005c2a1b752
--- /dev/null
+++ b/svx/inc/svx/xdash.hxx
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XDASH_HXX
+#define _SVX_XDASH_HXX
+
+//-------------
+// class XDash
+//-------------
+
+#include <svx/xenum.hxx>
+#include "svx/svxdllapi.h"
+
+#include <vector>
+
+class SVX_DLLPUBLIC XDash
+{
+protected:
+ XDashStyle eDash;
+ USHORT nDots;
+ ULONG nDotLen;
+ USHORT nDashes;
+ ULONG nDashLen;
+ ULONG nDistance;
+
+public:
+ XDash(XDashStyle eDash = XDASH_RECT,
+ USHORT nDots = 1, ULONG nDotLen = 20,
+ USHORT nDashes = 1, ULONG nDashLen = 20, ULONG nDistance = 20);
+
+ bool operator==(const XDash& rDash) const;
+
+ void SetDashStyle(XDashStyle eNewStyle) { eDash = eNewStyle; }
+ void SetDots(USHORT nNewDots) { nDots = nNewDots; }
+ void SetDotLen(ULONG nNewDotLen) { nDotLen = nNewDotLen; }
+ void SetDashes(USHORT nNewDashes) { nDashes = nNewDashes; }
+ void SetDashLen(ULONG nNewDashLen) { nDashLen = nNewDashLen; }
+ void SetDistance(ULONG nNewDistance) { nDistance = nNewDistance; }
+
+ XDashStyle GetDashStyle() const { return eDash; }
+ USHORT GetDots() const { return nDots; }
+ ULONG GetDotLen() const { return nDotLen; }
+ USHORT GetDashes() const { return nDashes; }
+ ULONG GetDashLen() const { return nDashLen; }
+ ULONG GetDistance() const { return nDistance; }
+
+ // XDash is translated into an array of doubles which describe the lengths of the
+ // dashes, dots and empty passages. It returns the complete length of the full DashDot
+ // sequence and fills the given vetor of doubles accordingly (also resizing, so deleting it).
+ double CreateDotDashArray(::std::vector< double >& rDotDashArray, double fLineWidth) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xdef.hxx b/svx/inc/svx/xdef.hxx
new file mode 100644
index 000000000000..963e4935c617
--- /dev/null
+++ b/svx/inc/svx/xdef.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _XDEF_HXX
+#define _XDEF_HXX
+
+/*************************************************************************
+|*
+|* Attribut einfuegen: Zeile kopieren, VOR welcher eingefuegt werden
+|* soll, Bezeichnung aendern und diese auch am Ende der darauffolgenden
+|* Zeile eintragen
+|*
+\************************************************************************/
+
+#define COL_DEFAULT_SHAPE_FILLING RGB_COLORDATA( 153, 204, 255 ) // blue 8
+
+#define XATTR_START 1000
+
+#define XATTR_LINE_FIRST XATTR_START /* V3: 1000 V2: 1000 */
+#define XATTR_LINESTYLE XATTR_LINE_FIRST
+#define XATTR_LINEDASH (XATTR_LINE_FIRST + 1) /* V3: 1001 V2: 1001 */
+#define XATTR_LINEWIDTH (XATTR_LINE_FIRST + 2) /* V3: 1002 V2: 1002 */
+#define XATTR_LINECOLOR (XATTR_LINE_FIRST + 3) /* V3: 1003 V2: 1003 */
+#define XATTR_LINESTART (XATTR_LINE_FIRST + 4) /* V3: 1004 V2: 1004 */
+#define XATTR_LINEEND (XATTR_LINE_FIRST + 5) /* V3: 1005 V2: 1005 */
+#define XATTR_LINESTARTWIDTH (XATTR_LINE_FIRST + 6) /* V3: 1006 V2: 1006 */
+#define XATTR_LINEENDWIDTH (XATTR_LINE_FIRST + 7) /* V3: 1007 V2: 1007 */
+#define XATTR_LINESTARTCENTER (XATTR_LINE_FIRST + 8) /* V3: 1008 V2: 1008 */
+#define XATTR_LINEENDCENTER (XATTR_LINE_FIRST + 9) /* V3: 1009 V2: 1009 */
+#define XATTR_LINETRANSPARENCE (XATTR_LINE_FIRST + 10) /* V3: 1010 V2: 1010 */
+#define XATTR_LINEJOINT (XATTR_LINE_FIRST + 11) /* V3: 1011 V2: 1011 */
+#define XATTR_LINE_LAST XATTR_LINEJOINT
+#define XATTRSET_LINE (XATTR_LINE_LAST + 1) /* V3: 1017 V2: 1017 */
+
+#define XATTR_FILL_FIRST (XATTRSET_LINE + 1) /* V3: 1018 V2: 1018 */
+#define XATTR_FILLSTYLE XATTR_FILL_FIRST
+#define XATTR_FILLCOLOR (XATTR_FILL_FIRST + 1) /* V3: 1019 V2: 1019 */
+#define XATTR_FILLGRADIENT (XATTR_FILL_FIRST + 2) /* V3: 1020 V2: 1020 */
+#define XATTR_FILLHATCH (XATTR_FILL_FIRST + 3) /* V3: 1021 V2: 1021 */
+#define XATTR_FILLBITMAP (XATTR_FILL_FIRST + 4) /* V3: 1022 V2: 1022 */
+#define XATTR_FILLTRANSPARENCE (XATTR_FILL_FIRST + 5) /* V3: 1023 V2: 1023 */
+#define XATTR_GRADIENTSTEPCOUNT (XATTR_FILL_FIRST + 6) /* V3: 1024 V2: 1024 */
+#define XATTR_FILLBMP_TILE (XATTR_FILL_FIRST + 7) /* V3: 1025 V2: 1025 */
+#define XATTR_FILLBMP_POS (XATTR_FILL_FIRST + 8) /* V3: 1026 V2: 1026 */
+#define XATTR_FILLBMP_SIZEX (XATTR_FILL_FIRST + 9) /* V3: 1027 V2: 1027 */
+#define XATTR_FILLBMP_SIZEY (XATTR_FILL_FIRST + 10) /* V3: 1028 V2: 1028 */
+#define XATTR_FILLFLOATTRANSPARENCE (XATTR_FILL_FIRST + 11) /* V3: 1029 V2: 1029 */
+#define XATTR_SECONDARYFILLCOLOR (XATTR_FILL_FIRST + 12) /* V3: 1030 */
+#define XATTR_FILLBMP_SIZELOG (XATTR_FILL_FIRST + 13) /* V3: 1031 */
+#define XATTR_FILLBMP_TILEOFFSETX (XATTR_FILL_FIRST + 14) /* V3: 1032 */
+#define XATTR_FILLBMP_TILEOFFSETY (XATTR_FILL_FIRST + 15) /* V3: 1033 */
+#define XATTR_FILLBMP_STRETCH (XATTR_FILL_FIRST + 16) /* V3: 1034 */
+#define XATTR_FILLBMP_POSOFFSETX (XATTR_FILL_FIRST + 17) /* V3: 1041 */
+#define XATTR_FILLBMP_POSOFFSETY (XATTR_FILL_FIRST + 18) /* V3: 1042 */
+#define XATTR_FILLBACKGROUND (XATTR_FILL_FIRST + 19) /* V3: 1043 */
+#define XATTR_FILL_LAST XATTR_FILLBACKGROUND
+#define XATTRSET_FILL (XATTR_FILL_LAST + 1) /* V3: 1047 V2: 1030 */
+
+#define XATTR_TEXT_FIRST (XATTRSET_FILL + 1)
+#define XATTR_FORMTXTSTYLE XATTR_TEXT_FIRST /* V3: 1048 V2: 1031 */
+#define XATTR_FORMTXTADJUST (XATTR_TEXT_FIRST + 1) /* V3: 1049 V2: 1032 */
+#define XATTR_FORMTXTDISTANCE (XATTR_TEXT_FIRST + 2) /* V3: 1050 V2: 1033 */
+#define XATTR_FORMTXTSTART (XATTR_TEXT_FIRST + 3) /* V3: 1051 V2: 1034 */
+#define XATTR_FORMTXTMIRROR (XATTR_TEXT_FIRST + 4) /* V3: 1052 V2: 1035 */
+#define XATTR_FORMTXTOUTLINE (XATTR_TEXT_FIRST + 5) /* V3: 1053 V2: 1036 */
+#define XATTR_FORMTXTSHADOW (XATTR_TEXT_FIRST + 6) /* V3: 1054 V2: 1037 */
+#define XATTR_FORMTXTSHDWCOLOR (XATTR_TEXT_FIRST + 7) /* V3: 1055 V2: 1038 */
+#define XATTR_FORMTXTSHDWXVAL (XATTR_TEXT_FIRST + 8) /* V3: 1056 V2: 1039 */
+#define XATTR_FORMTXTSHDWYVAL (XATTR_TEXT_FIRST + 9) /* V3: 1057 V2: 1040 */
+#define XATTR_FORMTXTSTDFORM (XATTR_TEXT_FIRST + 10) /* V3: 1058 V2: 1041 */
+#define XATTR_FORMTXTHIDEFORM (XATTR_TEXT_FIRST + 11) /* V3: 1059 V2: 1042 */
+#define XATTR_FORMTXTSHDWTRANSP (XATTR_TEXT_FIRST + 12) /* V3: 1060 V2: 1043 */
+#define XATTR_TEXT_LAST XATTR_FORMTXTSHDWTRANSP
+
+#define XATTR_END XATTR_TEXT_LAST
+
+#endif
diff --git a/svx/inc/svx/xenum.hxx b/svx/inc/svx/xenum.hxx
new file mode 100644
index 000000000000..e5b5d8adc5a8
--- /dev/null
+++ b/svx/inc/svx/xenum.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _XENUM_HXX
+#define _XENUM_HXX
+
+enum XLineStyle { XLINE_NONE, XLINE_SOLID, XLINE_DASH };
+enum XLineJoint
+{
+ XLINEJOINT_NONE, // no rounding
+ XLINEJOINT_MIDDLE, // calc middle value between joints
+ XLINEJOINT_BEVEL, // join edges with line
+ XLINEJOINT_MITER, // extend till cut
+ XLINEJOINT_ROUND // create arc
+};
+enum XDashStyle { XDASH_RECT, XDASH_ROUND, XDASH_RECTRELATIVE,
+ XDASH_ROUNDRELATIVE };
+enum XFillStyle { XFILL_NONE, XFILL_SOLID, XFILL_GRADIENT, XFILL_HATCH,
+ XFILL_BITMAP };
+enum XGradientStyle { XGRAD_LINEAR, XGRAD_AXIAL, XGRAD_RADIAL,
+ XGRAD_ELLIPTICAL, XGRAD_SQUARE, XGRAD_RECT };
+enum XHatchStyle { XHATCH_SINGLE, XHATCH_DOUBLE, XHATCH_TRIPLE };
+enum XFormTextStyle { XFT_ROTATE, XFT_UPRIGHT, XFT_SLANTX, XFT_SLANTY,
+ XFT_NONE };
+enum XFormTextAdjust { XFT_LEFT, XFT_RIGHT, XFT_AUTOSIZE, XFT_CENTER };
+enum XFormTextShadow { XFTSHADOW_NONE, XFTSHADOW_NORMAL, XFTSHADOW_SLANT};
+enum XFormTextStdForm { XFTFORM_NONE = 0, XFTFORM_TOPCIRC, XFTFORM_BOTCIRC,
+ XFTFORM_LFTCIRC, XFTFORM_RGTCIRC, XFTFORM_TOPARC,
+ XFTFORM_BOTARC, XFTFORM_LFTARC, XFTFORM_RGTARC,
+ XFTFORM_BUTTON1, XFTFORM_BUTTON2,
+ XFTFORM_BUTTON3, XFTFORM_BUTTON4};
+enum XBitmapStyle { XBITMAP_TILE, XBITMAP_STRETCH };
+enum XBitmapType { XBITMAP_IMPORT, XBITMAP_8X8, XBITMAP_NONE,
+ XBITMAP_16X16 };
+
+
+#endif // _XENUM_HXX
+
diff --git a/svx/inc/svx/xfillit.hxx b/svx/inc/svx/xfillit.hxx
new file mode 100644
index 000000000000..7556140bbbf6
--- /dev/null
+++ b/svx/inc/svx/xfillit.hxx
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FILLITEM_HXX
+#define _SVX_FILLITEM_HXX
+
+#ifndef _BITMAP_HXX //autogen
+#include <vcl/bitmap.hxx>
+#endif
+#include <svx/xcolit.hxx>
+#include <svx/xgrad.hxx>
+#include <svx/xhatch.hxx>
+#include <svx/xenum.hxx>
+#include <svl/eitem.hxx>
+
+#include <svx/xflclit.hxx>
+#include <svx/xsflclit.hxx>
+#include <svx/xflgrit.hxx>
+#include <svx/xflhtit.hxx>
+#include <svx/xbitmap.hxx>
+#include <svx/xbtmpit.hxx>
+#include <svx/xflftrit.hxx>
+
+class XGradient;
+class XOBitmap;
+
+#endif
diff --git a/svx/inc/svx/xfillit0.hxx b/svx/inc/svx/xfillit0.hxx
new file mode 100644
index 000000000000..40ddb71dd717
--- /dev/null
+++ b/svx/inc/svx/xfillit0.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_XFILLIT0_HXX
+#define SVX_XFILLIT0_HXX
+
+#include <svl/eitem.hxx>
+
+#include <svx/xdef.hxx>
+#include <svx/xenum.hxx>
+#include "svx/svxdllapi.h"
+
+//---------------------
+// class XFillStyleItem
+//---------------------
+
+class SVX_DLLPUBLIC XFillStyleItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XFillStyleItem(XFillStyle = XFILL_SOLID);
+ XFillStyleItem(SvStream& rIn);
+
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+ virtual USHORT GetValueCount() const;
+ XFillStyle GetValue() const { return (XFillStyle) SfxEnumItem::GetValue(); }
+};
+
+#endif
+
diff --git a/svx/inc/svx/xflasit.hxx b/svx/inc/svx/xflasit.hxx
new file mode 100644
index 000000000000..2c3df96a8ec2
--- /dev/null
+++ b/svx/inc/svx/xflasit.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLASIT_HXX
+#define _SVX_XFLASIT_HXX
+
+#include <svl/poolitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* SetItem mit dem ItemSet aller Fuellattribute
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillAttrSetItem : public SfxSetItem
+{
+public:
+ TYPEINFO();
+ XFillAttrSetItem(SfxItemSet* pItemSet );
+ XFillAttrSetItem(SfxItemPool* pItemPool);
+ XFillAttrSetItem(const XFillAttrSetItem& rAttr);
+ XFillAttrSetItem(const XFillAttrSetItem& rAttr,
+ SfxItemPool* pItemPool);
+ virtual SfxPoolItem* Clone( SfxItemPool* pToPool ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVersion ) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nItemVersion ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflbckit.hxx b/svx/inc/svx/xflbckit.hxx
new file mode 100644
index 000000000000..8d94d3ec23cd
--- /dev/null
+++ b/svx/inc/svx/xflbckit.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBCKIT_HXX
+#define _SVX_XFLBCKIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Item to enable background for filled objects
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBackgroundItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+
+ XFillBackgroundItem( BOOL bFill = FALSE );
+ SVX_DLLPRIVATE XFillBackgroundItem( SvStream& rIn );
+
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflbmpit.hxx b/svx/inc/svx/xflbmpit.hxx
new file mode 100644
index 000000000000..d06d0f6622e4
--- /dev/null
+++ b/svx/inc/svx/xflbmpit.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBMPIT_HXX
+#define _SVX_XFLBMPIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpPosItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XFillBmpPosItem( RECT_POINT eRP = RP_MM );
+ SVX_DLLPRIVATE XFillBmpPosItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ SVX_DLLPRIVATE virtual USHORT GetValueCount() const;
+ SVX_DLLPRIVATE RECT_POINT GetValue() const { return (RECT_POINT) SfxEnumItem::GetValue(); }
+};
+
+
+#endif
diff --git a/svx/inc/svx/xflbmsli.hxx b/svx/inc/svx/xflbmsli.hxx
new file mode 100644
index 000000000000..adf1c25ca109
--- /dev/null
+++ b/svx/inc/svx/xflbmsli.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBMSLI_HXX
+#define _SVX_XFLBMSLI_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpSizeLogItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XFillBmpSizeLogItem( BOOL bLog = TRUE );
+ SVX_DLLPRIVATE XFillBmpSizeLogItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflbmsxy.hxx b/svx/inc/svx/xflbmsxy.hxx
new file mode 100644
index 000000000000..d4de1a3d81c2
--- /dev/null
+++ b/svx/inc/svx/xflbmsxy.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBMSXY_HXX
+#define _SVX_XFLBMSXY_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpSizeXItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XFillBmpSizeXItem( long nSizeX = 0 );
+ SVX_DLLPRIVATE XFillBmpSizeXItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ // Dieses Item nimmt sowohl metrische als auch
+ // Prozentwerte ( sind negativ ) auf; das muessen
+ // wir hier beruecksichtigen
+ SVX_DLLPRIVATE virtual FASTBOOL HasMetrics() const;
+};
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpSizeYItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XFillBmpSizeYItem( long nSizeY = 0 );
+ SVX_DLLPRIVATE XFillBmpSizeYItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ // Dieses Item nimmt sowohl metrische als auch
+ // Prozentwerte ( sind negativ ) auf; das muessen
+ // wir hier beruecksichtigen
+ SVX_DLLPRIVATE virtual FASTBOOL HasMetrics() const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflbmtit.hxx b/svx/inc/svx/xflbmtit.hxx
new file mode 100644
index 000000000000..75477624e690
--- /dev/null
+++ b/svx/inc/svx/xflbmtit.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBMTIT_HXX
+#define _SVX_XFLBMTIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpTileItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XFillBmpTileItem( BOOL bTile = TRUE );
+ XFillBmpTileItem( SvStream& rIn );
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflboxy.hxx b/svx/inc/svx/xflboxy.hxx
new file mode 100644
index 000000000000..498704376eaf
--- /dev/null
+++ b/svx/inc/svx/xflboxy.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBOXY_HXX
+#define _SVX_XFLBOXY_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpPosOffsetXItem : public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XFillBmpPosOffsetXItem( USHORT nOffPosX = 0 );
+ SVX_DLLPRIVATE XFillBmpPosOffsetXItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpPosOffsetYItem : public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XFillBmpPosOffsetYItem( USHORT nOffPosY = 0 );
+ SVX_DLLPRIVATE XFillBmpPosOffsetYItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflbstit.hxx b/svx/inc/svx/xflbstit.hxx
new file mode 100644
index 000000000000..1f5c79df977b
--- /dev/null
+++ b/svx/inc/svx/xflbstit.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBSTIT_HXX
+#define _SVX_XFLBSTIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpStretchItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XFillBmpStretchItem( BOOL bStretch = TRUE );
+ XFillBmpStretchItem( SvStream& rIn );
+
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflbtoxy.hxx b/svx/inc/svx/xflbtoxy.hxx
new file mode 100644
index 000000000000..35d401eb9c6a
--- /dev/null
+++ b/svx/inc/svx/xflbtoxy.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLBTOXY_HXX
+#define _SVX_XFLBTOXY_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpTileOffsetXItem : public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XFillBmpTileOffsetXItem( USHORT nOffX = 0 );
+ SVX_DLLPRIVATE XFillBmpTileOffsetXItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+
+/*************************************************************************
+|*
+|*
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillBmpTileOffsetYItem : public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XFillBmpTileOffsetYItem( USHORT nOffX = 0 );
+ SVX_DLLPRIVATE XFillBmpTileOffsetYItem( SvStream& rIn );
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflclit.hxx b/svx/inc/svx/xflclit.hxx
new file mode 100644
index 000000000000..a3b03b48d30b
--- /dev/null
+++ b/svx/inc/svx/xflclit.hxx
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLCLIT_HXX
+#define _SVX_XFLCLIT_HXX
+
+#include <svx/xcolit.hxx>
+#include "svx/svxdllapi.h"
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// Fuellattribute
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+//---------------------
+// class XFillColorItem
+//---------------------
+class SVX_DLLPUBLIC XFillColorItem : public XColorItem
+{
+public:
+ TYPEINFO();
+ XFillColorItem() {}
+ XFillColorItem(INT32 nIndex, const Color& rTheColor);
+ XFillColorItem(const String& rName, const Color& rTheColor);
+ XFillColorItem(SvStream& rIn);
+
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xflftrit.hxx b/svx/inc/svx/xflftrit.hxx
new file mode 100644
index 000000000000..c501a153b66a
--- /dev/null
+++ b/svx/inc/svx/xflftrit.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLFTRIT_HXX
+#define _SVX_XFLFTRIT_HXX
+
+#include <svx/xflgrit.hxx>
+#include "svx/svxdllapi.h"
+
+//-----------------------------------
+// class XFillFloatTransparenceItem -
+//-----------------------------------
+
+class SVX_DLLPUBLIC XFillFloatTransparenceItem : public XFillGradientItem
+{
+private:
+
+ long nDummy1;
+ long nDummy2;
+ BOOL bEnabled;
+
+public:
+ TYPEINFO();
+
+ XFillFloatTransparenceItem();
+ XFillFloatTransparenceItem( INT32 nIndex, const XGradient& rGradient, BOOL bEnable = TRUE );
+ XFillFloatTransparenceItem(const String& rName, const XGradient& rGradient, BOOL bEnable = TRUE );
+ XFillFloatTransparenceItem(SfxItemPool* pPool, const XGradient& rTheGradient, BOOL bEnable = TRUE );
+ XFillFloatTransparenceItem(SfxItemPool* pPool );
+ XFillFloatTransparenceItem( const XFillFloatTransparenceItem& rItem );
+
+ virtual int operator==( const SfxPoolItem& rItem ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual USHORT GetVersion( USHORT nFileFormatVersion ) const;
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres, SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric, String &rText, const IntlWrapper * pIntlWrapper = 0 ) const;
+
+ BOOL IsEnabled() const { return bEnabled; }
+ void SetEnabled( BOOL bEnable ) { bEnabled = bEnable; }
+
+ static BOOL CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 );
+ XFillFloatTransparenceItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xflgrit.hxx b/svx/inc/svx/xflgrit.hxx
new file mode 100644
index 000000000000..4725a2d7383f
--- /dev/null
+++ b/svx/inc/svx/xflgrit.hxx
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLGRIT_HXX
+#define _SVX_XFLGRIT_HXX
+
+#include <svx/xit.hxx>
+#include <svx/xgrad.hxx>
+#include "svx/svxdllapi.h"
+
+class SdrModel;
+
+//------------------------
+// class XFillGradientItem
+//------------------------
+class SVX_DLLPUBLIC XFillGradientItem : public NameOrIndex
+{
+ XGradient aGradient;
+
+public:
+ TYPEINFO();
+ XFillGradientItem() : NameOrIndex(XATTR_FILLGRADIENT, -1) {}
+ XFillGradientItem(INT32 nIndex, const XGradient& rTheGradient);
+ XFillGradientItem(const UniString& rName, const XGradient& rTheGradient);
+ XFillGradientItem(SfxItemPool* pPool, const XGradient& rTheGradient);
+ XFillGradientItem(SfxItemPool* pPool );
+ XFillGradientItem(const XFillGradientItem& rItem);
+ XFillGradientItem(SvStream& rIn, USHORT nVer = 0);
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+ virtual USHORT GetVersion( USHORT nFileFormatVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+ const XGradient& GetGradientValue(const XGradientTable* pTable = 0) const; // GetValue -> GetGradientValue
+ void SetGradientValue(const XGradient& rNew) { aGradient = rNew; Detach(); } // SetValue -> SetGradientValue
+
+ static BOOL CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 );
+ XFillGradientItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xflhtit.hxx b/svx/inc/svx/xflhtit.hxx
new file mode 100644
index 000000000000..01dadc6405f9
--- /dev/null
+++ b/svx/inc/svx/xflhtit.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLHTIT_HXX
+#define _SVX_XFLHTIT_HXX
+
+#include <svx/xit.hxx>
+#include <svx/xhatch.hxx>
+#include "svx/svxdllapi.h"
+
+class SdrModel;
+
+//---------------------
+// class XFillHatchItem
+//---------------------
+class SVX_DLLPUBLIC XFillHatchItem : public NameOrIndex
+{
+ XHatch aHatch;
+
+public:
+ TYPEINFO();
+ XFillHatchItem() : NameOrIndex(XATTR_FILLHATCH, -1) {}
+ XFillHatchItem(INT32 nIndex, const XHatch& rTheHatch);
+ XFillHatchItem(const String& rName, const XHatch& rTheHatch);
+ XFillHatchItem(SfxItemPool* pPool, const XHatch& rTheHatch);
+ XFillHatchItem(SfxItemPool* pPool );
+ XFillHatchItem(const XFillHatchItem& rItem);
+ XFillHatchItem(SvStream& rIn);
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+ virtual FASTBOOL HasMetrics() const;
+ virtual FASTBOOL ScaleMetrics(long nMul, long nDiv);
+
+ const XHatch& GetHatchValue(const XHatchTable* pTable = 0) const; // GetValue -> GetHatchValue
+ void SetHatchValue(const XHatch& rNew) { aHatch = rNew; Detach(); } // SetValue -> SetHatchValue
+
+ static BOOL CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 );
+ XFillHatchItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xfltrit.hxx b/svx/inc/svx/xfltrit.hxx
new file mode 100644
index 000000000000..ee44a24e791c
--- /dev/null
+++ b/svx/inc/svx/xfltrit.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFLTRIT_HXX
+#define _SVX_XFLTRIT_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Transparenz-Item fuer Fuellungen (Solid)
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFillTransparenceItem: public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XFillTransparenceItem(USHORT nFillTransparence = 0);
+ XFillTransparenceItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xftadit.hxx b/svx/inc/svx/xftadit.hxx
new file mode 100644
index 000000000000..575121c5eaf1
--- /dev/null
+++ b/svx/inc/svx/xftadit.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTADIT_HXX
+#define _SVX_XFTADIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-AdjustItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextAdjustItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XFormTextAdjustItem(XFormTextAdjust = XFT_CENTER);
+ XFormTextAdjustItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const;
+ XFormTextAdjust GetValue() const { return (XFormTextAdjust) SfxEnumItem::GetValue(); }
+ // #FontWork#
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+#endif
diff --git a/svx/inc/svx/xftdiit.hxx b/svx/inc/svx/xftdiit.hxx
new file mode 100644
index 000000000000..a549c74648b5
--- /dev/null
+++ b/svx/inc/svx/xftdiit.hxx
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTDIIT_HXX
+#define _SVX_XFTDIIT_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-DistanceItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextDistanceItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XFormTextDistanceItem(long nDist = 0);
+ XFormTextDistanceItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xftmrit.hxx b/svx/inc/svx/xftmrit.hxx
new file mode 100644
index 000000000000..b920bc7fc8f0
--- /dev/null
+++ b/svx/inc/svx/xftmrit.hxx
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTMRIT_HXX
+#define _SVX_XFTMRIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-MirrorItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextMirrorItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XFormTextMirrorItem(BOOL bMirror = FALSE);
+ XFormTextMirrorItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xftouit.hxx b/svx/inc/svx/xftouit.hxx
new file mode 100644
index 000000000000..6a46c1f0cabf
--- /dev/null
+++ b/svx/inc/svx/xftouit.hxx
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTOUIT_HXX
+#define _SVX_XFTOUIT_HXX
+
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-OutlineItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextOutlineItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XFormTextOutlineItem(BOOL bOutline = FALSE);
+ XFormTextOutlineItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xftsfit.hxx b/svx/inc/svx/xftsfit.hxx
new file mode 100644
index 000000000000..40fc477a86bf
--- /dev/null
+++ b/svx/inc/svx/xftsfit.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTSFIT_HXX
+#define _SVX_XFTSFIT_HXX
+
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-StdFormItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextStdFormItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XFormTextStdFormItem(XFormTextStdForm = XFTFORM_NONE);
+ XFormTextStdFormItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const;
+ XFormTextStdForm GetValue() const { return (XFormTextStdForm) SfxEnumItem::GetValue(); }
+ // #FontWork#
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+#endif
+
diff --git a/svx/inc/svx/xftshcit.hxx b/svx/inc/svx/xftshcit.hxx
new file mode 100644
index 000000000000..bccac9df40bb
--- /dev/null
+++ b/svx/inc/svx/xftshcit.hxx
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTSHCLIT_HXX
+#define _SVX_XFTSHCLIT_HXX
+
+#include <svx/xcolit.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-ShadowColorItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextShadowColorItem : public XColorItem
+{
+public:
+ TYPEINFO();
+ XFormTextShadowColorItem() {}
+ XFormTextShadowColorItem(INT32 nIndex, const Color& rTheColor);
+ XFormTextShadowColorItem(const String& rName, const Color& rTheColor);
+ XFormTextShadowColorItem(SvStream& rIn);
+
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xftshit.hxx b/svx/inc/svx/xftshit.hxx
new file mode 100644
index 000000000000..a63aab17dbc2
--- /dev/null
+++ b/svx/inc/svx/xftshit.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTSHIT_HXX
+#define _SVX_XFTSHIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-ShadowItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextShadowItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XFormTextShadowItem(XFormTextShadow = XFTSHADOW_NONE);
+ XFormTextShadowItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const;
+ XFormTextShadow GetValue() const { return (XFormTextShadow) SfxEnumItem::GetValue(); }
+ // #FontWork#
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+#endif
+
diff --git a/svx/inc/svx/xftshtit.hxx b/svx/inc/svx/xftshtit.hxx
new file mode 100644
index 000000000000..97789eeed5f2
--- /dev/null
+++ b/svx/inc/svx/xftshtit.hxx
@@ -0,0 +1,49 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTSHTIT_HXX
+#define _SVX_XFTSHTIT_HXX
+
+#include <svl/intitem.hxx>
+
+/*************************************************************************
+|*
+|* FormText-Item fuer transparents Schatten
+|*
+\************************************************************************/
+
+class XFormTextShadowTranspItem: public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XFormTextShadowTranspItem(USHORT nShdwTransparence = 0);
+ XFormTextShadowTranspItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xftshxy.hxx b/svx/inc/svx/xftshxy.hxx
new file mode 100644
index 000000000000..a9918da33577
--- /dev/null
+++ b/svx/inc/svx/xftshxy.hxx
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTSHXY_HXX
+#define _SVX_XFTSHXY_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-ShadowXValItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextShadowXValItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XFormTextShadowXValItem(long nVal = 0);
+ XFormTextShadowXValItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+/*************************************************************************
+|*
+|* FormText-ShadowYValItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextShadowYValItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XFormTextShadowYValItem(long nVal = 0);
+ XFormTextShadowYValItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xftstit.hxx b/svx/inc/svx/xftstit.hxx
new file mode 100644
index 000000000000..78d3dac329c6
--- /dev/null
+++ b/svx/inc/svx/xftstit.hxx
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XFTSTIT_HXX
+#define _SVX_XFTSTIT_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-StartPositionItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextStartItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XFormTextStartItem(long nStart = 0);
+ XFormTextStartItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xgrad.hxx b/svx/inc/svx/xgrad.hxx
new file mode 100644
index 000000000000..b7bf350d3ddb
--- /dev/null
+++ b/svx/inc/svx/xgrad.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX__XGRADIENT_HXX
+#define _SVX__XGRADIENT_HXX
+
+#include <svx/xenum.hxx>
+#include <tools/color.hxx>
+#include "svx/svxdllapi.h"
+
+//-----------------
+// class XGradient
+//-----------------
+
+class SVX_DLLPUBLIC XGradient
+{
+protected:
+ XGradientStyle eStyle;
+ Color aStartColor;
+ Color aEndColor;
+ long nAngle;
+ USHORT nBorder;
+ USHORT nOfsX;
+ USHORT nOfsY;
+ USHORT nIntensStart;
+ USHORT nIntensEnd;
+ USHORT nStepCount;
+
+public:
+ XGradient();
+ XGradient( const Color& rStart, const Color& rEnd,
+ XGradientStyle eStyle = XGRAD_LINEAR, long nAngle = 0,
+ USHORT nXOfs = 50, USHORT nYOfs = 50, USHORT nBorder = 0,
+ USHORT nStartIntens = 100, USHORT nEndIntens = 100,
+ USHORT nSteps = 0 );
+
+ bool operator==(const XGradient& rGradient) const;
+
+ void SetGradientStyle(XGradientStyle eNewStyle) { eStyle = eNewStyle; }
+ void SetStartColor(const Color& rColor) { aStartColor = rColor; }
+ void SetEndColor(const Color& rColor) { aEndColor = rColor; }
+ void SetAngle(long nNewAngle) { nAngle = nNewAngle; }
+ void SetBorder(USHORT nNewBorder) { nBorder = nNewBorder; }
+ void SetXOffset(USHORT nNewOffset) { nOfsX = nNewOffset; }
+ void SetYOffset(USHORT nNewOffset) { nOfsY = nNewOffset; }
+ void SetStartIntens(USHORT nNewIntens) { nIntensStart = nNewIntens; }
+ void SetEndIntens(USHORT nNewIntens) { nIntensEnd = nNewIntens; }
+ void SetSteps(USHORT nSteps) { nStepCount = nSteps; }
+
+ XGradientStyle GetGradientStyle() const { return eStyle; }
+ Color GetStartColor() const { return aStartColor; }
+ Color GetEndColor() const { return aEndColor; }
+ long GetAngle() const { return nAngle; }
+ USHORT GetBorder() const { return nBorder; }
+ USHORT GetXOffset() const { return nOfsX; }
+ USHORT GetYOffset() const { return nOfsY; }
+ USHORT GetStartIntens() const { return nIntensStart; }
+ USHORT GetEndIntens() const { return nIntensEnd; }
+ USHORT GetSteps() const { return nStepCount; }
+};
+
+#endif
diff --git a/svx/inc/svx/xgrscit.hxx b/svx/inc/svx/xgrscit.hxx
new file mode 100644
index 000000000000..c08590d7840a
--- /dev/null
+++ b/svx/inc/svx/xgrscit.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XGRSCIT_HXX
+#define _SVX_XGRSCIT_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* GradientenSchritte-Item fuer Gradienten-Fuellungen
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XGradientStepCountItem: public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XGradientStepCountItem( USHORT nStepCount = 0 );
+ XGradientStepCountItem( SvStream& rIn );
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = NULL ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xhatch.hxx b/svx/inc/svx/xhatch.hxx
new file mode 100644
index 000000000000..731f8084f8a0
--- /dev/null
+++ b/svx/inc/svx/xhatch.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XHATCH_HXX
+#define _SVX_XHATCH_HXX
+
+#include <svx/xenum.hxx>
+#include <tools/color.hxx>
+#include "svx/svxdllapi.h"
+
+//--------------
+// class XHatch
+//--------------
+
+class SVX_DLLPUBLIC XHatch
+{
+protected:
+ XHatchStyle eStyle;
+ Color aColor;
+ long nDistance;
+ long nAngle;
+
+public:
+ XHatch() : eStyle(XHATCH_SINGLE), nDistance(0), nAngle(0) {}
+ XHatch(const Color& rCol, XHatchStyle eStyle = XHATCH_SINGLE,
+ long nDistance = 20, long nAngle = 0);
+
+ bool operator==(const XHatch& rHatch) const;
+
+ void SetHatchStyle(XHatchStyle eNewStyle) { eStyle = eNewStyle; }
+ void SetColor(const Color& rColor) { aColor = rColor; }
+ void SetDistance(long nNewDistance) { nDistance = nNewDistance; }
+ void SetAngle(long nNewAngle) { nAngle = nNewAngle; }
+
+ XHatchStyle GetHatchStyle() const { return eStyle; }
+ Color GetColor() const { return aColor; }
+ long GetDistance() const { return nDistance; }
+ long GetAngle() const { return nAngle; }
+};
+
+#endif
diff --git a/svx/inc/svx/xit.hxx b/svx/inc/svx/xit.hxx
new file mode 100644
index 000000000000..6f82da63e0b9
--- /dev/null
+++ b/svx/inc/svx/xit.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XIT_HXX
+#define _SVX_XIT_HXX
+
+#include <svl/stritem.hxx>
+#include <svx/xdef.hxx>
+#include "svx/svxdllapi.h"
+
+/************************************************************************/
+
+class XColorTable;
+class XDashTable;
+class XLineEndTable;
+class XHatchTable;
+class XBitmapTable;
+class XGradientTable;
+class SfxItemPool;
+class NameOrIndex;
+class XPropertyList;
+
+typedef BOOL (*SvxCompareValueFunc)( const NameOrIndex* p1, const NameOrIndex* p2 );
+
+//-------------------
+// class NameOrIndex
+//-------------------
+class SVX_DLLPUBLIC NameOrIndex : public SfxStringItem
+{
+ INT32 nPalIndex;
+
+protected:
+ void Detach() { nPalIndex = -1; }
+
+public:
+ TYPEINFO();
+ NameOrIndex() { nPalIndex = -1; }
+ NameOrIndex(USHORT nWhich, INT32 nIndex);
+ NameOrIndex(USHORT nWhich,
+ const String& rName= String());
+ NameOrIndex(USHORT nWhich, SvStream& rIn);
+ NameOrIndex(const NameOrIndex& rNameOrIndex);
+ ~NameOrIndex() {};
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+
+ String GetName() const { return GetValue(); }
+ void SetName(const String& rName) { SetValue(rName); }
+ INT32 GetIndex() const { return nPalIndex; }
+ void SetIndex(INT32 nIndex) { nPalIndex = nIndex; }
+ BOOL IsIndex() const { return (nPalIndex >= 0); }
+
+ /** this static checks if the given NameOrIndex item has a unique name for its value.
+ The returned String is a unique name for an item with this value in both given pools.
+ Argument pPool2 can be null.
+ If returned string equals NameOrIndex->GetName(), the name was already unique.
+ */
+ static String CheckNamedItem( const NameOrIndex* pCheckItem, const sal_uInt16 nWhich, const SfxItemPool* pPool1, const SfxItemPool* pPool2, SvxCompareValueFunc pCompareValueFunc, USHORT nPrefixResId, XPropertyList* pDefaults = NULL );
+};
+
+#endif
diff --git a/svx/inc/svx/xlineit.hxx b/svx/inc/svx/xlineit.hxx
new file mode 100644
index 000000000000..ac70a901d4fb
--- /dev/null
+++ b/svx/inc/svx/xlineit.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLINIIT_HXX
+#define _SVX_XLINIIT_HXX
+
+#include <svx/xit.hxx>
+#include <svx/xcolit.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xenum.hxx>
+#include <svl/metitem.hxx>
+#include <svl/eitem.hxx>
+
+class XDash;
+class XDashTable;
+class SvStream;
+
+#include <svx/xdash.hxx>
+#include <svx/xlndsit.hxx>
+#include <svx/xlnwtit.hxx>
+#include <svx/xlnclit.hxx>
+#include <svx/xlnstit.hxx>
+#include <svx/xlnedit.hxx>
+#include <svx/xlnstwit.hxx>
+#include <svx/xlnedwit.hxx>
+#include <svx/xlnstcit.hxx>
+#include <svx/xlnedcit.hxx>
+
+#endif
+
diff --git a/svx/inc/svx/xlineit0.hxx b/svx/inc/svx/xlineit0.hxx
new file mode 100644
index 000000000000..e21b45d426dd
--- /dev/null
+++ b/svx/inc/svx/xlineit0.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLINEIT0_HXX
+#define _SVX_XLINEIT0_HXX
+
+#include <svx/xenum.hxx>
+#include <svl/eitem.hxx>
+//---------------------
+// class LineStyleItem
+//---------------------
+#include "svx/svxdllapi.h"
+
+class SVX_DLLPUBLIC XLineStyleItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XLineStyleItem(XLineStyle = XLINE_SOLID);
+ XLineStyleItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+ virtual USHORT GetValueCount() const;
+ XLineStyle GetValue() const { return (XLineStyle) SfxEnumItem::GetValue(); }
+};
+
+#endif
+
diff --git a/svx/inc/svx/xlinjoit.hxx b/svx/inc/svx/xlinjoit.hxx
new file mode 100644
index 000000000000..ced38d815614
--- /dev/null
+++ b/svx/inc/svx/xlinjoit.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLINJOIT_HXX
+#define _SVX_XLINJOIT_HXX
+
+#include <svl/eitem.hxx>
+#include <svx/xenum.hxx>
+#include "svx/svxdllapi.h"
+
+//---------------------
+// class LineStyleItem
+//---------------------
+
+class SVX_DLLPUBLIC XLineJointItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XLineJointItem( XLineJoint eLineJoint = XLINEJOINT_ROUND );
+ XLineJointItem( SvStream& rIn );
+
+ virtual USHORT GetVersion( USHORT nFileFormatVersion ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rIn, USHORT nVer ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric, SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ virtual USHORT GetValueCount() const;
+ XLineJoint GetValue() const { return (XLineJoint) SfxEnumItem::GetValue(); }
+};
+
+#endif // _SVX_XLINJOIT_HXX
diff --git a/svx/inc/svx/xlnasit.hxx b/svx/inc/svx/xlnasit.hxx
new file mode 100644
index 000000000000..d2eb6594c585
--- /dev/null
+++ b/svx/inc/svx/xlnasit.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNASIT_HXX
+#define _SVX_XLNASIT_HXX
+
+
+#include <svl/poolitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* SetItem mit dem ItemSet aller Linienattribute
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XLineAttrSetItem : public SfxSetItem
+{
+public:
+ TYPEINFO();
+ XLineAttrSetItem(SfxItemSet* pItemSet );
+ XLineAttrSetItem(SfxItemPool* pItemPool);
+ XLineAttrSetItem(const XLineAttrSetItem& rAttr);
+ XLineAttrSetItem(const XLineAttrSetItem& rAttr,
+ SfxItemPool* pItemPool);
+ virtual SfxPoolItem* Clone( SfxItemPool* pToPool ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVersion ) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nItemVersion ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xlnclit.hxx b/svx/inc/svx/xlnclit.hxx
new file mode 100644
index 000000000000..71af958c588b
--- /dev/null
+++ b/svx/inc/svx/xlnclit.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNCLIT_HXX
+#define _SVX_XLNCLIT_HXX
+
+#include <svx/xcolit.hxx>
+#include "svx/svxdllapi.h"
+
+//---------------------
+// class XLineColorItem
+//---------------------
+class SVX_DLLPUBLIC XLineColorItem : public XColorItem
+{
+public:
+ TYPEINFO();
+ XLineColorItem() {}
+ XLineColorItem(INT32 nIndex, const Color& rTheColor);
+ XLineColorItem(const String& rName, const Color& rTheColor);
+ XLineColorItem(SvStream& rIn);
+
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xlndsit.hxx b/svx/inc/svx/xlndsit.hxx
new file mode 100644
index 000000000000..70f8e33aac83
--- /dev/null
+++ b/svx/inc/svx/xlndsit.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNDSIT_HXX
+#define _SVX_XLNDSIT_HXX
+
+#include <svx/xit.hxx>
+
+#ifndef _SVX_XLINIIT_HXX //autogen
+#include <svx/xdash.hxx>
+#endif
+#include "svx/svxdllapi.h"
+
+class SdrModel;
+
+//--------------------
+// class XLineDashItem
+//--------------------
+class SVX_DLLPUBLIC XLineDashItem : public NameOrIndex
+{
+ XDash aDash;
+
+public:
+ TYPEINFO();
+ XLineDashItem() : NameOrIndex(XATTR_LINEDASH, -1) {}
+ XLineDashItem(INT32 nIndex, const XDash& rTheDash);
+ XLineDashItem(const String& rName, const XDash& rTheDash);
+ XLineDashItem(SfxItemPool* pPool, const XDash& rTheDash);
+ XLineDashItem(SfxItemPool* pPool );
+ XLineDashItem(const XLineDashItem& rItem);
+ XLineDashItem(SvStream& rIn);
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+ virtual FASTBOOL HasMetrics() const;
+ virtual FASTBOOL ScaleMetrics(long nMul, long nDiv);
+
+ const XDash& GetDashValue(const XDashTable* pTable = 0) const; // GetValue -> GetDashValue
+ void SetDashValue(const XDash& rNew) { aDash = rNew; Detach(); } // SetValue -> SetDashValue
+
+ static BOOL CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 );
+ XLineDashItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xlnedcit.hxx b/svx/inc/svx/xlnedcit.hxx
new file mode 100644
index 000000000000..c40253a2f4a5
--- /dev/null
+++ b/svx/inc/svx/xlnedcit.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNEDCIT_HXX
+#define _SVX_XLNEDCIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+//----------------------------
+// class XLineEndCenterItem
+//----------------------------
+class SVX_DLLPUBLIC XLineEndCenterItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XLineEndCenterItem(BOOL bEndCenter = FALSE);
+ XLineEndCenterItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xlnedit.hxx b/svx/inc/svx/xlnedit.hxx
new file mode 100644
index 000000000000..99609e6e55df
--- /dev/null
+++ b/svx/inc/svx/xlnedit.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNEDIT_HXX
+#define _SVX_XLNEDIT_HXX
+
+#include <svx/xit.hxx>
+#include "svx/svxdllapi.h"
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+class SdrModel;
+
+//----------------------
+// class XLineEndItem
+//----------------------
+class SVX_DLLPUBLIC XLineEndItem : public NameOrIndex
+{
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+public:
+ TYPEINFO();
+ XLineEndItem(INT32 nIndex = -1);
+ XLineEndItem(const String& rName, const basegfx::B2DPolyPolygon& rPolyPolygon);
+ XLineEndItem(SfxItemPool* pPool, const basegfx::B2DPolyPolygon& rPolyPolygon);
+ XLineEndItem(SfxItemPool* pPool );
+ XLineEndItem(const XLineEndItem& rItem);
+ XLineEndItem(SvStream& rIn);
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ basegfx::B2DPolyPolygon GetLineEndValue(const XLineEndTable* pTable = 0) const;
+ void SetLineEndValue(const basegfx::B2DPolyPolygon& rPolyPolygon) { maPolyPolygon = rPolyPolygon; Detach(); }
+
+ XLineEndItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xlnedwit.hxx b/svx/inc/svx/xlnedwit.hxx
new file mode 100644
index 000000000000..1ca29d361178
--- /dev/null
+++ b/svx/inc/svx/xlnedwit.hxx
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNEDWIT_HXX
+#define _SVX_XLNEDWIT_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+#define LINE_END_WIDTH_DEFAULT (200)
+
+//---------------------------
+// class XLineEndWidthItem
+//---------------------------
+
+class SVX_DLLPUBLIC XLineEndWidthItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XLineEndWidthItem(long nWidth = LINE_END_WIDTH_DEFAULT);
+ XLineEndWidthItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xlnstcit.hxx b/svx/inc/svx/xlnstcit.hxx
new file mode 100644
index 000000000000..df544c9b0d8e
--- /dev/null
+++ b/svx/inc/svx/xlnstcit.hxx
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNSTCIT_HXX
+#define _SVX_XLNSTCIT_HXX
+
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+//------------------------------
+// class XLineStartCenterItem
+//------------------------------
+class SVX_DLLPUBLIC XLineStartCenterItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XLineStartCenterItem(BOOL bStartCenter = FALSE);
+ XLineStartCenterItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
+
diff --git a/svx/inc/svx/xlnstit.hxx b/svx/inc/svx/xlnstit.hxx
new file mode 100644
index 000000000000..f360dd3205e4
--- /dev/null
+++ b/svx/inc/svx/xlnstit.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNSTIT_HXX
+#define _SVX_XLNSTIT_HXX
+
+#include <svx/xit.hxx>
+#include "svx/svxdllapi.h"
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+class SdrModel;
+
+//------------------------
+// class XLineStartItem
+//------------------------
+class SVX_DLLPUBLIC XLineStartItem : public NameOrIndex
+{
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+public:
+ TYPEINFO();
+ XLineStartItem(INT32 nIndex = -1);
+ XLineStartItem(const String& rName, const basegfx::B2DPolyPolygon& rPolyPolygon);
+ XLineStartItem(SfxItemPool* pPool, const basegfx::B2DPolyPolygon& rPolyPolygon);
+ XLineStartItem(SfxItemPool* pPool );
+ XLineStartItem(const XLineStartItem& rItem);
+ XLineStartItem(SvStream& rIn);
+
+ virtual int operator==(const SfxPoolItem& rItem) const;
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SvStream& Store(SvStream& rOut, USHORT nItemVersion ) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ basegfx::B2DPolyPolygon GetLineStartValue(const XLineEndTable* pTable = 0) const;
+ void SetLineStartValue(const basegfx::B2DPolyPolygon& rPolyPolygon) { maPolyPolygon = rPolyPolygon; Detach(); }
+
+ XLineStartItem* checkForUniqueItem( SdrModel* pModel ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xlnstwit.hxx b/svx/inc/svx/xlnstwit.hxx
new file mode 100644
index 000000000000..86b5aa579325
--- /dev/null
+++ b/svx/inc/svx/xlnstwit.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNSTWIT_HXX
+#define _SVX_XLNSTWIT_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+#define LINE_START_WIDTH_DEFAULT (200)
+
+//-----------------------------
+// class XLineStartWidthItem
+//-----------------------------
+class SVX_DLLPUBLIC XLineStartWidthItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XLineStartWidthItem(long nWidth = LINE_START_WIDTH_DEFAULT);
+ XLineStartWidthItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+};
+
+#endif
diff --git a/svx/inc/svx/xlntrit.hxx b/svx/inc/svx/xlntrit.hxx
new file mode 100644
index 000000000000..a79a1c0daba2
--- /dev/null
+++ b/svx/inc/svx/xlntrit.hxx
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNTRIT_HXX
+#define _SVX_XLNTRIT_HXX
+
+#include <svl/intitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Transparenz-Item fuer Linien
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XLineTransparenceItem: public SfxUInt16Item
+{
+public:
+ TYPEINFO();
+ XLineTransparenceItem(USHORT nLineTransparence = 0);
+ XLineTransparenceItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = NULL) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xlnwtit.hxx b/svx/inc/svx/xlnwtit.hxx
new file mode 100644
index 000000000000..4649a515c69a
--- /dev/null
+++ b/svx/inc/svx/xlnwtit.hxx
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XLNWTIT_HXX
+#define _SVX_XLNWTIT_HXX
+
+#include <svl/metitem.hxx>
+#include "svx/svxdllapi.h"
+
+//---------------------
+// class XLineWidthItem
+//---------------------
+class SVX_DLLPUBLIC XLineWidthItem : public SfxMetricItem
+{
+public:
+ TYPEINFO();
+ XLineWidthItem(long nWidth = 0);
+ XLineWidthItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+};
+
+#endif
diff --git a/svx/inc/svx/xpoly.hxx b/svx/inc/svx/xpoly.hxx
new file mode 100644
index 000000000000..409d957cae84
--- /dev/null
+++ b/svx/inc/svx/xpoly.hxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _XPOLY_HXX
+#define _XPOLY_HXX
+
+// include ---------------------------------------------------------------
+
+#include <tools/solar.h>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include "svx/svxdllapi.h"
+
+class Point;
+class Rectangle;
+class SvStream;
+class Polygon;
+class PolyPolygon;
+class OutputDevice;
+
+/************************************************************************/
+
+#define XPOLYPOLY_APPEND 0xFFFF
+#define XPOLY_APPEND 0xFFFF
+
+#ifdef WIN // Windows 16 Bit
+#define XPOLY_MAXPOINTS 8160 /* =0xFF00/sizeof(Point), also mit etwas Platz! */
+#else
+#define XPOLY_MAXPOINTS 0xFFF0 /* Auch fuer die 32-Bitter etwas Luft lassen */
+#endif
+
+/************************************************************************/
+// Punktstile im XPolygon:
+// NORMAL : Anfangs- oder Endpunkt einer Kurve oder Linie
+// SMOOTH : Glatter Uebergang zwischen Kurven
+// SYMMTR : glatter und symmetrischer Uebergang zwischen Kurven
+// CONTROL: Kontrollpunkt einer Bezierkurve
+
+enum XPolyFlags { XPOLY_NORMAL, XPOLY_SMOOTH, XPOLY_CONTROL, XPOLY_SYMMTR };
+
+
+/*************************************************************************
+|*
+|* Klasse XPolygon; hat neben dem Point-Array noch ein Array mit Flags,
+|* die Informationen ueber den jeweiligen Punkt enthalten
+|*
+\************************************************************************/
+
+class ImpXPolygon;
+
+class SVX_DLLPUBLIC XPolygon
+{
+protected:
+ ImpXPolygon* pImpXPolygon;
+
+ // ImpXPolygon-ReferenceCount pruefen und ggf. abkoppeln
+ void CheckReference();
+
+ // Hilfsfunktionen fuer Bezierkonvertierung
+ void SubdivideBezier(USHORT nPos, BOOL bCalcFirst, double fT);
+ void GenBezArc(const Point& rCenter, long nRx, long nRy,
+ long nXHdl, long nYHdl, USHORT nStart, USHORT nEnd,
+ USHORT nQuad, USHORT nFirst);
+ BOOL CheckAngles(USHORT& nStart, USHORT nEnd, USHORT& nA1, USHORT& nA2);
+
+public:
+ XPolygon( USHORT nSize=16, USHORT nResize=16 );
+ XPolygon( const XPolygon& rXPoly );
+ XPolygon( const Polygon& rPoly );
+ XPolygon( const Rectangle& rRect, long nRx = 0, long nRy = 0 );
+ XPolygon( const Point& rCenter, long nRx, long nRy,
+ USHORT nStartAngle = 0, USHORT nEndAngle = 3600,
+ BOOL bClose = TRUE );
+
+ ~XPolygon();
+
+ void SetSize( USHORT nSize );
+ USHORT GetSize() const;
+
+ void SetPointCount( USHORT nPoints );
+ USHORT GetPointCount() const;
+
+ void Insert( USHORT nPos, const Point& rPt, XPolyFlags eFlags );
+ void Insert( USHORT nPos, const XPolygon& rXPoly );
+ void Insert( USHORT nPos, const Polygon& rPoly );
+ void Remove( USHORT nPos, USHORT nCount );
+ void Move( long nHorzMove, long nVertMove );
+ Rectangle GetBoundRect() const;
+
+ const Point& operator[]( USHORT nPos ) const;
+ Point& operator[]( USHORT nPos );
+ XPolygon& operator=( const XPolygon& rXPoly );
+ BOOL operator==( const XPolygon& rXPoly ) const;
+ BOOL operator!=( const XPolygon& rXPoly ) const;
+
+ XPolyFlags GetFlags( USHORT nPos ) const;
+ void SetFlags( USHORT nPos, XPolyFlags eFlags );
+ BOOL IsControl(USHORT nPos) const;
+ BOOL IsSmooth(USHORT nPos) const;
+
+ // Abstand zwischen zwei Punkten
+ double CalcDistance(USHORT nP1, USHORT nP2);
+
+ // Bezierkonvertierungen
+ void CalcSmoothJoin(USHORT nCenter, USHORT nDrag, USHORT nPnt);
+ void CalcTangent(USHORT nCenter, USHORT nPrev, USHORT nNext);
+ void PointsToBezier(USHORT nFirst);
+
+ // Transformationen
+ void Translate(const Point& rTrans);
+ void Rotate(const Point& rCenter, double fSin, double fCos);
+ void Rotate(const Point& rCenter, USHORT nAngle);
+ void Scale(double fSx, double fSy);
+ void SlantX(long nYRef, double fSin, double fCos);
+ void SlantY(long nXRef, double fSin, double fCos);
+ void Distort(const Rectangle& rRefRect, const XPolygon& rDistortedRect);
+ void Rotate20 ();
+
+ // #116512# convert to basegfx::B2DPolygon and return
+ basegfx::B2DPolygon getB2DPolygon() const;
+
+ // #116512# constructor to convert from basegfx::B2DPolygon
+ // #i76339# made explicit
+ explicit XPolygon(const basegfx::B2DPolygon& rPolygon);
+};
+
+/*************************************************************************
+|*
+|* Klasse XPolyPolygon; wie PolyPolygon, nur statt aus Polygonen aus
+|* XPolygonen bestehend
+|*
+\************************************************************************/
+
+class ImpXPolyPolygon;
+
+class SVX_DLLPUBLIC XPolyPolygon
+{
+protected:
+ ImpXPolyPolygon* pImpXPolyPolygon;
+
+ // ImpXPolyPolygon-ReferenceCount pruefen und ggf. abkoppeln
+ void CheckReference();
+
+public:
+ XPolyPolygon( USHORT nInitSize = 16, USHORT nResize = 16 );
+ XPolyPolygon( const XPolygon& rXPoly );
+ XPolyPolygon( const XPolyPolygon& rXPolyPoly );
+ XPolyPolygon( const PolyPolygon& rPolyPoly);
+
+ ~XPolyPolygon();
+
+ void Insert( const XPolygon& rXPoly,
+ USHORT nPos = XPOLYPOLY_APPEND );
+ void Insert( const XPolyPolygon& rXPoly,
+ USHORT nPos=XPOLYPOLY_APPEND );
+ XPolygon Remove( USHORT nPos );
+ XPolygon Replace( const XPolygon& rXPoly, USHORT nPos );
+ const XPolygon& GetObject( USHORT nPos ) const;
+
+ void Clear();
+ USHORT Count() const;
+
+ void Move( long nHorzMove, long nVertMove );
+ Rectangle GetBoundRect() const;
+
+ const XPolygon& operator[]( USHORT nPos ) const
+ { return GetObject( nPos ); }
+ XPolygon& operator[]( USHORT nPos );
+
+ XPolyPolygon& operator=( const XPolyPolygon& rXPolyPoly );
+ BOOL operator==( const XPolyPolygon& rXPolyPoly ) const;
+ BOOL operator!=( const XPolyPolygon& rXPolyPoly ) const;
+
+ // Transformationen
+ void Translate(const Point& rTrans);
+ void Rotate(const Point& rCenter, double fSin, double fCos);
+ void Rotate(const Point& rCenter, USHORT nAngle);
+ void Scale(double fSx, double fSy);
+ void SlantX(long nYRef, double fSin, double fCos);
+ void SlantY(long nXRef, double fSin, double fCos);
+ void Distort(const Rectangle& rRefRect, const XPolygon& rDistortedRect);
+ void Rotate20 ();
+
+ // #116512# convert to basegfx::B2DPolyPolygon and return
+ basegfx::B2DPolyPolygon getB2DPolyPolygon() const;
+
+ // #116512# constructor to convert from basegfx::B2DPolyPolygon
+ // #i76339# made explicit
+ explicit XPolyPolygon(const basegfx::B2DPolyPolygon& rPolyPolygon);
+};
+
+#endif // _XPOLY_HXX
+
+// eof
diff --git a/svx/inc/svx/xpool.hxx b/svx/inc/svx/xpool.hxx
new file mode 100644
index 000000000000..1834eff0d5bb
--- /dev/null
+++ b/svx/inc/svx/xpool.hxx
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _XPOOL_HXX
+#define _XPOOL_HXX
+
+#include <svl/itempool.hxx>
+#include <svx/xdef.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* Klassendeklaration
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XOutdevItemPool : public SfxItemPool
+{
+protected:
+ SfxPoolItem** mppLocalPoolDefaults;
+ SfxItemInfo* mpLocalItemInfos;
+
+public:
+ XOutdevItemPool(
+ SfxItemPool* pMaster = 0L,
+ sal_uInt16 nAttrStart = XATTR_START,
+ sal_uInt16 nAttrEnd = XATTR_END,
+ sal_Bool bLoadRefCounts = sal_True);
+ XOutdevItemPool(const XOutdevItemPool& rPool);
+
+ virtual SfxItemPool* Clone() const;
+protected:
+ virtual ~XOutdevItemPool();
+};
+
+#endif // _XPOOL_HXX
diff --git a/svx/inc/svx/xsetit.hxx b/svx/inc/svx/xsetit.hxx
new file mode 100644
index 000000000000..f8405490bac9
--- /dev/null
+++ b/svx/inc/svx/xsetit.hxx
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XSETITEM_HXX
+#define _SVX_XSETITEM_HXX
+
+#ifndef _XATTR_HXX
+#include <svx/xit.hxx>
+#endif
+#include <svl/metitem.hxx>
+#include <svl/eitem.hxx>
+#include <svx/rectenum.hxx>
+
+#include <svx/xlnasit.hxx>
+#include <svx/xflasit.hxx>
+#include <svx/xlntrit.hxx>
+#include <svx/xfltrit.hxx>
+#include <svx/xftshtit.hxx>
+#include <svx/xgrscit.hxx>
+#include <svx/xflbmtit.hxx>
+#include <svx/xflbmpit.hxx>
+#include <svx/xflbmsxy.hxx>
+#include <svx/xflbmsli.hxx>
+#include <svx/xflbtoxy.hxx>
+#include <svx/xflbstit.hxx>
+#include <svx/xflboxy.hxx>
+#include <svx/xflbckit.hxx>
+
+#endif
diff --git a/svx/inc/svx/xsflclit.hxx b/svx/inc/svx/xsflclit.hxx
new file mode 100644
index 000000000000..1c8b33cc278d
--- /dev/null
+++ b/svx/inc/svx/xsflclit.hxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XSFLCLIT_HXX
+#define _SVX_XSFLCLIT_HXX
+
+#include <svx/xcolit.hxx>
+
+//------------------------------
+// class XSecondaryFillColorItem
+//------------------------------
+class SVX_DLLPUBLIC XSecondaryFillColorItem : public XColorItem
+{
+public:
+ TYPEINFO();
+ SVX_DLLPRIVATE XSecondaryFillColorItem() {}
+ SVX_DLLPRIVATE XSecondaryFillColorItem(INT32 nIndex, const Color& rTheColor);
+ XSecondaryFillColorItem(const String& rName, const Color& rTheColor);
+ SVX_DLLPRIVATE XSecondaryFillColorItem(SvStream& rIn);
+
+ SVX_DLLPRIVATE virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ SVX_DLLPRIVATE virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+
+ SVX_DLLPRIVATE virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText, const IntlWrapper * = 0 ) const;
+
+ SVX_DLLPRIVATE virtual USHORT GetVersion( USHORT nFileFormatVersion ) const;
+
+};
+
+#endif
+
diff --git a/svx/inc/svx/xtable.hxx b/svx/inc/svx/xtable.hxx
new file mode 100644
index 000000000000..7ef8e659b08f
--- /dev/null
+++ b/svx/inc/svx/xtable.hxx
@@ -0,0 +1,653 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _XTABLE_HXX
+#define _XTABLE_HXX
+
+// include ---------------------------------------------------------------
+
+#include <svx/xpoly.hxx>
+#include <svx/xdash.hxx>
+#include <svx/xhatch.hxx>
+#include <svx/xgrad.hxx>
+#include <svx/xbitmap.hxx>
+#include <svx/xflasit.hxx>
+#include <svx/xlnasit.hxx>
+
+#ifndef _SV_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+#include <tools/string.hxx>
+
+#ifndef _TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+#include "svx/svxdllapi.h"
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+class Color;
+class Bitmap;
+class VirtualDevice;
+class XOutdevItemPool;
+
+// Breite und Hoehe der LB-Bitmaps
+#define BITMAP_WIDTH 32
+#define BITMAP_HEIGHT 12
+
+// Standard-Vergleichsstring
+extern sal_Unicode __FAR_DATA pszStandard[]; // "standard"
+
+// Funktion zum Konvertieren in echte RGB-Farben, da mit
+// enum COL_NAME nicht verglichen werden kann.
+SVX_DLLPUBLIC Color RGB_Color( ColorData nColorName );
+
+// ---------------------
+// class XPropertyEntry
+// ---------------------
+
+class XPropertyEntry
+{
+protected:
+ String aName;
+
+ XPropertyEntry(const String& rName) : aName(rName) {}
+ XPropertyEntry(const XPropertyEntry& rOther): aName(rOther.aName) {}
+public:
+
+ virtual ~XPropertyEntry() {}
+ void SetName(const String& rName) { aName = rName; }
+ String& GetName() { return aName; }
+};
+
+// ------------------
+// class XColorEntry
+// ------------------
+
+class XColorEntry : public XPropertyEntry
+{
+ Color aColor;
+
+public:
+ XColorEntry(const Color& rColor, const String& rName) :
+ XPropertyEntry(rName), aColor(rColor) {}
+ XColorEntry(const XColorEntry& rOther) :
+ XPropertyEntry(rOther), aColor(rOther.aColor) {}
+
+ void SetColor(const Color& rColor) { aColor = rColor; }
+ Color& GetColor() { return aColor; }
+};
+
+// --------------------
+// class XLineEndEntry
+// --------------------
+
+class XLineEndEntry : public XPropertyEntry
+{
+ basegfx::B2DPolyPolygon aB2DPolyPolygon;
+
+public:
+ XLineEndEntry(const basegfx::B2DPolyPolygon& rB2DPolyPolygon, const String& rName)
+ : XPropertyEntry(rName),
+ aB2DPolyPolygon(rB2DPolyPolygon)
+ {}
+
+ XLineEndEntry(const XLineEndEntry& rOther)
+ : XPropertyEntry(rOther),
+ aB2DPolyPolygon(rOther.aB2DPolyPolygon)
+ {}
+
+ void SetLineEnd(const basegfx::B2DPolyPolygon& rB2DPolyPolygon)
+ {
+ aB2DPolyPolygon = rB2DPolyPolygon;
+ }
+
+ basegfx::B2DPolyPolygon& GetLineEnd()
+ {
+ return aB2DPolyPolygon;
+ }
+};
+
+// ------------------
+// class XDashEntry
+// ------------------
+
+class XDashEntry : public XPropertyEntry
+{
+ XDash aDash;
+
+public:
+ XDashEntry(const XDash& rDash, const String& rName) :
+ XPropertyEntry(rName), aDash(rDash) {}
+ XDashEntry(const XDashEntry& rOther) :
+ XPropertyEntry(rOther), aDash(rOther.aDash) {}
+
+ void SetDash(const XDash& rDash) { aDash = rDash; }
+ XDash& GetDash() { return aDash; }
+};
+
+// ------------------
+// class XHatchEntry
+// ------------------
+
+class XHatchEntry : public XPropertyEntry
+{
+ XHatch aHatch;
+
+public:
+ XHatchEntry(const XHatch& rHatch, const String& rName) :
+ XPropertyEntry(rName), aHatch(rHatch) {}
+ XHatchEntry(const XHatchEntry& rOther) :
+ XPropertyEntry(rOther), aHatch(rOther.aHatch) {}
+
+ void SetHatch(const XHatch& rHatch) { aHatch = rHatch; }
+ XHatch& GetHatch() { return aHatch; }
+};
+
+// ---------------------
+// class XGradientEntry
+// ---------------------
+
+class XGradientEntry : public XPropertyEntry
+{
+ XGradient aGradient;
+
+public:
+ XGradientEntry(const XGradient& rGradient, const String& rName):
+ XPropertyEntry(rName), aGradient(rGradient) {}
+ XGradientEntry(const XGradientEntry& rOther) :
+ XPropertyEntry(rOther), aGradient(rOther.aGradient) {}
+
+ void SetGradient(const XGradient& rGrad) { aGradient = rGrad; }
+ XGradient& GetGradient() { return aGradient; }
+};
+
+// ---------------------
+// class XBitmapEntry
+// ---------------------
+
+class XBitmapEntry : public XPropertyEntry
+{
+ XOBitmap aXOBitmap;
+
+public:
+ XBitmapEntry( const XOBitmap& rXOBitmap, const String& rName ):
+ XPropertyEntry( rName ), aXOBitmap( rXOBitmap ) {}
+ XBitmapEntry( const XBitmapEntry& rOther ) :
+ XPropertyEntry( rOther ), aXOBitmap( rOther.aXOBitmap ) {}
+
+ void SetXBitmap(const XOBitmap& rXOBitmap) { aXOBitmap = rXOBitmap; }
+ XOBitmap& GetXBitmap() { return aXOBitmap; }
+};
+
+// ---------------------
+// class XPropertyTable
+// ---------------------
+
+class SVX_DLLPUBLIC XPropertyTable
+{
+protected:
+ String aName; // nicht persistent !
+ String aPath;
+ XOutdevItemPool* pXPool;
+
+ Table aTable;
+ Table* pBmpTable;
+
+ BOOL bTableDirty;
+ BOOL bBitmapsDirty;
+ BOOL bOwnPool;
+
+ XPropertyTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ XPropertyTable( SvStream& rIn );
+ void Clear();
+
+public:
+ virtual ~XPropertyTable();
+
+ long Count() const;
+
+ BOOL Insert(long nIndex, XPropertyEntry* pEntry);
+ XPropertyEntry* Replace(long nIndex, XPropertyEntry* pEntry);
+ XPropertyEntry* Remove(long nIndex, USHORT nDummy);
+ XPropertyEntry* Get( long nIndex, USHORT nDummy ) const;
+
+ long Get(const String& rName);
+ Bitmap* GetBitmap( long nIndex ) const;
+
+ const String& GetName() const { return aName; }
+ void SetName( const String& rString );
+ const String& GetPath() const { return aPath; }
+ void SetPath( const String& rString ) { aPath = rString; }
+ BOOL IsDirty() const { return bTableDirty && bBitmapsDirty; }
+ void SetDirty( BOOL bDirty = TRUE )
+ { bTableDirty = bDirty; bBitmapsDirty = bDirty; }
+
+ virtual BOOL Load() = 0;
+ virtual BOOL Save() = 0;
+ virtual BOOL Create() = 0;
+ virtual BOOL CreateBitmapsForUI() = 0;
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ) = 0;
+};
+
+// --------------------
+// class XPropertyList
+// --------------------
+
+class SVX_DLLPUBLIC XPropertyList
+{
+protected:
+ String aName; // nicht persistent !
+ String aPath;
+ XOutdevItemPool* pXPool;
+
+ List aList;
+ List* pBmpList;
+
+ BOOL bListDirty;
+ BOOL bBitmapsDirty;
+ BOOL bOwnPool;
+
+ XPropertyList( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ XPropertyList( SvStream& rIn );
+ void Clear();
+
+public:
+ virtual ~XPropertyList();
+
+ long Count() const;
+
+ void Insert( XPropertyEntry* pEntry, long nIndex = LIST_APPEND );
+ XPropertyEntry* Replace( XPropertyEntry* pEntry, long nIndex );
+ XPropertyEntry* Remove( long nIndex, USHORT nDummy );
+ XPropertyEntry* Get( long nIndex, USHORT nDummy ) const;
+
+ long Get(const String& rName);
+ Bitmap* GetBitmap( long nIndex ) const;
+
+ const String& GetName() const { return aName; }
+ void SetName( const String& rString );
+ const String& GetPath() const { return aPath; }
+ void SetPath( const String& rString ) { aPath = rString; }
+ BOOL IsDirty() const { return bListDirty && bBitmapsDirty; }
+ void SetDirty( BOOL bDirty = TRUE )
+ { bListDirty = bDirty; bBitmapsDirty = bDirty; }
+
+ virtual BOOL Load() = 0;
+ virtual BOOL Save() = 0;
+ virtual BOOL Create() = 0;
+ virtual BOOL CreateBitmapsForUI() = 0;
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ) = 0;
+};
+
+// ------------------
+// class XColorTable
+// ------------------
+
+class SVX_DLLPUBLIC XColorTable : public XPropertyTable
+{
+public:
+ XColorTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XColorTable();
+
+ using XPropertyTable::Replace;
+ XColorEntry* Replace(long nIndex, XColorEntry* pEntry );
+ using XPropertyTable::Remove;
+ XColorEntry* Remove(long nIndex);
+ using XPropertyTable::Get;
+ XColorEntry* GetColor(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+
+ static XColorTable* GetStdColorTable();
+};
+
+// -------------------
+// class XColorList
+// -------------------
+
+class XColorList : public XPropertyList
+{
+public:
+ XColorList( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XColorList();
+
+ using XPropertyList::Replace;
+ XColorEntry* Replace(XColorEntry* pEntry, long nIndex );
+ using XPropertyList::Remove;
+ XColorEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XColorEntry* GetColor(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+// --------------------
+// class XLineEndTable
+// --------------------
+
+class XLineEndTable : public XPropertyTable
+{
+public:
+ XLineEndTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XLineEndTable();
+
+ using XPropertyTable::Replace;
+ XLineEndEntry* Replace(long nIndex, XLineEndEntry* pEntry );
+ using XPropertyTable::Remove;
+ XLineEndEntry* Remove(long nIndex);
+ using XPropertyTable::Get;
+ XLineEndEntry* GetLineEnd(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+// -------------------
+// class XLineEndList
+// -------------------
+class impXLineEndList;
+
+class SVX_DLLPUBLIC XLineEndList : public XPropertyList
+{
+private:
+ impXLineEndList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ XLineEndList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16);
+ virtual ~XLineEndList();
+
+ using XPropertyList::Replace;
+ XLineEndEntry* Replace(XLineEndEntry* pEntry, long nIndex);
+ using XPropertyList::Remove;
+ XLineEndEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XLineEndEntry* GetLineEnd(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE);
+};
+
+// --------------------
+// class XDashTable
+// --------------------
+
+class XDashTable : public XPropertyTable
+{
+public:
+ XDashTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XDashTable();
+
+ using XPropertyTable::Replace;
+ XDashEntry* Replace(long nIndex, XDashEntry* pEntry );
+ using XPropertyTable::Remove;
+ XDashEntry* Remove(long nIndex);
+ using XPropertyTable::Get;
+ XDashEntry* GetDash(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+// -------------------
+// class XDashList
+// -------------------
+class impXDashList;
+
+class SVX_DLLPUBLIC XDashList : public XPropertyList
+{
+private:
+ impXDashList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ XDashList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16);
+ virtual ~XDashList();
+
+ using XPropertyList::Replace;
+ XDashEntry* Replace(XDashEntry* pEntry, long nIndex);
+ using XPropertyList::Remove;
+ XDashEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XDashEntry* GetDash(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE);
+};
+
+// --------------------
+// class XHatchTable
+// --------------------
+
+class XHatchTable : public XPropertyTable
+{
+public:
+ XHatchTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XHatchTable();
+
+ using XPropertyTable::Replace;
+ XHatchEntry* Replace(long nIndex, XHatchEntry* pEntry );
+ using XPropertyTable::Remove;
+ XHatchEntry* Remove(long nIndex);
+ using XPropertyTable::Get;
+ XHatchEntry* GetHatch(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+// -------------------
+// class XHatchList
+// -------------------
+class impXHatchList;
+
+class SVX_DLLPUBLIC XHatchList : public XPropertyList
+{
+private:
+ impXHatchList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ XHatchList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16);
+ ~XHatchList();
+
+ using XPropertyList::Replace;
+ XHatchEntry* Replace(XHatchEntry* pEntry, long nIndex);
+ using XPropertyList::Remove;
+ XHatchEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XHatchEntry* GetHatch(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE);
+};
+
+// ---------------------
+// class XGradientTable
+// ---------------------
+
+class XGradientTable : public XPropertyTable
+{
+public:
+ XGradientTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XGradientTable();
+
+ using XPropertyTable::Replace;
+ XGradientEntry* Replace(long nIndex, XGradientEntry* pEntry );
+ using XPropertyTable::Remove;
+ XGradientEntry* Remove(long nIndex);
+ using XPropertyTable::Get;
+ XGradientEntry* GetGradient(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+// -------------------
+// class XGradientList
+// -------------------
+class impXGradientList;
+
+class SVX_DLLPUBLIC XGradientList : public XPropertyList
+{
+private:
+ impXGradientList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ XGradientList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16);
+ virtual ~XGradientList();
+
+ using XPropertyList::Replace;
+ XGradientEntry* Replace(XGradientEntry* pEntry, long nIndex);
+ using XPropertyList::Remove;
+ XGradientEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XGradientEntry* GetGradient(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE);
+};
+
+// ---------------------
+// class XBitmapTable
+// ---------------------
+
+class XBitmapTable : public XPropertyTable
+{
+public:
+ XBitmapTable( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XBitmapTable();
+
+ using XPropertyTable::Replace;
+ XBitmapEntry* Replace(long nIndex, XBitmapEntry* pEntry );
+ using XPropertyTable::Remove;
+ XBitmapEntry* Remove(long nIndex);
+ using XPropertyTable::Get;
+ XBitmapEntry* GetBitmap(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+// -------------------
+// class XBitmapList
+// -------------------
+
+class SVX_DLLPUBLIC XBitmapList : public XPropertyList
+{
+public:
+ XBitmapList( const String& rPath,
+ XOutdevItemPool* pXPool = NULL,
+ USHORT nInitSize = 16,
+ USHORT nReSize = 16 );
+ virtual ~XBitmapList();
+
+ using XPropertyList::Replace;
+ XBitmapEntry* Replace(XBitmapEntry* pEntry, long nIndex );
+ using XPropertyList::Remove;
+ XBitmapEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XBitmapEntry* GetBitmap(long nIndex) const;
+
+ virtual BOOL Load();
+ virtual BOOL Save();
+ virtual BOOL Create();
+ virtual BOOL CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE );
+};
+
+#endif // _XTABLE_HXX
diff --git a/svx/inc/svx/xtextit.hxx b/svx/inc/svx/xtextit.hxx
new file mode 100644
index 000000000000..0d4630b2a0a2
--- /dev/null
+++ b/svx/inc/svx/xtextit.hxx
@@ -0,0 +1,48 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_XTEXTITEM_HXX
+#define _SVX_XTEXTITEM_HXX
+
+#include <svx/xenum.hxx>
+#include <svl/metitem.hxx>
+#include <svl/eitem.hxx>
+#include <svx/xit.hxx>
+#include <svx/xcolit.hxx>
+
+#include <svx/xftadit.hxx>
+#include <svx/xftdiit.hxx>
+#include <svx/xftstit.hxx>
+#include <svx/xftmrit.hxx>
+#include <svx/xftouit.hxx>
+#include <svx/xftshit.hxx>
+#include <svx/xftshcit.hxx>
+#include <svx/xftshxy.hxx>
+#include <svx/xftsfit.hxx>
+
+#endif
+
diff --git a/svx/inc/svx/xtextit0.hxx b/svx/inc/svx/xtextit0.hxx
new file mode 100644
index 000000000000..dc7013853de4
--- /dev/null
+++ b/svx/inc/svx/xtextit0.hxx
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVX_TEXTIT0_HXX
+#define _SVX_TEXTIT0_HXX
+
+#include <svx/xenum.hxx>
+#include <svl/eitem.hxx>
+#include "svx/svxdllapi.h"
+
+/*************************************************************************
+|*
+|* FormText-StyleItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextStyleItem : public SfxEnumItem
+{
+public:
+ TYPEINFO();
+ XFormTextStyleItem(XFormTextStyle = XFT_NONE);
+ XFormTextStyleItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+ virtual USHORT GetValueCount() const;
+ XFormTextStyle GetValue() const { return (XFormTextStyle) SfxEnumItem::GetValue(); }
+ // #FontWork#
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+/*************************************************************************
+|*
+|* FormText-HideFormItem
+|*
+\************************************************************************/
+
+class SVX_DLLPUBLIC XFormTextHideFormItem : public SfxBoolItem
+{
+public:
+ TYPEINFO();
+ XFormTextHideFormItem(BOOL bHide = FALSE);
+ XFormTextHideFormItem(SvStream& rIn);
+ virtual SfxPoolItem* Clone(SfxItemPool* pPool = 0) const;
+ virtual SfxPoolItem* Create(SvStream& rIn, USHORT nVer) const;
+};
+
+#endif
diff --git a/svx/inc/svx/zoomitem.hxx b/svx/inc/svx/zoomitem.hxx
new file mode 100644
index 000000000000..a1a0eeebffbe
--- /dev/null
+++ b/svx/inc/svx/zoomitem.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_ZOOMITEM_HXX
+#define _SVX_ZOOMITEM_HXX
+
+#include <svl/intitem.hxx>
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include "svx/svxdllapi.h"
+
+//-------------------------------------------------------------------------
+
+enum SvxZoomType
+{
+ SVX_ZOOM_PERCENT, // GetValue() ist kein besonderer prozentualer Wert
+ SVX_ZOOM_OPTIMAL, // GetValue() entspricht der optimalen Gr"o\se
+ SVX_ZOOM_WHOLEPAGE, // GetValue() entspricht der ganzen Seite
+ SVX_ZOOM_PAGEWIDTH, // GetValue() entspricht der Seitenbreite
+ SVX_ZOOM_PAGEWIDTH_NOBORDER // GetValue() pagewidth without border
+};
+
+//-------------------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxZoomItem: public SfxUInt16Item
+{
+ USHORT nValueSet; // erlaubte Werte (siehe #defines unten)
+ SvxZoomType eType;
+
+public:
+ TYPEINFO();
+
+ SvxZoomItem( SvxZoomType eZoomType = SVX_ZOOM_PERCENT,
+ USHORT nVal = 0, USHORT nWhich = SID_ATTR_ZOOM );
+ SvxZoomItem( const SvxZoomItem& );
+ ~SvxZoomItem();
+
+ void SetValueSet( USHORT nValues ) { nValueSet = nValues; }
+ USHORT GetValueSet() const { return nValueSet; }
+ FASTBOOL IsValueAllowed( USHORT nValue ) const
+ { return nValue == ( nValue & nValueSet ); }
+
+ SvxZoomType GetType() const { return eType; }
+ void SetType( SvxZoomType eNewType )
+ { eType = eNewType; }
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStrm, USHORT nVersion ) const;
+ virtual SvStream& Store( SvStream& rStrm , USHORT nItemVersion ) const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+//------------------------------------------------------------------------
+
+#define SVX_ZOOM_ENABLE_50 0x0001
+#define SVX_ZOOM_ENABLE_75 0x0002
+#define SVX_ZOOM_ENABLE_100 0x0004
+#define SVX_ZOOM_ENABLE_150 0x0008
+#define SVX_ZOOM_ENABLE_200 0x0010
+#define SVX_ZOOM_ENABLE_OPTIMAL 0x1000
+#define SVX_ZOOM_ENABLE_WHOLEPAGE 0x2000
+#define SVX_ZOOM_ENABLE_PAGEWIDTH 0x4000
+#define SVX_ZOOM_ENABLE_ALL 0x701F
+
+#endif
diff --git a/svx/inc/svx/zoomsliderctrl.hxx b/svx/inc/svx/zoomsliderctrl.hxx
new file mode 100644
index 000000000000..eef8ec40ccac
--- /dev/null
+++ b/svx/inc/svx/zoomsliderctrl.hxx
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _ZOOMSLIDER_STBCONTRL_HXX
+#define _ZOOMSLIDER_STBCONTRL_HXX
+
+// include ---------------------------------------------------------------
+
+#include <sfx2/stbitem.hxx>
+#include "svx/svxdllapi.h"
+
+// class SvxZoomSliderControl ----------------------------------------
+
+class SVX_DLLPUBLIC SvxZoomSliderControl : public SfxStatusBarControl
+{
+private:
+
+ struct SvxZoomSliderControl_Impl;
+ SvxZoomSliderControl_Impl* mpImpl;
+
+ USHORT Offset2Zoom( long nOffset ) const;
+ long Zoom2Offset( USHORT nZoom ) const;
+
+public:
+
+ SFX_DECL_STATUSBAR_CONTROL();
+
+ SvxZoomSliderControl( USHORT _nSlotId, USHORT _nId, StatusBar& _rStb );
+ ~SvxZoomSliderControl();
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState );
+ virtual void Paint( const UserDrawEvent& rEvt );
+ virtual BOOL MouseButtonDown( const MouseEvent & );
+ virtual BOOL MouseMove( const MouseEvent & rEvt );
+};
+
+#endif
+
diff --git a/svx/inc/svx/zoomslideritem.hxx b/svx/inc/svx/zoomslideritem.hxx
new file mode 100644
index 000000000000..163e1c8ec155
--- /dev/null
+++ b/svx/inc/svx/zoomslideritem.hxx
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SVX_ZOOMSLIDERITEM_HXX
+#define _SVX_ZOOMSLIDERITEM_HXX
+
+#include <svl/intitem.hxx>
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include <com/sun/star/uno/Sequence.hxx>
+#include "svx/svxdllapi.h"
+
+//-------------------------------------------------------------------------
+
+class SVX_DLLPUBLIC SvxZoomSliderItem: public SfxUInt16Item
+{
+ com::sun::star::uno::Sequence < sal_Int32 > maValues;
+ USHORT mnMinZoom;
+ USHORT mnMaxZoom;
+
+public:
+ TYPEINFO();
+
+ SvxZoomSliderItem( USHORT nCurrentZoom = 100, USHORT nMinZoom = 20, USHORT nMaxZoom = 600, USHORT nWhich = SID_ATTR_ZOOMSLIDER );
+ SvxZoomSliderItem( const SvxZoomSliderItem& );
+ ~SvxZoomSliderItem();
+
+ void AddSnappingPoint( sal_Int32 nNew );
+ const com::sun::star::uno::Sequence < sal_Int32 >& GetSnappingPoints() const;
+ USHORT GetMinZoom() const {return mnMinZoom;}
+ USHORT GetMaxZoom() const {return mnMaxZoom;}
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStrm, USHORT nVersion ) const; // leer
+ virtual SvStream& Store( SvStream& rStrm , USHORT nItemVersion ) const; // leer
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const; // leer
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ); // leer
+};
+
+//------------------------------------------------------------------------
+
+#endif