class CCL::ControlGridPainter

#include <controlscalepainter.h>

class ControlGridPainter
{
public:
    // fields

     gridColor;
    GridColor textColor;
    GridColor TextColor labelWidthX;
    GridColor TextColor LabelWidthX labelSpacingX;
    GridColor TextColor LabelWidthX LabelSpacingX labelMarginY;
    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY labelAlignmentY;
    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY LabelAlignmentY labelOffsetY;
    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY LabelAlignmentY LabelOffsetY labelPaddingBottomX;
    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY LabelAlignmentY LabelOffsetY LabelPaddingBottomX PROPERTY_BOOL (yReverse, YReverse) protected SharedPtr <ITickScale> xScale;
    SharedPtr <ITickScale> yScale;

    // construction

    ControlGridPainter (
        RectRef size,
        ITickScale* xScale = nullptr,
        ITickScale* yScale = nullptr
    );

    // methods

    void setStyle (const IVisualStyle& style);
    void setXScale (ITickScale* scaleParam);
    void setYScale (ITickScale* scaleParam);
    ITickScale* getXScale ();
    ITickScale* getYScale ();
    void draw (IGraphics& graphics);
    void drawXScaleGrid (IGraphics& graphics, bool scaleTicksOnly = false);
    void drawXScaleText (IGraphics& graphics, bool scaleTicksOnly = false);
    void drawYScaleGrid (IGraphics& graphics, bool scaleTicksOnly = false);
    void drawYScaleText (IGraphics& graphics);
    virtual void setSize (RectRef newSize);
    RectRef getSize () const;
    PROPERTY_VARIABLE (Color, fineColor, FineColor);
    GridColor PROPERTY_VARIABLE (Color, outlineColor, OutLineColor);
    GridColor TextColor PROPERTY_OBJECT (Font, font, Font);

    GridColor TextColor LabelWidthX PROPERTY_VARIABLE (
        int,
        labelWidthY,
        LabelWidthY
    );

    GridColor TextColor LabelWidthX LabelSpacingX PROPERTY_VARIABLE (
        int,
        labelSpacingY,
        LabelSpacingY
    );

    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY PROPERTY_VARIABLE (
        int,
        labelShiftTolerance,
        LabelShiftTolerance
    );

    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY LabelAlignmentY PROPERTY_VARIABLE (
        int,
        tickDistance,
        TickDistance
    );

    GridColor TextColor LabelWidthX LabelSpacingX LabelMarginY LabelAlignmentY LabelOffsetY PROPERTY_VARIABLE (
        int,
        labelOffsetX,
        LabelOffsetX
    );
};