File indexing completed on 2024-05-12 04:20:36

0001 /*
0002  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
0003  *
0004  * This file is part of the KD Chart library.
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #ifndef NULL_PAINT_DEVICE_H
0010 #define NULL_PAINT_DEVICE_H
0011 
0012 #include <QPaintDevice>
0013 #include <QPaintEngine>
0014 
0015 namespace KChart
0016 {
0017     class NullPaintEngine : public QPaintEngine
0018     {
0019     public:
0020         virtual bool begin(QPaintDevice * /*pdev*/) { return true; }
0021         virtual void drawEllipse(const QRectF & /*rect*/) { }
0022         virtual void drawEllipse(const QRect & /*rect*/) { }
0023         virtual void drawImage(const QRectF & /*rectangle*/, const QImage & /*image*/, const QRectF & /*sr*/, Qt::ImageConversionFlags /*flags*/) { }
0024         virtual void drawLines(const QLineF * /*lines*/, int /*lineCount*/) { }
0025         virtual void drawLines(const QLine * /*lines*/, int /*lineCount*/) { }
0026         virtual void drawPath(const QPainterPath & /*path*/) { }
0027         virtual void drawPixmap(const QRectF & /*r*/, const QPixmap & /*pm*/, const QRectF & /*sr*/) { }
0028         virtual void drawPoints(const QPointF * /*points*/, int /*pointCount*/) { }
0029         virtual void drawPoints(const QPoint * /*points*/, int /*pointCount*/) { }
0030         virtual void drawPolygon(const QPointF * /*points*/, int /*pointCount*/, PolygonDrawMode /*mode*/) { }
0031         virtual void drawPolygon(const QPoint * /*points*/, int /*pointCount*/, PolygonDrawMode /*mode*/) { }
0032         virtual void drawRects(const QRectF * /*rects*/, int /*rectCount*/) { }
0033         virtual void drawRects(const QRect * /*rects*/, int /*rectCount*/) { }
0034         virtual void drawTextItem(const QPointF & /*p*/, const QTextItem & /*textItem*/) { }
0035         virtual void drawTiledPixmap(const QRectF & /*rect*/, const QPixmap & /*pixmap*/, const QPointF & /*p*/) { }
0036         virtual bool end()  { return true; }
0037 
0038         virtual Type type() const { return QPaintEngine::User; }
0039         virtual void updateState(const QPaintEngineState & /*state*/) { }
0040     };
0041 
0042     class NullPaintDevice : public QPaintDevice
0043     {
0044     public:
0045         NullPaintDevice(const QSize& size) : m_size(size) { }
0046         ~NullPaintDevice() { }
0047 
0048         int metric(PaintDeviceMetric metric) const
0049         {
0050             switch (metric)
0051             {
0052             case QPaintDevice::PdmWidth:
0053                 return m_size.width();
0054             case QPaintDevice::PdmHeight:
0055                 return m_size.height();
0056             case QPaintDevice::PdmWidthMM:
0057                 return 1;
0058             case QPaintDevice::PdmHeightMM:
0059                 return 1;
0060             case QPaintDevice::PdmNumColors:
0061                 return int((uint)(-1));
0062             case QPaintDevice::PdmDepth:
0063                 return 1;
0064             case QPaintDevice::PdmDpiX:
0065                 return 1;
0066             case QPaintDevice::PdmDpiY:
0067                 return 1;
0068             case QPaintDevice::PdmPhysicalDpiX:
0069                 return 1;
0070             case QPaintDevice::PdmPhysicalDpiY:
0071                 return 1;
0072             case QPaintDevice::PdmDevicePixelRatio:
0073                 return 1;
0074             }
0075             return 1;
0076         }
0077 
0078         QPaintEngine* paintEngine() const
0079         {
0080             static NullPaintEngine nullPaintEngine;
0081             return &nullPaintEngine;
0082         }
0083 
0084     private:
0085         QSize m_size;
0086     };
0087 
0088 }
0089 
0090 #endif