Constants: moved init to SDL, video modes to SDL::Video and surface flags to SDL...
[sdlgit/SDL-Site.git] / pages / SDL-Surface.html-inc
CommitLineData
162a0989 1<div class="pod">
2<!-- INDEX START -->
3<h3 id="TOP">Index</h3>
4
c5cfaf97 5<ul><li><a href="#NAME">NAME</a></li>
6<li><a href="#CATEGORY">CATEGORY</a></li>
162a0989 7<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
8<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
5da56497 9<li><a href="#CONSTANTS">CONSTANTS</a></li>
162a0989 10<li><a href="#METHODS">METHODS</a>
11<ul><li><a href="#new_flags_width_height_depth_Rmask_G">new ( flags, width, height, depth, Rmask, Gmask, Bmask, Amask )</a></li>
12<li><a href="#new_from_surface_width_height_depth_">new_from ( surface, width, height, depth, Rmask, Gmask, Bmask, Amask )</a>
0d76f1af 13<ul><li><a href="#Construtor_Parameters">Construtor Parameters</a>
14<ul><li><a href="#flags">flags</a></li>
15</ul>
16</li>
162a0989 17</ul>
18</li>
19<li><a href="#w">w</a></li>
20<li><a href="#h">h</a></li>
0d76f1af 21<li><a href="#format">format</a></li>
22<li><a href="#pitch">pitch</a></li>
23<li><a href="#clip_rect">clip_rect</a></li>
24</ul>
25</li>
26<li><a href="#Direct_Write_to_Surface_Pixel">Direct Write to Surface Pixel</a>
27<ul><li><a href="#get_pixels">get_pixels</a></li>
28<li><a href="#set_pixels">set_pixels</a>
29<ul><li><a href="#Usage">Usage</a></li>
30</ul>
31</li>
32<li><a href="#get_pixels_ptr">get_pixels_ptr</a></li>
162a0989 33</ul>
34</li>
35<li><a href="#SEE_ALSO">SEE ALSO</a>
36</li>
37</ul><hr />
38<!-- INDEX END -->
39
40<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
41<div id="NAME_CONTENT">
c5cfaf97 42<p>SDL::Surface - Graphic surface structure.</p>
162a0989 43
44</div>
c5cfaf97 45<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
bfdd9c2e 46<div id="CATEGORY_CONTENT">
47<p>Core, Video, Structure</p>
48
bfdd9c2e 49</div>
162a0989 50<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
51<div id="SYNOPSIS_CONTENT">
92e293d6 52<p>The main surface (display) is provided by <a href="/SDL-Video.html#set_video_mode">SDL::Video::set_video_mode</a>.
162a0989 53 use SDL; #provides flags &amp; constants
54 use SDL::Video; #provides access to set_video_mode
55 use SDL::Surface; #provides access to SDL_Surface struct internals</p>
56<pre> SDL::init(SDL_INIT_VIDEO);
57 my $display = SDL::Video::set_video_mode();
58
59</pre>
60<p>All surfaces constructed from now on are attached to the $display. There are two constructors available to do this.</p>
61<pre> my $surface = SDL::Surface-&gt;new ( ... );
62 my $surface2 = SDL::Surface-&gt;new_from ( surface, ... );
63
64</pre>
65
66</div>
67<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
68<div id="DESCRIPTION_CONTENT">
69<p>An <code>SDL_Surface</code> defines a surfaceangular area of pixels.</p>
70
71</div>
5da56497 72<h1 id="CONSTANTS">CONSTANTS</h1><p><a href="#TOP" class="toplink">Top</a></p>
73<div id="CONSTANTS_CONTENT">
74<p>The constants are not exported by default. You can export them into your namespace by doing:</p>
75<pre> use SDL::Surface ':flags';
76
77</pre>
78<p>or</p>
79<pre> use SDL::Surface ':all';
80
81</pre>
82<p>or access them directly:</p>
83<pre> SDL::Surface::SDL_SWSURFACE;
84
85</pre>
86<p>Available constants: see <a href="#flags">flags</a></p>
87
88</div>
162a0989 89<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
90<div id="METHODS_CONTENT">
91
92</div>
93<h2 id="new_flags_width_height_depth_Rmask_G">new ( flags, width, height, depth, Rmask, Gmask, Bmask, Amask )</h2>
94<div id="new_flags_width_height_depth_Rmask_G-2">
95<p>The constructor creates a new surface with the specified parameter values.</p>
96<pre> my $surface = SDL::Surface-&gt;new( ... );
97
98</pre>
99
100</div>
101<h2 id="new_from_surface_width_height_depth_">new_from ( surface, width, height, depth, Rmask, Gmask, Bmask, Amask )</h2>
102<div id="new_from_surface_width_height_depth_-2">
103<p>The constructor creates a new surface with the specified parameter values. </p>
104<pre> my $surface = SDL::Surface-&gt;new_from( $old_surface, ... );
105
ecabf8b7 106
107
108
162a0989 109</pre>
162a0989 110
111</div>
112<h3 id="Construtor_Parameters">Construtor Parameters</h3>
113<div id="Construtor_Parameters_CONTENT">
114
0d76f1af 115</div>
116<h4 id="flags">flags</h4>
117<div id="flags_CONTENT">
5da56497 118<p>Available for new()</p>
0d76f1af 119<dl>
0d76f1af 120 <dt>SDL_ASYNCBLIT</dt>
121 <dd>
122 <p>Use asynchronous blit if possible</p>
123 </dd>
0d76f1af 124 <dt>SDL_SWSURFACE</dt>
125 <dd>
126 <p>Stored in the system memory. SDL_SWSURFACE is not actually a flag (it is defined as 0). A lack of SDL_HWSURFACE implies SDL_SWSURFACE</p>
127 </dd>
5da56497 128 <dt>SDL_HWSURFACE</dt>
0d76f1af 129 <dd>
5da56497 130 <p>Stored in video memory</p>
0d76f1af 131 </dd>
132</dl>
162a0989 133
162a0989 134</div>
135<h2 id="w">w</h2>
136<div id="w_CONTENT">
137<p>SDL::Surface width are defined at construction. Thus the following is read only. </p>
138<pre> my $w = $surface-&gt;w;
139
140</pre>
141
142</div>
143<h2 id="h">h</h2>
144<div id="h_CONTENT">
145<p>SDL::Surface height are defined at construction. Thus the following is read only. </p>
146<pre> my $h = $surface-&gt;h;
147
148</pre>
149
150</div>
0d76f1af 151<h2 id="format">format</h2>
152<div id="format_CONTENT">
55bbf7a2 153<p>The format of the pixels stored in the surface. See <a href="SDL-PixelFormat.html">SDL::PixelFormat</a></p>
0d76f1af 154<pre> my $format = $surface-&gt;format;
155
156</pre>
157
158</div>
159<h2 id="pitch">pitch</h2>
160<div id="pitch_CONTENT">
161<pre> my $pitch = $surface-&gt;pitch;
162
163</pre>
164<p>SDL::Surface's scanline length in bytes</p>
165
166</div>
167<h2 id="clip_rect">clip_rect</h2>
168<div id="clip_rect_CONTENT">
169<p>To get the surface's clip_rect we the following</p>
170<pre> my $clip_rect = SDL::Rect-&gt;new(0,0,0,0);
171 SDL::Video::get_clip_rect($surface, $clip_rect);
172
173</pre>
174<p>To set the surface's clip_rect use the following</p>
175<pre> my $clip_rect = SDL::Rect-&gt;new(2,23,23,542);
176 SDL::Video::set_clip_rect($surface, $clip_rect);
177
178</pre>
179
180</div>
181<h1 id="Direct_Write_to_Surface_Pixel">Direct Write to Surface Pixel</h1><p><a href="#TOP" class="toplink">Top</a></p>
182<div id="Direct_Write_to_Surface_Pixel_CONTEN">
183<p>Disclaimer: This can be very slow, it is suitable for creating surfaces one time and not for animations</p>
184
185</div>
186<h2 id="get_pixels">get_pixels</h2>
187<div id="get_pixels_CONTENT">
188<pre> $surface-&gt;get_pixels( $offset )
189
190</pre>
191<p>Returns the current integer value at (surface-&gt;pixels)[offset] </p>
192
193</div>
194<h2 id="set_pixels">set_pixels</h2>
195<div id="set_pixels_CONTENT">
196<pre> $surface-&gt;set_pixels( $offset, $value );
197
198</pre>
199<p>Sets the current integer to $value at (surface-&gt;pixels)[offset]</p>
200
201</div>
202<h3 id="Usage">Usage</h3>
203<div id="Usage_CONTENT">
204<pre> sub putpixel
205 {
206 my($x, $y, $color) = @_;
207 my $lineoffset = $y * ($screen-&gt;pitch / $depth_in_bytes);
208 $screen-&gt;set_pixels( $lineoffset+ $x, $color);
209 }
210
211</pre>
212<p>Note: $depth_in_bytes for 32 is 4, 16 is 2, 8 is 1;</p>
213<p>See also examples/sols/ch02.pl</p>
214
215</div>
216<h2 id="get_pixels_ptr">get_pixels_ptr</h2>
217<div id="get_pixels_ptr_CONTENT">
218<pre> $surface-&gt;get_pixels_ptr();
219
220</pre>
221<p>Returns the C ptr to this surfaces's pixels</p>
222
223
224
225
226
227
228
229
230</div>
162a0989 231<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
232<div id="SEE_ALSO_CONTENT">
55bbf7a2 233<p><a href="SDL.html">SDL</a>, <a href="SDL-PixelFormat.html">SDL::PixelFormat</a>, <a href="SDL-Video.html">SDL::Video</a>, <a href="SDL-Rect.html">SDL::Rect</a></p>
162a0989 234
235</div>
236</div>