summaryrefslogtreecommitdiffstats
path: root/src/XPM.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/XPM.h')
-rw-r--r--src/XPM.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/XPM.h b/src/XPM.h
new file mode 100644
index 0000000..962ffe4
--- /dev/null
+++ b/src/XPM.h
@@ -0,0 +1,94 @@
+// Scintilla source code edit control
+/** @file XPM.h
+ ** Define a class that holds data in the X Pixmap (XPM) format.
+ **/
+// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#ifndef XPM_H
+#define XPM_H
+
+#if defined(PLAT_QT)
+#include <qpixmap.h>
+#endif
+
+/**
+ * Hold a pixmap in XPM format.
+ */
+class XPM {
+#if defined(PLAT_QT)
+ QPixmap qpm;
+
+public:
+ XPM(const char *textForm);
+ XPM(const char * const *linesForm);
+ ~XPM() {}
+
+ void RefreshColourPalette(Palette &pal, bool want);
+ void Draw(Surface *surface,PRectangle &rc);
+
+ const QPixmap &Pixmap() const {return qpm;}
+#else
+ int id; // Assigned by container
+ int height;
+ int width;
+ int nColours;
+ char *data;
+ char codeTransparent;
+ char *codes;
+ ColourPair *colours;
+ ColourAllocated ColourFromCode(int ch);
+ void FillRun(Surface *surface, int code, int startX, int y, int x);
+ char **lines;
+ ColourPair *colourCodeTable[256];
+public:
+ XPM(const char *textForm);
+ XPM(const char * const *linesForm);
+ ~XPM();
+ void Init(const char *textForm);
+ void Init(const char * const *linesForm);
+ void Clear();
+ /// Similar to same named method in ViewStyle:
+ void RefreshColourPalette(Palette &pal, bool want);
+ /// No palette used, so just copy the desired colours to the allocated colours
+ void CopyDesiredColours();
+ /// Decompose image into runs and use FillRectangle for each run
+ void Draw(Surface *surface, PRectangle &rc);
+ char **InLinesForm() { return lines; }
+ void SetId(int id_) { id = id_; }
+ int GetId() { return id; }
+ int GetHeight() { return height; }
+ int GetWidth() { return width; }
+ static const char **LinesFormFromTextForm(const char *textForm);
+#endif
+};
+
+#if !defined(PLAT_QT)
+
+/**
+ * A collection of pixmaps indexed by integer id.
+ */
+class XPMSet {
+ XPM **set; ///< The stored XPMs.
+ int len; ///< Current number of XPMs.
+ int maximum; ///< Current maximum number of XPMs, increased by steps if reached.
+ int height; ///< Memorize largest height of the set.
+ int width; ///< Memorize largest width of the set.
+public:
+ XPMSet();
+ ~XPMSet();
+ /// Remove all XPMs.
+ void Clear();
+ /// Add a XPM.
+ void Add(int id, const char *textForm);
+ /// Get XPM by id.
+ XPM *Get(int id);
+ /// Give the largest height of the set.
+ int GetHeight();
+ /// Give the largest width of the set.
+ int GetWidth();
+};
+
+#endif
+
+#endif