summaryrefslogtreecommitdiff
path: root/FL/Fl_ICO_Image.H
diff options
context:
space:
mode:
Diffstat (limited to 'FL/Fl_ICO_Image.H')
-rw-r--r--FL/Fl_ICO_Image.H55
1 files changed, 55 insertions, 0 deletions
diff --git a/FL/Fl_ICO_Image.H b/FL/Fl_ICO_Image.H
new file mode 100644
index 000000000..9693cc545
--- /dev/null
+++ b/FL/Fl_ICO_Image.H
@@ -0,0 +1,55 @@
+//
+// ICO image header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2022 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+// https://en.wikipedia.org/wiki/ICO_(file_format)
+// http://www.daubnet.com/en/file-format-ico
+
+#ifndef Fl_ICO_Image_H
+# define Fl_ICO_Image_H
+# include "Fl_BMP_Image.H"
+
+/**
+ The Fl_ICO_Image class supports loading, caching, and drawing of Windows icon (.ico) files.
+ */
+class FL_EXPORT Fl_ICO_Image : public Fl_BMP_Image {
+
+public:
+ /** Windows ICONDIRENTRY structure */
+ struct IconDirEntry {
+ int bWidth; ///< Image width
+ int bHeight; ///< Image height
+ int bColorCount; ///< Number of colors (0 if ≥ 8bpp)
+ int bReserved; ///< Reserved
+ int wPlanes; ///< Color Planes
+ int wBitCount; ///< Bits per pixel
+ int dwBytesInRes; ///< Resource size in bytes
+ int dwImageOffset; ///< Offset to the image
+ };
+
+ Fl_ICO_Image(const char *filename, int id = -1, const unsigned char *data = NULL, const size_t datasize = 0);
+ ~Fl_ICO_Image();
+/** Gives the number of icons of various resolutions present in the ICO object */
+ int idcount() { return idcount_; }
+ /** Returns the array of idcount() loaded IconDirEntry structures */
+ IconDirEntry * const icondirentry() const { return icondirentry_; }
+
+private:
+ int idcount_;
+ struct IconDirEntry *icondirentry_;
+ void load_ico_(class Fl_Image_Reader &rdr, int id);
+};
+
+#endif // Fl_ICO_Image_H