3 <h3 id="TOP">Index</h3>
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="#CONSTRUCTOR">CONSTRUCTOR </a>
10 <ul><li><a href="#new">new</a></li>
11 <li><a href="#display">display</a></li>
12 <li><a href="#duplicate">duplicate</a></li>
15 <li><a href="#ATTRIBUTES">ATTRIBUTES</a>
16 <ul><li><a href="#surface">surface</a></li>
17 <li><a href="#w_h_format_pitch_flags">w, h, format, pitch, flags</a></li>
18 <li><a href="#clip_rect">clip_rect</a></li>
21 <li><a href="#EXTENSIONS">EXTENSIONS</a>
22 <ul><li><a href="#blit">blit </a></li>
23 <li><a href="#blit_by">blit_by</a></li>
24 <li><a href="#flip">flip</a></li>
25 <li><a href="#update">update</a></li>
26 <li><a href="#draw_rect">draw_rect</a></li>
27 <li><a href="#draw_line">draw_line</a></li>
30 <li><a href="#AUTHOR">AUTHOR</a>
35 <h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
36 <div id="NAME_CONTENT">
37 <p>SDLx::Surface - Graphic surface matrix extension</p>
40 <h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
41 <div id="CATEGORY_CONTENT">
45 <h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
46 <div id="SYNOPSIS_CONTENT">
51 # Create the main surface (display)
52 SDL::init(SDL_INIT_VIDEO);
53 my $display = SDL::Video::set_video_mode(640, 480, 16, SDL_SWSURFACE);
55 my $surf_matrix = SDLx::Surface->new( surface => $display);
57 $surf_matrix->[10][10] = 0xFFFF; #for 16bpp write white at x = 10 and y=10
59 $surf_matrix->surface( $new_surface );
61 my $orig_surface = $surf_matrix->surface();
66 <h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
67 <div id="DESCRIPTION_CONTENT">
68 <p>An <code>SDLx::Surface</code> allows matrix read and write to a surface, safely. </p>
71 <h1 id="CONSTRUCTOR">CONSTRUCTOR </h1><p><a href="#TOP" class="toplink">Top</a></p>
72 <div id="CONSTRUCTOR_CONTENT">
76 <div id="new_CONTENT">
77 <p>Takes a SDL::Surface in hash format.</p>
78 <p>If a surface is passed to 'surface =>' that is loaded. Otherwise you can define at least a width and a height. </p>
79 <pre> SDLx::Surface->new( surface => $surface) # The $surface is loaded
81 SDLx::Surface->new( width=> 400, height=>200)
82 # A SDL::Surface->new( SDL_ANYFORMAT, 400, 200, 32) is loaded
84 SDLx::Surface->new( width=> 400, height=>200, flags=> SDL_SWSURFACE, depth=>24 )
85 # A SDL::Surface->new( SDL_SWSURFACE, 400, 200, 24) is loaded
87 SDLx::Surface->new( width=> 400, height=>200, flags=> SDL_SWSURFACE, depth=>32, greenmask=>0xFF000000 )
88 # A SDL::Surface->new( SDL_ANYFORMAT, 400, 200, 32, 0, 0xFF000000,0, 0, 0 ) is loaded
89 SDLx::Surface->new( w => 1, h => 1, color => 0xFF0000FF )
90 # A SDL::Surface->new( SDL_ANYFORMAT, 1, 1, 32, 0, 0, 0, 0 ) is loaded
91 all pixels are colored with color (red)
96 <h2 id="display">display</h2>
97 <div id="display_CONTENT">
98 <p>If <a href="http://search.cpan.org/perldoc?SDLx::App::new">SDLx::App::new</a> or <a href="/SDL-Video.html#get_video_mode">SDL::Video::get_video_mode</a> called before then:</p>
99 <pre> my $appx = SDLx::Surface::display();
102 <p>gets the display if it is already made. Passed options are ignored. Otherwise you can quickly make the display with :</p>
103 <pre> SDLx::Surface::display( width => 20, height => 20) #depth => 32 and SDL_ANYFORMAT used
106 <p>or you can also pass flags and depth. </p>
107 <pre> SDLx::Surface::display( width => 20, height => 20, flags=> SDL_HWSURFACE, depth=>24)
110 <p>You can also use the keys <code>w</code> and <code>h</code> in place of <code>width</code> and <code>height</code>, as with <code>new</code>.</p>
111 <p>Get or create the main display surface and attach to a SDLx::Surface.</p>
114 <h2 id="duplicate">duplicate</h2>
115 <div id="duplicate_CONTENT">
116 <p>Does a attributes only, no pixel, copy of another SDLx::Surface. </p>
119 <h1 id="ATTRIBUTES">ATTRIBUTES</h1><p><a href="#TOP" class="toplink">Top</a></p>
120 <div id="ATTRIBUTES_CONTENT">
123 <h2 id="surface">surface</h2>
124 <div id="surface_CONTENT">
125 <p>If a SDL::Surface is passed it is attached to the matrix. Returns the SDL::Surface that is currently attached to this SDLx::Surface</p>
128 <h2 id="w_h_format_pitch_flags">w, h, format, pitch, flags</h2>
129 <div id="w_h_format_pitch_flags_CONTENT">
130 <p>Returns the inner SDL::Surface's respective attribute. See <code>SDL::Surface</code>.</p>
133 <h2 id="clip_rect">clip_rect</h2>
134 <div id="clip_rect_CONTENT">
135 <p>Sets the passed <code>SDL::Rect</code> as the new clip_rect for the surface. Returns the SDL::Surface's clip_rect. See <code>SDL::Video::get_clip_rect</code> and <code>SDL::Video::set_clip_rect</code>.</p>
138 <h1 id="EXTENSIONS">EXTENSIONS</h1><p><a href="#TOP" class="toplink">Top</a></p>
139 <div id="EXTENSIONS_CONTENT">
142 <h2 id="blit">blit </h2>
143 <div id="blit_CONTENT">
144 <pre> $sdlx_surface->blit( $dest, $src_rect, $dest_rect );
147 <p>Blits SDLx::Surface onto $dest surface.
148 $src_rect or $dest_rect are optional. If $src_rect is ommited, it will be the size of the entire surface. If $dest_rect is ommited, it will be blitted at <code>(0, 0)</code>. $src_rect or $dest_rect can be array refs or SDL::Rect. $dest can be SDLx::Surface or SDL::Surface.</p>
152 <h2 id="blit_by">blit_by</h2>
153 <div id="blit_by_CONTENT">
154 <pre> $sdlx_surface->blit_by( $src, $src_rect, $dest_rect );
157 <p>Does the same as <code>blit</code> but the <code>SDLx::Surface</code> is the one being blitted to.
158 This is useful when the surface you have isn't an <code>SDLx::Surface</code>, but the surface it is being blitted to is.</p>
161 <h2 id="flip">flip</h2>
162 <div id="flip_CONTENT">
163 <p>Applies <a href="/SDL-Video.html#flip">SDL::Video::flip</a> to the Surface, with error checking.</p>
167 <h2 id="update">update</h2>
168 <div id="update_CONTENT">
169 <pre> $sdlx_surface->update(); # whole surface is updated
170 $sdlx_surface->update([0,0,1,1]); # only that area (0,0,1,1) is updated
172 $sdlx_surface->update( [ SDL::Rect->new(0,0,1,2) ... ]); # defined rects are updated
175 <p>Applies <a href="/SDL-Video.html#update_rect">SDL::Video::update_rect</a> for no rect or 1 array ref. Applies <a href="/SDL-Video.html#update_rects">SDL::Video::update_rects</a> for array of <a href="SDL-Rect.html">SDL::Rect</a>s. </p>
183 <h2 id="draw_rect">draw_rect</h2>
184 <div id="draw_rect_CONTENT">
185 <pre> $sdlx_surface->draw_rect( [$x,$y,$w,$h], 0xFFFF00FF );
186 $sdlx_surface->draw_rect( SDL::Rect->new($x,$y,$w,$h), 0xFFFF00FF );
189 <p>Draws a rect on the surface with the given color. If the rect is ommited, the colored rect will be drawn to the entire surface.</p>
193 <h2 id="draw_line">draw_line</h2>
194 <div id="draw_line_CONTENT">
195 <pre> $sdlx_surface->draw_line( [$x1, $y1], [$x2, $y2], $color, $antialias); # $color is a number
196 $sdlx_surface->draw_line( [$x1, $y1], [$x2, $y2], \@color, $antialias); #
199 <p>Draws a line on the surface. Antialias is turned on if $antialias is true. </p>
203 <h1 id="AUTHOR">AUTHOR</h1><p><a href="#TOP" class="toplink">Top</a></p>
204 <div id="AUTHOR_CONTENT">