77 return std::make_pair(r1,r2);
81 if (p.
x <
tl.x)
return false;
82 if (p.
y <
tl.y)
return false;
83 if (p.
x >=
br.x)
return false;
84 if (p.
y >=
br.y)
return false;
106 CubicInterpolate(
float f_0,
float f_1,
float df_0,
float df_1) : f_0(f_0), f_1(f_1), df_0(df_0), df_1(df_1) { }
109 float a = 2.0*f_0-2.0*f_1+df_0+df_1;
110 float b = -3.0*f_0+3.0*f_1-3.0*df_0-df_1;
113 return a*x*x*x + b*x*x + c*x +
d;
117 float a = 2.0*f_0-2.0*f_1+df_0+df_1;
118 float b = -3.0*f_0+3.0*f_1-3.0*df_0-df_1;
120 return 3.0*a*x*x + 2.0*b*x + c;
123 float f_0,f_1,df_0,df_1;
135 return c1*(1.0-pos)+c2*pos;
147 float val = w.Index(pos*w.Length());
160 WaveformBitmap(
Waveform &wv,
float start_x,
float end_x,
float start_y,
float end_y,
int sx,
int sy,
Color true_color,
Color false_color) : wv(wv), start_x(start_x), end_x(end_x), start_y(start_y), end_y(end_y), sx(sx), sy(sy), true_color(true_color), false_color(false_color) { }
164 virtual int SizeX()
const {
return sx; }
165 virtual int SizeY()
const {
return sy; }
168 float pos = float(x)/float(sx)*(end_x-start_x)+start_x;
169 float val = wv.Index(pos);
171 val /= end_y-start_y;
173 float start_range = start_y;
174 start_range -= start_y;
175 start_range /= end_y-start_y;
176 start_range *= float(sy);
177 float end_range = val;
178 if (start_range > end_range) { std::swap(start_range, end_range); }
179 if (y >= start_range && y <= end_range)
188 float start_x, end_x, start_y, end_y;
190 Color true_color, false_color;
197 Object3dRender(
VolumeObject &o,
int sx,
int sy,
Point p,
float min_z,
float max_z) : o(o), sx(sx), sy(sy), p(p), min_z(min_z), max_z(max_z)
205 bool Map(
int x,
int y)
const
207 return done.operator[](y)[x] == 1;
217 if (pp.
y<0.0)
return;
218 if (pp.
x<0.0)
return;
219 if (pp.
x>=sx)
return;
220 if (pp.
y>=sy)
return;
221 if (done.operator[]((
int)pp.
y)[(
int)pp.
x]==1)
return;
223 done.operator[]((int)pp.
y)[(
int)pp.
x] = 1;
230 if (p.z>=startz && p.z < max_z)
232 if (p.z<=startz && p.z > min_z)
253 virtual int SizeX()
const {
return fb.SizeX(); }
254 virtual int SizeY()
const {
return fb.SizeY(); }
255 virtual bool Map(
int x,
int y)
const
257 float val = fb.Map(x,y);
258 return val >= rs && val <= re;
267class SectionsBoolBitmap :
public Bitmap<bool>
270 SectionsBoolBitmap(
int sx,
int sy,
float x,
float y, std::function<
bool (
float angle)>
f) : sx(sx), sy(sy), x(x), y(y),
f(
f) { }
271 void Collect(CollectVisitor &vis) {
276 virtual int SizeX()
const {
return sx; }
277 virtual int SizeY()
const {
return sy; }
279 bool Map(
int ax,
int ay)
const
285 float angle_in_rad = atan2(yy,xx);
286 float angle_in_deg = angle_in_rad*360.0/2.0/3.14159;
287 bool b =
f(angle_in_deg);
294 std::function<bool (
float)>
f;
299class ConicalGradientBitmap :
public Bitmap<Color>
302 ConicalGradientBitmap(
int sx,
int sy,
float x,
float y,
float angle1,
float angle2,
unsigned int color_1,
unsigned int color_2) : sx(sx), sy(sy), x(x), y(y), angle1(angle1), angle2(angle2),
color_1(
color_1), color_2(color_2) { }
303 void Collect(CollectVisitor &vis) {
308 virtual int SizeX()
const {
return sx; }
309 virtual int SizeY()
const {
return sy; }
311 Color
Map(
int ax,
int ay)
const
317 float angle_in_rad = atan2(yy,xx);
318 float angle_in_deg = angle_in_rad*360.0/2.0/3.14159;
319 angle_in_deg -= angle1;
320 angle_in_deg /= (angle2-angle1);
324 if (angle_in_deg < 0.0)
return 0;
325 if (angle_in_deg > 1.0)
return 0;
341 PartCircleBoolBitmap(
int sx,
int sy,
float x,
float y,
float start_angle,
float end_angle,
float start_rad,
float end_rad) : sx(sx), sy(sy), x(x), y(y), sa(start_angle), ea(end_angle), sr(start_rad), er(end_rad) { }
347 virtual int SizeX()
const {
return sx; }
348 virtual int SizeY()
const {
return sy; }
350 bool Map(
int ax,
int ay)
const
354 float r = sqrtf(
float(ax)*
float(ax)+
float(ay)*
float(ay));
355 float angle = atan2f(
float(ay),
float(ax));
356 if (angle<sa || angle>ea)
return false;
357 if (r<sr || r>er)
return false;
375 range_start(range_start),
384 virtual int SizeX()
const {
return bm.SizeX(); }
385 virtual int SizeY()
const {
return bm.SizeY(); }
386 virtual bool Map(
int x,
int y)
const
388 float val = bm.Map(x,y);
389 return range_start<=val && val <= range_end;
394 float range_start, range_end;
408 virtual int SizeX()
const {
return bm.SizeX(); }
409 virtual int SizeY()
const {
return bm.SizeY(); }
412 float val = bm.Map(x,y);
432 virtual int SizeX()
const {
return bm.SizeX()/csx+1; }
433 virtual int SizeY()
const {
return bm.SizeY()/csy+1; }
434 virtual float Map(
int x,
int y)
const
439 for(
int xx=0;xx<sx;xx++)
440 for(
int yy=0;yy<sy;yy++)
442 if (x*csx+xx < bm.SizeX() && y*csy+yy<bm.SizeY())
443 val+=bm.Map(x*csx+xx,y*csy+yy)?1.0:0.0;
466 virtual int SizeX()
const {
return bm.SizeX(); }
467 virtual int SizeY()
const {
return bm.SizeY(); }
468 virtual T Map(
int x,
int y)
const
470 if (bm.Map(x,y))
return true_t;
488 vec[i]->Collect(vis);
504 asc.push_back(ascender);
506 adv.push_back(advance_x);
507 desc.push_back(descender);
508 lefts.push_back(left);
514 for(
int i=0;i<sz;i++) { pixels+=adv[i] + lefts[i] +x_gap; }
521 virtual T Map(
int x,
int y)
const
530 pixels+=adv[i] + lefts[i] +x_gap;
534 if (i==sz) {
return def; }
535 int delta = -(topt[i]);
536 if (y<delta)
return def;
537 if (y>=delta+vec[i]->
SizeY())
return def;
538 if (x -lefts[i]-oldpixels<0)
return def;
539 if (x-lefts[i]-oldpixels>=vec[i]->
SizeX())
return def;
540 return vec[i]->Map(x-lefts[i]-oldpixels,y-delta);
544 int sz = topt.size();
546 for(
int i=0;i<sz;i++)
551 if (delta<min_delta) min_delta=delta;
557 int sz = topt.size();
559 for(
int i=0;i<sz;i++)
567 std::vector<Bitmap<T>*> vec;
568 std::vector<int> topt;
569 std::vector<int> asc;
570 std::vector<int> hgt;
571 std::vector<int> adv;
572 std::vector<int> desc;
573 std::vector<int> lefts;
589 virtual int SizeX()
const {
return bm.SizeX(); }
590 virtual int SizeY()
const {
return bm.SizeY(); }
591 bool Map(
int x,
int y)
const {
return !bm.Map(x,y); }
610 virtual int SizeX()
const {
return bm1.SizeX(); }
611 virtual int SizeY()
const {
return bm1.SizeY(); }
612 bool Map(
int x,
int y)
const {
return bm1.Map(x,y)||bm2.Map(x,y); }
631 virtual int SizeX()
const {
return bm1.SizeX(); }
632 virtual int SizeY()
const {
return bm1.SizeY(); }
633 bool Map(
int x,
int y)
const {
return bm1.Map(x,y) ^ bm2.Map(x,y); }
654 virtual int SizeX()
const {
return bm1.SizeX(); }
655 virtual int SizeY()
const {
return bm1.SizeY(); }
656 bool Map(
int x,
int y)
const {
return bm1.Map(x,y) && !bm2.Map(x,y); }
674 virtual int SizeX()
const {
return bm.SizeX(); }
675 virtual int SizeY()
const {
return bm.SizeY(); }
676 virtual bool Map(
int x,
int y)
const
678 return bm.Map(x,y)==val;
698 virtual int SizeX()
const {
return bm.SizeX(); }
699 virtual int SizeY()
const {
return bm.SizeY(); }
700 virtual bool Map(
int x,
int y)
const
702 Color c = bm.Map(x,y);
703 return c.
r==val.r && c.
g==val.g && c.
b == val.b;
712template<
class T,
class K>
729 virtual int SizeX()
const {
return bm1.SizeX(); }
730 virtual int SizeY()
const {
return bm1.SizeY(); }
731 virtual std::pair<T,K>
Map(
int x,
int y)
const
733 return std::make_pair(bm1.Map(x,y), bm2.Map(x,y));
752 virtual int SizeX()
const {
return bm1.SizeX(); }
753 virtual int SizeY()
const {
return bm1.SizeY(); }
754 virtual T Map(
int x,
int y)
const
756 if (which.Map(x,y))
return bm2.Map(x,y);
782 virtual int SizeX()
const {
return sx; }
783 virtual int SizeY()
const {
return sy; }
784 virtual T Map(
int x,
int y)
const
786 std::pair<int,int> p = fptr(std::make_pair(x,y));
787 return bm.Map(p.first,p.second);
791 std::pair<int,int> (*fptr)(std::pair<int,int>);
798class PointNDim :
public NDim<float, Point>
801 PointNDim(Point p) : p(p) { }
802 virtual std::vector<float>
Count()
const {
return std::vector<float>(); }
803 virtual Point
Map(
float *array,
int size)
const
805 if (
size != 0) { std::cout <<
"PointNDIm dimension error!" << std::endl; }
808 virtual NDim<float,Point> *
Interpolate(
const NDim<float,Point>& b1,
const NDim<float,Point> & b2,
float val)
const
810 const PointNDim *dim1 =
dynamic_cast<const PointNDim*
>(&b1);
811 const PointNDim *dim2 =
dynamic_cast<const PointNDim*
>(&b2);
822template<
class I,
class B>
823class NextNDim :
public NDim<I, B>
826 NextNDim(NDim<I,B> &start, NDim<I,B> &end, I length) : start(start),
end(
end), length(length), middle_1(0), middle_2(0) { }
827 virtual std::vector<I>
Count()
const
829 std::vector<I> vec = start.Count();
830 vec.push_back(length);
833 virtual B
Map(I *array,
int size)
const
835 NDim<I,B> *d_middle = start.Interpolate(start, end, array[
size-1]);
836 B pos = d_middle->
Map(array,
size-1);
840 virtual NDim<I,B> *
Interpolate(
const NDim<I,B> &b1,
const NDim<I,B> &b2, I val)
const
842 const NextNDim *dim1 =
dynamic_cast<const NextNDim<I,B>*
>(&b1);
843 const NextNDim *dim2 =
dynamic_cast<const NextNDim<I,B>*
>(&b2);
846 middle_1 = dim1->start.Interpolate(dim1->start, dim1->end, val);
847 middle_2 = dim2->start.Interpolate(dim2->start, dim2->end, val);
848 return new NextNDim(*middle_1, *middle_2, length);
850 ~NextNDim() {
delete middle_1;
delete middle_2; }
855 mutable NDim<I,B> *middle_1;
856 mutable NDim<I,B> *middle_2;
870 int Size()
const {
return bm.SizeX()*bm.SizeY(); }
890 float width,
float height,
float x_gap,
float y_gap,
893 width(width), height(height), x_gap(x_gap), y_gap(y_gap),
896 virtual int SizeX()
const {
return sx; }
897 virtual int SizeY()
const {
return sy; }
900 float xx = p1.
x + (width+x_gap)*u_x.dx*x+(height+y_gap)*u_y.dx*y;
901 float yy = p1.y + (width+x_gap)*u_x.dy*x+(height+y_gap)*u_y.dy*y;
911 float width,
height, x_gap, y_gap;
925 c.
p122 = p+r.
y*u_y+z*u_z;
926 c.
p211 = p + r.
x*u_x;
927 c.
p212 = p+z*u_z+ r.
x*u_x;
928 c.
p221 = p+r.
y*u_y+ r.
x*u_x;
929 c.
p222 = p+r.
y*u_y+z*u_z+ r.
x*u_x;
949 virtual int SizeX()
const {
return orig.SizeX(); }
950 virtual int SizeY()
const {
return orig.SizeY(); }
953 if (x<pos.x)
return orig.Map(x,y);
954 if (y<pos.y)
return orig.Map(x,y);
955 if (x>=pos.x+light.SizeX())
return orig.Map(x,y);
956 if (y>=pos.y+light.SizeY())
return orig.Map(x,y);
957 return Color::Lighter(orig.Map(x,y), light.Map(x-pos.x, y-pos.y));
974 virtual int SizeX()
const {
return orig.SizeX(); }
975 virtual int SizeY()
const {
return orig.SizeY(); }
978 if (x<pos.x)
return orig.Map(x,y);
979 if (y<pos.y)
return orig.Map(x,y);
980 if (x>=pos.x+dark.SizeX())
return orig.Map(x,y);
981 if (y>=pos.y+dark.SizeY())
return orig.Map(x,y);
982 return Color::Darker(orig.Map(x,y), dark.Map(x-pos.x, y-pos.y));
995 DynBitmap(
int sx,
int sy) : vec(sx*sy), sx(sx), sy(sy) { }
998 virtual int SizeX()
const {
return sx; }
999 virtual int SizeY()
const {
return sy; }
1004 const T &
At(
int x,
int y)
const
1018std::string
MB(
long i);
1031 int width = bm.SizeX();
1035 for(
int j=0;j<
height;j++)
1036 for(
int i=0;i<width;i++)
1038 buf.buffer[i+j*buf.ydelta] = 0xfefefefe;
1046 int width = bm.SizeX();
1050 for(
int j=0;j<
height;j++)
1051 for(
int i=0;i<width;i++)
1053 buf.buffer[i+j*buf.ydelta] = 0xfefefefe;
1063 for(
int x=0;x<sx;x++)
1064 for(
int y=0;y<sy;y++)
1069 virtual int SizeX()
const {
return buf.width; }
1070 virtual int SizeY()
const {
return buf.height; }
1074 if (x<0 || x >=
int(buf.width) || y <0 || y>=
int(buf.height))
1075 return Color(0x00000000);
1076 if (buf.buffer[x+y*buf.ydelta] == 0xfefefefe)
1078 Color c = bm.Map(x,y);
1079 unsigned int cc = c.
Pixel();
1080 buf.buffer[x+y*buf.ydelta] = cc;
1082 return Color(buf.buffer[x+y*buf.ydelta]);
1106 virtual int SizeX()
const {
return std::min(c1.SizeX(),c2.SizeX()); }
1107 virtual int SizeY()
const {
return std::min(c1.SizeY(),c2.SizeY()); }
1110 Color cc1 = c1.Map(x,y);
1111 Color cc2 = c2.Map(x,y);
1121class BitmapNDim :
public NDim<float, Color>
1124 BitmapNDim(Bitmap<Color> &bm) : bm(bm), middle(0) { }
1125 virtual std::vector<float>
Count()
const { std::vector<float> vec; vec.push_back(
float(bm.
SizeX())); vec.push_back(
float(bm.
SizeY()));
return vec; }
1126 virtual Color
Map(
float *array,
int size)
const
1128 if (
size != 2) std::cout <<
"BitmapNDim error dimensions" << std::endl;
1129 return bm.
Map(
int(array[0]),
int(array[1]));
1131 virtual NDim<float,Color> *
Interpolate(
const NDim<float,Color>& b1,
const NDim<float,Color> & b2,
float val)
const
1133 const BitmapNDim *dim1 =
dynamic_cast<const BitmapNDim*
>(&b1);
1134 const BitmapNDim *dim2 =
dynamic_cast<const BitmapNDim*
>(&b2);
1135 Bitmap<Color> &bm1 = dim1->bm;
1136 Bitmap<Color> &bm2 = dim2->bm;
1138 middle =
new InterpolateBitmap(bm1, bm2, val);
1139 return new BitmapNDim(*middle);
1141 ~BitmapNDim() {
delete middle; }
1144 mutable Bitmap<Color> *middle;
1151 GraphBitmap(
Function<float,float> &f,
Color top,
Color middle,
Color bottom,
float up_delta,
float down_delta,
float start_x,
float end_x,
float start_y,
float end_y,
int size_x,
int size_y) : f(f), top(top), middle(middle), bottom(bottom), up(up_delta), down(down_delta), start_x(start_x), end_x(end_x), start_y(start_y), end_y(end_y), size_x(size_x), size_y(size_y) { }
1154 virtual int SizeX()
const {
return size_x; }
1155 virtual int SizeY()
const {
return size_y; }
1163 xx *= (end_x-start_x);
1164 yy *= (end_y-start_y);
1167 float val = f.Index(xx);
1168 if (yy < val-up)
return top;
1169 if (yy < val+down)
return middle;
1174 Color top, middle, bottom;
1176 float start_x, end_x;
1177 float start_y, end_y;
1187 int left_border,
int right_border,
int top_border,
int bottom_border) : next(next), left(left), right(right), top(top), bottom(bottom),
1188 left_border(left_border), right_border(right_border),
1189 top_border(top_border), bottom_border(bottom_border) { }
1197 virtual int SizeX()
const {
return left_border + next.SizeX() + right_border; }
1198 virtual int SizeY()
const {
return top_border + next.SizeY() + bottom_border; }
1201 if (x < left_border)
return left;
1202 if (y < top_border)
return top;
1203 if (x >
SizeX()-right_border)
return right;
1204 if (y >
SizeY()-bottom_border)
return bottom;
1205 return next.Map(x-left_border, y-top_border);
1210 Color left, right, top, bottom;
1211 int left_border, right_border, top_border, bottom_border;
1221 bm.Collect(vis); bm2.Collect(vis);
1226 virtual int SizeX()
const {
return bm.SizeX(); }
1227 virtual int SizeY()
const {
return bm.SizeY(); }
1228 virtual T Map(
int xx,
int yy)
const
1230 if (xx>=x && xx<x+bm2.SizeX())
1231 if (yy>=y && yy<y+bm2.SizeY())
1233 return bm2.Map(xx-x,yy-y);
1235 return bm.Map(xx,yy);
1259 virtual int SizeX()
const {
return bm.SizeX(); }
1260 virtual int SizeY()
const {
return bm.SizeY(); }
1261 virtual Color Map(
int xx,
int yy)
const;
1285 virtual int SizeX()
const {
return bm.SizeX(); }
1286 virtual int SizeY()
const {
return bm.SizeY(); }
1289 Color c1 = bm.Map(xx,yy);
1292 if (xx>=x && xx<x+bm2.SizeX())
1293 if (yy>=y && yy<y+bm2.SizeY())
1295 c2 = bm2.Map(xx-x, yy-y);
1296 val = mask.Map(xx-x,yy-y);
1324 virtual int SizeX()
const {
return bm.SizeX(); }
1325 virtual int SizeY()
const {
return bm.SizeY(); }
1328 Color c1 = bm.Map(xx,yy);
1331 if (xx>=x && xx<x+bm2.SizeX())
1332 if (yy>=y && yy<y+bm2.SizeY())
1334 c2 = bm2.Map(xx-x, yy-y);
1335 val = mask.Map(xx-x,yy-y);
1359 SubBitmap(
Bitmap<T> &bm,
int x,
int y,
int width,
int height) : bm(bm), x(x), y(y), width(width), height(height) { }
1372 return bm.Map(x+mx, y+my);
1384 T bg_color) : bm(bm), l(l), t(t), r(r),b(b),bg_color(bg_color)
1395 virtual int SizeX()
const {
return l+bm.SizeX()+r; }
1396 virtual int SizeY()
const {
return t+bm.SizeY()+b; }
1399 if (x<l || y<t || x>=l+bm.SizeX()||y>=t+bm.SizeY())
1403 return bm.Map(x-l,y-t);
1438 for (
int i=0;i<s; i++)
1445 mutable std::vector<Bitmap<T> *> vec;
1447 int tile_sx, tile_sy;
1461 int face = x + y*sx;
1463 q.
p1 = mat.FacePoint(face, 0);
1464 q.
p2 = mat.FacePoint(face, 1);
1465 q.
p3 = mat.FacePoint(face, 2);
1466 q.
p4 = mat.FacePoint(face, 3);
1482 int SizeX()
const {
return pos.Size(); }
1483 int SizeY()
const {
return coll.NumFaces(); }
1486 Point p = pos.Index(x);
1488 q.
p1 = p + coll.FacePoint(y,0);
1489 q.
p2 = p + coll.FacePoint(y,1);
1490 q.
p3 = p + coll.FacePoint(y,2);
1491 q.
p4 = p + coll.FacePoint(y,3);
1504 virtual int SizeX()
const {
return width; }
1505 virtual int SizeY()
const {
return height; }
1506 virtual T Map(
int x,
int y)
const {
return array[x+y*height]; }
1513 array =
new T[width*height];
1514 for(
int y=0;y<height;y++)
1516 for(
int x=0;x<width;x++)
1518 array[x+y*width] = t.
Map(x,y);
1533template<
class T,
class K>
1541 virtual int SizeX()
const {
return bm.SizeX(); }
1542 virtual int SizeY()
const {
return bm.SizeY(); }
1559 virtual int SizeX()
const {
return sx; }
1560 virtual int SizeY()
const {
return sy; }
1593 return bm.Map(p.
x,p.
y);
1599template<
class T,
class K>
1608 std::pair<T,K>
Map(
int x,
int y)
const {
return std::make_pair(a1.Index(x),a2.Index(y)); }
1622 Size Map(
int xx,
int yy)
const {
Size s; s.
sx = x.Index(xx); s.sy = y.Index(yy);
return s; }
1632 MBitmap(
int x,
int y) : bm(new
T[x*y]), sx(x), sy(y) { }
1639 return bm[xx+yy*sx];
1641 T &
Mod(
int xx,
int yy) {
return bm[xx+yy*sx]; }
1644 bm=
new T[t.sx*t.sy];
1645 std::copy(t.bm,t.bm+t.sx*t.sy, bm);
1652 std::copy(t.bm,t.bm+sx*sy,bm);
1670template<
class T1,
class K,
class T2 = T1>
1684 int SizeX()
const {
return bm.SizeX(); }
1685 int SizeY()
const {
return bm.SizeY(); }
1686 K Map(
int x,
int y)
const {
return f.Index(bm.Map(x,y)); }
1695 MapRectBitmap(
Bitmap<TRect> &bm,
Point p,
Vector u_x,
Vector u_y,
Vector u_z,
float z) :
MapBitmap<
TRect,
CubeCoords>(bm, func), func(p,u_x,u_y,u_z,z) { }
1702 MapRectArray(
Array<int,TRect> &arr,
Point p,
Vector u_x,
Vector u_y,
Vector u_z,
float z) :
MapArray<int,
TRect,
CubeCoords>(arr,func), func(p,u_x,u_y,u_z,z) { }
1800 int SizeX()
const {
return bm.SizeX(); }
1801 int SizeY()
const {
return bm.SizeY(); }
1811 return unknown_value;
1828 float Map(
int xx,
int yy)
const {
return bitmap[xx+x*yy]; }
1829 RandomBitmap(
int x,
int y,
float min,
float max) : x(x), y(y), min(min), max(max)
1831 bitmap =
new float[x*y];
1832 for(
int yy=0;yy<y;yy++)
1834 for(
int xx=0;xx<x;xx++)
1836 bitmap[xx+x*yy] =
Rand();
1843 float rn = float(r.next());
1869 int SizeX()
const {
return times_x*bm.SizeX(); }
1870 int SizeY()
const {
return times_y*bm.SizeY(); }
1873 if (bm.SizeX()>1 && bm.SizeY()>1) {
1874 int xx = x % bm.SizeX();
1875 int yy = y % bm.SizeY();
1876 return bm.Map(xx,yy);
1881 int times_x, times_y;
1884template<
class C,
class T>
1892 virtual int SizeX()
const {
return bm.SizeX()*sx; }
1893 virtual int SizeY()
const {
return bm.SizeY()*sy; }
1898 T pixel = bm.Index(tx,ty);
1901 C pixel2 = func->Index(pixel)->Map(rx,ry);
1915 RotateZoomer(
Bitmap<C> &bm,
int sx,
int sy,
Point2d p1,
Vector2d vx,
Vector2d vy,
C outside) : bm(bm), sx(sx),sy(sy), p1(p1), vx(vx), vy(vy),outside(outside) { }
1918 virtual int SizeX()
const {
return sx; }
1919 virtual int SizeY()
const {
return sy; }
1922 Point2d p = p1+vx*(float(x)/sx)+vy*(
float(y)/sy);
1923 if (p.
x < 0.0 || p.
x >= bm.SizeX())
return outside;
1924 if (p.
y < 0.0 || p.
y >= bm.SizeY())
return outside;
1925 return bm.Map(
int(p.
x),
int(p.
y));
1945 bm.Collect(vis); bm2.Collect(vis);
1950 int SizeX()
const {
return bm.SizeX()+bm2.SizeX(); }
1951 int SizeY()
const {
return std::min(bm.SizeY(), bm.SizeY()); }
1960 return bm2.Map(x-bm.SizeX(), y);
2007 virtual int SizeX()
const {
return bm.SizeX(); }
2008 virtual int SizeY()
const {
return bm.SizeY(); }
2009 virtual float Map(
int x,
int y)
const
2013 return val*bm.Map(x,y);
2039 virtual int SizeX()
const {
return bm.SizeX(); }
2040 virtual int SizeY()
const {
return bm.SizeY(); }
2041 virtual float Map(
int x,
int y)
const
2045 return bm.Map(x,row1) + val*bm.Map(x,row2);
2070 virtual int SizeX()
const {
return m.SizeX(); }
2071 virtual int SizeY()
const {
return m.SizeY(); }
2072 virtual float Map(
int x,
int y)
const
2090 int SizeX()
const {
return add.SizeX(); }
2091 int SizeY()
const {
return add.SizeY(); }
2092 float Map(
int x,
int y)
const {
return add.Map(x,y); }
2110 int SizeX()
const {
return bm_min.SizeX(); }
2111 int SizeY()
const {
return bm_min.SizeY(); }
2112 void Prepare() { bm_min.Prepare(); bm_max.Prepare(); }
2120 c.
minz = sz*bm_min.Map(x,y);
2121 c.
maxz = sz*bm_max.Map(x,y);
2134 Cube3Cube(Cube3 c) : mat(
cube, Matrix::Identity()) { SetCube(c); }
2136 void SetCube(
const Cube3 &c)
2141 virtual void SetBox(Matrix b) { }
2142 virtual int NumFaces()
const {
return mat.NumFaces(); }
2143 virtual int NumPoints(
int face)
const {
return mat.NumPoints(face); }
2144 virtual Point
FacePoint(
int face,
int point)
const {
return mat.FacePoint(face,point); }
2145 virtual Vector
PointNormal(
int face,
int point)
const
2147 return mat.PointNormal(face,point);
2149 virtual unsigned int Color(
int face,
int point)
const
2151 return mat.Color(face,point);
2153 virtual Point2d
TexCoord(
int face,
int point)
const
2155 return mat.TexCoord(face,point);
2157 virtual float Attrib(
int face,
int point,
int id)
const
2159 return mat.Attrib(face,point,
id);
2161 virtual int AttribI(
int face,
int point,
int id)
const
2163 return mat.AttribI(face,point,
id);
2175 BitmapCubeArray(Bitmap<Cube3> &cubes) : cubes(cubes),c(Cube3()) { }
2176 int Size()
const {
return cubes.SizeX()*cubes.SizeY(); }
2177 const FaceCollection *
Index(
int i)
const
2179 int x = i / cubes.SizeY();
2180 int y = i - x*cubes.SizeY();
2181 Cube3 cc = cubes.Map(x,y);
2182 const_cast<Cube3Cube&
>(c).SetCube(cc);
2186 Bitmap<Cube3> &cubes;
2195 CubePlane(
int x,
int y,
float sx,
float sy,
float sz) : bit(x,y, 0.0, sz), bitzero(x,y,0.0,0.0),
height(bitzero, bit, sx/x, sy/y, 1.0), cubearray(
height), mat(cubearray) { }
2196 virtual void SetBox(Matrix b) { }
2197 virtual int NumFaces()
const {
return mat.NumFaces(); }
2198 virtual int NumPoints(
int face)
const {
return mat.NumPoints(face); }
2199 virtual Point
FacePoint(
int face,
int point)
const {
return mat.FacePoint(face,point); }
2200 virtual Vector
PointNormal(
int face,
int point)
const
2202 return mat.PointNormal(face,point);
2204 virtual unsigned int Color(
int face,
int point)
const
2206 return mat.Color(face,point);
2208 virtual Point2d
TexCoord(
int face,
int point)
const
2210 return mat.TexCoord(face,point);
2212 virtual float Attrib(
int face,
int point,
int id)
const
2214 return mat.Attrib(face,point,
id);
2216 virtual int AttribI(
int face,
int point,
int id)
const
2218 return mat.AttribI(face,point,
id);
2223 RandomBitmap bitzero;
2224 HeightMapCubesFromBitmap
height;
2225 BitmapCubeArray cubearray;
2237 int SizeX()
const {
return arr.Index(0)->SizeX(); }
2238 int SizeY()
const {
return arr.Index(0)->SizeY(); }
2241 int size = arr.Size();
2242 for(
int i=0;i<
size;i++)
2245 if (b->
Map(x,y))
return arr2.Index(i);
2254template<
class K,
class T>
2269 for(
int i=0;i<s;i++)
2278 for(
int i=0;i<s;i++)
2286 virtual int SizeX()
const {
return vec[0].SizeX(); }
2287 virtual int SizeY()
const {
return vec[0].SizeY(); }
2292 for(
int i=0;i<s;i++)
2298 vec.push_back(bm->
Map(xx,yy));
2300 return m_e->Exp(vec);
2311 BitmapCircle(
Point2d center,
float radius,
int sx,
int sy) : center(center), radius(radius), sx(sx), sy(sy) { }
2324 return xx*xx+yy*yy < radius*radius;
2336 PointGrid(
int x,
int y,
Point p,
Vector u_x,
Vector u_y,
int sx,
int sy) : x(x), y(y), p(p), u_x(u_x), u_y(u_y), sx(sx), sy(sy) { }
2345 return p + u_x*float(dx) + u_y*float(
dy);
2357class UnsignedIntFromBitmap :
public Bitmap<unsigned int>
2360 UnsignedIntFromBitmap(Bitmap<Color> &bm) : bm(bm) { }
2368 unsigned int Map(
int x,
int y)
const
2370 return bm.
Map(x,y).Pixel();
2378class BitmapFromUnsignedInt :
public Bitmap<Color>
2381 BitmapFromUnsignedInt(Bitmap<unsigned int> &bm) : bm(bm) { }
2382 void Collect(CollectVisitor &vis) {
2390 Color
Map(
int x,
int y)
const
2395 Bitmap<unsigned int> &bm;
2405 std::cout <<
"Reading: " << filename << std::endl;
2406 std::ifstream file(filename.c_str());
2408 while(std::getline(file, s))
2420 virtual int SizeX()
const {
return sizex; }
2421 virtual int SizeY()
const {
return sizey; }
2424 return func.Index(vec[y][x]);
2427 std::vector<std::string> vec;
2436 if (c==
'a'||c==
'b'||c==
'c'||c==
'd')
return true;
2472 if (x >= 0 && x <
int(
buf.width))
2473 if (y >= 0 && y <
int(
buf.height))
2477 unsigned int &
Map2(
int x,
int y)
const
2479 if (x >= 0 && x <
int(
buf.width))
2480 if (y >= 0 && y <
int(
buf.height))
2481 return buf.buffer[x+y*
buf.ydelta];
2482 return buf.buffer[0];
2503 int sx = t.SizeX(i);
2504 int sy = t.SizeY(i);
2507 for(
int y=0;y<sy;y++)
2508 for(
int x=0;x<sx;x++)
2510 unsigned int color = t.Map(i,x,y).Pixel();
2511 buf.buffer[x+y*buf.ydelta] =
color;
2538 for(
int y=0;y<sy;y++) {
2539 int dd = y*buf.ydelta;
2540 for(
int x=0;x<sx;x++)
2542 unsigned int color = t.Map(x,y).Pixel();
2543 buf.buffer[dd+x] =
color;
2553 void Gen(
int start_x,
int end_x,
int start_y,
int end_y)
const;
2593 for(
int y=0;y<t.SizeY();y++)
2594 for(
int x=0;x<t.SizeX();x++)
2596 unsigned int color = t.Map(x,y).Pixel();
2598 buf.buffer[x+y*buf.ydelta] =
color;
2603 unsigned int r = col & 0x00ff0000;
2604 unsigned int g = col & 0x0000ff00;
2605 unsigned int b = col & 0x000000ff;
2606 unsigned int a = col & 0xff000000;
2633 virtual int SizeX()
const {
return c.SizeX(); }
2634 virtual int SizeY()
const {
return c.SizeY(); }
2638 unsigned int val = cc.
Pixel();
2641 unsigned int val_a = val&0xff000000;
2642 unsigned int val_r = val&0x00ff0000;
2643 unsigned int val_g = val&0x0000ff00;
2644 unsigned int val_b = val&0x000000ff;
2657 unsigned int v = val_r+val_g+val_b+val_a;
2675 virtual int SizeX()
const {
return c.SizeX(); }
2676 virtual int SizeY()
const {
return c.SizeY(); }
2680 unsigned int val = cc.
Pixel();
2700 unsigned int val_a = val&0xff000000;
2701 unsigned int val_r = val&0x00ff0000;
2702 unsigned int val_g = val&0x0000ff00;
2703 unsigned int val_b = val&0x000000ff;
2714 unsigned int v = val_r+val_g+val_b+val_a;
2738 PolygonBitmap(
int sx,
int sy,
Point2d p1,
Point2d p2,
Vector2d v1,
Vector2d v2,
float val_0,
float val_1) : sx(sx),sy(sy), p1(p1), p2(p2), v1(v1), v2(v2), val_0(val_0), val_1(val_1) { }
2739 virtual float SizeX()
const {
return sx; }
2740 virtual float SizeY()
const {
return sy; }
2741 virtual float Map(
float x,
float y)
const
2763 virtual float SizeX()
const {
return orig->SizeX(); }
2764 virtual float SizeY()
const {
return orig->SizeY(); }
2765 virtual C Map(
float x,
float y)
const
2769 float xx = cos(angle)*x + sin(angle)*y;
2770 float yy = -sin(angle)*x + cos(angle)*y;
2773 if (xx >= 0.0 && xx<orig->
SizeX())
2774 if (yy >=0.0 && yy<orig->
SizeY())
2775 return orig->Map(xx,yy);
2797 virtual float SizeX()
const {
return sx; }
2798 virtual float SizeY()
const {
return sy; }
2799 virtual T Map(
float x,
float y)
const
2801 std::pair<int,int> p = fptr(x,y);
2802 return bm.Map(p.first, p.second);
2807 std::pair<int,int> (*fptr)(float,float);
2817 int SizeX()
const {
return c.SizeX()+1; }
2818 int SizeY()
const {
return c.SizeY()+1; }
2821 Point2d tl = { float(x),float(y) };
2822 std::vector<Color> col;
2823 for(
int i=0;i<count;i++)
2828 col.push_back(c.Map(p.
x,p.
y));
2834 unsigned int val = rand.next();
2836 fval/= float(rand.maximum());
2853 virtual float SizeX()
const {
return sx; }
2854 virtual float SizeY()
const {
return sy; }
2855 virtual T Map(
float x,
float y)
const {
return f.Index(x,y); }
2877 virtual bool Map(
int x,
int y)
const
2879 if (x<width || y<width ||x+width>=c.SizeX() ||y+width>=c.SizeY())
return false;
2881 T tx = c.Map(x+width,y);
2882 T ty = c.Map(x,y+width);
2883 T tmx = c.Map(x-width,y);
2884 T tmy = c.Map(x,y-width);
2885 return !(t0==tx && t0==ty && t0==tmx && t0==tmy);
2902 virtual float SizeX()
const {
return sx; }
2903 virtual float SizeY()
const {
return sy; }
2904 virtual C Map(
float x,
float y)
const {
return c; }
2910template<
class T,
class K>
2917 float SizeX()
const {
return a1.Size(); }
2918 float SizeY()
const {
return a2.Size(); }
2919 std::pair<T,K>
Map(
float x,
float y)
const {
return std::make_pair(a1.Index(x),a2.Index(y)); }
2926template<
class T1,
class K,
class T2 = T1>
2935 float SizeX()
const {
return bm.SizeX(); }
2936 float SizeY()
const {
return bm.SizeY(); }
2937 K Map(
float x,
float y)
const {
return f.Index(bm.Map(x,y)); }
2957 float dist = sqrt(x*x+y*y);
2958 float dist2 = mymap.Index(dist);
2978 bm.Collect(vis); cut_out.Collect(vis);
2982 void Prepare() { bm.Prepare(); cut_out.Prepare(); }
2984 float SizeX()
const {
return bm.SizeX(); }
2985 float SizeY()
const {
return bm.SizeY(); }
2988 Color c1 = bm.Map(x,y);
2989 bool c2 = cut_out.Map(x,y);
2990 if (c2) { c1=
Color(0,0,0,0); }
3003 AndNotContinuousBitmap(ContinuousBitmap<bool> &bm,
3004 ContinuousBitmap<bool> &cut_out) : bm(bm), cut_out(cut_out) { }
3005 void Collect(CollectVisitor &vis) { bm.
Collect(vis); cut_out.Collect(vis); }
3011 bool Map(
float x,
float y)
const
3013 bool c1 = bm.
Map(x,y);
3014 bool c2 = cut_out.Map(x,y);
3015 if (c2) { c1=
false; }
3020 ContinuousBitmap<bool> &bm;
3021 ContinuousBitmap<bool> &cut_out;
3030 OrContinuousBitmap(It beg, It end) : vec(beg,
end) { }
3031 void Collect(CollectVisitor &vis) {
3032 int sz = vec.size();
3033 for(
int i=0;i<sz;i++)
3035 vec[i]->Collect(vis);
3040 int sz = vec.size();
3041 for(
int i=0;i<sz;i++)
3050 int sz = vec.size();
3051 for(
int i=0;i<sz;i++)
3053 s = std::max(vec[i]->
SizeX(), s);
3060 int sz = vec.size();
3061 for(
int i=0;i<sz;i++)
3063 s = std::max(vec[i]->
SizeY(), s);
3067 bool Map(
float x,
float y)
const
3071 int sz = vec.size();
3072 for(
int i=0;i<sz;i++)
3074 b |= vec[i]->Map(x,y);
3079 std::vector<ContinuousBitmap<bool> *> vec;
3086 TriangleCoordsContinuousBitmap(
float sx,
float sy,
const Point2d &p1,
const Point2d &p2,
const Point2d &p3,
float val1,
float val2,
float val3) : sx(sx), sy(sy), p1(p1), p2(p2), p3(p3), val1(val1), val2(val2), val3(val3) { }
3096 float Map(
float x,
float y)
const
3101 if (p12>=0.0 && p12<=1.0 && p13>=0.0 && p13<=1.0)
3109 return v12*(1.0-x)+v13*x;
3111 else if (p12>=0.0 && p12<=1.0 && p23>=0.0 && p23<=1.0)
3119 return v12*(1.0-x)+v23*x;
3121 else if (p13>=0.0 && p13<=1.0 && p23>=0.0 && p23<=1.0)
3129 return v13*(1.0-x)+v23*x;
3140 return p1.x*(1.0-p)+p2.x*p;
3144 return p1.x*(1.0-p)+p3.x*p;
3148 return p2.x*(1.0-p)+p3.x*p;
3174 return val1*(1.0-x) + val2*x;
3178 return val1*(1.0-x) + val3*x;
3182 return val2*(1.0-x) + val3*x;
3187 float val1, val2, val3;
3210 bool Map(
float x,
float y)
const
3212 bool a1 =
Line(p3.x,p3.y,p1,p2);
3213 bool a2 =
Line(p2.x,p2.y,p1,p3);
3214 bool a3 =
Line(p1.x,p1.y,p2,p3);
3215 bool b1 =
Line(x,y,p1,p2);
3216 bool b2 =
Line(x,y,p1,p3);
3217 bool b3 =
Line(x,y,p2,p3);
3218 if (!a1) { b1 = !b1; }
3219 if (!a2) { b2 = !b2; }
3220 if (!a3) { b3 = !b3; }
3228 float k = (r.
x-a.
x) / (b.
x-a.
x);
3229 return r.
y < a.
y + k*(b.
y-a.
y);
3242 QuadContinuousBitmap(
float sx,
float sy,
Point2d p1,
Point2d p2,
Point2d p3,
Point2d p4) : tri1(sx,sy, p1,p2,p3), tri2(sx,sy,p1,p3,p4) { }
3245 virtual float SizeX()
const {
return tri1.SizeX(); }
3246 virtual float SizeY()
const {
return tri1.SizeY(); }
3247 virtual bool Map(
float x,
float y)
const
3249 return tri1.Map(x,y) || tri2.Map(x,y);
3259 ColorTriangle(
float sx,
float sy,
const Point2d &p1,
const Point2d &p2,
const Point2d &p3,
const Color &c,
const Color &c2) : tri(sx,sy,p1,p2,p3), c(c), c2(c2) { }
3264 float SizeX()
const {
return tri.SizeX(); }
3265 float SizeY()
const {
return tri.SizeY(); }
3268 if (tri.Map(x,y)) {
return c; }
3283 tri(sx,sy,p1,p2,p3),
3284 r(sx,sy,p1,p2,p3,c1.r,c2.r,c3.r),
3285 g(sx,sy,p1,p2,p3,c1.g,c2.g,c3.g),
3286 b(sx,sy,p1,p2,p3,c1.b,c2.b,c3.b),
3287 a(sx,sy,p1,p2,p3,c1.alpha,c2.alpha,c3.alpha),
3288 background(background)
3296 if (!tri.Map(x,y))
return background;
3297 float rr = r.Map(x,y);
3298 float gg = g.Map(x,y);
3299 float bb = b.Map(x,y);
3300 float aa = a.Map(x,y);
3301 return Color(rr,gg,bb,aa);
3313 GradientBitmap(
float sx,
float sy,
Point2d p1,
Point2d p2,
Color c1,
Color c2) : sx(sx), sy(sy), p1(p1), p2(p2), c1(c1), c2(c2) { }
3336 int size = arr.Size();
3337 for(
int i=0;i<
size;i++)
3339 arr.Index(i)->Prepare();
3352 int size = arr.Size();
3353 Color curr(255,255,255,255);
3354 for(
int i=0;i<
size;i++)
3356 Color c = arr.Index(i)->Map(x,y);
3372 : sx(sx), sy(sy), tri(sx,sy, p1,p2,p3), tx(sx,sy,p1,p2,p3,t1.x,t2.x,t3.x),
3373 ty(sx,sy,p1,p2,p3,t1.y,t2.y,t3.y), texture(texture)
3382 if (!tri.Map(x,y)) {
Color c(0,0,0,0);
return c; }
3383 float ttx = tx.Map(x,y);
3384 float tty = ty.Map(x,y);
3385 return texture.Map(ttx,tty);
3398 CircleContinuousBitmap(
float size_x,
float size_y,
float center_x,
float center_y,
float radius) : size_x(size_x), size_y(size_y), center_x(center_x), center_y(center_y), radius(radius) { }
3408 bool Map(
float x,
float y)
const
3412 return x*x+y*y < radius*radius;
3415 float size_x, size_y;
3437 float area_x = float(c.SizeX())/sx;
3438 float area_y = float(c.SizeY())/sy;
3439 float left = x*area_x;
3440 float top = y*area_y;
3443 Color c_c = c.Map(left,top);
3444 Color c_l = c.Map(left-0.25*area_x, top);
3445 Color c_r = c.Map(left+0.25*area_x, top);
3446 Color c_t = c.Map(left, top-0.25*area_y);
3447 Color c_b = c.Map(left, top+0.25*area_y);
3453 Color cc = c_c + c_l + c_r + c_t + c_b;
3468 bitmap.Collect(vis);
3485 return bitmap.Map(x+0.5,y+0.5);
3498 bitmap.Collect(vis);
3513 xx *= bitmap.SizeX();
3514 yy *= bitmap.SizeY();
3515 return bitmap.Map(xx,yy);
3530 virtual std::vector<int>
Count()
const { std::vector<int> vec; vec.push_back(bm.SizeX()); vec.push_back(bm.SizeY()); vec.push_back(bm.SizeZ());
return vec; }
3533 if (
size != 3) std::cout <<
"VoxelNDim error dimensions" << std::endl;
3534 return bm.Map(array[0], array[1], array[2]);
3543template<
class T1,
class K,
class T2 = T1>
3548 int SizeX()
const {
return bm.SizeX(); }
3549 int SizeY()
const {
return bm.SizeY(); }
3550 int SizeZ()
const {
return bm.SizeZ(); }
3551 K Map(
int x,
int y,
int z)
const {
return f.Index(bm.Map(x,y,z)); }
3562 int SizeX()
const {
return pos.SizeX(); }
3563 int SizeY()
const {
return pos.SizeY(); }
3564 int SizeZ()
const {
return coll.NumFaces(); }
3568 Point p = pos.Map(x,y);
3569 q.
p1 = p + coll.FacePoint(z, 0);
3570 q.
p2 = p + coll.FacePoint(z, 1);
3571 q.
p3 = p + coll.FacePoint(z, 2);
3572 q.
p4 = p + coll.FacePoint(z, 3);
3583 virtual std::string
name()
const {
return "QuadArrayElem"; }
3592 if (point == 0)
return q.
p1;
3593 if (point == 1)
return q.
p2;
3594 if (point == 2)
return q.
p3;
3607 virtual float Attrib(
int face,
int point,
int id)
const {
return 0.0; }
3608 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
3620 return voxel.Index(face);
3632 virtual int NumFaces()
const {
return voxel.SizeX()*voxel.SizeY(); }
3637 if (point == 0)
return q.
p1;
3638 if (point == 1)
return q.
p2;
3639 if (point == 2)
return q.
p3;
3652 virtual float Attrib(
int face,
int point,
int id)
const {
return 0.0; }
3653 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
3665 int x = face / (voxel.SizeX());
3666 int ddx = face - x*(voxel.SizeX());
3668 Quad q = voxel.Map(x,y);
3681 virtual int NumFaces()
const {
return voxel.SizeX()*voxel.SizeY()*voxel.SizeZ(); }
3686 if (point == 0)
return q.
p1;
3687 if (point == 1)
return q.
p2;
3688 if (point == 2)
return q.
p3;
3701 virtual float Attrib(
int face,
int point,
int id)
const {
return 0.0; }
3702 virtual int AttribI(
int face,
int point,
int id)
const {
return 0; }
3714 int z = face / (voxel.SizeX()*voxel.SizeY());
3715 int ddz = face - z*(voxel.SizeX()*voxel.SizeY());
3716 int y = ddz / voxel.SizeX();
3717 int ddy = ddz - y*voxel.SizeX();
3719 Quad q = voxel.Map(x,y,z);
3727template<
class X,
class Y>
3732 virtual int SizeX()
const {
return bm.SizeX(); }
3733 virtual int SizeY()
const {
return bm.SizeY(); }
3734 virtual int SizeZ()
const {
return a.Size(); }
3735 virtual std::pair<X,Y>
Map(
int x,
int y,
int z)
const
3737 X xx = bm.Index(x,y);
3739 return std::make_pair(xx,yy);
3755 float sx = p.
maxx-p.minx;
3756 float sy = p.maxy-p.miny;
3757 float sz = p.maxz-p.minz;
3761 float px = xx*sx + p.minx;
3762 float py = yy*sy + p.miny;
3763 float pz = zz*sz + p.minz;
3801 Point p = f.Index(x);
3802 return objs.Map(p.
x,p.
y,p.
z);
3813 Vector v,
float z) : objs(objs), v(v),z(z) { }
3817 Vector v(0.0,0.0,-2.0*z);
3825 float val =
Solve(func1, 0.0, 1.0);
3844 float val =
Solve(func1, 0.0, 1.0);
3857 int sx,
int sy) : raytrace(raytrace), color(color), sx(sx), sy(sy) { }
3860 virtual int SizeX()
const {
return sx; }
3861 virtual int SizeY()
const {
return sy; }
3864 Point2d p = { float(x), float(y) };
3865 Point pp = raytrace.Index(p);
3866 return color.Map(pp.
x,pp.
y,pp.
z);
3896 virtual float SizeX()
const {
return data.SizeX(); }
3897 virtual float SizeY()
const {
return data.SizeY(); }
3898 virtual float SizeZ()
const {
return data.SizeZ(); }
3901 if (obj.Inside(
Point(x,y,z)))
return data.Map(x,y,z);
3913 virtual float SizeX()
const {
return vox.SizeX(); }
3914 virtual float SizeY()
const {
return vox.SizeY(); }
3915 virtual float SizeZ()
const {
return vox.SizeZ(); }
3916 virtual C Map(
float x,
float y,
float z)
const
3919 if (val.
b)
return def;
3933 SphereNormalContinuousVoxel(Point center) : center(center) { }
3934 void Collect(CollectVisitor &vis)
3940 virtual float SizeX()
const {
return 1.0; }
3941 virtual float SizeY()
const {
return 1.0; }
3942 virtual float SizeZ()
const {
return 1.0; }
3943 virtual Vector
Map(
float x,
float y,
float z)
const
3956 virtual float SizeX()
const {
return 1.0; }
3957 virtual float SizeY()
const {
return 1.0; }
3958 virtual float SizeZ()
const {
return 1.0; }
3975 virtual float SizeX()
const {
return sx; }
3976 virtual float SizeY()
const {
return sy; }
3977 virtual float SizeZ()
const {
return sz; }
3999 virtual float SizeX()
const {
return sx; }
4000 virtual float SizeY()
const {
return sy; }
4001 virtual T Map(
float x,
float y)
const
4006 return voxel.Map(p3d.
x, p3d.
y, p3d.
z);
4018 virtual float SizeX()
const {
return p.SizeX(); }
4019 virtual float SizeY()
const {
return p.SizeY(); }
4020 virtual float SizeZ()
const {
return p.SizeZ(); }
4023 Point pp = p.Map(x,y,z);
4042 T Map(
int xx,
int yy,
int zz)
const
4044 float xa =
Sample(xx, x, v.SizeX());
4045 float ya =
Sample(yy, y, v.SizeY());
4046 float za =
Sample(zz, z, v.SizeZ());
4047 return v.Map(xa,ya,za);
4049 float Sample(
int xx,
int xsize,
float sizex)
const
4051 return xx*sizex/xsize;
4065 int SizeX()
const {
return vx.SizeX(); }
4066 int SizeY()
const {
return vx.SizeY(); }
4067 int SizeZ()
const {
return vx.SizeZ(); }
4068 T Map(
int xx,
int yy,
int zz)
const
4070 return vx.Map(xx,yy,zz);
4084 float SizeX()
const {
return x.end-x.start; }
4085 float SizeY()
const {
return y.end-y.start; }
4086 float SizeZ()
const {
return z.end-z.start; }
4087 bool Map(
float xx,
float yy,
float zz)
const
4092 return vol.Inside(
Point(xx,yy,zz));
4109 virtual T Map(
float r,
float alfa,
float beta)
const=0;
4121 T Map(
float r,
float alfa,
float beta)
const
4129 return sp.Map(pp.
x,pp.
y,pp.
z);
4138template<
class T,
class K>
4161 static bool Compare(std::pair<float, float> p1, std::pair<float,float> p2)
4163 return p1.first - p2.first < 0.01 && p1.second - p2.second < 0.01;
4168template<
class T,
class K>
4181template<
class T,
class K>
4189 std::pair<K,K> p = pair.Index(t);
4209 bool b = func.Index(t);
4210 if (b)
return Color(255,255,255,128);
4211 else return Color(0,0,0, 128);
4230 return func.Size().first;
4234 return func.Size().second;
4238 return func.Index(std::make_pair(x,y));
4254 int sizex = bitmap.SizeX();
4255 int sizey = bitmap.SizeY();
4260 if (r.
br.
x > sizex) r.
br.
x = sizex;
4261 if (r.
br.
y > sizey) r.
br.
y = sizey;
4262 if (r.
tl.
x < 0.0) r.
tl.
x = 0.0;
4263 if (r.
tl.
y < 0.0) r.
tl.
y = 0.0;
4265 for(
int y=r.
tl.
y;y<r.
br.
y;y++)
4266 for(
int x=r.
tl.
x;x<r.
br.
x;x++)
4268 Color c = bitmap.Map(x,y);
4269 ref.buffer[x+ref.ydelta*y] = c.
Pixel();
4291 return vec[face].Index(point);
4293 unsigned int Color(
int face,
int point)
const
4312 float Attrib(
int face,
int point,
int id)
const
4321 std::vector<Triangle> vec;
4325class Cube3HandleValue :
public HandleValue<Cube3>,
public Element<const BoxableFaceCollection*>
4328 Cube3HandleValue() { }
4331 CubeElem *
cube =
new CubeElem;
4335 MatrixElem *
matrix =
new MatrixElem(*
cube, m2);
4338 void update_faces_cache() {
or_elem.update_faces_cache(); }
4339 const BoxableFaceCollection *
Elem()
const {
return &
or_elem; }
4341 OrElem<BoxableFaceCollection>
or_elem;
4352 int sizey = bm.SizeY();
4353 int sizex = bm.SizeX();
4354 for(
int y=0;y<sizey;y++)
4356 for(
int x=0;x<sizex;x++)
4358 hv.Handle(bm.Map(x,y));
4373 for(
int i=0;i<size;i++)
4400 for(
int y=0;y<sizey;y++)
4401 for(
int x=0;x<sizex;x++)
4402 gen.Handle(std::make_pair(x,y));
4419 Cube2Cube3Function(
float sx,
float sy,
float sz,
float px,
float py,
float pz) : sx(sx), sy(sy), sz(sz), px(px), py(py), pz(pz) { }
4432 cc.
minx = fx - sx/2.0;
4433 cc.
miny = fy - sy/2.0;
4434 cc.
minz = fz - sz/2.0;
4435 cc.
maxx = fx + sx/2.0;
4436 cc.
maxy = fy + sy/2.0;
4437 cc.
maxz = fz + sz/2.0;
4452 for(
int z=0;z<sizez;z++)
4453 for(
int y=0;y<sizey;y++)
4454 for(
int x=0;x<sizex;x++)
4465 int sizex, sizey, sizez;
4475 void Handle(
Cube2 c)
4477 C cc = voxel.Map(c.
x, c.
y, c.
z);
4478 hv.
Handle(std::make_pair(c,cc));
4483 HandleValue<std::pair<Cube2,C> > &hv;
4509 int size = arr.Size();
4510 for(
int i=0;i<
size;i++)
4512 hv.Handle(arr.Index(i));
4528 Vector v = pp + float(p.
x) * ax + float(p.
y) * ay + float(p.
z)*az;
4554 ColorHandleValue(
HandleValue<std::pair<Vector,unsigned int> > &hv,
float sizex,
float sizey,
float sizez) : hv(hv), sizex(sizex), sizey(sizey), sizez(sizez)
4563 hv.Handle(std::make_pair(v,
color));
4567 float sizex, sizey, sizez;
4575 void Handle(std::pair<Matrix, unsigned int> mm)
4593 mutable VectorArray<Node> vec;
4609 public HandleValue<std::pair<int, unsigned int> >,
4614 int count()
const {
return vec.size(); }
4616 void unuse(
int id) { vec[id].active=
false; }
4632 std::vector<Node> vec;
4633 std::vector<std::pair<int, AnimPoint> > pending_changes;
4639class FaceCollectionHandleValue :
public HandleValue<std::pair<Matrix, unsigned int > >
4642 FaceCollectionHandleValue(BoxableFaceCollection &fc) : vec(), fc(fc) { }
4643 void Handle(std::pair<Matrix,unsigned int> m)
4645 MatrixElem *me =
new MatrixElem(fc, m.first);
4646 ColorElem *ce =
new ColorElem(*me, m.second);
4647 MemoizeFaces *memo =
new MemoizeFaces(*ce);
4648 vec.push_back(memo);
4651 vec2.push_back(memo);
4656 MemoizeArray<const FaceCollection*> memovec(vec.Size(), vec);
4661 ~FaceCollectionHandleValue()
4663 int size = vec2.Size();
4664 for(
int i=0;i<
size;i++)
4666 delete vec2.Index(i);
4670 VectorArray<const FaceCollection*> vec;
4671 VectorArray<const FaceCollection*> vec2;
4672 BoxableFaceCollection &fc;
4676template<
class T,
class K>
4683 hv.Handle(func.Index(t));
4691template<
class T,
class K>
4697 int Size()
const {
return genarray.Size(); }
4710template<
class A,
class B,
class C>
4717 Function<B,C> &g) : a_array(a_array), b_array(b_array), f(f), g(g) { }
4721 int asize = a_array.Size();
4722 int bsize = b_array.Size();
4723 for(
int aa = 0;aa<asize;aa++)
4724 for(
int bb = 0;bb<bsize;bb++)
4726 A a = a_array.Index(aa);
4727 B b = b_array.Index(bb);
4729 gen.Handle(std::make_pair(a,b));
4767 bool Frame(
float time);
4791 std::set<Cube2, Compare> emptyset;
4792 visited_cubes.swap(emptyset);
4799 void Initial(
Cube2 &c)
4801 int sizex = vox.
SizeX();
4802 int sizey = vox.
SizeY();
4803 int sizez = vox.
SizeZ();
4807 x = float(random.next())/float(random.maximum());
4808 y = float(random.next())/float(random.maximum());
4809 z = float(random.next())/float(random.maximum());
4814 while(!vox.Map(
int(x),
int(y),
int(z)));
4819 while(b && c.
z<sizez)
4825 bool Id2(
const Cube2 &c)
4827 bool a0 = vox.Map(c.
x, c.
y, c.
z);
4828 bool x = vox.Map(c.
x+1, c.
y, c.
z);
4829 bool y = vox.Map(c.
x, c.
y+1, c.
z);
4830 bool z = vox.Map(c.
x, c.
y, c.
z+1);
4831 bool yz = vox.Map(c.
x, c.
y+1, c.
z+1);
4832 bool xz = vox.Map(c.
x+1, c.
y, c.
z+1);
4833 bool xy = vox.Map(c.
x+1, c.
y+1, c.
z);
4834 bool xyz = vox.Map(c.
x+1, c.
y+1, c.
z+1);
4835 bool allsame = a0 == x && x == y && y==z && z == yz && yz == xz && xz == xy && xy == xyz;
4838 void Id(
const Cube2 &cc2)
4840 std::vector<Cube2> nodes;
4841 nodes.push_back(cc2);
4843 while(!nodes.empty())
4847 if (visited_cubes.find(c) != visited_cubes.end())
4851 visited_cubes.insert(c);
4854 bool a0 = vox.Map(c.
x, c.
y, c.
z);
4855 bool x = vox.Map(c.
x+1, c.
y, c.
z);
4856 bool y = vox.Map(c.
x, c.
y+1, c.
z);
4857 bool z = vox.Map(c.
x, c.
y, c.
z+1);
4858 bool yz = vox.Map(c.
x, c.
y+1, c.
z+1);
4859 bool xz = vox.Map(c.
x+1, c.
y, c.
z+1);
4860 bool xy = vox.Map(c.
x+1, c.
y+1, c.
z);
4861 bool xyz = vox.Map(c.
x+1, c.
y+1, c.
z+1);
4863 bool my = (a0 == x) && (x == xz) && (z == a0);
4864 bool px = (x == xy) && (xy == xyz) && (x == xz);
4865 bool mz = (a0 == x) && (x == xy) && (a0 == y);
4866 bool pz = (z == xz) && (xz == xyz) && (z == yz);
4867 bool py = (y == xy) && (xy == xyz) && (y==yz);
4868 bool mx = (a0 == y) && (y == yz) && (a0 == z);
4874 nodes.push_back(cc);
4880 nodes.push_back(cc);
4887 nodes.push_back(cc);
4893 nodes.push_back(cc);
4899 nodes.push_back(cc);
4905 nodes.push_back(cc);
4912 bool operator()(
const Cube2 &c1,
const Cube2 &c2)
const
4914 if (c1.
x != c2.
x)
return c1.
x < c2.
x;
4915 if (c1.
y != c2.
y)
return c1.
y < c2.
y;
4916 if (c1.
z != c2.
z)
return c1.
z < c2.
z;
4922 HandleValue<Cube2> &hv;
4923 std::set<Cube2, Compare> visited_cubes;
4924 mutable Random random;
4935 float u = oner*(F.Index(r-c*time))+oner*(G.Index(r+c*time));
4952 WallsFromMap(
Bitmap<bool> &mymap,
Bitmap<unsigned int> &mycolor,
HandleValue<std::pair<std::pair<int,int>, std::pair<int, unsigned int> > > &hv,
int x,
int y) : mymap(mymap), mycolor(mycolor), hv(hv), x(x), y(y) {
4967 void Recurse(
int x,
int y)
4969 if (visited_nodes.find(std::make_pair(x,y))!=visited_nodes.end())
4973 if (!mymap.Map(x,y))
return;
4974 unsigned int color = mycolor.Map(x,y);
4975 visited_nodes.insert(std::make_pair(x,y));
4976 hv.Handle(std::make_pair(std::make_pair(x,y), std::make_pair(4,
color)));
4977 hv.Handle(std::make_pair(std::make_pair(x,y), std::make_pair(5,
color)));
4978 bool nx = mymap.Map(x+1,y);
4979 bool px = mymap.Map(x-1,y);
4980 bool ny = mymap.Map(x,y+1);
4981 bool py = mymap.Map(x,y-1);
4988 hv.Handle(std::make_pair(std::make_pair(x,y), std::make_pair(0,
color)));
4996 hv.Handle(std::make_pair(std::make_pair(x,y), std::make_pair(1,
color)));
5004 hv.Handle(std::make_pair(std::make_pair(x,y), std::make_pair(2,
color)));
5012 hv.Handle(std::make_pair(std::make_pair(x,y), std::make_pair(3,
color)));
5016 Bitmap<bool> &mymap;
5017 Bitmap<unsigned int> &mycolor;
5018 HandleValue<std::pair<std::pair<int,int>, std::pair<int, unsigned int> > > &hv;
5020 mutable std::set<std::pair<int,int> > visited_nodes;
5026 void Handle(std::pair<std::pair<int,int>, std::pair<int, unsigned int > > h)
5028 int val = h.second.first;
5029 int x = h.first.first;
5030 int y = h.first.second;
5031 unsigned int color = h.second.second;
5049template<
class P,
class S>
5059template<
class P,
class S>
5064 std::vector<P> pp =
d.Divide(p);
5066 for(
typename std::vector<P>::iterator i=pp.begin();i!=pp.end();i++)
5071 S s =
d.Combine(ss);
5087 bool Frame(
float time);
5113 SuperShape2d(
float a,
float b,
float m,
float n1,
float n2,
float n3) : a(a), b(b), m(m), n1(n1), n2(n2), n3(n3) { }
5117 float d1 = fabs(1.0/a*cos(m*alfa/4.0));
5118 float d2 = fabs(1.0/b*sin(m*alfa/4.0));
5119 float a1 = pow(d1,n2);
5120 float a2 = pow(d2,n3);
5122 float r = pow(
double(r2),
double(-1.0/n1));
5127 float a,b, m, n1, n2, n3;
5139 r2(a2.a, a2.b, a2.m, a2.n1, a2.n2, a2.n3) { }
5152 : r1(a ,b ,m ,n1 ,n2 ,n3),
5153 r2(aa,bb,mm,nn1,nn2,nn3) { }
5161 float x = r1.Index(alfa)*cos(alfa)*r2.Index(beta)*cos(beta);
5162 float y = r1.Index(alfa)*sin(alfa)*r2.Index(beta)*cos(beta);
5163 float z = r2.Index(beta)*sin(beta);
5172 float Attrib(
float x,
float y,
int id)
const {
return 0.0; }
5186 unsigned int Color(
float x,
float y)
const
5210 virtual T Map(
int x,
int y)
const=0;
5218 int Size()
const {
return arr.Size(); }
5221 int ii = index.Index(i);
5222 T t = arr.Map(i,ii);
5254 return g.NumEdges();
5258 std::pair<int,int>
e = g.EdgeVertex(line);
5274 virtual std::string
name()
const {
return "FacesFromMap"; }
5284 void Prepare() { mymap.Prepare(); pos.Prepare(); }
5290 const Face &face2 = vec[face];
5291 unsigned int p = point;
5292 if (p > face2.
p.size()-1) p = face2.
p.size()-1;
5293 if (face2.
p.size()==0)
5294 return Point(0.0,0.0,0.0);
5299 const Face &face2 = vec[face];
5305 virtual float Attrib(
int face,
int point,
int id)
const
5309 virtual int AttribI(
int face,
int point,
int id)
const
5313 virtual unsigned int Color(
int face,
int point)
const
5328 vec = std::vector<Face>();
5329 int sizex = mymap.SizeX();
5330 int sizey = mymap.SizeY();
5331 for(
int y=0;y<sizey-1;y++)
5332 for(
int x=0;x<sizex-1;x++)
5337 f.p.push_back(pos.Map(x,y));
5339 if (mymap.Map(x+1,y))
5341 f.p.push_back(pos.Map(x+1,y));
5343 if (mymap.Map(x+1,y+1))
5345 f.p.push_back(pos.Map(x+1,y+1));
5347 if (mymap.Map(x,y+1))
5349 f.p.push_back(pos.Map(x,y+1));
5357 std::vector<Point>
p;
5362 std::vector<Face> vec;
5376 std::pair<int,int> p = positions[v];
5381 d.center = pos.Map(x,y);
5387 std::cout << v1 <<
" " << v2 << std::endl;
5395 std::cout <<
e.dom_center <<
" " <<
e.cod_center << std::endl;
5412 int xsize = mymap.SizeX();
5413 int ysize = mymap.SizeY();
5415 for(
int y=0;y<ysize;y++)
5416 for(
int x=0;x<xsize;x++)
5420 positions[count] = std::make_pair(x,y);
5428 for(
int y=0;y<ysize;y++)
5429 for(
int x=0;x<xsize;x++)
5433 if (mymap.Map(x+1,y)) { edges[count2]=std::make_pair(count,
find(x+1,y)); count2++; }
5434 if (mymap.Map(x,y+1)) { edges[count2]=std::make_pair(count,
find(x,y+1)); count2++; }
5437 if (mymap.Map(x-1,y)) { edges[count2]=std::make_pair(count,
find(x-1,y)); count2++; }
5438 if (mymap.Map(x,y-1)) { edges[count2]=std::make_pair(count,
find(x,y-1)); count2++; }
5447 for(
int i=0;i<counter;i++)
5449 std::pair<int,int> p = positions[i];
5450 if (p.first == x && p.second == y)
5458 mutable std::map<int, std::pair<int,int> > positions;
5459 mutable std::map<int, std::pair<int,int> > edges;
5476class SphereDataRep :
public DataRep<VertexData3d>
5479 SphereDataRep(
int x,
int y) : x(x), y(y) { }
5480 virtual BoxableFaceCollection *
Data(
const VertexData3d &t)
const
5482 sphere =
new SphereElem(x,y);
5488 mutable SphereElem *
sphere;
5489 mutable MatrixElem *mat;
5507template<
class V,
class E>
5515 : g(g), data(data), vertex(vertex), edge(edge), or_elem(0)
5519 int v = g.NumVertexes();
5520 for(
int a = 0; a<v; a++)
5522 V vv = data.Vertex(a);
5524 vec.push_back(coll);
5526 int e = g.NumEdges();
5527 for(
int b = 0; b<
e; b++)
5529 std::pair<int,int> p = g.EdgeVertex(b);
5530 E ee = data.Edge(b, p.first, p.second);
5532 vec.push_back(coll);
5536 or_elem->update_faces_cache();
5538 virtual int NumFaces()
const {
return or_elem->NumFaces(); }
5539 virtual int NumPoints(
int face)
const {
return or_elem->NumPoints(face); }
5540 virtual Point FacePoint(
int face,
int point)
const {
return or_elem->FacePoint(face,point); }
5542 virtual float Attrib(
int face,
int point,
int id)
const {
return or_elem->Attrib(face, point,
id); }
5543 virtual int AttribI(
int face,
int point,
int id)
const {
return or_elem->AttribI(face, point,
id); }
5544 virtual unsigned int Color(
int face,
int point)
const {
return or_elem->Color(face,point); }
5545 virtual Point2d TexCoord(
int face,
int point)
const {
return or_elem->TexCoord(face,point); }
5554 std::vector<BoxableFaceCollection*> vec;
5566 virtual int SizeX()
const {
return sizex; }
5567 virtual int SizeY()
const {
return sizey; }
5570 Point p1 = surf.Index(surf.XSize()*x/sizex, surf.YSize()*y/sizey);
5571 Point p2 = polys.Index(polys.XSize()*x/sizex, polys.YSize()*y/sizey);
5603 for(
int i=0;i<coll.Size();i++)
5605 Point p = coll.Index(i);
5607 float dist = sqrt(pp2.
x*pp2.
x+pp2.
y*pp2.
y);
5608 if (dist < m) { m=dist; index = i; }
5635 return m_t2->Index(m_t1->Index(t));
5660 T m(
T t1,
T t2)
const {
return g.m(t1,t2); }
5668 float m(
float t1,
float t2)
const {
return t1*t2; }
5669 float id()
const {
return 1.0; }
5670 float inv(
float a)
const {
return 1.0/a; }
5692template<
class T,
class U,
class B>
5696 virtual U Index_p(T t)
const=0;
5697 virtual B Index_ch(U u)
const=0;
5700template<
class V,
class X,
class Y,
class B>
5701class InverseImage :
public Function<Part<V,Y,B>*, Part<std::pair<X,V>,X, B> *>,
private Part<std::pair<X,V>,X, B>
5705 Part<std::pair<X,V>,X, B> *
Index(Part<V,Y, B> *p)
const
5710 B Index_ch(X x)
const
5713 return pp->Index_ch(y);
5715 X Index_p(std::pair<X,V> u)
const
5724template<
class X,
class V,
class Y,
class B>
5728 Intersection(Part<V,Y,B> &j, Part<X,Y,B> &
f) : InverseImage<V,X,Y,B>(*this), j(j),
f(
f) { }
5730 Part<std::pair<X,V>,X,B> *Part_i()
const
5734 Part<std::pair<X,V>,Y,B> *Part_m()
const
5738 Y Index_p(std::pair<X,V> p)
const
5740 Part<std::pair<X,V>,X,B> *i = Part_i();
5741 X x = i->Index_p(p);
5745 B Index_ch(Y y)
const
5747 return j.Index_ch(y) &&
f.Index_ch(y);
5752 return f.Index_p(x);
5772 int Size()
const {
return sample.Size(); }
5799 int Size()
const {
return loops?p.Size():p.Size()-1; }
5800 Line2d
Index(
int line)
const
5805 int num = line+point;
5807 res.
p1 = p.Index(
num);
5811 res.
p2 = p.Index(
num);
5815 PointCollection2d &p;
5835class ReorientedFunction :
public Bitmap<T>
5838 ReorientedFunction(
Line2d &line,
ContinuousBitmap<T> &
func,
T default_,
int sz,
int sy,
float height) : line(line),
func(
func), sx(sx), sy(sy),
height(
height), default_(default_) { }
5839 int SizeX()
const {
return sx; }
5840 int SizeY()
const {
return sy; }
5841 T
Map(
int x,
int y)
const
5843 Point2d p = { float(x), float(y) };
5844 std::pair<Vector,Vector> pp = Vector2d::SplitToComponents(p-line.
p1, line.
p2-line.
p1);
5845 Vector vx = pp.first;
5846 Vector vy = pp.second;
5849 float px = line.
p1.
x+vx*
func.SizeX();
5850 float py = line.
p1.
y+vy*
func.SizeY();
5851 if (px<0||px>=
func.SizeX())
return default_;
5852 if (py<0||py>=
func.SizeY())
return default_;
5853 T t =
func.Map(px,py);
5858 ContinuousBitmap<T> &
func;
5870 : bm1(bm1), bm2(bm2), choose(choose) { }
5877 virtual int SizeX()
const {
return bm1.SizeX(); }
5878 virtual int SizeY()
const {
return bm1.SizeY(); }
5881 Color t1 = bm1.Map(x,y);
5882 Color t2 = bm2.Map(x,y);
5901 for(
int i=0;i<s;i++)
5909 rects.push_back(rect);
5911 return vec.size()-1;
5915 void resize(
int new_sx,
int new_sy) { sx = new_sx; sy = new_sy; }
5916 virtual int SizeX()
const {
return sx; }
5917 virtual int SizeY()
const {
return sy; }
5920 int sz = rects.size();
5921 for(
int i=0;i<sz;i++)
5924 if (x<r.
x)
continue;
5925 if (y<r.
y)
continue;
5926 if (x>=r.
x+r.
width)
continue;
5927 if (y>=r.
y+r.
height)
continue;
5928 return vec[i].Map(x-r.
x,y-r.
y);
5934 std::vector<TRect> rects;
5935 std::vector<Bitmap<T>*> vec;
5942 LayerBitmap(
T (*fptr)(
T *,
int),
int sx,
int sy,
T def) : fptr(fptr), sx(sx), sy(sy), def(def) { }
5945 for(
int i=0;i<s;i++)
5955 virtual int SizeX()
const {
return sx; }
5956 virtual int SizeY()
const {
return sy; }
5959 int sz = vec.size();
5960 if (sz==0)
return def;
5962 for(
int i=0;i<sz;i++)
5964 v.push_back(vec[i]->
Map(x,y));
5966 T val = fptr(&v[0], sz);
5972 std::vector<Bitmap<T>*> vec;
5982 float y = p1.y + (p2.y-p1.y)*(x-p1.x)/(p2.x-p1.x);
5989class ConstantFloatFunction :
public Function<float,float>
5992 ConstantFloatFunction(
float y) : y(y) { }
5993 float Index(
float)
const {
return y; }
6003 int Size()
const {
return vec.size(); }
6011 int size = lines.Size();
6013 for(
int i=0;i<
size;i++)
6015 Line2d line = lines.Index(i);
6026 Line2d l1 = { line.
p1, splitpoint };
6027 Line2d l2 = { splitpoint, line.
p2 };
6033 vec.push_back(line);
6041 std::vector<Line2d> vec;
6049 int Size()
const {
return coll.Size(); }
6052 Line2d l = coll.Index(i);
6055 std::swap(l.
p1.
x,l.
p2.
x);
6056 std::swap(l.
p1.
y,l.
p2.
y);
6074 Line2d l = coll.Index(i);
6075 if (l.
p1.
y <= y && y <= l.
p2.
y)
6102 int SizeX()
const {
return pos.SizeX(); }
6103 int SizeY()
const {
return pos.SizeY(); }
6104 float Map(
int x,
int y)
const {
return f.Index(pos.Map(x,y)); }
6119 return std::abs(
d-dist);
6133 float val =
Solve(solved, 0.0, curve.Size());
6153 virtual int SizeX()
const {
return sx; }
6154 virtual int SizeY()
const {
return sy; }
6155 virtual bool Map(
int x,
int y)
const
6177template<
class K,
class T>
6183 : bm(bm), func(func) { }
6196 return func.Index(bm.Map(x,y));
6211 return StartX(bm.SizeX());
6215 return StartY(bm.SizeY());
6219 int sizex = bm.SizeX();
6223 for (
int i=0;i<sizex;i++)
6235 int sizey = bm.SizeY();
6239 for (
int i=0;i<sizey;i++)
6250 return bm.Map(kx,ky)->Map(dx,
dy);
6254 int sx = bm.SizeX();
6256 for(
int i=0;i<sx;i++)
6258 sizex += bm.Map(i,0)->SizeX();
6265 int sy = bm.SizeY();
6267 for(
int i=0;i<sy;i++)
6269 sizey += bm.Map(0,i)->SizeY();
6277template<
class K,
class T>
6288 int SizeX()
const {
return flatten.SizeX(); }
6289 int SizeY()
const {
return flatten.SizeY(); }
6290 T Map(
int x,
int y)
const {
return flatten.Map(x,y); }
6299 ChessBoardBitmap(
Color c1,
Color c2,
int sx,
int sy,
int ssx,
int ssy) : white_bm(c1, sx,sy), black_bm(c2,sx,sy), bitmap_bool(ssx,ssy, true), combine(bitmap_bool, *this) { }
6305 if (b)
return &white_bm;
6308 int SizeX()
const {
return combine.SizeX(); }
6309 int SizeY()
const {
return combine.SizeY(); }
6310 Color Map(
int x,
int y)
const {
return combine.Map(x,y).second; }
6323 bool Frame(
float time);
6331 bool Frame(
float time);
6349 bool Frame(
float time);
6367 bool Frame(
float time);
6378 bool Frame(
float time);
6390 bool Frame(
float time);
6402 bool Frame(
float time);
6410class IntersectAnim :
public Anim
6414 FaceCollection *
Frame(
int framenum)
const
6416 SphereElem *sphere1 =
new SphereElem(10,10);
6417 SphereElem *sphere2 =
new SphereElem(10,10);
6419 MatrixElem *s2 =
new MatrixElem(*sphere2,
Matrix::Scale(100,100,100));
6420 AndNotElem *anot =
new AndNotElem(*s1,*s2);
6442 while(bm.SizeX() > b)
6453 while(bm.SizeY() > bb)
6462 if (x>=bm.SizeX())
return Color(0.0,0.0,0.0);
6463 if (y>=bm.SizeY())
return Color(0.0,0.0,0.0);
6493 std::vector<BufferFromBitmap*> buffers;
6494 std::vector<ThreadInfo_bitmap*> ti;
6522 int sx = bm2.SizeX();
6523 int sy = bm2.SizeY();
6524 int dsy = sy/numthreads + 1;
6525 std::vector<int> ids;
6526 for(
int i=0;i<numthreads;i++)
6530 int start_y = i*dsy;
6531 int end_y = (i+1)*dsy;
6532 if (start_y>sy) { start_y = sy; }
6533 if (end_y>sy) end_y = sy;
6535 if (end_y-start_y > 0)
6536 ids.push_back(threads.
push_thread(ref, start_x, end_x, start_y, end_y));
6538 int ss = ids.size();
6539 for(
int i=0;i<ss;i++)
6541 threads.
join(ids[i]);
6562 int wholesizex,
int wholesizey,
6564 : vsx(viewsizex), vsy(viewsizey),
6565 wsx(wholesizex), wsy(wholesizey),
6566 speed(speed), current_time(0.0), current_x(0.0), current_y(0.0), target_time(-1.0) { }
6574 target_x=x; target_y=y;
6575 float tx = current_x - target_x;
6576 float ty = current_y - target_y;
6577 float dist = sqrt(tx*tx+ty*ty);
6578 float time = dist*speed;
6579 target_time = current_time + time;
6583 if (current_time < target_time)
6585 Vector2d v = { target_x-current_x, target_y-current_y };
6586 float dist = v.
Dist();
6599 current_time += 1.0;
6601 float PosX()
const {
return current_x; }
6602 float PosY()
const {
return current_y; }
6614 float current_x, current_y;
6615 float target_x, target_y, target_time;
6654 for(
int i=0;i<count;i++)
6684 return std::make_pair(p+v1, p+v2);
6696 Point2d pp1 = { p1.
x+v1.dx, p1.
y+v1.dy };
6698 Point2d pp2 = { p2.
x+v2.dx, p2.
y+v2.dy };
6720 virtual T AMap(
float alfa,
float s)
const=0;
6729 virtual T SMap(
float alfa,
float beta)
const=0;
6742 float xx = float(x)/sx;
6743 float yy = float(y)/sy;
6762 bool Frame(
float time);
6794 for(
int i=0;i<frames;i++,k++)
6797 int c = array[i]->NumFrames();
6799 for(
int s=0;s<c;s++)
6802 std::cout <<
"ArraySprite: " <<
f <<
"/" << frames << std::endl;
6804 cache.push_back(
f-oldsum);
6813 for(
int i=0;i<count;i++)
6815 counter += array[i]->NumFrames();
6822 return array[num[
frame]]->XSize(cache[
frame]);
6826 for(
int i=0;i<count;i++)
6828 int oldcount = counter;
6829 counter += array[i]->NumFrames();
6830 if (counter >
frame) {
return array[i]->XSize(
frame-oldcount); }
6838 return array[num[
frame]]->YSize(cache[
frame]);
6842 for(
int i=0;i<count;i++)
6844 int oldcount = counter;
6845 counter += array[i]->NumFrames();
6846 if (counter >
frame) {
return array[i]->YSize(
frame-oldcount); }
6858 for(
int i=0;i<count;i++)
6860 int oldcount = counter;
6861 counter += array[i]->NumFrames();
6862 if (counter >
frame) {
return array[i]->Pos(
frame-oldcount); }
6876 for(
int i=0;i<count;i++)
6878 int oldcount = counter;
6879 counter += array[i]->NumFrames();
6880 if (counter >
frame) {
return array[i]->Pixel(
frame-oldcount, x,y); }
6882 return Color(0,0,0);
6888 std::vector<int> cache;
6889 std::vector<int>
num;
6921 int sx = s.XSize(framenum);
6922 int sy = s.YSize(framenum);
6929 case 0:
return Point(0.0,0.0, 0.0);
6930 case 1:
return Point(sx, 0.0, 0.0);
6931 case 2:
return Point(sx, sy, 0.0);
6932 case 3:
return Point(0.0, sy, 0.0);
6934 return Point(0.0,0.0,0.0);
6970 std::map<int, void*> m;
6985 Mandelbrot(
bool julia,
float start_x,
float end_x,
float start_y,
float end_y,
int sx,
int sy,
int count,
float xx,
float yy) : julia(julia), start_x(start_x), end_x(end_x), start_y(start_y), end_y(end_y),sx(sx), sy(sy), count(count), xx(xx), yy(yy) { }
6999 z.
x = start_x + x*(end_x-start_x)/sx;
7000 z.
y = start_y + y*(end_y-start_y)/sy;
7004 return RecRec(count, z,
C);
7012 C.x = start_x + x*(end_x-start_x)/sx;
7013 C.y = start_y + y*(end_y-start_y)/sy;
7014 return RecRec(count, z,
C);
7020 return Add(
Mul(z,z),
C);
7022 int RecRec(
int count, Point2d z, Point2d C)
const
7028 if (Dist2(z)>2.0*2.0)
7033 float Dist2(Point2d p1)
const
7035 return p1.
x*p1.
x+p1.
y*p1.
y;
7037 Point2d Add(Point2d p1, Point2d p2)
const
7044 Point2d Mul(Point2d p1, Point2d p2)
const
7047 r.
x = p1.
x*p2.
x-p1.
y*p2.
y;
7048 r.
y = p1.
x*p2.
y+p1.
y*p2.
x;
7054 float start_x, end_x;
7055 float start_y, end_y;
7081 int count2 = brot.
Map(0,0);
7082 return count2>count-1;
7097 : value1(value1), value2(value2),
7098 c1(c1), c2(c2), bm(bm)
7108 int SizeX()
const {
return bm.SizeX(); }
7109 int SizeY()
const {
return bm.SizeY(); }
7112 float val = (float)bm.Map(x,y);
7113 if (val<value1) val=value1;
7114 if (val>value2) val=value2;
7115 val -= float(value1);
7116 val /= float(value2-value1);
7144 Point p11 = center + x1*u_x + y1*u_y;
7145 Point p21 = center + x2*u_x + y1*u_y;
7146 Point p12 = center + x1*u_x + y2*u_y;
7147 Point p22 = center + x2*u_x + y2*u_y;
7166 virtual int Count()
const=0;
7167 virtual void SetParent(TRect parent)=0;
7168 virtual TRect GetRect()
const=0;
7169 virtual Color GetPixel(Point2d p)
const=0;
7170 virtual RectSplitter *Splitter(
int val)
const=0;
7172 bool InsideRect(TRect r, Point2d p)
7174 if (p.
x < r.
x)
return false;
7175 if (p.
y < r.
y)
return false;
7176 if (p.
x > r.
x+r.
width)
return false;
7177 if (p.
y > t.y+r.
height)
return false;
7181class BitmapRectSplitter :
public RectSplitter
7184 BitmapRectSplitter(ContinuousBitmap<Color> &vals) : vals(vals) { vals.
Prepare(); }
7185 virtual int Count()
const {
return 1; }
7186 virtual Rect Rects(
int val, Rect parent)
const
7190 Color Pixel(
int val, Rect pos, Point2d p)
const
7192 if (InsideRect(pos,p))
7200 return vals.
Map(p.
x,p.
y);
7202 return Color(0,0,0,0);
7205 ContinuousBitmap<Color> &vals;
7207class PosRectSplitter :
public RectSplitter
7231 virtual unsigned int Color(
float x,
float y)
const
7233 if (x<0.0 || y<0.0) {
return 0x00000000; }
7241 unsigned int cl = tex.Map(x,y).Pixel();
7254 BitmapSphere(ContinuousBitmap<float> &bm, Point center,
float radius0,
float radius1) : bm(bm), center(center), radius0(radius0), radius1(radius1) { bm.
Prepare(); }
7255 void Collect(CollectVisitor &vis) { }
7258 Point
Index(
float x,
float y)
const
7261 float xx = x*bm.
SizeX()/(2.0*3.14159);
7262 float yy = y*bm.
SizeY()/3.14159;
7263 float value = bm.
Map(xx,yy);
7264 Vector v = Vector(0.0,0.0,radius0*(1.0-value)+radius1*value);
7268 virtual float XSize()
const {
return 2.0*3.14159; }
7269 virtual float YSize()
const {
return 3.14159; }
7270 virtual Vector
Normal(
float x,
float y)
const
7276 virtual Point2d
Texture(
float x,
float y)
const { Point2d p = { 0,0 };
return p; }
7277 virtual float Attrib(
float x,
float y,
int id)
const
7281 virtual int AttribI(
float x,
float y,
int id)
const {
return 0; }
7282 virtual unsigned int Color(
float x,
float y)
const {
return 0; }
7285 ContinuousBitmap<float> &bm;
7287 float radius0, radius1;
7295 ContinuousColorBitmapToFloatBitmap(ContinuousBitmap<Color> &bm) : bm(bm) { }
7301 virtual float SizeX()
const {
return bm.
SizeX(); }
7302 virtual float SizeY()
const {
return bm.
SizeY(); }
7303 virtual float Map(
float x,
float y)
const
7305 Color c = bm.
Map(x,y);
7306 float val = (c.
r+c.
b+c.
g)/3/255.0;
7310 ContinuousBitmap<Color> &bm;
7315class HeightMap3Data :
public Bitmap<float>
7318 void Collect(CollectVisitor &vis) { }
7321class HeightMap3DataImpl :
public HeightMap3Data
7324 HeightMap3DataImpl(Bitmap<Color> &c) : c(c) { }
7325 void Prepare() { c.Prepare(); }
7327 int SizeX()
const {
return c.SizeX(); }
7328 int SizeY()
const {
return c.SizeY(); }
7329 float Map(
int x,
int y)
const
7331 Color cc = c.Map(x,y);
7332 int val = (cc.
r + cc.
g + cc.
b)/3;
7333 float vv = float(val)/255.0;
7340class HeightMap3 :
public Mesh
7343 HeightMap3(Bitmap<float> &bm,
7344 float min_val,
float max_val,
7348 Vector u_z) : bm(bm),
7349 p(p), u_x(u_x), u_y(u_y), u_z(u_z), cached_face(-1)
7352 float start_x = 0.0;
7353 float start_y = 0.0;
7354 float start_z = 0.0;
7358 Point p111(start_x, start_y, start_z);
7359 Point p112(start_x, start_y, end_z);
7360 Point p121(start_x, end_y, start_z);
7361 Point p122(start_x, end_y, end_z);
7362 Point p211(end_x, start_y, start_z);
7363 Point p212(end_x, start_y, end_z);
7364 Point p221(end_x, end_y, start_z);
7365 Point p222(end_x, end_y, end_z);
7367 elem =
new CubeElem(p111,p112,p121,p122,
7368 p211,p212,p221,p222);
7371 int StateNum(
int,
int)
const {
return 0; }
7372 virtual int NumFrames()
const {
return 1; }
7373 virtual int NumFaces(
int framenum)
const {
return bm.
SizeX()*bm.
SizeY()*elem->NumFaces(); }
7376 return elem->NumPoints(0);
7378 virtual Point
FacePoint(
int framenum,
int statenum,
int face,
int point)
const
7381 if (cached_face != face)
7384 int y = ddz / bm.
SizeX();
7385 int ddy = ddz - y*bm.
SizeX();
7387 float val = bm.
Map(x,y);
7389 Point tl = Pos(x,val,y);
7392 Point bra = Pos(x+1,0,y+1);
7393 float start_x = tl.
x;
7394 float start_y = tl.
y;
7395 float start_z = tl.
z;
7396 float end_x = bra.
x;
7397 float end_y = bra.
y;
7398 float end_z = bra.
z;
7400 Point p111(start_x, start_y, start_z);
7401 Point p112(start_x, start_y, end_z);
7402 Point p121(start_x, end_y, start_z);
7403 Point p122(start_x, end_y, end_z);
7404 Point p211(end_x, start_y, start_z);
7405 Point p212(end_x, start_y, end_z);
7406 Point p221(end_x, end_y, start_z);
7407 Point p222(end_x, end_y, end_z);
7410 elem =
new CubeElem(p111,p112,p121,p122,
7411 p211,p212,p221,p222);
7415 return elem->FacePoint(z,point);
7418 Point Pos(
int x,
float y,
int z)
const
7420 Point pos = p + float(x)*u_x/bm.
SizeX() + y*u_y + float(z)*u_z/bm.
SizeY();
7426 mutable CubeElem *elem;
7429 Vector u_x, u_y, u_z;
7430 mutable int cached_face;
7462 offset.push_back(off); size.push_back(
sizeof(
bool));
7463 off +=
sizeof(bool);
7467 { offset.push_back(off); size.push_back(
sizeof(
int)); off +=
sizeof(int); type.push_back(0); }
7469 { offset.push_back(off); size.push_back(
sizeof(
float)); off+=
sizeof(float); type.push_back(1); }
7471 { offset.push_back(off); size.push_back(
sizeof(
Point2d)); off+=
sizeof(
Point2d);type.push_back(2); }
7473 { offset.push_back(off); size.push_back(
sizeof(
Point)); off+=
sizeof(
Point); type.push_back(3); }
7482 std::cout << array << std::endl;
7483 std::cout <<
this << std::endl;
7490 int Offset(
int i)
const {
return offset[i]; }
7491 int Size(
int i)
const {
return size[i]; }
7492 int Type(
int i)
const {
return type[i]; }
7494 std::vector<int> offset;
7495 std::vector<int>
size;
7496 std::vector<int> type;
7505 {
int *ptr = (
int*)currentptr; a = *ptr; currentptr+=
sizeof(int); }
7507 {
float *ptr = (
float*)currentptr; b = *ptr; currentptr+=
sizeof(float); }
7511 {
Point *ptr = (
Point*)currentptr; p = *ptr; currentptr+=
sizeof(
Point); }
7534 Parser2() : currentptr(0),
size(0) { }
7535 int ParseInt(std::string s,
bool &success);
7536 int ParseEnum(std::string *strings,
int size, std::string s,
bool &success);
7537 bool ParseBool(std::string s,
bool &success);
7538 float ParseFloat(std::string s,
bool &success);
7539 Point2d ParsePoint2d(std::string s,
bool &success);
7540 Point ParsePoint(std::string s,
bool &success);
7542 VectorArray<T> *ParseArray(std::string s,
bool &success);
7544 T ParseStruct(std::string s,
bool &success);
7546 Loop ParseLoop(std::string s,
bool &success)
7548 Loop l = ParseStruct<Loop>(s,success);
7551 Path3d ParsePath3d(std::string s,
bool &success);
7552 Path2d ParsePath2d(std::string s,
bool &success);
7555 T ParseStruct2(std::string s,
bool &success);
7557 VectorArray<T> *ParseArray2(std::string s,
bool &success);
7564 currentptr = (
char*)obj;
7582class TypeTraits<int>
7585 typedef int (Parser2::*fptrtype)(std::string,
bool &);
7586 static fptrtype fptr;
7591class TypeTraits<bool>
7594 typedef bool (Parser2::*fptrtype)(std::string,
bool &);
7595 static fptrtype fptr;
7603class TypeTraits<float>
7606 typedef float (Parser2::*fptrtype)(std::string,
bool &);
7607 static fptrtype fptr;
7615 typedef Point2d (Parser2::*fptrtype)(std::string,
bool &);
7616 static fptrtype fptr;
7622class TypeTraits<
Loop>
7625 typedef Loop (Parser2::*fptrtype)(std::string,
bool &);
7626 static fptrtype fptr;
7635class TypeTraits<
Point>
7638 Point (Parser2::*fptr)(std::string,
bool &) = &Parser2::ParsePoint;
7641class TypeTraits<
Array<int,int> >
7645class TypeTraits<
Array<int,float> >
7655 virtual void* Parse(std::string s,
bool &success)=0;
7658class ParseInterfaceImpl :
public ParseInterface
7661 ParseInterfaceImpl(T (Parser2::*fptr)(std::string,
bool &)) : fptr(fptr) { }
7662 void *Parse(std::string s,
bool &success)
7664 t = fptr(s, success);
7668 T (Parser2::*fptr)(std::string,
bool &);
7692void Write(Parser2 *p,
char *c,
int size,
int type, std::string s,
bool &success)
7696int Find(std::string s,
char c);
7703T Parser2::ParseStruct2(std::string s_,
bool &success)
7705 std::cout <<
"ParseStruct2: '" << s_ <<
"'" << std::endl;
7711 T *ptr = Alloc<T>();
7713 ptr->visit(sizepos);
7715 int pos =
Find(s,
',');
7718 std::cout <<
"ParseStruct2 find fail" << std::endl;
7723 char *cp = currentptr;
7727 std::string fst = s.substr(0,pos);
7728 snd = s.substr(pos+1, s.length()-pos-1);
7729 pos =
Find(snd,
',');
7730 int type = sizepos.
Type(i);
7731 std::cout <<
"Write type: " << type << std::endl;
7732 Write(
this, cp, sizepos.
Size(i), type, fst, success);
7733 if (!success) { std::cout <<
"ParseStruct2 Write fail" << std::endl;
return T(); }
7734 cp+=sizepos.
Size(i);
7735 std::cout <<
"Advance by:" << sizepos.
Size(i) << std::endl;
7740 int type = sizepos.
Type(i);
7741 std::cout <<
"Write type2: " << type << std::endl;
7742 Write(
this, cp, sizepos.
Size(i), type, snd, success);
7743 cp+=sizepos.
Size(i);
7744 std::cout <<
"Advance by2:" << sizepos.
Size(i) << std::endl;
7745 std::cout <<
"Type: " <<
typeid(
T).
name() << std::endl;
7746 if (cp != currentptr+
sizeof(
T))
7749 std::cout <<
"Struct Alignment problem" << std::endl;
7752 return *(
T*)currentptr;
7758T Parser2::ParseStruct(std::string s_,
bool &success)
7760 std::cout <<
"ParseStruct: '" << s_ <<
"'" << std::endl;
7764 if (s.length()<3) { std::cout <<
"ParseStruct length<3 fail: '" << s <<
"'" << std::endl; success =
false;
return T(); }
7765 if (s[0]==
'{' && s[s.length()-1]==
'}')
7767 std::string ss = s.substr(1, s.length()-2);
7768 T t = ParseStruct2<T>(ss, success);
7773 std::cout <<
"ParseStruct {} fail" << std::endl;
7779VectorArray<T> *Parser2::ParseArray(std::string s_,
bool &success)
7781 std::cout <<
"ParseArray: '" << s_ <<
"'" << std::endl;
7784 if (s.length()<3) { success =
false;
return 0; }
7785 if (s[0]==
'{' && s[s.length()-1]==
'}')
7787 std::string ss = s.substr(1, s.length()-2);
7793 std::cout <<
"ParseArray {} fail" << std::endl;
7800VectorArray<T> *Parser2::ParseArray2(std::string s_,
bool &success)
7802 std::cout <<
"ParseArray2: '" << s_ <<
"'" << std::endl;
7805 T (Parser2::*fptr)(std::string,
bool &) = TypeTraits<T>::fptr;
7806 int pos =
Find(s,
',');
7809 T t = (this->*fptr)(s, success);
7810 if (!success) { std::cout <<
"ParseArray2 fail" << std::endl;
return 0; }
7815 std::string sbegin = s.substr(0,pos);
7816 std::string send = s.substr(pos+1, s.length()-1-pos);
7817 T t = (this->*fptr)(sbegin, success);
7818 if (!success) { std::cout <<
"ParseArray2 fail2" << std::endl; success =
false;
return 0; }
7820 if (!success) { std::cout <<
"ParseArray2 fail3" << std::endl; success =
false;
return 0; }
7847 virtual float Map(
float x)
const=0;
7862 std::vector<IWaveform*> waves;
7863 for(
int i=0;i<s;i++)
7866 if (x < w->Start())
continue;
7867 if (x > w->End())
continue;
7870 int s2 = waves.size();
7871 float val = vec[0]->Index(x);
7872 for(
int i=1;i<s2;i++)
7875 float f1 = w1->
Index(x);
7876 val = fptr(val, f1);
7882 std::vector<IWaveform*> vec;
7883 float (*fptr)(float,float);
7900 float Map(
int y,
float x)
const
7902 return vec[y]->Map(x);
7905 std::vector<IWaveFormArray*> vec;
7909template<
class A,
class B,
class Z>
7922 return Zz.Map(aa,bb);
7935 virtual int SizeX()
const {
return sx; }
7936 virtual int SizeY()
const {
return sy; }
7937 virtual bool Map(
int x,
int y)
const
7949 virtual float SizeX()
const {
return sx; }
7950 virtual float SizeY()
const {
return sy; }
7951 virtual bool Map(
float x,
float y)
const
7953 return fabs(x-y)<acc;
7959template<
class A,
class B>
7965 Function<B,bool> &characteristic) : enumeration(enumeration), subsetfunc(subsetfunc), characteristic(characteristic) { }
7967 int s = enumeration.Size();
7968 for(
int i=0;i<s;i++)
7970 A a = enumeration.Index(i);
7971 B b = subsetfunc.Index(a);
7972 bool bb = characteristic(b);
7987template<
class A,
class B,
class AA,
class BB>
8003 int SizeX()
const {
return enum1.Size(); }
8004 int SizeY()
const {
return enum2.Size(); }
8007 A a = enum1.Index(x);
8008 B b = enum2.Index(y);
8009 AA aa = subset1.Index(a);
8010 BB bb = subset2.Index(b);
8011 bool ba = char1.Index(aa);
8012 bool bm = char1.Index(bb);
8031 return bm.SizeX()*bm.SizeY();
8035 int sx = bm.SizeX();
8038 return std::make_pair(ix,iy);
8051 return bm.Map(p.first,p.second);
8060 Sphere(
Point center,
float radius) : center(center), radius(radius) { }
8064 return p.
x*p.
x+p.
y*p.
y+p.
z*p.
z<radius*radius;
8073template<
class T,
class A,
class B,
class AB>
8089 virtual int SizeX()
const {
return sx; }
8090 virtual int SizeY()
const {
return sy; }
8093 x -= center_in_bm.x;
8094 y -= center_in_bm.y;
8095 int faces = coll->NumFaces();
8096 for(
int f=0;
f<faces;
f++)
8098 int points = coll->NumPoints(
f);
8100 for(
int p=0;p<points;p++)
8102 Point pos = coll->FacePoint(
f,p);
8107 while(points<4) { pointcol.
push_back(pointcol.
Index(points-1)); points++; }
8110 bool b = bm.
Map(x,y);
8111 bool b2 = bm2.
Map(x,y);
8112 if (!b && !b2)
return bg.Map(x,y);
8119 TriangleCoordsContinuousBitmap color_val_r(sx,sy, pointcol.
Index(i1),pointcol.
Index(i2),pointcol.
Index(i3),
Color(coll->Color(
f,i1)).
r,
Color(coll->Color(
f,i2)).
r,
Color(coll->Color(
f,i3)).
r);
8120 TriangleCoordsContinuousBitmap color_val_g(sx,sy, pointcol.
Index(i1),pointcol.
Index(i2),pointcol.
Index(i3),
Color(coll->Color(
f,i1)).
g,
Color(coll->Color(
f,i2)).
g,
Color(coll->Color(
f,i3)).
g);
8121 TriangleCoordsContinuousBitmap color_val_b(sx,sy, pointcol.
Index(i1),pointcol.
Index(i2),pointcol.
Index(i3),
Color(coll->Color(
f,i1)).
b,
Color(coll->Color(
f,i2)).
b,
Color(coll->Color(
f,i3)).
b);
8122 TriangleCoordsContinuousBitmap color_val_a(sx,sy, pointcol.
Index(i1),pointcol.
Index(i2),pointcol.
Index(i3),
Color(coll->Color(
f,i1)).
alpha,
Color(coll->Color(
f,i2)).
alpha,
Color(coll->Color(
f,i3)).
alpha);
8124 TriangleCoordsContinuousBitmap tex_val_tx(sx,sy, pointcol.
Index(i1), pointcol.
Index(i2), pointcol.
Index(i3), coll->TexCoord(
f,i1).
x, coll->TexCoord(
f,i2).x, coll->TexCoord(
f,i3).x);
8125 TriangleCoordsContinuousBitmap tex_val_ty(sx,sy, pointcol.
Index(i1), pointcol.
Index(i2), pointcol.
Index(i3), coll->TexCoord(
f,i1).
y, coll->TexCoord(
f,i2).y, coll->TexCoord(
f,i3).y);
8127 return TexMap(
f, color_val_r.
Map(x,y), color_val_g.
Map(x,y),
8128 color_val_b.
Map(x,y), color_val_a.
Map(x,y),
8129 tex_val_tx.
Map(x,y), tex_val_ty.
Map(x,y));
8134 virtual Color TexMap(
int face,
float r,
float g,
float b,
float a,
float tx,
float ty)
const
8136 int tex = coll->FaceTexture(face);
8138 return Color(r,g,b,a);
8141 BufferRef texture = coll->TextureBuf(tex);
8168 virtual int Id(
int i)
const {
return 0; }
8182 virtual int SizeX()
const {
return ti.SizeX(); }
8183 virtual int SizeY()
const {
return ti.SizeY(); }
8184 virtual Color Map(
int x,
int y)
const {
return ti.Map(x,y); }
8193 virtual int SizeX()
const {
return sx; }
8194 virtual int SizeY()
const {
return sy; }
8204 virtual int SizeX()
const {
return bm.SizeX(); }
8205 virtual int SizeY()
const {
return bm.SizeY(); }
8206 virtual Color Map(
int x,
int y)
const {
return bm.Map(x,y); }
8215 : next(next), id(id), x(x), y(y), bm(bm) { bm.Prepare(); }
8217 virtual int SizeX()
const {
return next.SizeX(); }
8218 virtual int SizeY()
const {
return next.SizeY(); }
8222 for(
int i=0;i<s;i++)
8226 if (x<p1.
x)
continue;
8227 if (y<p1.
y)
continue;
8228 if (x>=p2.
x)
continue;
8229 if (y>=p2.
y)
continue;
8230 return bm.Map(x-p1.
x,y-p1.
y);
8232 return next.Map(x,y);
8234 virtual int AreaCount()
const {
return next.AreaCount()+1; }
8235 virtual int Id(
int i)
const
8237 if (i==0) {
return id; }
8238 return next.Id(i-1);
8248 return next.AreaS(i-1);
8253 p.
x = (float)(x+bm.SizeX());
8254 p.
y = (float)(y+bm.SizeY());
8257 return next.AreaS(i-1);
8271 : next(next), id(id), x(x), y(y), width(width), height(height) { }
8272 virtual int SizeX()
const {
return next.SizeX(); }
8273 virtual int SizeY()
const {
return next.SizeY(); }
8274 virtual Color Map(
int x,
int y)
const {
return next.Map(x,y); }
8276 virtual int AreaCount()
const {
return next.AreaCount()+1; }
8277 virtual int Id(
int i)
const
8279 if (i==0) {
return id; }
8280 return next.Id(i-1);
8290 return next.AreaS(i-1);
8295 p.
x = (float)(x+width);
8296 p.
y = (float)(y+height);
8299 return next.AreaS(i-1);
8329 FloodFillBorder(Bitmap<bool> &bm,
int x,
int y) :bm(bm), x(x),y(y) { }
8332 virtual float SizeX()
const {
return bm.
SizeX(); }
8333 virtual float SizeY()
const {
return bm.
SizeY(); }
8334 virtual int Size()
const {
return vec.size(); }
8335 virtual Point2d
Map(
int i)
const {
return vec[i]; }
8340 std::vector<Point2d> vec;
8357 virtual int SizeX()
const {
return sx; }
8358 virtual int SizeY()
const {
return sy; }
8363 return ref.buffer[x+y*ref.ydelta];
8372 unsigned int ids[1];
8373 unsigned int rbo[1];
8383 if (b->Map(v.
x,v.
y) && v.
z>0.0 && v.
z<dist)
8402class SplitXYLayout :
public Layout
8405 SplitXYLayout(
Layout &l,
int id,
int num_x,
int num_y) : l(l), id(
id), num_x(num_x), num_y(num_y) { }
8406 virtual int count()
const {
return num_x*num_y; }
8407 virtual TRect
get(
int i)
const
8410 int yy = i-xx*num_y;
8411 TRect r = l.
get(
id);
8424class CenterLayout :
public Layout
8427 CenterLayout(Layout &l,
int id,
int cx,
int cy) : l(l), id(id), cx(cx), cy(cy) { }
8428 virtual int count()
const {
return 1; }
8429 virtual TRect
get(
int i)
const
8431 TRect r = l.
get(
id);
8447class ArrayLayout :
public Layout
8450 ArrayLayout(Layout **layout,
int *
id,
int size) : layout(layout), id(id),
size(
size) { }
8451 virtual int count()
const {
return size; }
8452 virtual TRect
get(
int i)
const
8454 TRect r = layout[i]->get(
id[i]);
8463class MarginLayout :
public Layout
8466 MarginLayout(Layout &l,
int id,
int lx,
int rx,
int ty,
int by) : l(l), id(id), lx(lx), rx(rx), ty(ty), by(by) { }
8467 virtual int count()
const {
return 1; }
8468 virtual TRect
get(
int i)
const
8470 TRect r = l.
get(
id);
8486class SplitLayoutY :
public Layout
8489 SplitLayoutY(Layout &l,
int id,
int num) : l(l), id(id),
num(
num) { }
8490 virtual int count()
const {
return num; }
8491 virtual TRect
get(
int i)
const
8493 TRect p = l.
get(
id);
8505class SplitLayoutX :
public Layout
8508 SplitLayoutX(Layout &l,
int id,
int num) : l(l), id(id),
num(
num) { }
8509 virtual int count()
const {
return num; }
8510 virtual TRect
get(
int i)
const
8512 TRect p = l.
get(
id);
8526class RootLayout :
public Layout
8529 RootLayout(
int sx,
int sy) : sx(sx),sy(sy) { }
8530 virtual int count()
const {
return 1; }
8531 virtual TRect
get(
int i)
const
8564class DrawScroll :
public Draw
8568 virtual int type()
const {
return next.
type(); }
8574 virtual void* propvalue(
int i)
const {
return next.propvalue(i); }
8592class DrawEmpty :
public Draw
8595 DrawEmpty(
int type, Point2d tl, Point2d br) : type(type), tl(tl), br(br) { }
8596 virtual int type()
const {
return type; }
8597 virtual Point2d
topleft()
const {
return tl; }
8598 virtual Point2d
bottomright()
const {
return br; }
8599 virtual int propcount()
const {
return 0; }
8600 virtual std::string
propname(
int i)
const {
return ""; }
8601 virtual std::string
proptype(
int i)
const {
return ""; }
8602 virtual void*
probvalue(
int i)
const {
return 0; }
8605 virtual Draw*
ArrayIndex(
int i)
const {
return 0; }
8617class DrawPropTrait { };
8619class DrawPropTrait<float> {
static const std::string s =
"float"; };
8621class DrawPropTrait<int> {
static const std::string s =
"int"; };
8624class DrawProp :
public Draw
8627 DrawProp(Draw &next, std::string
name, T t) : next(next),
name(
name), type(DrawPropTrait<T>::s), t(t) { }
8628 virtual int type()
const {
return next.
type(); }
8633 virtual std::string
propname(
int i)
const
8637 virtual std::string
proptype(
int i)
const
8639 if (i==0)
return type;
else return next.
proptype(i-1);
8643 if (i==0)
return &t;
else return next.propvalue(i-1);
8659class DrawArray :
public Draw
8662 DrawArray(Draw &next, Draw *array,
int size) : next(next) { }
8663 virtual int type()
const {
return next.
type(); }
8669 virtual void*
probvalue(
int i)
const {
return next.propvalue(i); }
8682class DrawAlArray :
public Draw
8685 DrawAlArray(Draw &next, Draw *array,
int size) : next(next) { }
8686 virtual int type()
const {
return next.
type(); }
8692 virtual void*
probvalue(
int i)
const {
return next.propvalue(i); }
8725 int sx,
int sy,
int sz) : v(v), p(p), u_x(u_x), u_y(u_y), u_z(u_z), sx(sx), sy(sy), sz(sz) { Create(); }
8726 void Collect(CollectVisitor &vis) {
8731 for(
int i=0;i<sx;i++)
8733 Point pp = p + u_x*i/sx;
8734 for(
int j=0;j<sy;j++)
8736 Vector pp2 = u_y*j/sy;
8737 for(
int k=0;k<sz;k++)
8739 Vector pp3 = u_z*k/sz;
8740 Point p = pp + pp2 + pp3;
8747 virtual int NumPoints()
const {
return vec.size(); }
8748 virtual Point
Pos(
int i)
const {
return vec[i]; }
8749 virtual unsigned int Color(
int i)
const {
return 0xffffffff; }
8753 Vector u_x, u_y, u_z;
8755 std::vector<Point> vec;
P func(int c, EveryApi &ev)
Definition test.cpp:59
Env e
Definition Common.cc:2
float Solve(const Function< float, float > &func, float t_0, float t_1)
Definition Effect.cc:1836
void UpdateVBO(const FaceCollection &faces, VBOState &state, VBOUpdate u, const std::vector< Attrib > &attribs)
Definition Effect.cc:2058
LowApi * g_low
Definition GameApi_low.cc:1684
VBOUpdate
Definition Effect.hh:10676
ArrayConvert< FaceCollectionArray, int, const FaceCollection * > FaceCollectionArrayConvert
Definition Effect.hh:3563
void split(std::vector< FontInterfaceImpl::Bezier2d > &vec, FontInterfaceImpl::Bezier2d orig, float t, bool emit_left, bool emit_right)
Definition FreeType2.cc:134
void matrix(BoxableFaceCollection &coll, Matrix m, FaceStore &s)
Definition Functions.cc:56
void cube(Matrix m, FaceStore &s)
Definition Functions.cc:10
void sphere(Matrix m, int numfaces, int numfaces2, FaceStore &s)
Definition Functions.cc:16
P Cube2(float start_x, float end_x, float start_y, float end_y, float start_z, float end_z, unsigned int color, void *data, EveryApi &api)
Definition GameApiTest7.cc:35
PT Map(PT p, int face, int point, void *data)
Definition GameApiTest.cc:19
CollectData collect(CollectInterface *i)
Definition GameApi.cc:18297
IMPORT int sprite_target_width
Definition Graph.cc:1267
IMPORT int sprite_target_height
Definition Graph.cc:1268
bool done
Definition GameApi_gui.cc:1629
size dy
Definition GameApi_gui.cc:1727
EditorGuiWidgetAtlas GuiWidgetForward render()
Definition GameApi_gui.cc:1412
Bitmap< Color > ColorBitmap
Definition GraphI.hh:901
void FontParseTestCases()
void PrepareGrid(Bitmap< Color > &bm, int cellsx, int cellsy, ArrayRender &rend)
Definition Graph.cc:919
Point2d IntersectLines(const Line2d &l1, const Line2d &l2)
Definition Graph.cc:725
int sprite_target_height
Definition Graph.cc:1268
void TextureEnable(ArrayRender &rend, int frame, bool enable)
Definition Graph.cc:1216
Line PlanePlaneIntersection(const Plane &p1, const Plane &p2)
Definition VectorTools.cc:1866
ContinuousBitmap< Color > ContinuousColorBitmap
Definition Graph.hh:2784
std::string WhiteSpace(std::string s)
Definition Graph.cc:1449
int sprite_target_width
Definition Graph.cc:1267
void Write(Parser2 *p, char *c, int size, int type, std::string s, bool &success)
Definition Graph.cc:1523
void PrepareSprite(const Sprite &s, ArrayRender &rend)
Definition Graph.cc:1225
void RenderSprite(const Sprite &s, int frame, Point2d pos, float z, ArrayRender &rend, Program *prog)
Definition Graph.cc:1270
int sprite_screen_height
Definition Graph.cc:1266
void RenderCube(const Bitmap< Range< int > > &bm, const Matrix &pos, ArrayRender &rend, Data &d, int id)
void DumpMem(const char *c, int size)
Definition Graph.cc:1469
float AngleLines(const Point2d &intersect, const Point2d &l1, const Point2d &l2)
Definition Graph.cc:730
Voxel< Quad > QuadVoxel
Definition Graph.hh:3523
int sprite_screen_width
Definition Graph.cc:1265
void BlitBitmap(BufferRef ref, int x, int y, Bitmap< Color > &color)
Definition Graph.cc:750
void RenderVoxel(VolumeObject &o, int size, float wholesize, HandleValue< std::pair< Vector, unsigned int > > &hv, VBOState &vbostate)
int Find(std::string s, char c)
Definition Graph.cc:1583
void TexturePrepare(const Sprite &s, ArrayRender &rend, bool progress, bool textrender=false)
Definition Graph.cc:1202
Quad QuadInterpolation(const Quad &q1, const Quad &q2, float val)
Bitmap< Size > SizeBitmap
Definition Graph.hh:1531
void * thread_func_bitmap(void *data)
Definition Main.cc:480
S Conquer(DivideAndConquer< P, S > &d, P p)
Definition Graph.hh:5060
ArrayConvert< Region, int, Rect > RegionConvert
Definition Graph.hh:100
void PrepareCube(const Bitmap< Range< float > > &bm_alternatives, Point pos, Vector u_x, Vector u_y, Vector u_z, ArrayRender &rend, Data &d, int id)
Cube3 CubeVoxelArea(Voxel< Cube3 > &cubes, PointI p1, PointI p2)
Definition Graph.cc:675
std::string MB(long i)
Definition GameApi.cc:43586
void PrepareSpriteToVA(const Sprite &s, VertexArraySet &vas)
Definition Graph.cc:1251
void RenderGrid(Bitmap< Pos > &bm, float x, float y, int cellsx, int cellsy, ArrayRender &rend, int start_x, int start_y, int size_x, int size_y)
Definition Graph.cc:935
AK empty(int sx, int sy, int sz, float start_x, float end_x, float start_y, float end_y, float start_z, float end_z)
Definition accel.cc:723
PML or_elem(PML p1, PML p2)
Definition accel.cc:820
int add(void *w)
Definition ui.cc:341
unsigned int color_1(int pointnum, PT pos)
Definition test.cpp:7
Definition compiled_tests.cpp:1189
virtual int SizeY() const
Definition Graph.hh:655
bool Map(int x, int y) const
Definition Graph.hh:656
void HeavyPrepare()
Definition Graph.hh:647
void Prepare()
Definition Graph.hh:649
AndNotBitmap(Bitmap< bool > &bm1, Bitmap< bool > &bm2)
Definition Graph.hh:642
virtual int SizeX() const
Definition Graph.hh:654
void Collect(CollectVisitor &vis)
Definition Graph.hh:643
float SizeY() const
Definition Graph.hh:2985
Color Map(float x, float y) const
Definition Graph.hh:2986
float SizeX() const
Definition Graph.hh:2984
AndNotColorContinuousBitmap(ContinuousBitmap< Color > &bm, ContinuousBitmap< bool > &cut_out)
Definition Graph.hh:2974
void Prepare()
Definition Graph.hh:2982
void Collect(CollectVisitor &vis)
Definition Graph.hh:2976
void HeavyPrepare()
Definition Graph.hh:2980
Definition Effect.hh:3441
virtual int NumFrames() const =0
virtual FaceCollection * Frame(int framenum) const =0
Definition Effect.hh:1238
Definition Effect.hh:11461
virtual Point2d Pos(int frame) const
Definition Graph.hh:6851
ArraySprite(Sprite **array, int count)
Definition Graph.hh:6786
virtual int YSize(int frame) const
Definition Graph.hh:6835
virtual Color Pixel(int frame, int x, int y) const
Definition Graph.hh:6868
virtual int XSize(int frame) const
Definition Graph.hh:6819
void update_cache()
Definition Graph.hh:6787
virtual int NumFrames() const
Definition Graph.hh:6810
virtual int Size() const=0
Definition compiled_tests.cpp:1200
BitmapArray(Bitmap< C > &bm)
Definition Graph.hh:865
int Size() const
Definition Graph.hh:870
C Index(int i) const
Definition Graph.hh:871
void Prepare()
Definition Graph.hh:866
BufferRef Ref() const
Definition Graph.hh:4272
void Generate(Rect r)
Definition Graph.hh:4251
BitmapCache(ColorBitmap &bitmap)
Definition Graph.hh:4247
~BitmapCache()
Definition Graph.hh:4273
void HeavyPrepare()
Definition Graph.hh:2313
void Prepare()
Definition Graph.hh:2314
int SizeY() const
Definition Graph.hh:2317
int SizeX() const
Definition Graph.hh:2316
bool Map(int x, int y) const
Definition Graph.hh:2318
BitmapCircle(Point2d center, float radius, int sx, int sy)
Definition Graph.hh:2311
void Collect(CollectVisitor &vis)
Definition Graph.hh:2312
Definition GraphI.hh:2598
std::pair< int, int > Index(int i) const
Definition Graph.hh:8033
BitmapEnumeration(Bitmap< T > &bm)
Definition Graph.hh:8028
int Size() const
Definition Graph.hh:8029
Color Map(int x, int y) const
Definition Graph.hh:2470
unsigned int & Map2(int x, int y) const
Definition Graph.hh:2477
BitmapFromBuffer(BufferRef buf)
Definition Graph.hh:2461
void Prepare()
Definition Graph.hh:2467
int SizeY() const
Definition Graph.hh:2469
void HeavyPrepare()
Definition Graph.hh:2465
int SizeX() const
Definition Graph.hh:2468
BufferRef buf
Definition Graph.hh:2488
void Collect(CollectVisitor &vis)
Definition Graph.hh:2462
T Map(int x, int y) const
Definition Graph.hh:3507
int SizeY() const
Definition Graph.hh:3506
void Collect(CollectVisitor &vis)
Definition Graph.hh:3497
BitmapFromContinuousBitmap(ContinuousBitmap< T > &bitmap, int xsize, int ysize)
Definition Graph.hh:3496
void Prepare()
Definition Graph.hh:3503
int SizeX() const
Definition Graph.hh:3505
void HeavyPrepare()
Definition Graph.hh:3501
void Prepare()
Definition Graph.hh:2418
void Collect(CollectVisitor &vis)
Definition Graph.hh:2413
virtual int SizeX() const
Definition Graph.hh:2420
virtual int SizeY() const
Definition Graph.hh:2421
void HeavyPrepare()
Definition Graph.hh:2416
T Map(int x, int y) const
Definition Graph.hh:2422
BitmapFromFile(std::string filename, Function< char, T > &func, int sizex, int sizey)
Definition Graph.hh:2403
BitmapFunction(Bitmap< T > &bm)
Definition Graph.hh:1590
T Index(Pos p) const
Definition Graph.hh:1591
int SizeX() const
Definition Graph.hh:8003
BitmapIntersection(Array< int, A > &enum1, Array< int, B > &enum2, Function< A, AA > &subset1, Function< B, BB > &subset2, Function< AA, bool > &char1, Function< BB, bool > &char2)
Definition Graph.hh:7991
int SizeY() const
Definition Graph.hh:8004
bool Map(int x, int y) const
Definition Graph.hh:8005
BitmapPullback(ContinuousBitmap2< Z, bool > &Zz, Function< A, Z > &f, Function< B, Z > &g)
Definition Graph.hh:7913
bool Index(std::pair< A, B > p) const
Definition Graph.hh:7916
int SizeY() const
Definition Graph.hh:1801
C Map(int x, int y) const
Definition Graph.hh:1802
BitmapRelation(Bitmap< C > &bm, C unknown_value, C value)
Definition Graph.hh:1797
void Prepare()
Definition Graph.hh:1798
BitmapRelation(Bitmap< C > &bm, C unknown_value, int xx, int yy)
Definition Graph.hh:1796
int SizeX() const
Definition Graph.hh:1800
virtual int XSize(int frame) const
Definition Graph.hh:6774
virtual Point2d Pos(int frame) const
Definition Graph.hh:6776
virtual int NumFrames() const
Definition Graph.hh:6773
BitmapSprite(Bitmap< Color > &c, Point2d pos)
Definition Graph.hh:6772
virtual int YSize(int frame) const
Definition Graph.hh:6775
virtual Color Pixel(int frame, int x, int y) const
Definition Graph.hh:6777
virtual int SizeX() const
Definition Graph.hh:1504
virtual int SizeY() const
Definition Graph.hh:1505
void Set(Bitmap< T > &t)
Definition Graph.hh:1508
virtual T Map(int x, int y) const
Definition Graph.hh:1506
void Prepare()
Definition Graph.hh:1502
~BitmapStore()
Definition Graph.hh:1522
BitmapSubset(Bitmap< A > &bm)
Definition Graph.hh:8048
A Index(std::pair< int, int > p) const
Definition Graph.hh:8049
BitmapTextureSurfaceIn3d(SurfaceIn3d &surf, Bitmap< class Color > &tex)
Definition Graph.hh:7222
void HeavyPrepare()
Definition Graph.hh:7228
void Collect(CollectVisitor &vis)
Definition Graph.hh:7224
virtual void Prepare()
Definition Graph.hh:7230
virtual unsigned int Color(float x, float y) const
Definition Graph.hh:7231
virtual bool Inside(Point v) const
Definition Graph.hh:8382
BitmapVolume(Bitmap< bool > *b, float dist)
Definition Graph.hh:8381
virtual int SizeY() const =0
virtual int SizeX() const =0
virtual C Map(int x, int y) const =0
void HeavyPrepare()
Definition Graph.hh:4225
Color Map(int x, int y) const
Definition Graph.hh:4236
void Collect(CollectVisitor &vis)
Definition Graph.hh:4222
int SizeY() const
Definition Graph.hh:4232
BitmapizeArray(Array< std::pair< int, int >, Color > &func)
Definition Graph.hh:4221
void Prepare()
Definition Graph.hh:4227
int SizeX() const
Definition Graph.hh:4228
virtual int SizeY() const
Definition Graph.hh:1325
virtual int SizeX() const
Definition Graph.hh:1324
void Prepare()
Definition Graph.hh:1318
void Collect(CollectVisitor &vis)
Definition Graph.hh:1311
BlitBitmapClassMasked2(Bitmap< Color > &bm, Bitmap< Color > &bm2, int x, int y, Bitmap< bool > &mask)
Definition Graph.hh:1310
void HeavyPrepare()
Definition Graph.hh:1317
virtual Color Map(int xx, int yy) const
Definition Graph.hh:1326
void Collect(CollectVisitor &vis)
Definition Graph.hh:1272
virtual int SizeX() const
Definition Graph.hh:1285
BlitBitmapClassMasked(Bitmap< Color > &bm, Bitmap< Color > &bm2, int x, int y, Bitmap< float > &mask)
Definition Graph.hh:1271
void Prepare()
Definition Graph.hh:1279
virtual int SizeY() const
Definition Graph.hh:1286
virtual Color Map(int xx, int yy) const
Definition Graph.hh:1287
void HeavyPrepare()
Definition Graph.hh:1278
void HeavyPrepare()
Definition Graph.hh:1253
virtual Color Map(int xx, int yy) const
Definition Graph.cc:85
virtual int SizeX() const
Definition Graph.hh:1259
virtual int SizeY() const
Definition Graph.hh:1260
void Collect(CollectVisitor &vis)
Definition Graph.hh:1247
BlitBitmapClass(Bitmap< Color > &bm, Bitmap< Color > &bm2, int x, int y)
Definition Graph.hh:1246
void Prepare()
Definition Graph.hh:1254
virtual bool Map(int x, int y) const
Definition Graph.hh:386
void Prepare()
Definition Graph.hh:382
virtual int SizeX() const
Definition Graph.hh:384
BoolBitmapFromFloatBitmap2(Bitmap< float > &bm2, float range_start, float range_end)
Definition Graph.hh:370
void Collect(CollectVisitor &vis)
Definition Graph.hh:378
void HeavyPrepare()
Definition Graph.hh:381
virtual int SizeY() const
Definition Graph.hh:385
void Prepare()
Definition Graph.hh:2867
virtual float SizeY() const
Definition Graph.hh:2873
virtual float SizeX() const
Definition Graph.hh:2869
virtual bool Map(int x, int y) const
Definition Graph.hh:2877
BorderBitmap2(float width, ContinuousBitmap< T > &c)
Definition Graph.hh:2866
void Prepare()
Definition Graph.hh:1195
virtual int SizeY() const
Definition Graph.hh:1198
void HeavyPrepare()
Definition Graph.hh:1193
virtual Color Map(int x, int y) const
Definition Graph.hh:1199
BorderBitmap(Bitmap< Color > &next, Color left, Color right, Color top, Color bottom, int left_border, int right_border, int top_border, int bottom_border)
Definition Graph.hh:1185
void Collect(CollectVisitor &vis)
Definition Graph.hh:1190
virtual int SizeX() const
Definition Graph.hh:1197
~BufferFromBitmapCollection()
Definition Graph.hh:2499
BufferFromBitmapCollection(BitmapCollection< Color > &t, int i)
Definition Graph.hh:2494
void Gen() const
Definition Graph.hh:2500
BufferRef Buffer() const
Definition Graph.hh:2514
void GenPrepare() const
Definition Graph.hh:2547
BufferFromBitmap(Bitmap< Color > &t)
Definition Graph.hh:2524
void clear_with_leak()
Definition Graph.hh:2616
~BufferFromBitmap()
Definition Graph.hh:2530
void flip_color(unsigned int &col)
Definition Graph.hh:2601
void Gen() const
Definition Graph.hh:2531
void FlipBytes()
Definition Graph.hh:2589
BufferRef Buffer() const
Definition Graph.hh:2615
Bitmap< Color > * Index(bool b) const
Definition Graph.hh:6303
void HeavyPrepare()
Definition Graph.hh:6301
void Collect(CollectVisitor &vis)
Definition Graph.hh:6300
int SizeX() const
Definition Graph.hh:6308
void Prepare()
Definition Graph.hh:6302
Color Map(int x, int y) const
Definition Graph.hh:6310
int SizeY() const
Definition Graph.hh:6309
ChessBoardBitmap(Color c1, Color c2, int sx, int sy, int ssx, int ssy)
Definition Graph.hh:6299
virtual int SizeX() const
Definition Graph.hh:6153
virtual int SizeY() const
Definition Graph.hh:6154
void Prepare()
Definition Graph.hh:6151
void HeavyPrepare()
Definition Graph.hh:6149
void Collect(CollectVisitor &vis)
Definition Graph.hh:6146
virtual bool Map(int x, int y) const
Definition Graph.hh:6155
ChessBoard(int sx, int sy, bool b)
Definition Graph.hh:6145
void Prepare()
Definition Graph.hh:5871
virtual int SizeY() const
Definition Graph.hh:5878
virtual Color Map(int x, int y) const
Definition Graph.hh:5879
ChooseBitmap2(Bitmap< Color > &bm1, Bitmap< Color > &bm2, Bitmap< float > &choose)
Definition Graph.hh:5869
virtual int SizeX() const
Definition Graph.hh:5877
virtual int SizeX() const
Definition Graph.hh:752
void Prepare()
Definition Graph.hh:746
ChooseBitmap(Bitmap< T > &bm1, Bitmap< T > &bm2, Bitmap< bool > &which)
Definition Graph.hh:745
virtual int SizeY() const
Definition Graph.hh:753
virtual T Map(int x, int y) const
Definition Graph.hh:754
int Choose(Point2d pp) const
Definition Graph.hh:5599
ChoosePointByMouseCursor(PointCollection &coll)
Definition Graph.hh:5598
ChooseTBitmap(Bitmap< bool > &bm, T false_t, T true_t)
Definition Graph.hh:458
void HeavyPrepare()
Definition Graph.hh:462
void Collect(CollectVisitor &vis)
Definition Graph.hh:459
virtual T Map(int x, int y) const
Definition Graph.hh:468
virtual int SizeY() const
Definition Graph.hh:467
void Prepare()
Definition Graph.hh:464
virtual int SizeX() const
Definition Graph.hh:466
bool Map(float x, float y) const
Definition Graph.hh:3408
void Prepare()
Definition Graph.hh:3399
float SizeY() const
Definition Graph.hh:3404
CircleContinuousBitmap(float size_x, float size_y, float center_x, float center_y, float radius)
Definition Graph.hh:3398
float SizeX() const
Definition Graph.hh:3400
Definition Effect.hh:2060
Bitmap< T > * Map(int x, int y) const
Definition Graph.hh:6194
CollectBitmapsBitmap(const Bitmap< K > &bm, const Function< K, Bitmap< T > * > &func)
Definition Graph.hh:6181
int SizeY() const
Definition Graph.hh:6190
void Prepare()
Definition Graph.hh:6184
int SizeX() const
Definition Graph.hh:6186
virtual void Collect(CollectVisitor &vis)=0
Definition GameApi.cc:43596
virtual void HeavyPrepare()=0
virtual void register_obj(CollectInterface *i)=0
Definition Effect.hh:10804
Color Map(float x, float y, float z) const
Definition Graph.hh:3959
virtual float SizeX() const
Definition Graph.hh:3956
virtual float SizeY() const
Definition Graph.hh:3957
virtual float SizeZ() const
Definition Graph.hh:3958
void Handle(Vector v)
Definition Graph.hh:4556
ColorHandleValue(HandleValue< std::pair< Vector, unsigned int > > &hv, float sizex, float sizey, float sizez)
Definition Graph.hh:4554
unsigned int Index(char c) const
Definition Graph.hh:2443
void Prepare()
Definition Graph.hh:3290
float SizeX() const
Definition Graph.hh:3292
Color Map(float x, float y) const
Definition Graph.hh:3294
float SizeY() const
Definition Graph.hh:3293
ColorTriangle2(float sx, float sy, const Point2d &p1, const Point2d &p2, const Point2d &p3, const Color &c1, const Color &c2, const Color &c3, const Color &background)
Definition Graph.hh:3279
void Collect(CollectVisitor &vis)
Definition Graph.hh:3260
float SizeY() const
Definition Graph.hh:3265
void Prepare()
Definition Graph.hh:3262
void HeavyPrepare()
Definition Graph.hh:3261
float SizeX() const
Definition Graph.hh:3264
Color Map(float x, float y) const
Definition Graph.hh:3266
ColorTriangle(float sx, float sy, const Point2d &p1, const Point2d &p2, const Point2d &p3, const Color &c, const Color &c2)
Definition Graph.hh:3259
Definition VectorTools.hh:380
static unsigned int Interpolate(unsigned int pixel1, unsigned int pixel2, float val)
Definition VectorTools.hh:667
unsigned int Pixel()
Definition VectorTools.hh:426
int r
Definition VectorTools.hh:744
static Color AverageArray(Color *array, int size)
Definition VectorTools.hh:712
static Color Darker(const Color &aVec, float aVal)
Definition VectorTools.hh:708
static Color Transparent()
Definition VectorTools.hh:474
static unsigned int ColorCube(float x, float y, float z, float sizex, float sizey, float sizez)
Definition VectorTools.hh:478
int alpha
Definition VectorTools.hh:745
int g
Definition VectorTools.hh:744
static Color White()
Definition VectorTools.hh:476
static Color Lighter(const Color &aVec, float aVal)
Definition VectorTools.hh:704
int b
Definition VectorTools.hh:744
T Size() const
Definition Graph.hh:4206
Color Index(T t) const
Definition Graph.hh:4207
ColorizeBoolArray(const Array< T, bool > &func)
Definition Graph.hh:4205
ColumnRowBitmap(Array< int, int > &column_x, Array< int, int > &row_y)
Definition Graph.hh:1617
Size Map(int xx, int yy) const
Definition Graph.hh:1622
void Prepare()
Definition Graph.hh:1618
int SizeX() const
Definition Graph.hh:1620
int SizeY() const
Definition Graph.hh:1621
CombineBitmapX(Bitmap< C > &bm, Bitmap< C > &bm2)
Definition Graph.hh:1942
void Prepare()
Definition Graph.hh:1948
int SizeY() const
Definition Graph.hh:1951
int SizeX() const
Definition Graph.hh:1950
void HeavyPrepare()
Definition Graph.hh:1947
void Collect(CollectVisitor &vis)
Definition Graph.hh:1943
C Map(int x, int y) const
Definition Graph.hh:1952
int SizeY() const
Definition Graph.hh:6289
CombineBitmaps2(const Bitmap< K > &bm, const Function< K, Bitmap< T > * > &func)
Definition Graph.hh:6281
void HeavyPrepare()
Definition Graph.hh:6285
T Map(int x, int y) const
Definition Graph.hh:6290
void Collect(CollectVisitor &vis)
Definition Graph.hh:6282
void Prepare()
Definition Graph.hh:6287
int SizeX() const
Definition Graph.hh:6288
CombineBitmaps(Bitmap< T > &bm1, Bitmap< K > &bm2)
Definition Graph.hh:716
virtual std::pair< T, K > Map(int x, int y) const
Definition Graph.hh:731
void Collect(CollectVisitor &vis)
Definition Graph.hh:717
virtual int SizeY() const
Definition Graph.hh:730
void HeavyPrepare()
Definition Graph.hh:722
virtual int SizeX() const
Definition Graph.hh:729
void Prepare()
Definition Graph.hh:724
virtual T Exp(const Array< int, K > &arr) const =0
Function< T, T > * id() const
Definition Graph.hh:5637
T Index(T t) const
Definition Graph.hh:5633
virtual Function< T, T > * m(Function< T, T > *t1, Function< T, T > *t2) const
Definition Graph.hh:5627
virtual BoxableFaceCollection * Data(const EdgeData3d &t) const
Definition Graph.hh:5497
ConeDataRep(int num)
Definition Graph.hh:5496
Definition Effect.hh:9376
Color Map(int, int) const
Definition Graph.hh:1743
void Collect(CollectVisitor &vis)
Definition Graph.hh:1737
void HeavyPrepare()
Definition Graph.hh:1738
void Prepare()
Definition Graph.hh:1739
ConstantBitmap_Color(Color c, int x, int y)
Definition Graph.hh:1736
int SizeX() const
Definition Graph.hh:1741
int SizeY() const
Definition Graph.hh:1742
ConstantBitmap_bool(bool c, int x, int y)
Definition Graph.hh:1755
bool Map(int, int) const
Definition Graph.hh:1762
void Collect(CollectVisitor &vis)
Definition Graph.hh:1756
int SizeY() const
Definition Graph.hh:1761
void HeavyPrepare()
Definition Graph.hh:1757
void Prepare()
Definition Graph.hh:1758
int SizeX() const
Definition Graph.hh:1760
int SizeY() const
Definition Graph.hh:1780
void HeavyPrepare()
Definition Graph.hh:1776
ConstantBitmap_float(float c, int x, int y)
Definition Graph.hh:1774
int SizeX() const
Definition Graph.hh:1779
float Map(int, int) const
Definition Graph.hh:1781
void Collect(CollectVisitor &vis)
Definition Graph.hh:1775
void Prepare()
Definition Graph.hh:1777
int SizeX() const
Definition Graph.hh:1722
ConstantBitmap(C c, int x, int y)
Definition Graph.hh:1714
void Collect(CollectVisitor &vis)
Definition Graph.hh:1715
int SizeY() const
Definition Graph.hh:1723
C Map(int, int) const
Definition Graph.hh:1724
void Prepare()
Definition Graph.hh:1720
void HeavyPrepare()
Definition Graph.hh:1718
void Collect(CollectVisitor &vis)
Definition Graph.hh:2898
virtual C Map(float x, float y) const
Definition Graph.hh:2904
void HeavyPrepare()
Definition Graph.hh:2899
virtual float SizeY() const
Definition Graph.hh:2903
void Prepare()
Definition Graph.hh:2900
ConstantContinuousBitmap(float sx, float sy, C c)
Definition Graph.hh:2897
virtual float SizeX() const
Definition Graph.hh:2902
virtual int SizeY() const
Definition Graph.hh:5917
void change(int index, Bitmap< T > *bm)
Definition Graph.hh:5914
void Prepare()
Definition Graph.hh:5899
virtual T Map(int x, int y) const
Definition Graph.hh:5918
void move(int index, TRect newpos)
Definition Graph.hh:5913
virtual int SizeX() const
Definition Graph.hh:5916
void resize(int new_sx, int new_sy)
Definition Graph.hh:5915
int push_back(TRect rect, Bitmap< T > *bm)
Definition Graph.hh:5907
ContainerBitmap(int sx, int sy, T def)
Definition Graph.hh:5897
Definition GraphI.hh:1178
void Prepare()
Definition Graph.hh:3335
float SizeY() const
Definition Graph.hh:3346
ContinuousBitmapArray(float sx, float sy, Array< int, ContinuousBitmap< Color > * > &arr)
Definition Graph.hh:3334
Color Map(float x, float y) const
Definition Graph.hh:3350
float SizeX() const
Definition Graph.hh:3342
void HeavyPrepare()
Definition Graph.hh:3471
float SizeY() const
Definition Graph.hh:3478
bool ReadyToPrepare() const
Definition Graph.hh:3475
float SizeX() const
Definition Graph.hh:3477
void Collect(CollectVisitor &vis)
Definition Graph.hh:3466
ContinuousBitmapFromBitmap(Bitmap< T > &bitmap, float xsize, float ysize)
Definition Graph.hh:3465
void Prepare()
Definition Graph.hh:3473
T Map(float x, float y) const
Definition Graph.hh:3479
Definition GraphI.hh:1164
virtual float SizeY() const =0
virtual C Map(float x, float y) const =0
virtual float SizeX() const =0
void Prepare()
Definition Graph.hh:2915
float SizeX() const
Definition Graph.hh:2917
ContinuousStructBitmap(Array< float, T > &a1, Array< float, K > &a2)
Definition Graph.hh:2914
std::pair< T, K > Map(float x, float y) const
Definition Graph.hh:2919
float SizeY() const
Definition Graph.hh:2918
Definition GraphI.hh:1188
virtual C Map(float x, float y, float z) const =0
virtual float SizeY() const =0
virtual float SizeZ() const =0
virtual float SizeX() const =0
virtual K Map(int x, int y) const
Definition Graph.hh:1543
void Prepare()
Definition Graph.hh:1540
void HeavyPrepare()
Definition Graph.hh:1539
virtual int SizeX() const
Definition Graph.hh:1541
ConvertBitmap(Bitmap< T > &bm)
Definition Graph.hh:1537
void Collect(CollectVisitor &vis)
Definition Graph.hh:1538
virtual int SizeY() const
Definition Graph.hh:1542
Cube2Cube3Function(float sx, float sy, float sz, float px, float py, float pz)
Definition Graph.hh:4419
Cube3 Index(Cube2 c) const
Definition Graph.hh:4420
void Handle(Cube2 p)
Definition Graph.hh:4526
CubeHandleValue(Point p, Vector ax, Vector ay, Vector az, HandleValue< Vector > &hv)
Definition Graph.hh:4523
CubeVoxel(Cube3 p, int x, int y, int z)
Definition Graph.hh:3749
int SizeY() const
Definition Graph.hh:3751
int SizeZ() const
Definition Graph.hh:3752
Cube3 Map(int xx, int yy, int zz) const
Definition Graph.hh:3753
int SizeX() const
Definition Graph.hh:3750
float Index(float x) const
Definition Graph.hh:107
float DIndex(float x) const
Definition Graph.hh:115
CubicInterpolate(float f_0, float f_1, float df_0, float df_1)
Definition Graph.hh:106
virtual T AMap(float alfa, float s) const =0
virtual Color Map(int x, int y) const
Definition Graph.hh:976
virtual int SizeX() const
Definition Graph.hh:974
void Prepare()
Definition Graph.hh:969
virtual int SizeY() const
Definition Graph.hh:975
DarkerBitmap(Bitmap< Color > &orig, Bitmap< float > &dark, Point2d pos)
Definition Graph.hh:968
virtual BoxableFaceCollection * Data(const T &t) const =0
void * fetch(int id)
Definition Graph.hh:6968
void insert(int id, void *data)
Definition Graph.hh:6967
DiagonalBitmap(float sx, float sy, float acc=0.001)
Definition Graph.hh:7948
virtual float SizeX() const
Definition Graph.hh:7949
virtual bool Map(float x, float y) const
Definition Graph.hh:7951
virtual float SizeY() const
Definition Graph.hh:7950
Definition Effect.hh:10860
DistanceField(Point center, float dist)
Definition Graph.hh:6114
float Index(Point p) const
Definition Graph.hh:6115
virtual unsigned int color(Point p) const =0
virtual float distance(Point p) const =0
virtual Vector normal(Point p) const =0
virtual ~DistanceRenderable()
Definition Graph.hh:8710
virtual S Solve(P p) const =0
virtual std::vector< P > Divide(P p) const =0
virtual bool CanDivide(P p) const =0
virtual S Combine(std::vector< S > s) const =0
virtual void * probvalue(int i) const =0
virtual Draw * ArrayIndex(int i) const =0
virtual int ArrayCount() const =0
virtual Point2d topleft() const =0
virtual Draw * AlArrayIndex(int i) const =0
virtual int propcount() const =0
virtual Point2d bottomright() const =0
virtual int AlArrayCount() const =0
virtual int type() const =0
virtual std::string propname(int i) const =0
virtual std::string proptype(int i) const =0
virtual int SizeX() const
Definition Graph.hh:998
T & At(int x, int y)
Definition Graph.hh:1008
DynBitmap(int sx, int sy)
Definition Graph.hh:995
void Prepare()
Definition Graph.hh:996
virtual T Map(int x, int y) const
Definition Graph.hh:1000
virtual int SizeY() const
Definition Graph.hh:999
const T & At(int x, int y) const
Definition Graph.hh:1004
Definition Effect.hh:2852
Point2d Index(int i) const
Definition Effect.hh:2855
void push_back(Point2d p)
Definition Effect.hh:2859
void DrawVBO(VBOState &vbostate, VBOUpdate u, float time)
void Handle(std::pair< int, ObjectId > m)
void unuse(int id)
Definition Graph.hh:4616
int create_new()
Definition Graph.hh:4615
void Handle(std::pair< int, Matrix > m)
Dynamic(PieceShader &piece)
Definition Graph.hh:4613
int count() const
Definition Graph.hh:4614
void Handle(std::pair< int, unsigned int > m)
void Handle(std::pair< int, AnimPoint > m)
void Init()
Definition Graph.cc:601
bool Frame(float time)
Definition Graph.cc:614
Effect2dEffect(ShaderFile &file, Render *r)
Definition Graph.hh:6388
Effect3dEffect(ShaderFile &file, Render *r)
Definition Graph.hh:6399
bool Frame(float time)
Definition Graph.cc:659
~Effect3dEffect()
Definition Graph.cc:666
void Init()
Definition Graph.cc:637
virtual T Elem() const =0
void Gen()
Definition Graph.hh:4350
EnumerateBitmap(Bitmap< T > &bm, HandleValue< T > &hv)
Definition Graph.hh:4348
EquivalenceClassColorBitmap(Bitmap< Color > &bm, Color val)
Definition Graph.hh:688
virtual int SizeX() const
Definition Graph.hh:698
void HeavyPrepare()
Definition Graph.hh:692
void Prepare()
Definition Graph.hh:694
void Collect(CollectVisitor &vis)
Definition Graph.hh:689
virtual int SizeY() const
Definition Graph.hh:699
virtual bool Map(int x, int y) const
Definition Graph.hh:700
void HeavyPrepare()
Definition Graph.hh:669
virtual int SizeY() const
Definition Graph.hh:675
void Collect(CollectVisitor &vis)
Definition Graph.hh:666
EquivalenceClassIntBitmap(Bitmap< int > &bm, int val)
Definition Graph.hh:665
void Prepare()
Definition Graph.hh:670
virtual bool Map(int x, int y) const
Definition Graph.hh:676
virtual int SizeX() const
Definition Graph.hh:674
virtual int SizeY() const
Definition Graph.hh:8358
virtual Color Map(int x, int y) const
Definition Graph.hh:8359
virtual int SizeX() const
Definition Graph.hh:8357
void Prepare()
Definition Graph.hh:8355
Definition Effect.hh:3547
void Handle(std::pair< Matrix, unsigned int > mm)
Definition Graph.hh:4575
void DrawVBO(VBOState &vbostate, VBOUpdate u)
Definition Graph.cc:243
FaceCollectionHandleValueDynamic()
Definition Graph.hh:4573
Definition EffectI.hh:212
virtual Vector PointNormal(int face, int point) const =0
virtual Point FacePoint(int face, int point) const =0
virtual float Attrib(int face, int point, int id) const =0
virtual unsigned int Color(int face, int point) const =0
virtual int NumPoints(int face) const =0
virtual Point2d TexCoord(int face, int point) const =0
virtual int NumFaces() const =0
virtual int AttribI(int face, int point, int id) const =0
Definition Effect.hh:10823
virtual int AttribI(int face, int point, int id) const
Definition Graph.hh:5309
virtual Point FacePoint(int face, int point) const
Definition Graph.hh:5288
void SetBox(Matrix m)
Definition Graph.hh:5285
virtual float Attrib(int face, int point, int id) const
Definition Graph.hh:5305
virtual int NumPoints(int face) const
Definition Graph.hh:5287
virtual std::string name() const
Definition Graph.hh:5274
FacesFromMap(Bitmap< bool > &mymap, Bitmap< Point > &pos)
Definition Graph.hh:5273
virtual int NumFaces() const
Definition Graph.hh:5286
void Prepare()
Definition Graph.hh:5284
virtual unsigned int Color(int face, int point) const
Definition Graph.hh:5313
void Collect(CollectVisitor &vis)
Definition Graph.hh:5276
virtual Vector PointNormal(int face, int point) const
Definition Graph.hh:5297
void HeavyPrepare()
Definition Graph.hh:5281
virtual Point2d TexCoord(int face, int point) const
Definition Graph.hh:5317
void Refresh()
Definition Graph.hh:5326
void Collect(CollectVisitor &vis)
Definition Graph.hh:6094
float Map(int x, int y) const
Definition Graph.hh:6104
FieldBitmap(Field &f, Bitmap< Point > &pos)
Definition Graph.hh:6093
void HeavyPrepare()
Definition Graph.hh:6098
void Prepare()
Definition Graph.hh:6100
int SizeY() const
Definition Graph.hh:6103
int SizeX() const
Definition Graph.hh:6102
void Handle(std::pair< T, bool > p)
Definition Graph.hh:4491
FilterHandleValue(HandleValue< T > &hv)
Definition Graph.hh:4490
bool Index(int i) const
Definition Graph.hh:6072
FilterLines(Line2dCollection &coll, float y)
Definition Graph.hh:6067
int Size() const
Definition Graph.hh:6068
FindPositionFromCurve(Field &field, CurveIn3d &curve)
Definition Graph.hh:6129
float Elem() const
Definition Graph.hh:6130
int SizeY() const
Definition Graph.hh:6213
int StartY(int y) const
Definition Graph.hh:6263
void Prepare()
Definition Graph.hh:6208
int SizeX() const
Definition Graph.hh:6209
T Map(int x, int y) const
Definition Graph.hh:6217
int StartX(int x) const
Definition Graph.hh:6252
FlattenBitmap(Bitmap< Bitmap< T > * > &bm)
Definition Graph.hh:6207
virtual int SizeY() const
Definition Graph.hh:2634
void Collect(CollectVisitor &vis)
Definition Graph.hh:2628
FlipColoursInv(Bitmap< Color > &c)
Definition Graph.hh:2626
void HeavyPrepare()
Definition Graph.hh:2629
virtual int SizeX() const
Definition Graph.hh:2633
void Prepare()
Definition Graph.hh:2631
virtual Color Map(int x, int y) const
Definition Graph.hh:2635
virtual bool IsDirectGltfImage() const
Definition Graph.hh:2660
Bitmap< Color > & c
Definition Graph.hh:2663
void HeavyPrepare()
Definition Graph.hh:2671
Bitmap< Color > & c
Definition Graph.hh:2726
FlipColours(Bitmap< Color > &c)
Definition Graph.hh:2669
virtual bool IsDirectGltfImage() const
Definition Graph.hh:2723
virtual int SizeY() const
Definition Graph.hh:2676
virtual int SizeX() const
Definition Graph.hh:2675
virtual Color Map(int x, int y) const
Definition Graph.hh:2677
void Collect(CollectVisitor &vis)
Definition Graph.hh:2670
void Prepare()
Definition Graph.hh:2673
void HeavyPrepare()
Definition Graph.hh:428
void Prepare()
Definition Graph.hh:430
virtual int SizeX() const
Definition Graph.hh:432
virtual float Map(int x, int y) const
Definition Graph.hh:434
void Collect(CollectVisitor &vis)
Definition Graph.hh:425
virtual int SizeY() const
Definition Graph.hh:433
FloatBitmapFromBoolBitmap(Bitmap< bool > &bm, int csx, int csy)
Definition Graph.hh:424
float m(float t1, float t2) const
Definition Graph.hh:5668
float id() const
Definition Graph.hh:5669
float inv(float a) const
Definition Graph.hh:5670
FloatPointBitmap(Point p)
Definition Graph.hh:1971
int SizeX() const
Definition Graph.hh:1979
FloatPointBitmap(Vector v)
Definition Graph.hh:1972
int SizeY() const
Definition Graph.hh:1980
void Prepare()
Definition Graph.hh:1977
void Collect(CollectVisitor &vis)
Definition Graph.hh:1973
float Map(int x, int y) const
Definition Graph.hh:1981
void HeavyPrepare()
Definition Graph.hh:1976
virtual bool Map(int x, int y) const
Definition Graph.hh:255
virtual int SizeX() const
Definition Graph.hh:253
void Collect(CollectVisitor &vis)
Definition Graph.hh:247
virtual int SizeY() const
Definition Graph.hh:254
void HeavyPrepare()
Definition Graph.hh:250
FloatRangeBitmap(Bitmap< float > &fb, float rs, float re)
Definition Graph.hh:246
void Prepare()
Definition Graph.hh:252
void Prepare()
Definition Graph.hh:492
FontCharacterString(T def, int x_gap)
Definition Graph.hh:483
void Collect(CollectVisitor &vis)
Definition Graph.hh:484
virtual T Map(int x, int y) const
Definition Graph.hh:521
virtual int SizeX() const
Definition Graph.hh:510
void HeavyPrepare()
Definition Graph.hh:491
void push_back(Bitmap< T > *bm, int top, int ascender, int height, int advance_x, int descender, int left)
Definition Graph.hh:500
int PositiveDelta() const
Definition Graph.hh:542
virtual int SizeY() const
Definition Graph.hh:517
int Height() const
Definition Graph.hh:555
FrameAnimPlugins(Render *render)
Definition Effect.hh:2390
FrameAnim(Render *render)
Definition Effect.hh:110
virtual float SizeY() const
Definition Graph.hh:2854
virtual float SizeX() const
Definition Graph.hh:2853
Function2Bitmap(float sx, float sy, Function2< float, float, T > &f)
Definition Graph.hh:2851
virtual T Map(float x, float y) const
Definition Graph.hh:2855
void Prepare()
Definition Graph.hh:2852
void Generate(Rect r)
Definition Graph.hh:4751
FunctionBitmap(Array< std::pair< int, int >, bool > &func)
Definition Graph.hh:4748
BufferRef Ref() const
Definition Graph.hh:4752
virtual const FaceCollection * Index(int a) const=0
virtual int ASize(int x) const =0
virtual int Size() const =0
virtual T Map(int x, int y) const =0
T Index(int i) const
Definition Graph.hh:5219
FunnyChoose(FunnyArray< T > &arr, Array< int, int > &index)
Definition Graph.hh:5217
int Size() const
Definition Graph.hh:5218
void Init()
Definition Graph.hh:4387
void Handle(T t)
Definition Graph.hh:4388
GenerateCube(HandleValue< Cube2 > &gen, int sizex, int sizey, int sizez)
Definition Graph.hh:4449
void Gen()
Definition Graph.hh:4450
void Gen()
Definition Graph.hh:4398
GenerateGrid(HandleValue< std::pair< int, int > > &gen, int sizex, int sizey)
Definition Graph.hh:4397
GenerateSequence(HandleValue< int > &gen, int size)
Definition Graph.hh:4370
void Gen()
Definition Graph.hh:4371
void Gen()
Definition Graph.hh:4473
GenerateVoxel(Voxel< C > &voxel, HandleValue< std::pair< Cube2, C > > &hv)
Definition Graph.hh:4472
GradientBitmap(float sx, float sy, Point2d p1, Point2d p2, Color c1, Color c2)
Definition Graph.hh:3313
void HeavyPrepare()
Definition Graph.hh:3317
float SizeX() const
Definition Graph.hh:3321
Color Map(float x, float y) const
Definition Graph.cc:688
float SizeY() const
Definition Graph.hh:3322
void Collect(CollectVisitor &vis)
Definition Graph.hh:3314
void Prepare()
Definition Graph.hh:3319
bool Index(std::pair< T, K > i) const
Definition Graph.hh:4173
Graph2(const Function< T, K > &func)
Definition Graph.hh:4172
void Prepare()
Definition Graph.hh:1152
virtual int SizeX() const
Definition Graph.hh:1154
virtual int SizeY() const
Definition Graph.hh:1155
Color Map(int x, int y) const
Definition Graph.hh:1157
GraphBitmap(Function< float, float > &f, Color top, Color middle, Color bottom, float up_delta, float down_delta, float start_x, float end_x, float start_y, float end_y, int size_x, int size_y)
Definition Graph.hh:1151
static bool Compare(float x, float y)
Definition Graph.hh:4152
static bool Compare(std::pair< float, float > p1, std::pair< float, float > p2)
Definition Graph.hh:4161
static bool Compare(T t, K k)
Definition Graph.hh:4142
Definition GraphI.hh:1215
void Init()
Definition Graph.cc:527
GraphEffect(Render *render)
Definition Graph.hh:6364
bool Frame(float time)
Definition Graph.cc:543
VertexData3d Vertex(int v) const
Definition Graph.hh:5374
GraphFromMap(Bitmap< bool > &mymap, Bitmap< Point > &pos, bool twoway, float radius)
Definition Graph.hh:5368
std::pair< int, int > EdgeVertex(int edge) const
Definition Graph.hh:5406
void Refresh()
Definition Graph.hh:5410
int find(int x, int y)
Definition Graph.hh:5445
int NumVertexes() const
Definition Graph.hh:5398
int NumEdges() const
Definition Graph.hh:5402
EdgeData3d Edge(int, int v1, int v2) const
Definition Graph.hh:5385
int NumLines() const
Definition Graph.hh:5252
GraphToLines(Graph &g, GraphData< VertexData3d, EdgeData3d > &data)
Definition Graph.hh:5251
Point LinePoint(int line, int point) const
Definition Graph.hh:5256
Definition GraphI.hh:1206
void Prepare()
Definition Graph.hh:406
void Collect(CollectVisitor &vis)
Definition Graph.hh:401
void HeavyPrepare()
Definition Graph.hh:404
virtual Color Map(int x, int y) const
Definition Graph.hh:410
virtual int SizeX() const
Definition Graph.hh:408
virtual int SizeY() const
Definition Graph.hh:409
GrayScaleBitmapFromFloatBitmap(Bitmap< float > &bm, Color c1, Color c2)
Definition Graph.hh:400
bool Frame(float time)
Definition Graph.cc:1007
GridEffect2(Render *rend2)
Definition Graph.hh:6760
void Init()
Definition Graph.cc:1000
virtual float RotSpeed() const
Definition Graph.hh:6763
GroupMonoid(GroupObject< T > &g)
Definition Graph.hh:5659
T m(T t1, T t2) const
Definition Graph.hh:5660
T id() const
Definition Graph.hh:5661
virtual T m(T t1, T t2) const =0
virtual T inv(T t) const =0
GrowBitmap(Bitmap< T > &bm, int l, int t, int r, int b, T bg_color)
Definition Graph.hh:1383
void Prepare()
Definition Graph.hh:1393
virtual T Map(int x, int y) const
Definition Graph.hh:1397
void Collect(CollectVisitor &vis)
Definition Graph.hh:1387
virtual int SizeX() const
Definition Graph.hh:1395
virtual int SizeY() const
Definition Graph.hh:1396
void HeavyPrepare()
Definition Graph.hh:1391
HandleValueFunction(HandleValue< K > &hv, Function< T, K > &func)
Definition Graph.hh:4680
void Handle(T t)
Definition Graph.hh:4681
void Gen()
Definition Graph.hh:4507
HandleValueSource(Array< int, T > &arr, HandleValue< T > &hv)
Definition Graph.hh:4506
Definition GraphI.hh:1200
virtual void Handle(T t)=0
HeightMapCubesFromBitmap(Bitmap< float > &bm_min, Bitmap< float > &bm_max, float sx, float sy, float sz)
Definition Graph.hh:2109
void Prepare()
Definition Graph.hh:2112
int SizeY() const
Definition Graph.hh:2111
int SizeX() const
Definition Graph.hh:2110
Cube3 Map(int x, int y) const
Definition Graph.hh:2113
Quad Index(Pos p) const
Definition Graph.hh:7138
Heightmap2(Point center, Vector u_x, Vector u_y, int sx, int sy)
Definition Graph.hh:7130
Pos Size() const
Definition Graph.hh:7131
IWaveFormArray * Index(int val) const
Definition Graph.hh:7896
void push_back(IWaveFormArray *wave)
Definition Graph.hh:7894
float Map(int y, float x) const
Definition Graph.hh:7900
IWaveform * Index(int val) const
Definition Graph.hh:7855
float Map(float x) const
Definition Graph.hh:7859
IDynWaveArray(float(*fptr)(float, float))
Definition Graph.hh:7852
void push_back(IWaveform *wave)
Definition Graph.hh:7853
Definition Effect.hh:7706
IntDiagonalBitmap(int sx, int sy)
Definition Graph.hh:7934
virtual bool Map(int x, int y) const
Definition Graph.hh:7937
virtual int SizeY() const
Definition Graph.hh:7936
virtual int SizeX() const
Definition Graph.hh:7935
virtual Color Map(int x, int y) const
Definition Graph.hh:1108
virtual int SizeX() const
Definition Graph.hh:1106
void Prepare()
Definition Graph.hh:1101
virtual int SizeY() const
Definition Graph.hh:1107
void HeavyPrepare()
Definition Graph.hh:1099
InterpolateBitmap(Bitmap< Color > &c1, Bitmap< Color > &c2, float xx)
Definition Graph.hh:1093
void Collect(CollectVisitor &vis)
Definition Graph.hh:1094
InterpolateMovementEffect(Render *render)
Definition Graph.hh:6346
bool Frame(float time)
Definition Graph.cc:497
~InterpolateMovementEffect()
Definition Graph.cc:493
void Init()
Definition Graph.cc:435
Definition Equalizer.hh:478
bool Index(A a) const
Definition Equalizer.hh:481
Intersection(PowerSet< A > &m, PowerSet< A > &m2)
Definition Equalizer.hh:480
virtual float SizeX() const
Definition Graph.hh:2797
virtual T Map(float x, float y) const
Definition Graph.hh:2799
virtual float SizeY() const
Definition Graph.hh:2798
InverseCreateContinuousBitmap(Bitmap< T > &bm, std::pair< int, int >(*fptr)(float, float), float sx, float sy)
Definition Graph.hh:2790
virtual void Prepare()
Definition Graph.hh:2793
Definition Equalizer.hh:303
PowerSet< A > * Index(PowerSet< B > *b) const
Definition Equalizer.hh:306
InverseImage(Function< A, B > &f)
Definition Equalizer.hh:305
virtual int SizeX() const
Definition Graph.hh:782
InverseMapBitmap(Bitmap< T > &bm, std::pair< int, int >(*fptr)(std::pair< int, int >), int sx, int sy)
Definition Graph.hh:777
virtual int SizeY() const
Definition Graph.hh:783
virtual T Map(int x, int y) const
Definition Graph.hh:784
void Prepare()
Definition Graph.hh:778
virtual C Map(float x, float y, float z) const
Definition Graph.hh:3916
virtual float SizeZ() const
Definition Graph.hh:3915
JustVoxel(ContinuousVoxel< Maybe< C > > &vox, C def)
Definition Graph.hh:3912
virtual float SizeX() const
Definition Graph.hh:3913
virtual float SizeY() const
Definition Graph.hh:3914
void push_back(Bitmap< T > *bm)
Definition Graph.hh:5951
virtual T Map(int x, int y) const
Definition Graph.hh:5957
LayerBitmap(T(*fptr)(T *, int), int sx, int sy, T def)
Definition Graph.hh:5942
virtual int SizeX() const
Definition Graph.hh:5955
void Prepare()
Definition Graph.hh:5943
virtual int SizeY() const
Definition Graph.hh:5956
void set_pos(int i, Point2d pos_p)
Definition Graph.hh:2284
void finish_push_backs()
Definition Graph.hh:2274
void push_back(Bitmap< T > *t)
Definition Graph.hh:2266
virtual int SizeX() const
Definition Graph.hh:2286
void set_combiner(CombineElems< bool, T > *e)
Definition Graph.hh:2285
virtual T Map(int x, int y) const
Definition Graph.hh:2288
void Prepare()
Definition Graph.hh:2267
virtual int SizeY() const
Definition Graph.hh:2287
LayeredBitmap2()
Definition Graph.hh:2265
void Prepare()
Definition Graph.hh:2235
int SizeY() const
Definition Graph.hh:2238
int SizeX() const
Definition Graph.hh:2237
int Map(int x, int y) const
Definition Graph.hh:2239
LayeredBitmap(Array< int, Bitmap< bool > * > &arr, Array< int, int > &arr2)
Definition Graph.hh:2233
virtual int count() const =0
virtual ~Layout()
Definition Graph.hh:8397
virtual TRect get(int i) const =0
virtual int SizeY() const
Definition Graph.hh:950
LighterBitmap(Bitmap< Color > &orig, Bitmap< float > &light, Point2d pos)
Definition Graph.hh:943
void Prepare()
Definition Graph.hh:944
virtual int SizeX() const
Definition Graph.hh:949
virtual Color Map(int x, int y) const
Definition Graph.hh:951
Definition EffectI.hh:305
LineIn2d2(Point2d p1, Point2d p2)
Definition Graph.hh:5979
float Index(float x) const
Definition Graph.hh:5980
float Size() const
Definition Graph.hh:5824
Point2d p2
Definition Graph.hh:5830
Point2d Index(float x) const
Definition Graph.hh:5825
LineIn2d(Point2d p1, Point2d p2)
Definition Graph.hh:5823
Point2d p1
Definition Graph.hh:5830
LinearInterpolation2(C c1, C c2)
Definition Graph.hh:132
C Interpolate(float pos) const
Definition Graph.hh:133
Definition Shader.hh:1346
int SizeX() const
Definition Graph.hh:1635
int SizeY() const
Definition Graph.hh:1636
MBitmap(int x, int y)
Definition Graph.hh:1632
void Prepare()
Definition Graph.hh:1633
T Map(int xx, int yy) const
Definition Graph.hh:1637
T & Mod(int xx, int yy)
Definition Graph.hh:1641
MBitmap< T > & operator=(const MBitmap< T > &t)
Definition Graph.hh:1642
MBitmap(const MBitmap< T > &t)
Definition Graph.hh:1650
MBitmap< T > Index(Size s) const
Definition Graph.hh:1663
MandelbrotVolume(bool julia, int count, float yy)
Definition Graph.hh:7064
virtual bool Inside(Point v) const
Definition Graph.hh:7065
Mandelbrot(bool julia, float start_x, float end_x, float start_y, float end_y, int sx, int sy, int count, float xx, float yy)
Definition Graph.hh:6985
int SizeY() const
Definition Graph.hh:6993
int SizeX() const
Definition Graph.hh:6992
void Prepare()
Definition Graph.hh:6991
int Map(int x, int y) const
Definition Graph.hh:6994
void Collect(CollectVisitor &vis)
Definition Graph.hh:6986
void HeavyPrepare()
Definition Graph.hh:6989
MapArray(Array< int, TRect > &arr, Function< TRect, CubeCoords > &func)
Definition Effect.hh:803
int SizeX() const
Definition Graph.hh:7108
MapBitmapToColor(int value1, int value2, Color c1, Color c2, Bitmap< int > &bm)
Definition Graph.hh:7094
void HeavyPrepare()
Definition Graph.hh:7105
void Prepare()
Definition Graph.hh:7106
void Collect(CollectVisitor &vis)
Definition Graph.hh:7101
int SizeY() const
Definition Graph.hh:7109
Color Map(int x, int y) const
Definition Graph.hh:7110
int SizeX() const
Definition Graph.hh:1684
K Map(int x, int y) const
Definition Graph.hh:1686
int SizeY() const
Definition Graph.hh:1685
MapBitmap(Bitmap< T1 > &bm, Function< T2, K > &f)
Definition Graph.hh:1675
void Collect(CollectVisitor &vis)
Definition Graph.hh:1676
void HeavyPrepare()
Definition Graph.hh:1680
void Prepare()
Definition Graph.hh:1682
float SizeY() const
Definition Graph.hh:2936
float SizeX() const
Definition Graph.hh:2935
MapContinuousBitmap(ContinuousBitmap< T1 > &bm, Function< T2, K > &f)
Definition Graph.hh:2930
void Collect(CollectVisitor &vis)
Definition Graph.hh:2931
void Prepare()
Definition Graph.hh:2933
void HeavyPrepare()
Definition Graph.hh:2932
K Map(float x, float y) const
Definition Graph.hh:2937
FaceCollectionHandleValueDynamic hv
Definition Graph.hh:5098
PieceShader shader
Definition Graph.hh:5104
float YRot() const
Definition Graph.hh:5089
void Init()
Definition Graph.cc:291
float ZRot() const
Definition Graph.hh:5090
unsigned int texture
Definition Graph.hh:5102
float RotSpeed() const
Definition Graph.hh:5091
BitmapFromFile< bool > mapfunc
Definition Graph.hh:5095
TexturePiece texturepiece
Definition Graph.hh:5103
MapFunction mapfunc1
Definition Graph.hh:5093
bool first
Definition Graph.hh:5100
BitmapFromFile< unsigned int > colorfunc
Definition Graph.hh:5096
MapEffect(Render *r)
Definition Graph.cc:266
~MapEffect()
Definition Graph.cc:287
ColorMapFunction colorfunc1
Definition Graph.hh:5094
float XRot() const
Definition Graph.hh:5088
bool Frame(float time)
Definition Graph.cc:306
VBOState vbostate
Definition Graph.hh:5099
bool Index(char c) const
Definition Graph.hh:2434
MapRectArray(Array< int, TRect > &arr, Point p, Vector u_x, Vector u_y, Vector u_z, float z)
Definition Graph.hh:1702
MapRectBitmap(Bitmap< TRect > &bm, Point p, Vector u_x, Vector u_y, Vector u_z, float z)
Definition Graph.hh:1695
int SizeY() const
Definition Graph.hh:3549
K Map(int x, int y, int z) const
Definition Graph.hh:3551
int SizeX() const
Definition Graph.hh:3548
int SizeZ() const
Definition Graph.hh:3550
MapVoxel(Voxel< T1 > &bm, Function< T2, K > &f)
Definition Graph.hh:3547
MarchingCubesVoxel(Voxel< bool > &vox, HandleValue< Cube2 > &hv)
Definition Graph.hh:4787
void Gen()
Definition Graph.hh:4788
virtual float SizeX() const
Definition Graph.hh:4018
virtual Point Map(float x, float y, float z) const
Definition Graph.hh:4021
virtual float SizeY() const
Definition Graph.hh:4019
virtual float SizeZ() const
Definition Graph.hh:4020
MatrixContinuousVoxel(ContinuousVoxel< Point > &p, Matrix m)
Definition Graph.hh:4017
Definition Effect.hh:8076
Matrix id() const
Definition Graph.hh:5680
Matrix m(Matrix t1, Matrix t2) const
Definition Graph.hh:5676
Matrix inv(Matrix t) const
Definition Graph.hh:5684
Definition VectorTools.hh:279
float matrix[16]
Definition VectorTools.hh:343
static Matrix XRotation(float rot)
Definition VectorTools.cc:498
static Matrix YRotation(float rot)
Definition VectorTools.cc:526
static Matrix Translate(float x, float y, float z)
Definition VectorTools.cc:547
static Matrix Inverse(const Matrix &m)
Definition VectorTools.cc:859
static Matrix ZRotation(float rot)
Definition VectorTools.cc:537
static Matrix Identity()
Definition VectorTools.cc:487
static Matrix Scale(float x, float y, float z)
Definition VectorTools.cc:556
virtual Maybe< C > Map(float x, float y, float z) const
Definition Graph.hh:3899
MaybeVoxel(VolumeObject &obj, ContinuousVoxel< C > &data)
Definition Graph.hh:3895
virtual float SizeZ() const
Definition Graph.hh:3898
virtual float SizeY() const
Definition Graph.hh:3897
virtual float SizeX() const
Definition Graph.hh:3896
bool b
Definition Graph.hh:3888
Maybe(const T &t)
Definition Graph.hh:3880
~Maybe()
Definition Graph.hh:3887
void operator=(const Maybe< T > &m)
Definition Graph.hh:3882
T * obj
Definition Graph.hh:3889
Maybe()
Definition Graph.hh:3879
Maybe(const Maybe< T > &m)
Definition Graph.hh:3881
void Collect(CollectVisitor &vis)
Definition Graph.hh:1026
MemoizeBitmap(Bitmap< Color > &bm)
Definition Graph.hh:1022
void Prepare()
Definition Graph.hh:1043
virtual Color Map(int x, int y) const
Definition Graph.hh:1071
void MemoizeAll()
Definition Graph.hh:1059
virtual int SizeX() const
Definition Graph.hh:1069
void HeavyPrepare()
Definition Graph.hh:1030
virtual int SizeY() const
Definition Graph.hh:1070
~MemoizeBitmap()
Definition Graph.hh:1058
Definition Effect.hh:11366
~MeshTexturesImpl()
Definition Graph.hh:6505
MeshTexturesImpl(Bitmap< Color > &bm)
Definition Graph.hh:6503
virtual BufferRef TextureBuf(int num) const
Definition Graph.hh:6547
MeshTexturesImpl(Bitmap< Color > &bm, MeshTextures &tex)
Definition Graph.hh:6504
virtual int NumTextures() const
Definition Graph.hh:6506
virtual void GenTexture(int num)
Definition Graph.hh:6507
Definition Effect.hh:11409
Definition Effect.hh:11256
virtual int NumPoints() const =0
virtual Point FacePoint(int framenum, int statenum, int face, int point) const =0
virtual int NumFaces(int framenum) const =0
virtual int NumFrames() const =0
virtual int NumStates() const =0
virtual int StateNum(int framenum, int face) const =0
void Prepare()
Definition Graph.hh:1224
virtual T Map(int xx, int yy) const
Definition Graph.hh:1228
ModifyBitmap(Bitmap< T > &bm, Bitmap< T > &bm2, int x, int y)
Definition Graph.hh:1218
virtual int SizeY() const
Definition Graph.hh:1227
void Collect(CollectVisitor &vis)
Definition Graph.hh:1219
void HeavyPrepare()
Definition Graph.hh:1223
virtual int SizeX() const
Definition Graph.hh:1226
virtual T m(T t1, T t2) const =0
MoveMap(Vector v)
Definition Graph.hh:6638
Point SpaceMap(Point p) const
Definition Graph.hh:6639
Definition GraphI.hh:1154
virtual NDim< I, B > * Interpolate(const NDim< I, B > &b1, const NDim< I, B > &b2, I val) const =0
virtual B Map(I *array, int size) const =0
virtual std::vector< I > Count() const =0
virtual int SizeX() const
Definition Graph.hh:2070
virtual float Map(int x, int y) const
Definition Graph.hh:2072
NodeToOne(Bitmap< float > &bm, int x_and_y)
Definition Graph.hh:2062
virtual int SizeY() const
Definition Graph.hh:2071
void Prepare()
Definition Graph.hh:2068
void Collect(CollectVisitor &vis)
Definition Graph.hh:2063
void HeavyPrepare()
Definition Graph.hh:2067
int SizeY() const
Definition Graph.hh:2091
void Collect(CollectVisitor &vis)
Definition Graph.hh:2083
int SizeX() const
Definition Graph.hh:2090
NodeToZero(Bitmap< float > &bm, int x, int y)
Definition Graph.hh:2082
void HeavyPrepare()
Definition Graph.hh:2087
void Prepare()
Definition Graph.hh:2088
float Map(int x, int y) const
Definition Graph.hh:2092
virtual int SizeY() const
Definition Graph.hh:5567
virtual Point Map(int x, int y) const
Definition Graph.hh:5568
void Prepare()
Definition Graph.hh:5564
NormalMapping1(SurfaceIn3d &surf, SurfaceIn3d &polys, int sizex, int sizey)
Definition Graph.hh:5563
virtual int SizeX() const
Definition Graph.hh:5566
virtual int SizeY() const
Definition Graph.hh:897
NormalRectBitmap(Point2d p1, Vector2d u_x, Vector2d u_y, float width, float height, float x_gap, float y_gap, int sx, int sy)
Definition Graph.hh:889
virtual TRect Map(int x, int y) const
Definition Graph.hh:898
virtual int SizeX() const
Definition Graph.hh:896
void Prepare()
Definition Graph.hh:587
void Collect(CollectVisitor &vis)
Definition Graph.hh:582
NotBitmap(Bitmap< bool > &bm)
Definition Graph.hh:581
bool Map(int x, int y) const
Definition Graph.hh:591
virtual int SizeY() const
Definition Graph.hh:590
void HeavyPrepare()
Definition Graph.hh:585
virtual int SizeX() const
Definition Graph.hh:589
void render(Point p, float startz)
Definition Graph.hh:215
int SizeX() const
Definition Graph.hh:203
Object3dRender(VolumeObject &o, int sx, int sy, Point p, float min_z, float max_z)
Definition Graph.hh:197
bool Map(int x, int y) const
Definition Graph.hh:205
Point2d projection(Point p) const
Definition Graph.hh:209
int SizeY() const
Definition Graph.hh:204
void Prepare()
Definition Graph.hh:202
OrBitmap(Bitmap< bool > &bm1, Bitmap< bool > &bm2)
Definition Graph.hh:599
virtual int SizeX() const
Definition Graph.hh:610
bool Map(int x, int y) const
Definition Graph.hh:612
void Prepare()
Definition Graph.hh:605
virtual int SizeY() const
Definition Graph.hh:611
void Collect(CollectVisitor &vis)
Definition Graph.hh:600
void HeavyPrepare()
Definition Graph.hh:604
Definition Effect.hh:7021
virtual T PairMap(Point2d p1, Point2d p2) const =0
virtual T PairMap(Point p1, Point p2) const =0
PartCircleBoolBitmap(int sx, int sy, float x, float y, float start_angle, float end_angle, float start_rad, float end_rad)
Definition Graph.hh:341
void Prepare()
Definition Graph.hh:345
void Collect(CollectVisitor &vis)
Definition Graph.hh:342
void HeavyPrepare()
Definition Graph.hh:344
virtual int SizeX() const
Definition Graph.hh:347
virtual int SizeY() const
Definition Graph.hh:348
bool Map(int ax, int ay) const
Definition Graph.hh:350
float SpaceMap(Point normal) const
Definition Graph.hh:6648
PhongSpace(Point viewer, Point light, int count)
Definition Graph.hh:6647
Definition Shader.hh:1251
virtual T Map(float x, float y) const
Definition Graph.hh:4001
virtual float SizeX() const
Definition Graph.hh:3999
void Collect(CollectVisitor &vis)
Definition Graph.hh:3995
void Prepare()
Definition Graph.hh:3998
void HeavyPrepare()
Definition Graph.hh:3996
virtual float SizeY() const
Definition Graph.hh:4000
PlaneBitmap(ContinuousVoxel< T > &voxel, Plane pl, float sx, float sy)
Definition Graph.hh:3994
Definition Effect.hh:2218
Point Elem() const
Definition Effect.hh:2221
virtual ~PlanePoints2d()
Definition Graph.hh:8315
virtual Point2d Map(int i) const =0
virtual float SizeX() const =0
virtual float SizeY() const =0
virtual PlanePointsType Type(int i) const
Definition Graph.hh:8322
virtual int Size() const =0
PlanePointsType
Definition Graph.hh:8321
@ EConic
Definition Graph.hh:8321
@ EMove
Definition Graph.hh:8321
@ ELineTo
Definition Graph.hh:8321
@ ECubic
Definition Graph.hh:8321
Definition VectorTools.hh:350
Definition Effect.hh:2663
Definition Effect.hh:2456
void Prepare()
Definition Graph.hh:2337
Point Map(int xx, int yy) const
Definition Graph.hh:2341
PointGrid(int x, int y, Point p, Vector u_x, Vector u_y, int sx, int sy)
Definition Graph.hh:2336
int SizeX() const
Definition Graph.hh:2339
int SizeY() const
Definition Graph.hh:2340
PointPairSpace2d(Vector2d v1_dir, Vector2d v2_dir)
Definition Graph.hh:6693
Point2d PairMap(Point2d p1, Point2d p2) const
Definition Graph.hh:6694
PointSplitSpace(Vector v1, Vector v2)
Definition Graph.hh:6681
std::pair< Point, Point > SpaceMap(Point p) const
Definition Graph.hh:6682
Definition GraphI.hh:2349
virtual int NumPoints() const =0
virtual unsigned int Color(int i) const =0
virtual Point Pos(int i) const =0
void HeavyPrepare()
Definition Graph.hh:1557
virtual Pos Map(int x, int y) const
Definition Graph.hh:1561
PosBitmap(int sx, int sy)
Definition Graph.hh:1555
virtual int SizeX() const
Definition Graph.hh:1559
void Prepare()
Definition Graph.hh:1558
void Collect(CollectVisitor &vis)
Definition Graph.hh:1556
virtual int SizeY() const
Definition Graph.hh:1560
virtual float SizeZ() const
Definition Graph.hh:3977
PosContinuousVoxel(float sx, float sy, float sz)
Definition Graph.hh:3973
virtual float SizeY() const
Definition Graph.hh:3976
virtual Point Map(float x, float y, float z) const
Definition Graph.hh:3978
virtual float SizeX() const
Definition Graph.hh:3975
bool Eval(A a, B b)
Definition Graph.hh:4732
PullBack(Array< int, A > &a_array, Array< int, B > &b_array, Function< A, C > &f, Function< B, C > &g)
Definition Graph.hh:4714
void Gen(HandleValue< std::pair< A, B > > &gen)
Definition Graph.hh:4719
Quad get(int face) const
Definition Graph.hh:3618
virtual int AttribI(int face, int point, int id) const
Definition Graph.hh:3608
virtual std::string name() const
Definition Graph.hh:3583
QuadArrayElem(Array< int, Quad > &array)
Definition Graph.hh:3582
virtual int NumFaces() const
Definition Graph.hh:3587
virtual unsigned int Color(int face, int point) const
Definition Graph.hh:3609
void HeavyPrepare()
Definition Graph.hh:3586
virtual Vector PointNormal(int face, int point) const
Definition Graph.hh:3597
virtual Point FacePoint(int face, int point) const
Definition Graph.hh:3589
virtual int NumPoints(int face) const
Definition Graph.hh:3588
virtual float Attrib(int face, int point, int id) const
Definition Graph.hh:3607
virtual Point2d TexCoord(int face, int point) const
Definition Graph.hh:3610
void Collect(CollectVisitor &vis)
Definition Graph.hh:3585
virtual Point FacePoint(int face, int point) const
Definition Graph.hh:3634
virtual int NumPoints(int face) const
Definition Graph.hh:3633
virtual Point2d TexCoord(int face, int point) const
Definition Graph.hh:3655
virtual unsigned int Color(int face, int point) const
Definition Graph.hh:3654
virtual int NumFaces() const
Definition Graph.hh:3632
virtual float Attrib(int face, int point, int id) const
Definition Graph.hh:3652
QuadBitmapElem(Bitmap< Quad > &voxel)
Definition Graph.hh:3630
Quad get(int face) const
Definition Graph.hh:3663
virtual int AttribI(int face, int point, int id) const
Definition Graph.hh:3653
virtual Vector PointNormal(int face, int point) const
Definition Graph.hh:3642
void Prepare()
Definition Graph.hh:1480
int SizeY() const
Definition Graph.hh:1483
int SizeX() const
Definition Graph.hh:1482
Quad Map(int x, int y) const
Definition Graph.hh:1484
QuadBitmapFromObjects(FaceCollection &coll, Array< int, Point > &pos)
Definition Graph.hh:1479
int SizeX() const
Definition Graph.hh:1457
Quad Map(int x, int y) const
Definition Graph.hh:1459
int SizeY() const
Definition Graph.hh:1458
void Prepare()
Definition Graph.hh:1455
QuadBitmapFromSphere(Point center, float radius, int sx, int sy)
Definition Graph.hh:1453
virtual bool Map(float x, float y) const
Definition Graph.hh:3247
QuadContinuousBitmap(float sx, float sy, Point2d p1, Point2d p2, Point2d p3, Point2d p4)
Definition Graph.hh:3242
virtual float SizeY() const
Definition Graph.hh:3246
virtual float SizeX() const
Definition Graph.hh:3245
void Prepare()
Definition Graph.hh:3243
Quad Index(std::pair< Quad, Quad > p) const
Definition Graph.hh:49
QuadInterpolationFunction(float val)
Definition Graph.hh:48
virtual float Attrib(int face, int point, int id) const
Definition Graph.hh:3701
virtual Point FacePoint(int face, int point) const
Definition Graph.hh:3683
virtual Vector PointNormal(int face, int point) const
Definition Graph.hh:3691
virtual int NumPoints(int face) const
Definition Graph.hh:3682
virtual Point2d TexCoord(int face, int point) const
Definition Graph.hh:3704
virtual int NumFaces() const
Definition Graph.hh:3681
Quad get(int face) const
Definition Graph.hh:3712
virtual int AttribI(int face, int point, int id) const
Definition Graph.hh:3702
QuadVoxelElem(Voxel< Quad > &voxel)
Definition Graph.hh:3679
virtual unsigned int Color(int face, int point) const
Definition Graph.hh:3703
int SizeY() const
Definition Graph.hh:3563
int SizeX() const
Definition Graph.hh:3562
int SizeZ() const
Definition Graph.hh:3564
Quad Map(int x, int y, int z) const
Definition Graph.hh:3565
QuadVoxelFromObjects(FaceCollection &coll, Bitmap< Point > &pos)
Definition Graph.hh:3561
int SizeX() const
Definition Graph.hh:1826
RandomBitmap(int x, int y, float min, float max)
Definition Graph.hh:1829
int SizeY() const
Definition Graph.hh:1827
void Prepare()
Definition Graph.hh:1824
float Map(int xx, int yy) const
Definition Graph.hh:1828
float Rand()
Definition Graph.hh:1841
~RandomBitmap()
Definition Graph.hh:1840
int SizeX() const
Definition Graph.hh:2817
RandomSamplingBitmap(ContinuousBitmap< Color > &c, int count)
Definition Graph.hh:2814
void Prepare()
Definition Graph.hh:2815
Color Map(int x, int y) const
Definition Graph.hh:2819
int SizeY() const
Definition Graph.hh:2818
float Rand()
Definition Graph.hh:2832
Definition VolumeObjects.hh:1005
Definition Effect.hh:1305
T end
Definition Effect.hh:1310
T start
Definition Effect.hh:1309
RayTrace(ContinuousVoxel< float > &objs)
Definition Graph.hh:3839
Point RayTraceFunc(Point p, Vector v)
Definition Graph.hh:3840
virtual Color Map(int x, int y) const
Definition Graph.hh:3862
virtual int SizeX() const
Definition Graph.hh:3860
virtual int SizeY() const
Definition Graph.hh:3861
RayTracingBitmap(Function< Point2d, Point > &raytrace, ContinuousVoxel< Color > &color, int sx, int sy)
Definition Graph.hh:3855
void Prepare()
Definition Graph.hh:3858
RayTracingFunction0(Point p1, Vector v)
Definition Graph.hh:3785
Point Index(float x) const
Definition Graph.hh:3786
float Index(float x) const
Definition Graph.hh:3799
RayTracingFunction1(Function< float, Point > &f, ContinuousVoxel< float > &objs)
Definition Graph.hh:3798
Point Index(Point2d p) const
Definition Graph.hh:3814
Point RayTrace(Point p, Vector v) const
Definition Graph.hh:3821
RayTracingFunction(ContinuousVoxel< float > &objs, Vector v, float z)
Definition Graph.hh:3812
CubeCoords Index(TRect r) const
Definition Graph.hh:919
RectCubeFunction(Point p, Vector u_x, Vector u_y, Vector u_z, float z)
Definition Graph.hh:918
Point2d br
Definition Graph.hh:95
float x
Definition Layout.hh:43
float height
Definition Layout.hh:43
float y
Definition Layout.hh:43
Point2d RectInternalCoordinates(Point2d p)
Definition Graph.hh:87
bool InsideRect(Point2d p)
Definition Graph.hh:79
float width
Definition Layout.hh:43
Point2d tl
Definition Graph.hh:94
std::pair< Rect, Rect > SplitX()
Definition Graph.hh:65
Definition Effect.hh:9104
RegularPolygon(Point2d center, float radius, int count, float angle)
Definition Graph.hh:5771
Point2d Index(int i) const
Definition Graph.hh:5773
int Size() const
Definition Graph.hh:5772
virtual bool Inside(Point p) const
Definition Graph.hh:5547
virtual unsigned int Color(int face, int point) const
Definition Graph.hh:5544
virtual int NumPoints(int face) const
Definition Graph.hh:5539
virtual float Attrib(int face, int point, int id) const
Definition Graph.hh:5542
virtual int NumFaces() const
Definition Graph.hh:5538
virtual int AttribI(int face, int point, int id) const
Definition Graph.hh:5543
virtual Vector PointNormal(int face, int point) const
Definition Graph.hh:5541
virtual Point2d TexCoord(int face, int point) const
Definition Graph.hh:5545
RenderGraph(Graph &g, GraphData< V, E > &data, DataRep< V > &vertex, DataRep< E > &edge)
Definition Graph.hh:5511
virtual Point FacePoint(int face, int point) const
Definition Graph.hh:5540
virtual void SetBox(Matrix b)
Definition Graph.hh:5546
void Refresh()
Definition Graph.hh:5517
RenderPolyToBitmap(Point2d center_in_bm, Point center, int sx, int sy, FaceCollection *coll, Bitmap< Color > &bg)
Definition Graph.hh:8086
virtual int SizeY() const
Definition Graph.hh:8090
void Prepare()
Definition Graph.hh:8087
virtual Point2d Perspective(Point p) const
Definition Graph.hh:8145
virtual Color TexMap(int face, float r, float g, float b, float a, float tx, float ty) const
Definition Graph.hh:8134
virtual Color Map(int x, int y) const
Definition Graph.hh:8091
virtual int SizeX() const
Definition Graph.hh:8089
RenderToTextureEffect(Render *r)
Definition Graph.cc:396
bool Frame(float time)
Definition Graph.cc:430
void Init()
Definition Graph.cc:419
Definition Effect.hh:9514
RepeatBitmap(Bitmap< C > &bm, int times_x, int times_y)
Definition Graph.hh:1862
C Map(int x, int y) const
Definition Graph.hh:1871
int SizeX() const
Definition Graph.hh:1869
void Prepare()
Definition Graph.hh:1867
int SizeY() const
Definition Graph.hh:1870
void HeavyPrepare()
Definition Graph.hh:1866
void Collect(CollectVisitor &vis)
Definition Graph.hh:1863
virtual float SizeY() const
Definition Graph.hh:2764
RotateContinuousBitmap(ContinuousBitmap< C > *orig, float center_x, float center_y, float angle)
Definition Graph.hh:2756
void Prepare()
Definition Graph.hh:2762
void HeavyPrepare()
Definition Graph.hh:2760
virtual float SizeX() const
Definition Graph.hh:2763
virtual C Map(float x, float y) const
Definition Graph.hh:2765
void Collect(CollectVisitor &vis)
Definition Graph.hh:2757
RotateZoomer(Bitmap< C > &bm, int sx, int sy, Point2d p1, Vector2d vx, Vector2d vy, C outside)
Definition Graph.hh:1915
virtual C Map(int x, int y) const
Definition Graph.hh:1920
virtual int SizeY() const
Definition Graph.hh:1919
void Prepare()
Definition Graph.hh:1916
virtual int SizeX() const
Definition Graph.hh:1918
virtual int SizeY() const
Definition Graph.hh:2040
virtual int SizeX() const
Definition Graph.hh:2039
void Prepare()
Definition Graph.hh:2037
RowAddition(Bitmap< float > &bm, int row1, int row2, float val_for_row2)
Definition Graph.hh:2030
void Collect(CollectVisitor &vis)
Definition Graph.hh:2031
void HeavyPrepare()
Definition Graph.hh:2035
virtual float Map(int x, int y) const
Definition Graph.hh:2041
void Collect(CollectVisitor &vis)
Definition Graph.hh:1999
virtual int SizeY() const
Definition Graph.hh:2008
virtual float Map(int x, int y) const
Definition Graph.hh:2009
void Prepare()
Definition Graph.hh:2005
void HeavyPrepare()
Definition Graph.hh:2003
RowMultiply(Bitmap< float > &bm, int row, float val)
Definition Graph.hh:1998
virtual int SizeX() const
Definition Graph.hh:2007
SampleBitmap(ContinuousBitmap< Color > &c, int sx, int sy)
Definition Graph.hh:3422
Color Map(int x, int y) const
Definition Graph.hh:3435
int SizeX() const
Definition Graph.hh:3433
int SizeY() const
Definition Graph.hh:3434
void Collect(CollectVisitor &vis)
Definition Graph.hh:3423
void Prepare()
Definition Graph.hh:3429
bool ReadyToPrepare() const
Definition Graph.hh:3431
void HeavyPrepare()
Definition Graph.hh:3427
Definition Effect.hh:2866
void Collect(CollectVisitor &vis)
Definition Graph.hh:4036
void CleanPrepare()
Definition Graph.hh:4053
int SizeY() const
Definition Graph.hh:4040
void Prepare()
Definition Graph.hh:4038
int SizeZ() const
Definition Graph.hh:4041
void HeavyPrepare()
Definition Graph.hh:4037
int SizeX() const
Definition Graph.hh:4039
SampleVoxel(ContinuousVoxel< T > &v, int x, int y, int z)
Definition Graph.hh:4035
T Map(int xx, int yy, int zz) const
Definition Graph.hh:4042
float Sample(int xx, int xsize, float sizex) const
Definition Graph.hh:4049
Definition Effect.hh:8424
int Size() const
Definition Graph.hh:4697
Point2d Index(int i) const
Definition Graph.hh:4696
SampledGraph(Function< float, float > &func, float start, float end, int steps)
Definition Graph.hh:4695
void Handle(std::pair< Vector, T > v)
Definition Graph.hh:4542
ScaleTranslateHandleValue(HandleValue< std::pair< Matrix, T > > &hv, float sx, float sy, float sz)
Definition Graph.hh:4541
ShaderEffect(ShaderFile &file, Render *r)
Definition Graph.hh:6376
void Init()
Definition Graph.cc:550
bool Frame(float time)
Definition Graph.cc:572
Definition Shader.hh:1466
Definition Shader.hh:1480
Definition Effect.hh:4983
Definition Effect.hh:3163
int SizeY() const
Definition Graph.hh:6449
int SizeX() const
Definition Graph.hh:6438
void Collect(CollectVisitor &vis)
Definition Graph.hh:6430
SizeBitmapTo2(Bitmap< Color > &bm)
Definition Graph.hh:6429
void HeavyPrepare()
Definition Graph.hh:6434
Color Map(int x, int y) const
Definition Graph.hh:6460
void Prepare()
Definition Graph.hh:6436
virtual void visit(Point2d &p)
Definition Graph.hh:7470
virtual void visit(VectorArray< Loop > *array)
Definition Graph.hh:7474
SizePosVisitor()
Definition Graph.hh:7459
int Type(int i) const
Definition Graph.hh:7492
virtual void visit(int &a)
Definition Graph.hh:7466
int Offset(int i) const
Definition Graph.hh:7490
virtual void visit(Point &p)
Definition Graph.hh:7472
virtual void visit(bool &b)
Definition Graph.hh:7460
int Size(int i) const
Definition Graph.hh:7491
virtual void visit(float &b)
Definition Graph.hh:7468
virtual void visit(VectorArray< Point2d > *array)
Definition Graph.hh:7480
Definition Effect.hh:10172
virtual T SpaceMap(Point2d p) const =0
virtual T SpaceMap(Point p) const =0
virtual T Map(float r, float alfa, float beta) const =0
virtual float radius() const =0
int SizeY() const
Definition Graph.hh:6739
int SizeX() const
Definition Graph.hh:6738
void Prepare()
Definition Graph.hh:6736
float Map(int x, int y) const
Definition Graph.hh:6740
SphereDist(Point center, float r, int sx, int sy, Point2d tl, Point2d br)
Definition Graph.hh:6735
Definition Effect.hh:9304
virtual T SMap(float alfa, float beta) const =0
Sphere(Point center, float radius)
Definition Graph.hh:8060
float Radius() const
Definition Graph.hh:8066
bool Index(Point p) const
Definition Graph.hh:8061
Point Center() const
Definition Graph.hh:8067
Definition VectorTools.hh:106
float r
Definition VectorTools.hh:113
float alfa
Definition VectorTools.hh:114
float beta
Definition VectorTools.hh:115
Point ToPoint()
Definition VectorTools.cc:87
float SizeY() const
Definition Graph.hh:2952
void Prepare()
Definition Graph.hh:2949
Point2d Map(float x, float y) const
Definition Graph.hh:2953
float SizeX() const
Definition Graph.hh:2951
SpiralContinuousBitmap(float sx, float sy, Point2d center, Function< float, float > &mymap)
Definition Graph.hh:2947
int Size() const
Definition Graph.hh:6003
SplitLines2d(Line2dCollection &lines, Line2d split)
Definition Graph.hh:6002
void Execute()
Definition Graph.hh:6009
Line2d Index(int i) const
Definition Graph.hh:6004
virtual int NumPoints() const
Definition Graph.hh:6918
virtual int StateNum(int frame, int face) const
Definition Graph.hh:6913
virtual int NumFaces(int framenum) const
Definition Graph.hh:6917
virtual Point FacePoint(int framenum, int statenum, int face, int point) const
Definition Graph.hh:6919
virtual int NumFrames() const
Definition Graph.hh:6916
SpriteMesh(const Sprite &s)
Definition Graph.hh:6911
virtual int NumStates() const
Definition Graph.hh:6912
virtual Point2d TexCoord(int framenum, int statenum, int face, int point) const
Definition Graph.hh:6945
SpriteTexCoords(const Sprite &s)
Definition Graph.hh:6943
virtual int NumFrames() const
Definition Graph.hh:6944
Definition GraphI.hh:1223
StructBitmap(Array< int, T > &a1, Array< int, K > &a2)
Definition Graph.hh:1603
int SizeX() const
Definition Graph.hh:1606
int SizeY() const
Definition Graph.hh:1607
void Prepare()
Definition Graph.hh:1604
std::pair< T, K > Map(int x, int y) const
Definition Graph.hh:1608
StructVoxel(Bitmap< X > &bm, Array< int, Y > &a)
Definition Graph.hh:3731
virtual int SizeZ() const
Definition Graph.hh:3734
virtual int SizeX() const
Definition Graph.hh:3732
virtual std::pair< X, Y > Map(int x, int y, int z) const
Definition Graph.hh:3735
virtual int SizeY() const
Definition Graph.hh:3733
int SizeY() const
Definition Graph.hh:1369
void Collect(CollectVisitor &vis)
Definition Graph.hh:1360
T Map(int mx, int my) const
Definition Graph.hh:1370
void Prepare()
Definition Graph.hh:1366
int SizeX() const
Definition Graph.hh:1368
void HeavyPrepare()
Definition Graph.hh:1364
SubBitmap(Bitmap< T > &bm, int x, int y, int width, int height)
Definition Graph.hh:1359
Pos Index(Pos p) const
Definition Graph.hh:1576
SubPos(int x, int y)
Definition Graph.hh:1575
void HeavyLoop()
Definition Graph.hh:7966
std::vector< A > vec_false
Definition Graph.hh:7979
Subset(Array< int, A > &enumeration, Function< A, B > &subsetfunc, Function< B, bool > &characteristic)
Definition Graph.hh:7963
std::vector< A > vec_true
Definition Graph.hh:7978
SubstituteBitmapPixels(Bitmap< T > &bm, Function< T, Bitmap< C > * > &func, int sx, int sy)
Definition Graph.hh:1889
virtual int SizeY() const
Definition Graph.hh:1893
virtual int SizeX() const
Definition Graph.hh:1892
void Prepare()
Definition Graph.hh:1890
virtual C Map(int x, int y) const
Definition Graph.hh:1894
float Index(float alfa) const
Definition Graph.hh:5114
SuperShape2d(float a, float b, float m, float n1, float n2, float n3)
Definition Graph.hh:5113
float YSize() const
Definition Graph.hh:5194
void Collect(CollectVisitor &vis)
Definition Graph.hh:5154
unsigned int Color(float x, float y) const
Definition Graph.hh:5186
Vector Normal(float x, float y) const
Definition Graph.hh:5177
SuperShape3d(float a, float b, float m, float n1, float n2, float n3, float aa, float bb, float mm, float nn1, float nn2, float nn3)
Definition Graph.hh:5140
SuperShape3d(SuperParameters &a1, SuperParameters &a2)
Definition Graph.hh:5138
Point Index(float alfa, float beta) const
Definition Graph.hh:5156
Point2d Texture(float x, float y) const
Definition Graph.hh:5171
float Attrib(float x, float y, int id) const
Definition Graph.hh:5172
float XSize() const
Definition Graph.hh:5190
int AttribI(float x, float y, int id) const
Definition Graph.hh:5173
void HeavyPrepare()
Definition Graph.hh:5155
bool Frame(float time)
Definition Graph.cc:384
SuperShapeEffect(Render *r)
Definition Graph.hh:6322
virtual void Prepare()
Definition Effect.hh:1900
SurfaceIn3dImpl(SurfaceIn3d &next)
Definition Effect.hh:1899
virtual float YSize() const
Definition Effect.hh:1908
virtual float XSize() const
Definition Effect.hh:1907
Definition Effect.hh:1880
virtual float YSize() const =0
virtual Point Index(float x, float y) const =0
virtual int AttribI(float x, float y, int id) const =0
virtual unsigned int Color(float x, float y) const =0
virtual Vector Normal(float x, float y) const =0
virtual Point2d Texture(float x, float y) const =0
virtual float Attrib(float x, float y, int id) const =0
virtual float XSize() const =0
SwapLine2dCollection(Line2dCollection &coll)
Definition Graph.hh:6048
Line2d Index(int i) const
Definition Graph.hh:6050
int Size() const
Definition Graph.hh:6049
virtual int SizeX() const
Definition Graph.hh:8217
virtual Point2d AreaS(int i) const
Definition Graph.hh:8240
virtual Color Map(int x, int y) const
Definition Graph.hh:8219
TexAssign(TextureI &next, int id, int x, int y, Bitmap< Color > &bm)
Definition Graph.hh:8214
virtual int Id(int i) const
Definition Graph.hh:8235
virtual int SizeY() const
Definition Graph.hh:8218
virtual int AreaCount() const
Definition Graph.hh:8234
virtual Point2d AreaE(int i) const
Definition Graph.hh:8250
virtual int SizeX() const
Definition Graph.hh:8204
virtual Color Map(int x, int y) const
Definition Graph.hh:8206
virtual int SizeY() const
Definition Graph.hh:8205
TexBitmap(Bitmap< Color > &bm)
Definition Graph.hh:8203
virtual int SizeX() const
Definition Graph.hh:8193
virtual Color Map(int x, int y) const
Definition Graph.hh:8195
virtual int SizeY() const
Definition Graph.hh:8194
TexPlane(int sx, int sy)
Definition Graph.hh:8192
Definition Effect.hh:10851
TextureIBitmap(TextureI &ti)
Definition Graph.hh:8177
void Prepare()
Definition Graph.hh:8180
void HeavyPrepare()
Definition Graph.hh:8179
void Collect(CollectVisitor &vis)
Definition Graph.hh:8178
virtual Color Map(int x, int y) const
Definition Graph.hh:8184
virtual int SizeY() const
Definition Graph.hh:8183
virtual int SizeX() const
Definition Graph.hh:8182
virtual Point2d AreaE(int i) const
Definition Graph.hh:8292
virtual Color Map(int x, int y) const
Definition Graph.hh:8274
virtual Point2d AreaS(int i) const
Definition Graph.hh:8282
virtual int AreaCount() const
Definition Graph.hh:8276
TextureITexCoord(TextureI &next, int id, int x, int y, int width, int height)
Definition Graph.hh:8270
virtual int SizeY() const
Definition Graph.hh:8273
virtual int SizeX() const
Definition Graph.hh:8272
virtual int Id(int i) const
Definition Graph.hh:8277
virtual int SizeX() const
Definition Graph.hh:8164
virtual int AreaCount() const
Definition Graph.hh:8167
virtual Point2d AreaS(int i) const
Definition Graph.hh:8169
virtual ~TextureI()
Definition Graph.hh:8171
virtual int Id(int i) const
Definition Graph.hh:8168
virtual int SizeY() const
Definition Graph.hh:8165
virtual Point2d AreaE(int i) const
Definition Graph.hh:8170
virtual Color Map(int x, int y) const
Definition Graph.hh:8166
float SizeX() const
Definition Graph.hh:3378
float SizeY() const
Definition Graph.hh:3379
void Prepare()
Definition Graph.hh:3376
TexturedTriangle(float sx, float sy, const Point2d &p1, const Point2d &p2, const Point2d &p3, ContinuousBitmap< Color > &texture, const Point2d &t1, const Point2d &t2, const Point2d &t3)
Definition Graph.hh:3369
Color Map(float x, float y) const
Definition Graph.hh:3380
int push_thread(BufferFromBitmap *bm, int start_x, int end_x, int start_y, int end_y)
Definition GameApi_dep_arr_render.cc:190
void join(int id)
Definition GameApi_dep_arr_render.cc:211
~ThreadedUpdateTexture()
Definition GameApi_dep_arr_render.cc:217
void DeleteAll()
Definition Graph.hh:1435
TileBitmap2(Bitmap< T > &bm, int tile_sx, int tile_sy)
Definition Graph.hh:1424
~TileBitmap2()
Definition Graph.hh:1431
Bitmap< T > * Index(Pos p) const
Definition Graph.hh:1425
TileBitmap(Bitmap< T > &bm, int tile_sx, int tile_sy, int x, int y)
Definition Graph.hh:1417
Definition Effect.hh:10814
void Collect(CollectVisitor &vis)
Definition Graph.hh:3195
void HeavyPrepare()
Definition Graph.hh:3198
float SizeX() const
Definition Graph.hh:3201
float SizeY() const
Definition Graph.hh:3205
bool Map(float x, float y) const
Definition Graph.hh:3210
TriangleContinuousBitmap(float sx, float sy, const Point2d &p1, const Point2d &p2, const Point2d &p3)
Definition Graph.hh:3194
bool Line(float x, float y, const Point2d &a, const Point2d &b) const
Definition Graph.hh:3225
void Prepare()
Definition Graph.hh:3200
float Line13(float x) const
Definition Graph.hh:3176
TriangleCoordsContinuousBitmap(float sx, float sy, const Point2d &p1, const Point2d &p2, const Point2d &p3, float val1, float val2, float val3)
Definition Graph.hh:3086
float SizeY() const
Definition Graph.hh:3095
float xpos23(float p) const
Definition Graph.hh:3146
float Line23(float x) const
Definition Graph.hh:3180
float Map(float x, float y) const
Definition Graph.hh:3096
float SizeX() const
Definition Graph.hh:3094
float ypos23(float y) const
Definition Graph.hh:3164
float ypos13(float y) const
Definition Graph.hh:3158
void Collect(CollectVisitor &vis)
Definition Graph.hh:3087
void HeavyPrepare()
Definition Graph.hh:3090
float ypos12(float y) const
Definition Graph.hh:3152
float Line12(float x) const
Definition Graph.hh:3172
float xpos12(float p) const
Definition Graph.hh:3138
void Prepare()
Definition Graph.hh:3092
float xpos13(float p) const
Definition Graph.hh:3142
int NumPoints(int face) const
Definition Graph.hh:4288
virtual Point2d TexCoord(int face, int point) const
Definition Graph.hh:4297
Point FacePoint(int face, int point) const
Definition Graph.hh:4289
int NumFaces() const
Definition Graph.hh:4287
int AttribI(int face, int point, int id) const
Definition Graph.hh:4316
void Handle(Triangle t)
Definition Graph.hh:4282
void SetBox(Matrix m)
Definition Graph.hh:4286
unsigned int Color(int face, int point) const
Definition Graph.hh:4293
float Attrib(int face, int point, int id) const
Definition Graph.hh:4312
Vector PointNormal(int face, int point) const
Definition Graph.hh:4305
Definition Effect.hh:2498
TwoGraphs(Array< T, K > &f, Array< T, K > &f2)
Definition Graph.hh:4185
Range< K > Index(T t) const
Definition Graph.hh:4187
T Size() const
Definition Graph.hh:4186
Definition Effect.hh:10694
Definition Effect.hh:1122
void clear()
Definition Effect.hh:1138
void push_back(T t)
Definition Effect.hh:1131
virtual int Size() const
Definition Effect.hh:1127
VectorArray()
Definition Effect.hh:1124
Definition VectorTools.hh:125
float Dist() const
Definition VectorTools.cc:141
float dy
Definition VectorTools.hh:268
static float DotProduct(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.hh:185
static Vector CrossProduct(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.hh:193
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
Definition VertexArray.hh:49
virtual void visit(float &b)=0
virtual void visit(Point2d &p)=0
virtual void visit(VectorArray< Point2d > *array)=0
virtual void visit(VectorArray< Loop > *array)=0
virtual void visit(bool &b)=0
virtual void visit(int &a)=0
virtual void visit(Point &p)=0
Definition VolumeObjects.hh:130
virtual bool Inside(Point v) const
Definition VolumeObjects.hh:132
float SizeX() const
Definition Graph.hh:4084
float SizeY() const
Definition Graph.hh:4085
void HeavyPrepare()
Definition Graph.hh:4082
void Prepare()
Definition Graph.hh:4083
void Collect(CollectVisitor &vis)
Definition Graph.hh:4081
bool Map(float xx, float yy, float zz) const
Definition Graph.hh:4087
VolumeVoxel(VolumeObject &vol, Range< float > x, Range< float > y, Range< float > z)
Definition Graph.hh:4080
float SizeZ() const
Definition Graph.hh:4086
~VoxelEffect()
Definition Graph.cc:128
VoxelEffect(Render *r)
Definition Graph.cc:69
void Init()
Definition Graph.cc:115
bool Frame(float time)
Definition Graph.cc:132
virtual C Map(int *array, int size) const
Definition Graph.hh:3531
VoxelNDim(Voxel< C > &bm)
Definition Graph.hh:3529
virtual std::vector< int > Count() const
Definition Graph.hh:3530
int SizeZ() const
Definition Graph.hh:4067
VoxelToContinuousVoxel(Voxel< T > &vx)
Definition Graph.hh:4063
int SizeY() const
Definition Graph.hh:4066
T Map(int xx, int yy, int zz) const
Definition Graph.hh:4068
void Prepare()
Definition Graph.hh:4064
int SizeX() const
Definition Graph.hh:4065
float radius() const
Definition Graph.hh:4117
VoxelToSphere(ContinuousVoxel< T > &sp, Point p, float radius)
Definition Graph.hh:4116
T Map(float r, float alfa, float beta) const
Definition Graph.hh:4121
Definition GraphI.hh:1131
virtual int SizeX() const =0
virtual int SizeY() const =0
virtual int SizeZ() const =0
void Handle(std::pair< std::pair< int, int >, std::pair< int, unsigned int > > h)
Definition Graph.hh:5026
WallMatrix(HandleValue< std::pair< Matrix, unsigned int > > &hv, float size)
Definition Graph.hh:5025
WallsFromMap(Bitmap< bool > &mymap, Bitmap< unsigned int > &mycolor, HandleValue< std::pair< std::pair< int, int >, std::pair< int, unsigned int > > > &hv, int x, int y)
Definition Graph.hh:4952
void Gen()
Definition Graph.hh:4956
Vector Index(Vector v) const
Definition Graph.hh:4931
WaveFunction(float time, Waveform &F, Waveform &G, float c)
Definition Graph.hh:4930
WriteVisitor(char *currentptr, int size)
Definition Graph.hh:7503
virtual void visit(float &b)
Definition Graph.hh:7506
virtual void visit(int &a)
Definition Graph.hh:7504
virtual void visit(Point2d &p)
Definition Graph.hh:7508
virtual void visit(Point &p)
Definition Graph.hh:7510
Definition Equalizer.hh:1800
void HeavyPrepare()
Definition Graph.hh:625
XorBitmap(Bitmap< bool > &bm1, Bitmap< bool > &bm2)
Definition Graph.hh:620
bool Map(int x, int y) const
Definition Graph.hh:633
virtual int SizeX() const
Definition Graph.hh:631
virtual int SizeY() const
Definition Graph.hh:632
void Prepare()
Definition Graph.hh:626
void Collect(CollectVisitor &vis)
Definition Graph.hh:621
Definition Equalizer.hh:1807
virtual Bitmap< C > * Index(C c) const =0
IMPORT int sprite_screen_height
Definition Graph.cc:1266
IMPORT int sprite_screen_width
Definition Graph.cc:1265
frame( $arr, $width, $height, $data, $i, $homepage, $noheaders, $seamless, $transparent)
Definition emscripten_frame.php:18
border radius
Definition gameapi_example.php:45
let delta_y
Definition gameapi_example.php:63
let delta_x
Definition gameapi_example.php:62
background color
Definition gameapi_example.php:46
SFO background(EveryApi &ev)
Definition test.cpp:409
convert($d)
Definition mesh_api.php:35
d
Definition meshpage.php:3895
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
lazy data
Definition meshpage.php:1583
line height
Definition meshpage.php:3536
n< br > font size
Definition meshpage.php:3536
void array(const std::string &type, Module &m)
Definition bootstrap.hpp:23
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
int f2(char c)
Definition test.cpp:51
Definition GameApiTest5.cc:17
Point pos
Definition Graph.hh:4599
float time
Definition Graph.hh:4600
static BufferRefMask NewBuffer(int width, int height)
Definition Buffer.cc:97
unsigned int * buffer
Definition Buffer.hh:33
unsigned int ydelta
Definition Buffer.hh:36
static BufferRef NewBuffer(int width, int height)
Definition Buffer.cc:36
static void FreeBuffer(BufferRef &ref)
Definition Buffer.cc:92
int y
Definition Graph.hh:4412
int x
Definition Graph.hh:4411
int z
Definition Graph.hh:4413
float miny
Definition Graph.hh:2102
float maxy
Definition Graph.hh:2103
float maxz
Definition Graph.hh:2103
float maxx
Definition Graph.hh:2103
float minz
Definition Graph.hh:2102
float minx
Definition Graph.hh:2102
Definition Effect.hh:7452
Point p122
Definition Effect.hh:7456
Point p212
Definition Effect.hh:7458
Point p112
Definition Effect.hh:7454
Point p111
Definition Effect.hh:7453
Point p222
Definition Effect.hh:7460
Point p221
Definition Effect.hh:7459
Point p121
Definition Effect.hh:7455
Point p211
Definition Effect.hh:7457
Point cod_center
Definition Graph.hh:5244
float cod_radius
Definition Graph.hh:5245
Point dom_center
Definition Graph.hh:5241
float dom_radius
Definition Graph.hh:5242
std::vector< Point > p
Definition Graph.hh:5357
Definition FreeType2.cc:432
Point2d p1
Definition Graph.hh:5781
Point2d p2
Definition Graph.hh:5781
void init()
Definition Graph.hh:7439
void visit(Visitor &v)
Definition Graph.cc:1506
VectorArray< Point2d > * points
Definition Graph.hh:7437
int inverse
Definition Graph.hh:7436
Bitmap< Color > * colors
Definition Graph.hh:769
Bitmap< unsigned char > * mask
Definition Graph.hh:770
int id
Definition Graph.hh:4604
std::vector< Point2d > vec
Definition Graph.hh:7527
std::vector< Point > vec
Definition Graph.hh:7523
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
static Point2d FromVector(const Vector2d &v)
Definition VectorTools.hh:1035
static Point2d NewPoint(float x, float y)
Definition VectorTools.hh:912
int y
Definition Graph.hh:59
int z
Definition Graph.hh:59
int x
Definition Graph.hh:59
float x
Definition Parser.cc:60
float Dist() const
Definition VectorTools.cc:150
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60
static Point Interpolate(const Point &aVec, const Point &aVec2, float aVal)
Definition VectorTools.hh:85
int x
Definition test.cpp:10
int y
Definition test.cpp:10
Point p3
Definition GraphI.hh:703
Point p1
Definition GraphI.hh:703
Point p2
Definition GraphI.hh:703
Point p4
Definition GraphI.hh:703
Definition GameApi_pl.cc:25194
Definition GraphI.hh:1234
int sx
Definition GraphI.hh:1235
VolumeObject * obj
Definition Graph.hh:5764
float n2
Definition Graph.hh:5132
float b
Definition Graph.hh:5132
float n1
Definition Graph.hh:5132
float n3
Definition Graph.hh:5132
float a
Definition Graph.hh:5132
float m
Definition Graph.hh:5132
Definition GraphI.hh:1242
float width
Definition GraphI.hh:1244
float y
Definition GraphI.hh:1243
float x
Definition GraphI.hh:1243
float height
Definition GraphI.hh:1244
int id
Definition GameApi.h:42
int b
Definition Graph.hh:7678
int d
Definition Graph.hh:7678
float z
Definition Graph.hh:7677
float x
Definition Graph.hh:7677
float k
Definition Graph.hh:7677
int c
Definition Graph.hh:7678
int a
Definition Graph.hh:7678
float y
Definition Graph.hh:7677
void visit(Visitor &v)
Definition Graph.hh:7679
int end_x
Definition Graph.hh:6478
BufferFromBitmap * buffer
Definition Graph.hh:6480
int end_y
Definition Graph.hh:6479
int start_y
Definition Graph.hh:6479
pthread_t thread_id
Definition Graph.hh:6477
int start_x
Definition Graph.hh:6478
Definition VectorTools.hh:972
float Dist() const
Definition VectorTools.hh:986
float dy
Definition VectorTools.hh:973
float dx
Definition VectorTools.hh:973
static Vector2d FromPoint(const Point2d &p)
Definition VectorTools.hh:991
float radius
Definition Graph.hh:5237
Point center
Definition Graph.hh:5236
W center_y(W item, int sy)
Definition ui.cc:947
num
Definition view.php:2821
#define compress
Definition zip_file.hpp:485