#ifndef com_sun_star_chart2_XPlotter_idl #define com_sun_star_chart2_XPlotter_idl #ifndef __com_sun_star_uno_XInterface_idl__ #include #endif #ifndef __com_sun_star_drawing_XShapes_idl__ #include #endif #ifndef _com_sun_star_drawing_XShapeGrouper_idl_ #include #endif #ifndef _com_sun_star_lang_xmultiservicefactory_idl_ #include #endif #ifndef com_sun_star_chart2_CoordinateSystemTypeID_idl #include #endif #ifndef com_sun_star_chart2_ScaleData_idl #include #endif #ifndef com_sun_star_chart2_XTransformation_idl #include #endif //============================================================================= module com { module sun { module star { module chart2 { //============================================================================= /** The main task of a Plotter is to create grafic objects which have a certain logic place within a coordinate system. For example the bars of a barchart are such grafic objects. The created grafic objects need to be of type com::sun::star::drawing::Shape.

Within the chart application we differentiatebetween two 'types' of shapes which can be created by a Plotter. The first type are shapes which are completely defined by coordinates in the logic coordinate system and will be positioned within this logic coordinate system. Those shapes are called 'logic shapes' or 'logically placed shapes'. For example a rectangle of a bar chart is a 'logic shape'.

The second type of shapes are those who can not or should not be placed in the logic coordinate system. For example consider a three dimensional bar chart with text labels for each data point. You probably would not like to place the text shapes as three dimensional objects within the logic coordinate system, rather you would like to position the texts as two dimensional objects on the two dimensional final page. Those shapes are called 'illogic shapes' in contrast to 'logic shapes'. 'Illogic shapes' are always two dimensional and placed on the documents page.

For each type of shapes the Plotter gets one Target where it can add or remove shapes.

A Plotter is not allowed to set the property 'Transformation' on a shape as this will be done elsewhere.

*/ //@ todo ? should this be a XComponent? interface XPlotter : ::com::sun::star::uno::XInterface { //------------------------------------------------------------------------- /** Each Plotter implicit uses a certain type of logic coordinate system for interpreting data as coordinates. For example a bar-chart uses a cartesian coordinate system for interpreting x- and y-values from a spreadsheet as cartesian coordinates. In contrast the pie chart assumes a polar coordinate system. The type of this implicit used source coordinate system has to be returned here. The returned type of an implementation never changes. */ CoordinateSystemTypeID getCoordinateSystemTypeID(); //------------------------------------------------------------------------- /** For each type of shapes ('logic' or 'illogic') there exists one container. The Plotter will create shapes and then add (or remove) them from these containers.

The lifetime of the container has to be handled by the calling object. The calling object must assure that the container will exist longer than the XPlotter Object.

... */ void init( [in] com::sun::star::drawing::XShapes xLogicTarget , [in] com::sun::star::drawing::XShapes xFinalTarget , [in] com::sun::star::lang::XMultiServiceFactory xFactory ); //------------------------------------------------------------------------- /** For each dimension of the 'logic source coordinate system' the XPlotter object needs a Scale to decide which shapes need to be created and maybe logically clipped. The XPlotter object becomes the new owner of the given scales and directions and needs to keep them alive. Nobody else will change them. Pay attention that a 'Scale' can have several breaks. */ void setScales( [in] sequence< ScaleData > rScales); //------------------------------------------------------------------------- /** */ void setTransformation( [in] XTransformation xTransformationToLogicTarget , [in] XTransformation xTransformationToFinalPage ); }; //============================================================================= }; }; }; }; #endif