7b639c8a72b3b538fd385fc58e6e283866030bcb
[sdlgit/SDL-Site.git] / pages / SDL-Surface.html-inc
1 <div class="pod">
2 <!-- INDEX START -->
3 <h3 id="TOP">Index</h3>
4
5 <ul><li><a href="#NAME">NAME</a></li>
6 <li><a href="#CATEGORY">CATEGORY</a></li>
7 <li><a href="#SYNOPSIS">SYNOPSIS</a></li>
8 <li><a href="#DESCRIPTION">DESCRIPTION</a></li>
9 <li><a href="#CONSTANTS">CONSTANTS</a></li>
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>
13 <ul><li><a href="#Construtor_Parameters">Construtor Parameters</a>
14 <ul><li><a href="#flags">flags</a></li>
15 </ul>
16 </li>
17 </ul>
18 </li>
19 <li><a href="#w">w</a></li>
20 <li><a href="#h">h</a></li>
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>
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">
42 <p>SDL::Surface - Graphic surface structure.</p>
43
44 </div>
45 <h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
46 <div id="CATEGORY_CONTENT">
47 <p>Core, Video, Structure</p>
48
49 </div>
50 <h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
51 <div id="SYNOPSIS_CONTENT">
52 <p>The main surface (display) is provided by <a href="/SDL-Video.html#set_video_mode">SDL::Video::set_video_mode</a>.
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>
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>
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
106
107
108
109 </pre>
110
111 </div>
112 <h3 id="Construtor_Parameters">Construtor Parameters</h3>
113 <div id="Construtor_Parameters_CONTENT">
114
115 </div>
116 <h4 id="flags">flags</h4>
117 <div id="flags_CONTENT">
118 <p>Available for new()</p>
119 <dl>
120         <dt>SDL_ASYNCBLIT</dt>
121         <dd>
122                 <p>Use asynchronous blit if possible</p>
123         </dd>
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>
128         <dt>SDL_HWSURFACE</dt>
129         <dd>
130                 <p>Stored in video memory</p>
131         </dd>
132 </dl>
133
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>
151 <h2 id="format">format</h2>
152 <div id="format_CONTENT">
153 <p>The format of the pixels stored in the surface. See <a href="SDL-PixelFormat.html">SDL::PixelFormat</a></p>
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>
231 <h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
232 <div id="SEE_ALSO_CONTENT">
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>
234
235 </div>
236 </div>