Просмотр исходного кода

Moved pngloader to Image namespace.

Brucey 3 лет назад
Родитель
Сommit
e8376a9062
1 измененных файлов с 2 добавлено и 233 удалено
  1. 2 233
      pngloader.mod/pngloader.bmx

+ 2 - 233
pngloader.mod/pngloader.bmx

@@ -1,236 +1,5 @@
+SuperStrict
 
-Strict
-
-Rem
-bbdoc: Graphics/PNG loader
-about:
-The PNG loader module provides the ability to load PNG format #pixmaps.
-End Rem
 Module BRL.PNGLoader
 
-ModuleInfo "Version: 1.07"
-ModuleInfo "Author: Mark Sibly"
-ModuleInfo "License: zlib/libpng"
-ModuleInfo "Copyright: Blitz Research Ltd"
-ModuleInfo "Modserver: BRL"
-
-ModuleInfo "History: 1.07"
-ModuleInfo "History: Fixed global stream concurrency issue."
-ModuleInfo "History: 1.06"
-ModuleInfo "History: Use Byte Ptr instead of int for.. pointers."
-ModuleInfo "History: 1.05"
-ModuleInfo "History: libpng update to 1.6.7."
-ModuleInfo "History: 1.04"
-ModuleInfo "History: libpng update to 1.2.12."
-ModuleInfo "History: Extra load error handling."
-ModuleInfo "History: 1.03 Release"
-ModuleInfo "History: Added Gray/Alpha support"
-ModuleInfo "History: 1.02 Release"
-ModuleInfo "History: Fixed palettized/grayscale support"
-
-Import BRL.Pixmap
-Import Pub.LibPNG
-
-Private
-
-Function png_read_fn( png_ptr:Byte Ptr,buf:Byte Ptr,size )
-	Local stream:TStream = TStream(png_get_io_ptr(png_ptr))
-	Return stream.ReadBytes( buf,size )
-End Function
-
-Function png_write_fn( png_ptr:Byte Ptr,buf:Byte Ptr,size )
-	Local stream:TStream = TStream(png_get_io_ptr(png_ptr))
-	Return stream.WriteBytes( buf,size )
-End Function
-
-Function png_flush_fn( png_ptr:Byte Ptr )
-	Local stream:TStream = TStream(png_get_io_ptr(png_ptr))
-	stream.Flush
-End Function
-
-Public
-
-Rem
-bbdoc: Load a Pixmap in PNG format
-about:
-#LoadPixmapPNG loads a pixmap from @url in PNG format.
-
-If the pixmap cannot be loaded, Null is returned.
-End Rem
-Function LoadPixmapPNG:TPixmap( url:Object )
-
-	Local png_stream:TStream=ReadStream( url )
-	If Not png_stream Return
-
-	Local buf:Byte[8]
-	
-	If png_stream.ReadBytes( buf,8 )<>8 Or png_sig_cmp( buf,0,8 )<>0
-		png_stream.Close
-		png_stream=Null
-		Return
-	EndIf
-	
-	Try
-		Local png_ptr:Byte Ptr=png_create_read_struct( "1.6.7",Null,Null,Null )
-		
-		' check for valid png_ptr
-		If Not png_ptr Then
-			png_stream.Close
-			png_stream=Null
-			Return
-		End If
-		
-		Local info_ptr:Byte Ptr=png_create_info_struct( png_ptr )
-		
-		' check for valid info_ptr
-		If Not info_ptr Then
-			png_stream.Close
-			png_stream=Null
-			png_destroy_read_struct png_ptr,Null,Null
-			Return
-		End If
-		
-		png_set_sig_bytes png_ptr,8
-	
-		png_set_read_fn png_ptr,png_stream,png_read_fn
-			
-		png_read_png png_ptr,info_ptr,PNG_TRANSFORM_EXPAND|PNG_TRANSFORM_STRIP_16,Null
-	
-		Local width,height,bit_depth,color_type,interlace_type,compression_type,filter_method
-		png_get_IHDR png_ptr,info_ptr,width,height,bit_depth,color_type,interlace_type,compression_type,filter_method
-					
-		Local pixmap:TPixmap
-				
-		If bit_depth=8
-			Local pf
-			Select color_type
-			Case PNG_COLOR_TYPE_GRAY
-				pf=PF_I8
-			Case PNG_COLOR_TYPE_RGB
-				pf=PF_RGB888
-			Case PNG_COLOR_TYPE_RGBA
-				pf=PF_RGBA8888
-			Case PNG_COLOR_TYPE_GRAY_ALPHA
-				pixmap=CreatePixmap( width,height,PF_RGBA8888 )
-				Local rows:Byte Ptr Ptr=png_get_rows( png_ptr,info_ptr )
-				For Local y=0 Until height
-					Local src:Byte Ptr=rows[y]
-					Local dst:Byte Ptr=pixmap.PixelPtr(0,y)
-					For Local x=0 Until width
-						Local a=src[0]
-						Local i=src[1]
-						dst[0]=i
-						dst[1]=i
-						dst[2]=i
-						dst[3]=a
-						src:+2
-						dst:+4
-					Next
-				Next
-			End Select
-			If pf
-				pixmap=CreatePixmap( width,height,pf )
-				Local rows:Byte Ptr Ptr=png_get_rows( png_ptr,info_ptr )
-				For Local y=0 Until height
-					CopyPixels rows[y],pixmap.PixelPtr(0,y),pf,width
-				Next
-			EndIf
-		EndIf
-			
-		png_destroy_read_struct Varptr png_ptr,Varptr info_ptr,Null
-	
-		png_stream.Close
-		png_stream=Null
-		Return pixmap
-		
-	Catch ex:String
-	
-		If ex<>"PNG ERROR" Throw ex
-	
-	End Try
-
-End Function
-
-Rem
-bbdoc: Save a Pixmap in PNG format
-about:
-#SavePixmapPNG saves @pixmap to @url in PNG format. If successful, #SavePixmapPNG returns
-True, otherwise False.
-
-The optional @compression parameter should be in the range 0 to 9, where
-0 indicates no compression (fastest) and 9 indicates full compression (slowest).
-End Rem
-Function SavePixmapPNG( pixmap:TPixmap,url:Object,compression=5 )
-
-	compression=Min( Max( compression,0 ),9 )
-
-	Local png_stream:TStream = WriteStream( url )
-	If Not png_stream Return
-	
-	Try
-		Local png_ptr:Byte Ptr=png_create_write_struct( "1.6.7",Null,Null,Null )
-		Local info_ptr:Byte Ptr=png_create_info_struct( png_ptr )
-	
-		png_set_write_fn png_ptr,png_stream,png_write_fn,png_flush_fn
-	
-		Local bitdepth,colortype,transform
-		
-		Select pixmap.format
-		Case PF_I8
-			colortype=PNG_COLOR_TYPE_GRAY
-		Case PF_RGB888
-			colortype=PNG_COLOR_TYPE_RGB
-		Case PF_BGR888
-			colortype=PNG_COLOR_TYPE_RGB
-			transform=PNG_TRANSFORM_BGR
-		Case PF_RGBA8888
-			colortype=PNG_COLOR_TYPE_RGBA
-		Case PF_BGRA8888
-			colortype=PNG_COLOR_TYPE_RGBA
-			transform=PNG_TRANSFORM_BGR
-		Default
-			colortype=PNG_COLOR_TYPE_RGBA
-			pixmap=pixmap.Convert( PF_RGBA8888 )
-		End Select
-	
-		png_set_compression_level png_ptr,compression
-	
-		png_set_IHDR png_ptr,info_ptr,pixmap.width,pixmap.height,8,colortype,PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT
-		
-		Local rows:Byte Ptr[pixmap.height]
-		For Local i=0 Until pixmap.height
-			rows[i]=pixmap.PixelPtr( 0,i )
-		Next
-		
-		png_set_rows png_ptr,info_ptr,rows
-	
-		png_write_png png_ptr,info_ptr,transform,Null
-	
-		png_destroy_write_struct Varptr png_ptr,Varptr info_ptr,Null
-		
-		png_stream.Close
-		png_stream=Null
-		
-		Return True
-		
-	Catch ex:String
-	
-		If ex<>"PNG ERROR" Throw ex
-	
-	End Try
-		
-End Function
-
-Private
-
-Type TPixmapLoaderPNG Extends TPixmapLoader
-
-	Method LoadPixmap:TPixmap( stream:TStream ) Override
-	
-		Return LoadPixmapPNG( stream )
-	
-	End Method
-	
-End Type
-
-New TPixmapLoaderPNG
+Import Image.PNG