add.cpp

Go to the documentation of this file.
00001 #include "text.h"
00002 #include "image.h"
00003 #include "runtime.h"
00004 #include "point.h"
00005 
00013 Value * Runtime::add(Value * a, Value * b)
00014 {
00015   if (!a || !b) return NULL;
00016   if (typeid(*a)==typeid(TextValue) && typeid(*b)==typeid(TextValue))
00017     {
00018       TextValue * A = (TextValue*)a;
00019       TextValue * B = (TextValue*)b;
00020       return new TextValue(A->number()+B->number());
00021     }
00022   if (typeid(*a)==typeid(ImageValue) && typeid(*b)==typeid(ImageValue))
00023     {
00024       ImageValue * A = (ImageValue*)a;
00025       ImageValue * B = (ImageValue*)b;
00026       
00027       PointValue topleft     = min(A->topleft(),B->topleft());
00028       PointValue bottomright = max(A->bottomright(),B->bottomright());
00029       PointValue maxres      = max(A->scale,B->scale);
00030       int cs = max(A->channelcount(),B->channelcount());
00031       ImageValue * O = new ImageValue(topleft,bottomright,maxres,cs);
00032       printf("O1: %g - %g\n",O->minz(),O->maxz());
00033       O->clear(0);
00034       printf("O2: %g - %g\n",O->minz(),O->maxz());
00035       printf("A: %g - %g\n",A->minz(),A->maxz());
00036       O->addFrom(A);
00037       printf("O3: %g - %g\n",O->minz(),O->maxz());
00038       printf("B: %g - %g\n",B->minz(),B->maxz());
00039       O->addFrom(B);
00040       printf("O4: %g - %g\n",O->minz(),O->maxz());
00041       return O;
00042     }
00043   if (typeid(*a)==typeid(PointValue) && typeid(*b)==typeid(PointValue))
00044     {
00045       PointValue * A = (PointValue*)a;
00046       PointValue * B = (PointValue*)b;
00047       PointValue * R = new PointValue();
00048       R->x=A->x+B->x;
00049       R->y=A->y+B->y;
00050       return R;
00051     }
00052   assert(0);
00053 }
00054 
00055 Value * Runtime::add(vector<Value*> values)
00056 {
00057   Value * accumulated = values[0];
00058   for(unsigned int i = 1 ; i < values.size() ; i++)
00059       accumulated=add(accumulated,values[i]);
00060   return accumulated;
00061 }

Generated on Mon Jun 5 22:08:41 2006 for iis by  doxygen 1.4.6