X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pages%2FSDL-Surface.html-inc;h=7b639c8a72b3b538fd385fc58e6e283866030bcb;hb=5da5649767979ede6f91b014e6f9e2d7dc729739;hp=96720b6bbff5f6228b5b5986316372d6822b732d;hpb=c5cfaf97c76259d6b3d589b543acff12774fbcbf;p=sdlgit%2FSDL-Site.git diff --git a/pages/SDL-Surface.html-inc b/pages/SDL-Surface.html-inc index 96720b6..7b639c8 100644 --- a/pages/SDL-Surface.html-inc +++ b/pages/SDL-Surface.html-inc @@ -6,14 +6,30 @@
The main surface (display) is provided by SDL::Video::set_video_mode. +
The main surface (display) is provided by SDL::Video::set_video_mode. use SDL; #provides flags & constants use SDL::Video; #provides access to set_video_mode use SDL::Surface; #provides access to SDL_Surface struct internals
@@ -53,6 +69,23 @@An SDL_Surface
defines a surfaceangular area of pixels.
The constants are not exported by default. You can export them into your namespace by doing:
+use SDL::Surface ':flags'; + ++
or
+use SDL::Surface ':all'; + ++
or access them directly:
+SDL::Surface::SDL_SWSURFACE; + ++
Available constants: see flags
+ +Available for new()
+Use asynchronous blit if possible
+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
+Stored in video memory
+The format of the pixels stored in the surface. See SDL::PixelFormat
+my $format = $surface->format; + ++ +
my $pitch = $surface->pitch; + ++
SDL::Surface's scanline length in bytes
+ +To get the surface's clip_rect we the following
+my $clip_rect = SDL::Rect->new(0,0,0,0); + SDL::Video::get_clip_rect($surface, $clip_rect); + ++
To set the surface's clip_rect use the following
+my $clip_rect = SDL::Rect->new(2,23,23,542); + SDL::Video::set_clip_rect($surface, $clip_rect); + ++ +
Disclaimer: This can be very slow, it is suitable for creating surfaces one time and not for animations
+ +$surface->get_pixels( $offset ) + ++
Returns the current integer value at (surface->pixels)[offset]
+ +$surface->set_pixels( $offset, $value ); + ++
Sets the current integer to $value at (surface->pixels)[offset]
+ +sub putpixel + { + my($x, $y, $color) = @_; + my $lineoffset = $y * ($screen->pitch / $depth_in_bytes); + $screen->set_pixels( $lineoffset+ $x, $color); + } + ++
Note: $depth_in_bytes for 32 is 4, 16 is 2, 8 is 1;
+See also examples/sols/ch02.pl
+ +$surface->get_pixels_ptr(); + ++
Returns the C ptr to this surfaces's pixels
+ + + + + + + + +