Roxen.git/
server/
modules/
graphics/
cimg.pike
Branch:
Tag:
Non-build tags
All tags
No tags
1999-11-09
1999-11-09 15:51:15 by Peter Bortas <zino@lysator.liu.se>
6470a6210a8af724a96a28ef17071552660625c8 (
83
lines) (+
83
/-
0
)
[
Show
|
Annotate
]
Branch:
1.3
Image conversion module backported from 1.4.
Rev: server/modules/graphics/cimg.pike:1.1
1:
+
#include <module.h>
+
inherit "module";
+
inherit "roxenlib";
-
+
roxen.ImageCache the_cache;
+
+
array register_module()
+
{
+
return
+
({
+
MODULE_PARSER,
+
"Image converter",
+
"Provides a tag 'cimg'. Usage: "
+
"<cimg src=indata format=outformat [quant=numcolors] [img args]>",
+
0,1
+
});
+
}
+
+
void start()
+
{
+
the_cache = roxen.ImageCache( "cimg", generate_image );
+
}
+
+
mapping generate_image( mapping args, object id )
+
{
+
return roxen.low_load_image( args->src, id );
+
}
+
+
mapping find_internal( string f, object id )
+
{
+
return the_cache->http_file_answer( f, id );
+
}
+
+
string tag_cimg( string t, mapping args, object id )
+
{
+
mapping a =
+
([
+
"src":fix_relative( args->src, id ),
+
"quant":args->quant,
+
"format":args->format,
+
"maxwidth":args->maxwidth,
+
"maxheight":args->maxheight,
+
"scale":args->scale,
+
"dither":args->dither,
+
]);
+
+
foreach( glob( "*-*", indices(args)), string n )
+
a[n] = args[n];
+
+
args -= a;
+
+
args->src = query_internal_location()+the_cache->store( a );
+
+
if( mapping size = the_cache->metadata( a, id, 1 ) )
+
{
+
// image in cache (1 above prevents generation on-the-fly)
+
args->width = size->xsize;
+
args->height = size->ysize;
+
}
+
return make_tag( "img", args );
+
}
+
+
string tag_cimg_url( string t, mapping args, object id )
+
{
+
mapping a =
+
([
+
"src":fix_relative( args->src, id ), "quant":args->quant,
+
"format":args->format, "maxwidth":args->maxwidth,
+
"maxheight":args->maxheight, "scale":args->scale,
+
"dither":args->dither,
+
]);
+
+
foreach( glob( "*-*", indices(args)), string n )
+
a[n] = args[n];
+
+
return query_internal_location()+the_cache->store( a );
+
}
+
+
mapping query_tag_callers()
+
{
+
return ([ "cimg":tag_cimg,
+
"cimg-url":tag_cimg_url ]);
+
}
Newline at end of file added.