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: