41 double fRotate, fShearX;
46 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
52 const double fMinimalStep(10.0);
57 fStepX = fMinimalStep;
62 fStepY = fMinimalStep;
68 double fSmallStepX(1.0), fViewSmallStepX(1.0), fSmallStepY(1.0), fViewSmallStepY(1.0);
69 sal_uInt32 nSmallStepsX(0), nSmallStepsY(0);
102 fViewSmallStepX *= 2.0;
106 nSmallStepsX =
static_cast<sal_uInt32
>(fStepX / fSmallStepX);
113 fViewSmallStepY *= 2.0;
117 nSmallStepsY =
static_cast<sal_uInt32
>(fStepY / fSmallStepY);
138 if(!aExtendedViewport.
isEmpty())
147 const double fMinX(floor((aExtendedViewport.
getMinX() - fHalfCrossSize) / fStepX) * fStepX);
148 const double fMaxX(ceil((aExtendedViewport.
getMaxX() + fHalfCrossSize) / fStepX) * fStepX);
149 const double fMinY(floor((aExtendedViewport.
getMinY() - fHalfCrossSize) / fStepY) * fStepY);
150 const double fMaxY(ceil((aExtendedViewport.
getMaxY() + fHalfCrossSize) / fStepY) * fStepY);
154 std::max(fMinX, 0.0),
155 std::max(fMinY, 0.0),
156 std::min(fMaxX, aScale.
getX()),
157 std::min(fMaxY, aScale.
getY()));
161 if(aExtendedViewport.
isEmpty())
165 std::vector< basegfx::B2DPoint > aPositionsPoint;
166 std::vector< basegfx::B2DPoint > aPositionsCross;
168 for(
double fX(aExtendedViewport.
getMinX()); fX < aExtendedViewport.
getMaxX(); fX += fStepX)
172 for(
double fY(aExtendedViewport.
getMinY()); fY < aExtendedViewport.
getMaxY(); fY += fStepY)
176 if(!bXZero && !bYZero)
180 const double fHalfCrossSize(3.0 * 0.5);
183 aViewPos.
getX() - fHalfCrossSize, aViewPos.
getY() - fHalfCrossSize,
184 aViewPos.
getX() + fHalfCrossSize, aViewPos.
getY() + fHalfCrossSize);
189 aPositionsCross.push_back(aLogicPos);
195 double fF(fX + fSmallStepX);
197 for(sal_uInt32
a(1);
a < nSmallStepsX && fF < aExtendedViewport.
getMaxX();
a++, fF += fSmallStepX)
204 aPositionsPoint.push_back(aLogicPos);
211 double fF(fY + fSmallStepY);
213 for(sal_uInt32
a(1);
a < nSmallStepsY && fF < aExtendedViewport.
getMaxY();
a++, fF += fSmallStepY)
220 aPositionsPoint.push_back(aLogicPos);
228 const sal_uInt32 nCountPoint(aPositionsPoint.size());
229 const sal_uInt32 nCountCross(aPositionsCross.size());
257 double fSmallestViewDistance,
258 double fSmallestSubdivisionViewDistance,
259 sal_uInt32 nSubdivisionsX,
260 sal_uInt32 nSubdivisionsY,
266 mfSmallestViewDistance(fSmallestViewDistance),
267 mfSmallestSubdivisionViewDistance(fSmallestSubdivisionViewDistance),
268 mnSubdivisionsX(nSubdivisionsX),
269 mnSubdivisionsY(nSubdivisionsY),
271 maCrossMarker(rCrossMarker)
277 if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void scale(double fX, double fY)
BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix &rMatrix)
void intersect(const Range2D &rRange)
bool isInside(const Tuple2D< TYPE > &rTuple) const
bool overlaps(const Range2D &rRange) const
const Primitive2DContainer & getBuffered2DDecomposition() const
access methods to maBuffered2DDecomposition.
void setBuffered2DDecomposition(Primitive2DContainer &&rNew)
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
The getDecomposition default implementation will on demand use create2DDecomposition() if maBuffered2...
GridPrimitive2D(basegfx::B2DHomMatrix aTransform, double fWidth, double fHeight, double fSmallestViewDistance, double fSmallestSubdivisionViewDistance, sal_uInt32 nSubdivisionsX, sal_uInt32 nSubdivisionsY, const basegfx::BColor &rBColor, const BitmapEx &rCrossMarker)
constructor
const basegfx::BColor & getBColor() const
sal_uInt32 getSubdivisionsX() const
basegfx::B2DHomMatrix maLastObjectToViewTransformation
the last used object to view transformtion and the last Viewport, used from getDecomposition for deci...
sal_uInt32 getSubdivisionsY() const
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
basegfx::B2DRange maLastViewport
double getSmallestSubdivisionViewDistance() const
double getSmallestViewDistance() const
virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &rViewInformation) const override
get 2d range
const BitmapEx & getCrossMarker() const
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
const basegfx::B2DHomMatrix & getTransform() const
data read access
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
Override standard getDecomposition to be view-dependent here.
virtual void create2DDecomposition(Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const override
create local decomposition
MarkerArrayPrimitive2D class.
PointArrayPrimitive2D class.
#define PRIMITIVE2D_ID_GRIDPRIMITIVE2D
basegfx::B2DHomMatrix maTransform
the geometric definition
B2DHomMatrix createShearXRotateTranslateB2DHomMatrix(double fShearX, double fRadiant, double fTranslateX, double fTranslateY)