|
Laxkit
0.0.7.1
|

Public Member Functions | |
| PointWarpData () | |
| Creates a patch with points=NULL, size=0. | |
| PointWarpData (double xx, double yy, double ww, double hh, int nx, int ny, unsigned int stle) | |
| virtual const char * | whattype () |
| virtual SomeData * | duplicate (SomeData *dup) |
| virtual void | FindBBox () |
| Find bbox. | |
Data modifying functions | |
| virtual void | Set (double xx, double yy, double ww, double hh, int nx, int ny, unsigned int stle) |
| Set in rect xx,yy,ww,hh with nr rows and nc columns. Removes old info. | |
| virtual void | zap (flatpoint p, flatpoint x, flatpoint y) |
| Remap to be in parallelogram of p,x,y. | |
| virtual void | zap () |
| Remap so the patch corresponds to its rectangular bounding box. | |
| virtual int | subdivide (int r, double rt, int c, double ct) |
| Subdivide a single row number r, position rt, and a single column c, position ct. | |
| virtual int | subdivide (int xn=2, int yn=2) |
| Break each patch into subpatches. | |
I/O | |
| virtual int | renderToBuffer (unsigned char *buffer, int bufw, int bufh, int bufstride, int bufdepth, int bufchannels) |
| virtual void | dump_out (FILE *f, int indent, int what, Laxkit::anObject *context) |
| virtual void | dump_in_atts (LaxFiles::Attribute *att, int flag, Laxkit::anObject *context) |
| Reverse of the dump_out. | |
Public Member Functions inherited from LaxInterfaces::SomeData | |
| virtual void | touchContents () |
| virtual Laxkit::LaxImage * | GetPreview () |
| If usepreview==1 and preview, then return preview. | |
| virtual void | GeneratePreview (int w, int h) |
| Create a preview image with transparency for a cached screen preview. | |
| virtual const char * | Id () |
| virtual const char * | Id (const char *newid) |
| SomeData () | |
| SomeData (double nminx, double nmaxx, double nminy, double nmaxy) | |
| Constructor, setting the bounds. | |
| virtual flatpoint | BBoxPoint (double x, double y, bool transform_to_parent) |
| virtual flatpoint | ReferencePoint (int which, bool transform_to_parent) |
| virtual int | pointin (flatpoint pp, int pin=1) |
| Return if pp transformed to data coords is within the bounds. | |
| virtual int | fitto (double *boxm, DoubleBBox *box, double alignx, double aligny, int whentoscale=2) |
| Fit this data to box. | |
| virtual SomeData * | GetParent () |
| virtual void | dump_in (FILE *f, int indent, Laxkit::anObject *context, LaxFiles::Attribute **Att=NULL) |
| Dump in an attribute, then call dump_in_atts(thatatt,0). | |
| virtual LaxFiles::Attribute * | dump_out_atts (LaxFiles::Attribute *att, int what, Laxkit::anObject *savecontext) |
Public Member Functions inherited from Laxkit::anObject | |
| anObject () | |
| Set object_id=getUniqueNumber(). | |
| virtual | ~anObject () |
| Empty virtual destructor. | |
| virtual anObject * | duplicate (anObject *ref=NULL) |
| virtual int | inc_count () |
| Increment the data's count by 1. Returns count. | |
| virtual int | dec_count () |
| Decrement the count of the data, deleting if count is less than or equal to 0. | |
| virtual int | the_count () |
Public Member Functions inherited from Laxkit::Affine | |
| Affine (const double *m) | |
| If mm==NULL, set identity. | |
| Affine (const Affine &m) | |
| Affine (double xx, double xy, double yx, double yy, double tx, double ty) | |
| Affine & | operator= (Affine const &m) |
| Affine & | operator*= (Affine const &m) |
| Affine | operator* (Affine const m) |
| virtual void | set (Affine a) |
| virtual void | setIdentity () |
| virtual bool | isIdentity () |
| virtual void | setRotation (double angle) |
| virtual void | setScale (double sx, double sy) |
| virtual void | setBasis (flatpoint o, flatpoint x, flatpoint y) |
| virtual void | setBasics (double x, double y, double sx, double sy, double angle, double shear) |
| virtual void | getBasics (double *x, double *y, double *sx, double *sy, double *angle, double *shear) |
| virtual void | Translate (flatvector d) |
| virtual void | Rotate (double angle) |
| virtual void | Rotate (double angle, flatpoint around_point) |
| virtual void | RotatePointed (flatpoint anchor1, flatpoint anchor2, flatpoint newanchor2) |
| virtual void | RotateScale (flatpoint anchor1, flatpoint anchor2, flatpoint newanchor2) |
| Rotate and scale so that anchor1 stays fixed, but anchor2 is shifted to newanchor2. | |
| virtual void | Stretch (flatpoint anchor1, flatpoint anchor2, flatpoint newanchor2) |
| virtual void | AnchorShear (flatpoint anchor1, flatpoint anchor2, flatpoint anchor3, flatpoint newanchor3) |
| Transform so that anchor1 and 2 stay fixed, but anchor3 is shifted to newanchor3. | |
| virtual void | Scale (double s) |
| virtual void | Scale (flatpoint o, double s) |
| Scale around point o. | |
| virtual void | Scale (flatpoint o, double sx, double sy) |
| virtual void | Scale (flatpoint anchor1, flatpoint anchor2, flatpoint newanchor2) |
| Scale as if you move anchor2 to newanchor2, while anchor1 stays the same. | |
| virtual void | FlipH () |
| virtual void | FlipV () |
| virtual void | Flip (flatpoint f1, flatpoint f2) |
| Flip across the axis of f1 to f2. | |
| virtual void | Multiply (Affine &m) |
| this=this*m | |
| virtual void | PreMultiply (Affine &m) |
| this=m*this | |
| virtual Affine | Inversion () |
| Return a new matrix that is the inverse of this, if possible. | |
| virtual void | Invert () |
| Make this the inverse of whatever it is. | |
| virtual flatpoint | transformPoint (flatpoint p) |
| virtual flatpoint | transformPointInverse (flatpoint p) |
| virtual flatpoint | transformVector (flatpoint p) |
| Apply the transfrom, but ignore this's translation component. | |
| virtual const double * | m () const |
| virtual void | m (const double *mm) |
| virtual void | m (double xx, double xy, double yx, double yy, double tx, double ty) |
| virtual double | m (int c) |
| virtual void | m (int c, double v) |
| virtual void | Unshear (int preserve_x, int normalize) |
| Clear shearing and unequal scaling. Null vectors stay null vectors. | |
| virtual void | Normalize () |
| Make x and y both be unit vectors, but point in the same direction as before. | |
| virtual flatpoint | origin () |
| virtual void | origin (flatpoint o) |
| virtual flatpoint | xaxis () |
| virtual void | xaxis (flatpoint x) |
| virtual flatpoint | yaxis () |
| virtual void | yaxis (flatpoint y) |
Public Member Functions inherited from Laxkit::DoubleBBox | |
| DoubleBBox () | |
| Create empty invalid bbox (maxx<minx and maxy<miny). | |
| DoubleBBox (flatpoint p) | |
| Create box whose bounds are p. | |
| DoubleBBox (double mix, double max, double miy, double may) | |
| Create box whose bounds are as given. | |
| virtual void | clear () |
| Make box invalid: set minx=miny=0 and maxx=maxy=-1. | |
| virtual void | addtobounds (double x, double y) |
| virtual void | addtobounds (flatpoint p) |
| Expand bounds to contain p. Set the bounds to p if current bounds are invalid. | |
| virtual void | addtobounds (DoubleBBox *bbox) |
| Add the bbox to the bounds. Set the bounds if current bounds are invalid. | |
| virtual void | addtobounds (const double *m, DoubleBBox *bbox) |
| Add bbox to bounds, first transforming it by 6 element transform matrix m. | |
| virtual void | setbounds (DoubleBBox *bbox) |
| Just copy over the bounds. | |
| virtual void | setbounds (flatpoint *pts, int n) |
| Make this bbox be the bounds for the given n points. (does not add to previous bounds) | |
| virtual void | setbounds (double mix, double max, double miy, double may) |
| Set the bounds to the specified values. | |
| virtual int | validbounds () |
| Returns maxx>=minx && maxy>=miny. | |
| virtual int | intersect (double mix, double max, double miy, double may, int settointersection=0) |
| Intersect the given bounds with this's bounds. Return 1 for non-empty intersection. | |
| virtual int | intersect (DoubleBBox *bbox, int settointersection=0) |
| Just return intersect(bbox.minx,...,settointersection). | |
| virtual int | intersect (double *m, DoubleBBox *bbox, int touching, int settointersection) |
| Does the transformed box touch. **** incomplete implementation. | |
| virtual int | boxcontains (double x, double y) |
| Return whether the given point is contained within or on the bounds. | |
| virtual flatpoint | BBoxPoint (double x, double y) |
Public Attributes | |
| int | numx |
| int | numy |
| PointWarpPoint * | points |
| LineStyle | linestyle |
| PathsData * | outline |
Public Attributes inherited from LaxInterfaces::SomeData | |
| Laxkit::LaxImage * | preview |
| A preview image potentially to be used to not have to rerender on each refresh. | |
| int | usepreview |
| Flag for whether to use SomeData::preview rather than rendering. | |
| std::time_t | previewtime |
| The time the preview was generated, if at all, as returned by time(). | |
| std::time_t | modtime |
| The time of last modification through a SomeData function. | |
| int | bboxstyle |
| flatpoint | centerpoint |
| unsigned int | flags |
| int | iid |
| Id of the interface that should handle this data. | |
| char * | nameid |
Public Attributes inherited from Laxkit::anObject | |
| int | suppress_debug |
| DeleteRefCountedFunc | deleteMe |
| Called when the count is decremented to 0. | |
| unsigned long | object_id |
| char * | object_idstr |
Public Attributes inherited from Laxkit::DoubleBBox | |
| double | minx |
| double | maxx |
| double | miny |
| double | maxy |
This defines a point field for use in warping in a conformal manner.
See PointWarpInterface.
|
virtual |
Find bbox.
Reimplemented from LaxInterfaces::SomeData.
Referenced by LaxInterfaces::PointWarpInterface::MouseMove(), and LaxInterfaces::PointWarpInterface::newPointWarpData().
Subdivide a single row number r, position rt, and a single column c, position ct.
If r<0, then do not subdivide on a row. Same for when c<0. if r or c are to large, then do not subdivide.
r and c are border numbers, so r*3 is index int points. rt and ct are in the range [0..1], with rt==0 being row r, and rt==1 being row r+1.
Return 0 for success, nonzero for failure (nothing changed).
Break each patch into subpatches.
Break down into xn*yn subsubpatches. Say xn=2 and yn=3, then each subpatch gets split into 2 columns and 3 rows.
each subpatch is geared for values of s,t from 0 to 1.
transformed patch, with T=N*V, S=M*U: U = Ut Bt ((Bt^-1 Mt Bt) Gt (B N B^-1)) B V
Return 0 for success, nonzero for failure (nothing changed).
Remap to be in parallelogram of p,x,y.
Assumes numx,numy,points already set and allocated properly, x and y are vectors