#ifndef AA_FRAME_H #define AA_FRAME_H #include #include #include #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 > 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