Annotation of parser3/src/types/pa_vimage.C, revision 1.22.2.7.2.3

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.7.2.3! paf         8: static const char* IDENT_VIMAGE_C="$Date: 2003/03/20 14:19:10 $";
1.1       paf         9: 
                     10: #include "pa_vimage.h"
                     11: #include "pa_vint.h"
                     12: #include "pa_vstring.h"
1.8       parser     13: #include "gif.h"
1.1       paf        14: 
1.22.2.7.2.1  paf        15: void VImage::set(const String& src, int width, int height,
1.22.2.7.2.3! paf        16:                                 gdImage* aimage,
        !            17:                                 Value* aexif) {
1.22.2.6  paf        18:        image=aimage;
1.21      paf        19:        fexif=aexif;
1.3       paf        20: 
1.1       paf        21:        // $src
1.3       paf        22:        if(src)
1.22.2.7.2.3! paf        23:                ffields.put(String* (new String("src")), Value*(new VString(src)));
1.1       paf        24:        // $width
                     25:        if(width)
1.22.2.7.2.3! paf        26:                ffields.put(String* (new String("width")), Value*(new VInt(width)));
1.1       paf        27:        // $height
                     28:        if(height)
1.22.2.7.2.3! paf        29:                ffields.put(String* (new String("height")), Value*(new VInt(height)));
1.2       paf        30: 
                     31:        // defaults
1.8       parser     32:        // $border(0)
1.22.2.7.2.3! paf        33:        ffields.put(String* (new String("border")), Value*(new VInt(0)));
1.11      parser     34: 
1.12      parser     35:        // internals, take a look at image.C append_attrib_pair before update
1.8       parser     36:        // $line-width(1) 
1.22.2.7.2.3! paf        37:        ffields.put(String* (new String("line-width")), Value*(new VInt(1)));
1.8       parser     38: }
                     39: 
1.21      paf        40: 
1.22.2.7.2.3! paf        41: Value* VImage::get_element(const String& aname, Value& aself, bool looking_up) {
1.21      paf        42:        // $method
1.22.2.7.2.3! paf        43:        if(Value* result=VStateless_object::get_element(aname, aself, looking_up))
1.21      paf        44:                return result;
                     45: 
                     46:        // $exif
1.22.2.7.2.3! paf        47:        if(aname==EXIF_ELEMENT_NAME)
1.21      paf        48:                return fexif;
                     49: 
                     50:        // $src, $size
1.22.2.4  paf        51:        return ffields.get(aname);
1.21      paf        52: }
1.8       parser     53: 
1.22.2.7.2.3! paf        54: bool VImage::put_element(const String& aname, Value* avalue, bool replace) {
1.8       parser     55:        ffields.put(aname, avalue);
                     56: 
1.22.2.6  paf        57:        if(image) {
1.22.2.7.2.3! paf        58:                if(aname=="line-width") {
1.22.2.6  paf        59:                        image->SetLineWidth(min(max(avalue->as_int(), 1), 10));
1.22.2.7.2.3! paf        60:                } else if(aname=="line-style") {
1.22.2.7.2.1  paf        61:                        const String& sline_style=avalue->as_string(0);
1.22.2.7.2.3! paf        62:                        image->SetLineStyle(sline_style->length()?sline_style->cstr(String::L_AS_IS):CharPtr(0));
1.8       parser     63:                }
1.20      paf        64:        }
                     65: 
                     66:        return true;    
1.1       paf        67: }

E-mail: