How to get ImageID from libpng?

Linux specific forum
Trond
Always Here
Always Here
Posts: 7446
Joined: Mon Sep 22, 2003 6:45 pm
Location: Norway

How to get ImageID from libpng?

Post by Trond »

I think I am able to load a png image using libpng, but how can get the ImageID so I can use it?

Code: Select all

ImportC "/usr/lib/libpng.a"
  png_create_read_struct(l.l, p.l, l2.l, l3.l)
  png_destroy_read_struct(*png_ptr.l, l.l, l2.l)
  png_create_info_struct(*png_ptr.l)
  png_init_io(png_ptr, fp)
  png_read_png(png_ptr, info_ptr, png_transforms, NULL)
  png_get_rows(*png_ptr, *info_ptr)
EndImport
ImportC "/usr/lib/libz.a"
EndImport
ImportC "/usr/lib/libImath.so.2"
EndImport

Structure png_structp
EndStructure
Structure png_infop
EndStructure

EnableExplicit

Global *png_ptr.png_structp
Global *info_ptr.png_infop
Global *end_info.png_infop
Global user_error_ptr, user_error_fn, user_warning_fn
Global fp
Global row_pointers

Procedure Finish()
  png_destroy_read_struct(@*png_ptr, 0, 0)
EndProcedure

Procedure ChkN(Val, Msg.s)
  If Val = 0
    Debug "Error: " + Msg
    Finish()
  EndIf
  ProcedureReturn Val
EndProcedure

*png_ptr = png_create_read_struct(@"1.2.8", @user_error_ptr, user_error_fn, user_warning_fn)
ChkN(*png_ptr, "#1")

*info_ptr = png_create_info_struct(*png_ptr)
ChkN(*info_ptr, "#2")

*end_info = png_create_info_struct(*png_ptr)
ChkN(*end_info, "#3")

fp = fopen_("/usr/share/pixmaps/mozilla-firefox.png", "rb")
ChkN(fp, "File I/O")
png_init_io(*png_ptr, fp)
png_read_png(*png_ptr, *info_ptr, 0, 0)
fclose_(fp)

row_pointers = png_get_rows(*png_ptr, *info_ptr)

Fred
Administrator
Administrator
Posts: 18351
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Post by Fred »

An ImageID is a GdkPixmap on Linux, so you will have to create one with your data.
Post Reply