aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/EmPixMap.h
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbarenblat@gmail.com>2021-11-23 23:13:26 -0500
committerGravatar Benjamin Barenblat <bbarenblat@gmail.com>2021-11-23 23:13:26 -0500
commite5df1aafb6d1346207343ccb858fa373e6b86301 (patch)
treefb26f0091dda7dd69d48d6b06169ea618332b99e /SrcShared/EmPixMap.h
Palm OS Emulator v3.5HEADmain
Check in the Palm OS Emulator, version 3.5 (2001). These files come from the tarball present in the Debian archives [1]. The SHA-256 digest of the tarball, c5e0d23424e88525bfba0ecdf0a432a8d93c885d04740df06a9eeee44e5f25e4, matches the digest preserved in the FreeBSD ports tree [2], giving further confidence that these files are as distributed by upstream. [1] http://archive.debian.org/debian/pool/contrib/p/pose/ [2] https://svnweb.freebsd.org/ports/head/palm/pose/distinfo?revision=271305&view=markup&pathrev=282162
Diffstat (limited to 'SrcShared/EmPixMap.h')
-rw-r--r--SrcShared/EmPixMap.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/SrcShared/EmPixMap.h b/SrcShared/EmPixMap.h
new file mode 100644
index 0000000..8517062
--- /dev/null
+++ b/SrcShared/EmPixMap.h
@@ -0,0 +1,104 @@
+/* -*- mode: C++; tab-width: 4 -*- */
+/* ===================================================================== *\
+ Copyright (c) 2000-2001 Palm, Inc. or its subsidiaries.
+ All rights reserved.
+
+ This file is part of the Palm OS Emulator.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+\* ===================================================================== */
+
+#ifndef EmPixMap_h
+#define EmPixMap_h
+
+#include "EmStructs.h" // RGBList
+#include "EmRegion.h" // EmRegion
+
+#include <vector>
+
+typedef int EmPixMapDepth;
+typedef int EmPixMapRowBytes;
+
+enum EmPixMapFormat
+{
+ // If you change these values, be sure to update PrvGetDepth.
+
+ kPixMapFormat1,
+ kPixMapFormat2,
+ kPixMapFormat4,
+ kPixMapFormat8,
+ kPixMapFormat16RGB555,
+ kPixMapFormat16BGR555,
+ kPixMapFormat16RGB565,
+ kPixMapFormat16BGR565,
+ kPixMapFormat24RGB,
+ kPixMapFormat24BGR,
+ kPixMapFormat32ARGB,
+ kPixMapFormat32ABGR,
+ kPixMapFormat32RGBA,
+ kPixMapFormat32BGRA,
+
+ kPixMapFormatLast
+};
+
+
+class EmPixMap
+{
+ public:
+ EmPixMap (void);
+ EmPixMap (const EmPixMap&);
+ ~EmPixMap (void);
+
+ EmPixMap& operator= (const EmPixMap&);
+
+ EmPoint GetSize (void) const;
+ void SetSize (const EmPoint&);
+
+ EmPixMapDepth GetDepth (void) const;
+ EmPixMapFormat GetFormat (void) const;
+ void SetFormat (EmPixMapFormat);
+
+ EmPixMapRowBytes GetRowBytes (void) const;
+ void SetRowBytes (EmPixMapRowBytes);
+
+ const RGBList& GetColorTable (void) const;
+ void SetColorTable (const RGBList&);
+
+ const void* GetBits (void) const;
+ void* GetBits (void);
+ void SetBits (void*);
+
+ void CreateMask (EmPixMap& dest) const;
+ EmRegion CreateRegion (void) const;
+
+ void ChangeTone (int32 percent, EmCoord firstLine = -1, EmCoord lastLine = -1);
+ void ConvertToColor (int type, EmCoord firstLine = -1, EmCoord lastLine = -1);
+ void FlipScanlines (void);
+ void ConvertToFormat (EmPixMapFormat);
+
+ static void CopyRect (EmPixMap& dest, const EmPixMap& src,
+ const EmRect& destRect, const EmRect& srcRect);
+
+ private:
+ EmPixMapRowBytes DetermineRowBytes (void) const;
+ void InvalidateBuffer (void);
+ void UpdateBuffer (void) const;
+ void CopyPixelBuffer (const EmPixMap& other);
+
+ private:
+ EmPoint fSize;
+ EmPixMapFormat fFormat;
+ EmPixMapRowBytes fRowBytes;
+ RGBList fColors;
+ uint8* fPixels;
+ Bool fPixelsOwned;
+};
+
+uint32* Get1To8Table (void);
+uint32* Get2To8Table (void);
+uint16* Get4To8Table (void);
+
+#endif // EmPixMap_h