Annotation of parser3/src/types/pa_vimage.C, revision 1.22.2.4
1.7 paf 1: /** @file
1.1 paf 2: Parser: @b image parser type.
3:
1.22.2.3 paf 4: Copyright(c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
1.16 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.18 paf 6: */
1.1 paf 7:
1.22.2.4! paf 8: static const char* IDENT_VIMAGE_C="$Date: 2003/01/31 12:34:43 $";
1.1 paf 9:
1.22.2.4! paf 10: #include "pa_value_includes.h"
1.1 paf 11: #include "pa_vimage.h"
12: #include "pa_vint.h"
13: #include "pa_vstring.h"
1.8 parser 14: #include "gif.h"
1.1 paf 15:
1.22.2.4! paf 16: void VImage::set(StringPtr src, int width, int height,
! 17: gdImagePtr aimage,
! 18: ValuePtr aexif) {
! 19: fimage=aimage;
1.21 paf 20: fexif=aexif;
1.3 paf 21:
1.1 paf 22: // $src
1.3 paf 23: if(src)
1.22.2.4! paf 24: ffields.put(StringPtr(new String("src")), ValuePtr(new VString(src)));
1.1 paf 25: // $width
26: if(width)
1.22.2.4! paf 27: ffields.put(StringPtr(new String("width")), ValuePtr(new VInt(width)));
1.1 paf 28: // $height
29: if(height)
1.22.2.4! paf 30: ffields.put(StringPtr(new String("height")), ValuePtr(new VInt(height)));
1.2 paf 31:
32: // defaults
1.8 parser 33: // $border(0)
1.22.2.4! paf 34: ffields.put(StringPtr(new String("border")), ValuePtr(new VInt(0)));
1.11 parser 35:
1.12 parser 36: // internals, take a look at image.C append_attrib_pair before update
1.8 parser 37: // $line-width(1)
1.22.2.4! paf 38: ffields.put(StringPtr(new String("line-width")), ValuePtr(new VInt(1)));
1.8 parser 39: }
40:
1.21 paf 41:
1.22.2.2 paf 42: ValuePtr VImage::get_element(StringPtr aname, Value& aself, bool looking_up) {
1.21 paf 43: // $method
1.22.2.1 paf 44: if(ValuePtr result=VStateless_object::get_element(aname, aself, looking_up))
1.21 paf 45: return result;
46:
47: // $exif
1.22.2.4! paf 48: if(*aname==EXIF_ELEMENT_NAME)
1.21 paf 49: return fexif;
50:
51: // $src, $size
1.22.2.4! paf 52: return ffields.get(aname);
1.21 paf 53: }
1.8 parser 54:
1.22.2.2 paf 55: bool VImage::put_element(StringPtr aname, ValuePtr avalue, bool replace) {
1.8 parser 56: ffields.put(aname, avalue);
57:
1.22.2.4! paf 58: if(fimage) {
! 59: if(*aname=="line-width") {
! 60: fimage->SetLineWidth(min(max(avalue->as_int(), 1), 10));
! 61: } else if(*aname=="line-style") {
! 62: StringPtr sline_style=avalue->as_string(0);
! 63: fimage->SetLineStyle(sline_style->size()?sline_style->cstr(String::UL_AS_IS):(const char*)0);
1.8 parser 64: }
1.20 paf 65: }
66:
67: return true;
1.1 paf 68: }
E-mail: