summaryrefslogtreecommitdiffstats
path: root/tdescreensaver/kdesavers/tdeasciiquarium/frame.h
diff options
context:
space:
mode:
authorgregory guy <gregory-tde@laposte.net>2021-04-26 18:43:25 +0200
committerMichele Calgaro <michele.calgaro@yahoo.it>2021-05-21 12:19:31 +0900
commitc4638949d61912c44b027cc8dcc2b3c174d2d8aa (patch)
tree0720025c57ac5fe36461d2b2fce401472a92853c /tdescreensaver/kdesavers/tdeasciiquarium/frame.h
parentc2217d557536ce6c8b6fd255803113ef45f5dc4c (diff)
downloadtdeartwork-c4638949d61912c44b027cc8dcc2b3c174d2d8aa.tar.gz
tdeartwork-c4638949d61912c44b027cc8dcc2b3c174d2d8aa.zip
asciiquarium: Add cmake build support, app is renamed tdeasciiquarium.
Signed-off-by: gregory guy <gregory-tde@laposte.net> (cherry picked from commit 749694a3f2fecddf44633067c24851d8719b181e)
Diffstat (limited to 'tdescreensaver/kdesavers/tdeasciiquarium/frame.h')
-rw-r--r--tdescreensaver/kdesavers/tdeasciiquarium/frame.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/tdescreensaver/kdesavers/tdeasciiquarium/frame.h b/tdescreensaver/kdesavers/tdeasciiquarium/frame.h
new file mode 100644
index 00000000..ca62bbab
--- /dev/null
+++ b/tdescreensaver/kdesavers/tdeasciiquarium/frame.h
@@ -0,0 +1,121 @@
+#ifndef AA_FRAME_H
+#define AA_FRAME_H
+
+#include <tqstring.h>
+#include <tqvaluevector.h>
+#include <tqpixmap.h>
+#include "screen.h"
+
+/**
+ * Represents a single frame of a sprite's animation.
+ *
+ * @see Sprite
+ */
+class Frame
+{
+ /**
+ * Two-dimensional array of Pixels, which represent the appearance of this
+ * frame. This is used to create m_pixmap and m_erasePixmap when they are
+ * needed.
+ *
+ * @see Pixel
+ */
+ TQValueVector<TQValueVector<Screen::Pixel> > m_data;
+
+ /// Masked pixmap of the animation frame. Created by convertDataToPixmap().
+ TQPixmap m_pixmap;
+
+ /// Masked pixmap used to clear frame. Created by convertDataToPixmap().
+ TQPixmap m_erasePixmap;
+
+ /// Height of this frame of animation in logical coordinates.
+ int m_height;
+
+ /// Width of this frame of animation in logical coordinates.
+ int m_width;
+
+ /// Character to be used as a special 'transparent' character. Normally is
+ /// the '?' character.
+ TQChar m_transparentChar;
+
+public:
+
+ /**
+ * Constructs an empty animation Frame. Do not insert this into a Sprite.
+ */
+ Frame() : m_height(0), m_width(0)
+ {
+ }
+
+ /**
+ * Constructs an animation frame.
+ *
+ * @param text Newline-separated text used to construct the Pixel arrays.
+ * The lines do not have to be equal length, any extra needed
+ * characters will automatically be filled with transparency.
+ * Any whitespace at the beginning of a line is converted to
+ * transparency as well.
+ *
+ * @param mask Newline-separated text used to mask \p text's colors. This
+ * can be empty or null in which case no masking is performed.
+ * However, if present, there should be the same number of
+ * lines in \p mask as in \p text, although individual lines
+ * can be shorter or empty as convienient. You can use letters
+ * to stand for colors, e.g. 'r' will make the letter in \p
+ * text at the same position dark red.
+ *
+ * @param defaultColor The default color to apply to characters. This
+ * color is used for all characters in \p text that are
+ * not altered by \p mask.
+ *
+ * @param transparent The character to use to represent transparent areas
+ * in \p text. This can be useful when the
+ * auto-transparency feature can't detect transparent
+ * areas.
+ */
+ Frame(TQString text, TQString mask, TQRgb defaultColor, TQChar transparent = '?');
+
+ /**
+ * Paints this Frame into the given screen.
+ *
+ * @param scr The Screen to draw into.
+ * @param x The logical x coordinate of the left edge of the update region.
+ * @param y The logical y coordinate of the top edge of the update region.
+ */
+ void paint(Screen* scr, int x, int y);
+
+ /**
+ * Erases this Frame from the given screen.
+ *
+ * @param scr The Screen to draw into.
+ * @param x The logical x coordinate of the left edge of the update region.
+ * @param y The logical y coordinate of the top edge of the update region.
+ */
+ void erase(Screen* scr, int x, int y);
+
+ /// Returns the logical width of this frame.
+ int width() const
+ {
+ return m_width;
+ }
+
+ /// Returns the logical height of this frame.
+ int height() const
+ {
+ return m_height;
+ }
+
+protected:
+
+ /**
+ * This function converts the Pixel data in m_data to setup m_pixmap
+ * and m_erasePixmap, which are not setup until this function is called.
+ *
+ * m_data is not valid after this call is performed to save memory.
+ *
+ * @param screen The Screen we will be drawing into later.
+ */
+ void convertDataToPixmap(const Screen *screen);
+};
+
+#endif