// -*- C++ -*- /* * Simple MultimEdia LiTerator(SMELT) * by Chris Xiong 2015 * Distortion grid implementation * * WARNING: This library is in development and interfaces would be very * unstable. * */ #include "smgrid.hpp" #include SMELT *smGrid::sm=0; smGrid::smGrid(int _cc,int _rc) { sm=smGetInterface(SMELT_APILEVEL); cc=_cc;rc=_rc;cw=ch=.0; quad.tex=0;quad.blend=BLEND_ALPHABLEND; pos=new smVertex[cc*rc]; for(int i=0;ismRelease();} smGrid& smGrid::operator =(const smGrid ©) { if(this!=©) { sm=smGetInterface(SMELT_APILEVEL); cc=copy.cc;rc=copy.rc;cw=copy.cw;ch=copy.ch; quad=copy.quad;tx=copy.tx;ty=copy.ty;w=copy.w;h=copy.h; delete[] pos;pos=new smVertex[cc*rc]; memcpy(pos,copy.pos,sizeof(smVertex)*cc*rc); } return *this; } void smGrid::setTexture(SMTEX tex){quad.tex=tex;} void smGrid::setTextureRect4f(float _x,float _y,float _w,float _h) { float tw,th; tx=_x;ty=_y;w=_w;h=_h; if(quad.tex) { tw=(float)sm->smTextureGetWidth(quad.tex); th=(float)sm->smTextureGetHeight(quad.tex); } else tw=w,th=h; cw=w/(cc-1);ch=h/(rc-1); for(int i=0;i=0&&r>=0&&csmRenderQuad(&quad); } }