From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- svx/README.md | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 svx/README.md (limited to 'svx/README.md') diff --git a/svx/README.md b/svx/README.md new file mode 100644 index 000000000..dc4345ad6 --- /dev/null +++ b/svx/README.md @@ -0,0 +1,105 @@ +# Graphics Related Helper Code + +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.md` for general information about drawinglayer. + +Below is the class diagram that comes from + +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` `ViewObjectContact` instances (1:N relation to both + visualizable objects and `SdrView`s) -- cgit v1.2.3