diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 16:51:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 16:51:28 +0000 |
commit | 940b4d1848e8c70ab7642901a68594e8016caffc (patch) | |
tree | eb72f344ee6c3d9b80a7ecc079ea79e9fba8676d /svx/README | |
parent | Initial commit. (diff) | |
download | libreoffice-940b4d1848e8c70ab7642901a68594e8016caffc.tar.xz libreoffice-940b4d1848e8c70ab7642901a68594e8016caffc.zip |
Adding upstream version 1:7.0.4.upstream/1%7.0.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'svx/README')
-rw-r--r-- | svx/README | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/svx/README b/svx/README new file mode 100644 index 000000000..30e946547 --- /dev/null +++ b/svx/README @@ -0,0 +1,101 @@ +Contains graphics related helper code. Lots of the draw and impress code is in this shared library. + +xoutdev +this is where a lot of wht work would happen to move to the canvas. (what does that mean?) + +svdraw +transparent gradient stuff. [seriously? surely much more, too] + +== SdrObject == + +The shapes you can see in LibreOffice (like rectangle, etc.) are SdrObjects. +They are declared as a hierarchy: + +SdrObject <- SdrAttrObj <- E3dObject <- E3dCompoundObject <- E3dCubeObj + ^ ^ ^ ^ ^ | | ^ ^ + | | | | | | | | +--- E3dExtrudeObj + | | | | | | | +----- E3dLatheObj + | | | | | | +------- E3dPolygonObj + | | | | | +--------- E3dSphereObj + | | | | +--- E3dScene... + | | | | + | | | +--- SdrTextObj <- SdrObjCustomShape... + | | | ^ ^ ^ ^ ^ + | | | | | | | +--- SdrEdgeObj... + | | | | | | +----- SdrMeasureObj... + | | | | | +------- SdrPathObj... + | | | | +--------- SdrRectObj... + | | | +----------- SdrTableObj... + | | +--- SdrObjGroup... + | + ---- SdrPageObj... + +------- SdrVirtObj... + +The above is incomplete of course. + +== SdrModel / SdrView == + +Copied from svdview.hxx: + + First of all the app creates a SdrModel. + Then it opens a Win and creates a SdrView. + ShowSdrPage() announces a page at SdrView. + It's possible to show SdrView in any Wins at once. + + SdrView can show as many Wins as it wants at once. Pages are announced + or checked out with the help of ShowSdrPage()/HideSdrPage(). For every announced + page there is a SdrPageView instance in container aPages. If more than one page + is showed, you have to pay attention that the offset parameter of ShowSdrPage() + is conformed to the size of the page (to prevent overlapping of two pages). + +SdrView itself is inherited from many objects in a chain of inheritance (all +that starts with SdrPaintView - that is itself inherited from few classes +too): + +SdrPaintView <- SdrSnapView <- SdrMarkView <- SdrEditView <- SdrPolyEditView + ^ + +----------------------------------------------------------------+ + | + SdrGlueEditView <- SdrObjEditView <- SdrExchangeView <- SdrDragView + ^ + +----------------------------------------------------------------+ + | + SdrCreateView <- SdrView + +From SdrView on, it is not flat, but a real hierarchy again. + +== Drawing Layer / SdrObject(s) == + +See drawinglayer/README for general information about drawinglayer. + +Below is the class diagram that comes from +http://www.openoffice.org/marketing/ooocon2006/presentations/wednesday_g11.odp, +slide number 6. + +.------- Model --------------. .------- View -----------------------------------------. +| SdrObject - ViewContact | 1..* | ViewObjectContact | +| getChild() |------| getPrimitiveList() -----> Object(s) ---> SdrView | +| getVOC() | | getRecPrimitiveList() Contact | +| getViewInd... | |________|_____________________________________________| +| ...ependentPrimitiveList() | | +|____________________________| generates + | ______ + V / | + .----------------------. | + | basePrimitive | | + | getRange() |<---' + | getDecomposition() | + |______________________| + +For SdrObjects, there are own DrawingLayer primitives in +svx/source/sdr/primitive2d + +The ViewContact / ViewObject / ViewObjectContact are in svx/source/sdr/contact +Decomposes the SdrObjects, and does all sort of operations on them. + +If the number of visualizable objects (e.g. SdrObjects) is X, and the number of +SdrViews is Y, then: + +- there are X ViewContact instances (1:1 relation with a visualizable object) +- there are Y ObjectContact instances (1:1 relation with an SdrView) +- there are X*Y ViewObjecContact instances (1:N relation to both + visualizable objects and SdrViews) |