Laxkit
0.0.7.1
|
Cubic tensor product patch with an image as the color source. More...
Public Member Functions | |
ImagePatchData (int iwidth, int iheight, unsigned long *ndata, int disl, double nscale, unsigned int stle) | |
Create a patch with the provided color data, set in unit rectangle x:[0,1] and y:[0,1]. | |
ImagePatchData (const char *file=NULL) | |
Plain constructor. Calls SetImage(file). Sets in unit rectangle x:[0,1] and y:[0,1]. | |
virtual | ~ImagePatchData () |
virtual const char * | whattype () |
virtual SomeData * | duplicate (SomeData *dup) |
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 dump_out. | |
virtual unsigned long | WhatColorLong (double s, double t) |
Return the color at (s,t) where (1,1) corresponds to (iwidth,iheight) in the image. | |
virtual int | WhatColor (double s, double t, Laxkit::ScreenColor *color_ret) |
Return the color at (s,t) where (1,1) corresponds to (iwidth,iheight) in the image. | |
virtual int | hasColorData () |
Return whether idata has any info. | |
virtual void | zap () |
Make patch be rectangular with 1:1 pixel aspect in image. | |
virtual int | SetImage (const char *fname) |
Return 0 for success. | |
Public Member Functions inherited from LaxInterfaces::PatchData | |
PatchData () | |
Creates a patch with points=NULL, size=0. | |
PatchData (double xx, double yy, double ww, double hh, int nr, int nc, unsigned int stle) | |
Creates a new patch in rect xx,yy,ww,hh with nr rows and nc columns. | |
virtual void | FindBBox () |
Find bbox. | |
virtual int | pointin (flatpoint pp, int pin=1) |
virtual flatpoint | getControlPoint (int r, int c) |
Return points[r*xsize+c]. | |
virtual flatpoint | getPoint (double t, double s) |
Return the point corresponding to (s,t), where s and t are in range [0..1]. s for column, t for row. | |
virtual flatpoint * | bezAtEdge (flatpoint *p, int i, int row) |
Return a bezier curve corresponding to the row (row==1) or column (row==0) i. | |
virtual flatpoint * | bezCrossSection (flatpoint *p, int i, double t, int row) |
Return the cross section bezier curve at subpatch row (or column) i, and parameter t. | |
virtual int | bezOfPatch (flatpoint *p, int r, int rl, int c, int cl) |
Return the bezier outline of a subsection of the patch. | |
virtual void | resolveToSubpatch (double s, double t, int &c, double &ss, int &r, double &tt) |
From a point s,t (range 0..1), return the subpatch r,c plus offset into that subpatch. | |
virtual void | resolveFromSubpatch (int c, double ss, int r, double tt, double &s, double &t) |
From subpatch (r,c) and offset, return a point s,t with range [0..1],[0..1]. | |
virtual void | getGt (double *G, int roffset, int coffset, int isfory) |
See subdivide() for what Gt is. | |
virtual int | inSubPatch (flatpoint p, int *r_ret, int *c_ret, double *t_ret, double *s_ret, double d) |
Return which subpatch the point seems to be in. | |
virtual int | coordsInSubPatch (flatpoint p, int r, int c, double maxd, double *s_ret, double *t_ret) |
Find an approximate (s,t) point to p. | |
virtual void | Set (double xx, double yy, double ww, double hh, int nr, int nc, 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 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. | |
virtual void | grow (int where, double *tr) |
Grow the patch off an edge. | |
virtual void | collapse (int rr, int cc) |
Merge (delete) rows, and/or columns. | |
virtual void | InterpolateControls (int whichcontrols) |
Interpolate control points according to whichcontrols. | |
virtual int | warpPatch (flatpoint center, double r1, double r2, double s, double e) |
Make data wrap inside a ring between radius 1 and 2, start angle s, end angle e. | |
virtual int | renderToBuffer (unsigned char *buffer, int bufw, int bufh, int bufstride, int bufdepth, int bufchannels) |
Write to buffer assuming samples are 8 bit ARGB. | |
virtual void | rpatchpoint (PatchRenderContext *context, flatpoint ul, flatpoint ur, flatpoint ll, flatpoint lr, double s1, double t1, double s2, double t2, int which) |
Recursive render. Used by renderToBuffer(). | |
virtual void | patchpoint (PatchRenderContext *context, double s0, double ds, double t0, double dt, int n) |
Called from renderToBuffer(). No recursion, just draw a bunch of rects for patch. | |
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 | 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 | |
char * | filename |
The file (if any) that idata corresponds to. | |
unsigned long * | idata |
The color data in ARGB format for sampling from. | |
double | im [6] |
Offset of the image within color space. | |
int | idataislocal |
Whether idata should be delete[]'d in the destructor. | |
int | iwidth |
The width of the image color data. | |
int | iheight |
The width of the image color data. | |
Public Attributes inherited from LaxInterfaces::PatchData | |
int | renderdepth |
How and how much to render in renderToBuffer. | |
int | griddivisions |
flatpoint * | points |
int | xsize |
int | ysize |
unsigned int | style |
PatchControls | controls |
LineStyle | linestyle |
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 |
Cubic tensor product patch with an image as the color source.
See ImagePatchInterface.
|
virtual |
delete[]'s idata if idataislocal==1 || idataislocal==2.
References filename, idata, and idataislocal.
Return 0 for success.
*** on error, the old stuff is kept.
This makes idata hold 8bit ARGB samples, not necessarily ready for display on the screen. Note that this is the same as is returned in Imlib's imlib_image_get_data_for_reading_only().
References dump_out(), filename, idata, idataislocal, iheight, iwidth, and makestr().
Referenced by dump_in_atts(), and ImagePatchData().
|
virtual |
Return the color at (s,t) where (1,1) corresponds to (iwidth,iheight) in the image.
This returns an element from idata, which is ARGB.
Reimplemented from LaxInterfaces::PatchData.
References idata, iheight, and iwidth.
Referenced by LaxInterfaces::ImagePatchInterface::patchpoint().
|
virtual |
double LaxInterfaces::ImagePatchData::im[6] |
Offset of the image within color space.
Normally, images will fill the entire patch, with (s,t)=(1,1) corresponding to point (width,height) in the image. im is a transform to apply to the image data before retrieving the color.
This allows easily offseting patched data without creating a whole new image. Please note that this may make some areas of the image invisible, as they are outside the range of the patch.
Referenced by ImagePatchData().