summaryrefslogtreecommitdiffstats
path: root/svx/README
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:51:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 16:51:28 +0000
commit940b4d1848e8c70ab7642901a68594e8016caffc (patch)
treeeb72f344ee6c3d9b80a7ecc079ea79e9fba8676d /svx/README
parentInitial commit. (diff)
downloadlibreoffice-upstream.tar.xz
libreoffice-upstream.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 '')
-rw-r--r--svx/README101
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)