Download | Plain Text | No Line Numbers
    - /**
-  * @module cbitmap
-  * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348)
-  * @brief  Abstract implementation of CFile handling Bitmaps.
-  * @date   17.04.2009
-  */
-  
- #ifndef CBITMAP_H
- #define CBITMAP_H
-  
- #include <stdint.h>
- #include <map>
- #include "cfile.h"
- #include "cpixelformat.h"
-  
- /**
-  * @class CBitmap
-  * @brief Implementation of CFile handling Bitmaps.
-  *
-  * In order to support operations on bitmaps with different color bitcounts
-  * different implementations of CPixelFormat are used. These classes are
-  * allowed to modify the bitmap headers and pixelbuffer directly.
-  *
-  * On error CFile::FileError is thrown.
-  */
- class CBitmap : public CFile
- {
-   public:
-     /**
-      * @method CBitmap
-      * @brief  Default ctor
-      * @param  -
-      * @return -
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     CBitmap()
-       : m_pixeldata(NULL), m_pixelformat(NULL), m_rowsize(0)
-     {}
-  
-  
-     /**
-      * @method ~CBitmap
-      * @brief  Default dtor
-      * @param  -
-      * @return -
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual ~CBitmap();
-  
-     /**
-      * @method read
-      * @brief  Reads Windows Bitmap from filestream.
-      *         On error an exception is thrown.
-      * @param  in filestream to read data from
-      * @return -
-      * @globalvars none
-      * @exception CFile::FileError
-      * @exception bad_alloc
-      * @conditions none
-      */
-     virtual void read(std::ifstream& in) = 0;
-  
-     /**
-      * @method write
-      * @brief  Writes Windows Bitmap to filestream.
-      * @param  out      filestream to read data from
-      * @return -
-      * @globalvars none
-      * @exception  FileError
-      * @exception  bad_alloc
-      * @conditions none
-      */
-     virtual void write(std::ofstream& out) = 0;
-  
-     /**
-      * @method getPixelData
-      * @brief  Returns pointer to pixelbuffer
-      * @param  -
-      * @return pointer to pixelbuffer
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     uint8_t *getPixelData()
-     {
-       return m_pixeldata;
-     }
-  
-     /**
-      * @method getColorTable
-      * @brief  Returns reference to colortable
-      * @param  -
-      * @return reference to colortable
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     std::map<uint32_t, CPixelFormat::RGBPIXEL *>& getColorTable()
-     {
-       return m_colortable;
-     }
-  
-     /**
-      * @method getRowSize
-      * @brief  Returns number of bytes of one row
-      * @param  -
-      * @return number of bytes of one row
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     uint32_t getRowSize()
-     {
-       return m_rowsize;
-     }
-  
-     /**
-      * @method getPixelDataSize
-      * @brief  Return size of pixelbuffer
-      * @param  -
-      * @return size of pixelbuffer
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual const uint32_t getPixelDataSize() = 0;
-  
-     /**
-      * @method getHeight
-      * @brief  Return height of bitmap in pixel
-      * @param  -
-      * @return height of bitmap in pixel
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual const uint32_t getHeight() = 0;
-  
-     /**
-      * @method getWidth
-      * @brief  Return width of bitmap in pixel
-      * @param  -
-      * @return width of bitmap in pixel
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual const uint32_t getWidth() = 0;
-  
-     /**
-      * @method isMirrored
-      * @brief  Windows Bitmaps can be stored upside down
-      * @param  -
-      * @return true if bitmap is stored upside down. false otherwise
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual const bool isMirrored() = 0;
-  
-     /**
-      * @method hasColorTable
-      * @brief  Check if bitmap has a colortable
-      *         (we don't support this yet for windows bitmaps)
-      * @param  -
-      * @return true if bitmap has a colortable. false otherwise
-      * @globalvars none
-      * @exception  none
-      * @conditions none
-      */
-     virtual const bool hasColorTable() = 0;
-  
-   protected:
-     /**
-      * @method callFunc
-      * @brief  Delegates the function and its parameters to the correct
-      *         internal method
-      * @param  func   function name
-      * @param  params function parameters as list
-      * @return -
-      * @globalvars none
-      * @exception  ParserError
-      * @conditions none
-      */
-     void callFunc(const std::string& func, const std::list<std::string>& params);
-  
-     /**
-      * @method fillrect
-      * @brief  Fills rectangle in image starting on position x, y
-      *         width size width, height and color red, green, blue.
-      * @param  params function parameters as list
-      * @return -
-      * @globalvars none
-      * @exception  FileError
-      * @conditions none
-      *
-      * Scriptfile syntax: fillrect(x, y, width, height, red, green, blue)
-      */
-     void fillrect(std::list<std::string> params);
-  
-     /**
-      * @method invert
-      * @brief  Invert image
-      * @param  params function parameters as list
-      * @return -
-      * @globalvars none
-      * @exception  FileError
-      * @conditions none
-      *
-      * Scriptfile syntax: invert()
-      */
-     void invert(std::list<std::string> params);
-  
-     /**
-      * @method brightness
-      * @brief  Increase/decrease brightness of image
-      * @param  params function parameters as list
-      * @return -
-      * @globalvars none
-      * @exception  FileError
-      * @conditions none
-      *
-      * Scriptfile syntax: brightness(factor)
-      */
-     void brightness(std::list<std::string> params);
-  
-     /**
-      * @method mirror_y
-      * @brief  Mirror image around the y-axis
-      * @param  params function parameters as list
-      * @return -
-      * @globalvars none
-      * @exception  FileError
-      * @conditions none
-      *
-      * Scriptfile syntax: mirror_y()
-      */
-     void mirror_y(std::list<std::string> params);
-  
-     /**
-      * @method mirror_x
-      * @brief  Mirror image around the x-axis
-      * @param  params function parameters as list
-      * @return -
-      * @globalvars none
-      * @exception  FileError
-      * @conditions none
-      *
-      * Scriptfile syntax: mirror_y()
-      */
-     void mirror_x(std::list<std::string> params);
-  
-     /* members */
-     /** pointer to pixelbuffer */
-     uint8_t *m_pixeldata;
-     /** colortable map */
-     std::map<uint32_t, CPixelFormat::RGBPIXEL *> m_colortable;
-     /** set of supported PixelFormat handlers */
-     std::set<CPixelFormat *> m_handlers;
-     /** pointer to CPixelFormat implementation */
-     CPixelFormat *m_pixelformat;
-     /** number of bytes of one row in the image */
-     uint32_t m_rowsize;
- };
-  
- #endif
-  
- /* vim: set et sw=2 ts=2: */
-