
-----------------------------------------------------------------------------
--# Saving a pixbuf in various formats:
-- this depends on which image formats your GTK library knows how to handle.
-- don't worry too much if it fails on some. 
-- You won't often use this feature, and there are always other ways to
-- accomplish the same thing using external programs (Gimp).
------------------------------------------------------------------------------

include GtkEngine.e

constant docs = `
<u><b>Saving Pixbufs</b></u>

This loads an image of the mongoose, and
saves it in various formats, reporting 
success or failure.
`
constant win = create(GtkWindow,{
    {"border width",10},
    {"connect","destroy","Quit"}})

object pb = create(GdkPixbuf,"thumbnails/mongoose.png")

constant panel = create(GtkBox,VERTICAL)
	add(win,panel)
	
constant lbl = create(GtkLabel)
	set(lbl,"markup",docs)
	add(panel,lbl)
	
constant img = create(GtkImage,pb)
	add(panel,img)
	
constant filetype = {
	"jpeg","png","tiff","ico","bmp","gif"
	}

constant box = create(GtkButtonBox)
	pack(panel,-box)
	
constant quitbtn = create(GtkButton,"gtk-quit","Quit")	
	add(box,quitbtn)
	
constant okbtn = create(GtkButton,"insert-image#_Convert","SaveEm")
	add(box,okbtn)

show_all(win)
main()

---------------------------------------------------------------------
function SaveFmt(atom img, sequence fname, sequence fmt, object opt=0)
-----------------------------------------------------------------------
    if get(img,"save",canonical_path(fname),fmt,opt) then
	    return sprintf("\t%s\n",{fmt})
    else
	    return sprintf("<span color='red'>\t%s failed\n</span>",{fmt})
    end if
end function

-----------------------------------
global function SaveEm()
-----------------------------------
object list = "Saved in home directory:\n"
    & SaveFmt(pb,"~/Goose.png","png","compression=5")
    & SaveFmt(pb,"~/Goose.jpg","jpeg","quality=100")
    & SaveFmt(pb,"~/Goose.ico","ico","depth=24")
    & SaveFmt(pb,"~/Goose.bmp","bmp")
    & SaveFmt(pb,"~/Goose.xpm","xpm")
    & SaveFmt(pb,"~/Goose.gif","gif")
    & SaveFmt(pb,"~/Goose.tif","tiff")
    & SaveFmt(pb,"~/Goose.cgm","cgm")
    & SaveFmt(pb,"~/Goose.svg","svg")

-- compression, quality, depth are optional, and only work on 
-- the indicated formats

Info(win,"OK","Images converted",list,,,pb)

return 1
end function


