File: pgimage.h

package info (click to toggle)
asc 2.6.1.0-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 81,740 kB
  • sloc: cpp: 158,704; sh: 11,544; ansic: 6,736; makefile: 604; perl: 138
file content (127 lines) | stat: -rw-r--r-- 4,016 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
    ParaGUI - crossplatform widgetset 
    Copyright (C) 2000,2001,2002  Alexander Pipelka 
  
    This library is free software; you can redistribute it and/or 
    modify it under the terms of the GNU Library General Public 
    License as published by the Free Software Foundation; either 
    version 2 of the License, or (at your option) any later version. 
  
    This library is distributed in the hope that it will be useful, 
    but WITHOUT ANY WARRANTY; without even the implied warranty of 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
    Library General Public License for more details. 
  
    You should have received a copy of the GNU Library General Public 
    License along with this library; if not, write to the Free 
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
  
    Alexander Pipelka 
    pipelka@teleweb.at 
  
    Last Update:      $Author: mbickel $ 
    Update Date:      $Date: 2009-04-18 13:48:39 $ 
    Source File:      $Source: /home/martin/asc/v2/svntest/games/asc/source/libs/paragui/include/pgimage.h,v $ 
    CVS/RCS Revision: $Revision: 1.3 $ 
    Status:           $State: Exp $ 
*/

/** \file pgimage.h
	Header file for the PG_Image class.
*/

#ifndef PG_IMAGE_H
#define PG_IMAGE_H

#include "pgthemewidget.h"

/**
	@author Jaroslav Vozab 
 
	@short A static (non-resizeable by the end user) frame with image. 
*/

class DECLSPEC PG_Image : public PG_ThemeWidget  {
   static PG_Rect CalcWidgetSize( const PG_Point& p, const SDL_Surface* image );
public:
	/**
	@short Contructor of the PG_Image class (loading from file)

	Creates the widget and loads the image from a file

	@param parent pointer to the parent widget or NULL
	@param p position of the PG_Image widget
	@param filename	image-file to load
	@param drawmode Image drawmode (see PG_Draw::BkMode)
	@param style widgetstyle to use

	*/
	PG_Image(PG_Widget* parent, const PG_Point& p, const std::string& filename, PG_Draw::BkMode drawmode = PG_Draw::TILE, const std::string& style = "ThemeWidget");

	/**
	@short Contructor of the PG_Image class (image from surface)

	Creates the widget and loads the image from an SDL_Surface	

	@param parent pointer to the parent widget or NULL
	@param p position of the PG_Image widget
	@param image pointer to imagedata (SDL_Surface)
	@param freeimage if true the imagedata is handled by the widget
	@param drawmode Image drawmode (see PG_Draw::BkMode)
	@param style widgetstyle to use
	*/
	PG_Image(PG_Widget* parent, const PG_Point& p, SDL_Surface* image, bool freeimage = true, PG_Draw::BkMode drawmode = PG_Draw::TILE, const std::string& style = "ThemeWidget");

	/**
	@short Contructor of the PG_Image class (loading from file)

	Creates the widget and loads the image from a file using a colorkey

	@param parent pointer to the parent widget or NULL
	@param p position of the PG_Image widget
	@param filename	image-file to load
	@param	colorkey colorkey (0xRRGGBB)
	@param drawmode Image drawmode (see PG_Draw::BkMode)
	@param style widgetstyle to use

	*/
	PG_Image(PG_Widget* parent, const PG_Point& p, const std::string& filename, Uint32 colorkey, PG_Draw::BkMode drawmode = PG_Draw::TILE, const std::string& style = "ThemeWidget");

	/**
	@short Set the colorkey of the image

	@param key		colorkey (0xRRGGBB);
	*/
	void SetColorKey(const PG_Color& key);

	/**
	@ Set mode of drawing (BKMODE_TILE | BKMODE_STRETCH | BKMODE_3TILEH | BKMODE_3TILEV | BKMODE_9TILE)
	*/
	void SetDrawMode(PG_Draw::BkMode mode);

	Uint8 GetDrawMode() {
		return my_DrawMode;
	};

	bool LoadImage(const std::string& filename);

	bool LoadImage(const std::string& filename, const PG_Color& key);

	bool SetImage(SDL_Surface* image, bool bFreeImage = true);

	~PG_Image();

protected:

	SDL_Surface* my_cachedSrf;

	PG_Draw::BkMode my_DrawMode;

	/** */
	void eventDraw(SDL_Surface* surface, const PG_Rect& rect);

	/** */
	void eventBlit(SDL_Surface* surface, const PG_Rect& src, const PG_Rect& dst);
};

#endif // PG_IMAGE_H