本文整理汇总了C++中Transformer类的典型用法代码示例。如果您正苦于以下问题:C++ Transformer类的具体用法?C++ Transformer怎么用?C++ Transformer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Transformer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Recall
void AlignToGridCmd::Align (GraphicView* gv, float refx, float refy) {
MoveData* md = (MoveData*) Recall(gv->GetGraphicComp());
if (md == nil) {
Viewer* v = gv->GetViewer();
Grid* grid = (v == nil) ? nil : v->GetGrid();
if (grid == nil) {
return;
}
Graphic* g = gv->GetGraphic();
Transformer t;
g->Parent()->TotalTransformation(t);
t.Invert();
Coord cx = iv26_round(refx);
Coord cy = iv26_round(refy);
grid->Constrain(cx, cy);
float dx, dy, trefx, trefy;
t.Transform(float(cx), float(cy), dx, dy);
t.Transform(refx, refy, trefx, trefy);
dx -= trefx;
dy -= trefy;
Store(gv->GetGraphicComp(), new MoveData(dx, dy));
}
Move(gv->GetGraphicComp());
}
示例2: GetOffset
Command* PinView::InterpGraphicCompManip (Manipulator* m) {
DragManip* dm = (DragManip*) m;
Editor* ed = dm->GetViewer()->GetEditor();
BrushVar* brVar = (BrushVar*) ed->GetState("Brush");
SlidingPin* sp = (SlidingPin*) dm->GetRubberband();
Transformer* rel = dm->GetTransformer();
Coord px, py, dum;
float dx, dy;
PinGraphic* pinGraphic;
sp->GetCurrent(px, py, dum, dum);
if (rel != nil) {
GetOffset(rel, px, py, dx, dy);
rel = new Transformer;
rel->Translate(dx, dy);
}
Graphic* pg = GetGraphicComp()->GetGraphic();
pinGraphic = new PinGraphic(px, py, pg);
if (brVar != nil) pinGraphic->SetBrush(brVar->GetBrush());
pinGraphic->SetTransformer(rel);
Unref(rel);
return new PasteCmd(ed, new Clipboard(NewSubject(pinGraphic)));
}
示例3: intersects
bool RasterRect::intersects (BoxObj& userb, Graphic* gs) {
Transformer* t = gs->GetTransformer();
Coord xmax = _raster->Width();
Coord ymax = _raster->Height();
Coord tx0, ty0, tx1, ty1;
if (t != nil && t->Rotated()) {
Coord x[4], tx[5];
Coord y[4], ty[5];
x[0] = x[3] = y[0] = y[1] = 0;
x[2] = x[1] = xmax;
y[2] = y[3] = ymax;
transformList(x, y, 4, tx, ty, gs);
tx[4] = tx[0];
ty[4] = ty[0];
FillPolygonObj fp (tx, ty, 5);
return fp.Intersects(userb);
} else if (t != nil) {
t->Transform(0, 0, tx0, ty0);
t->Transform(xmax, ymax, tx1, ty1);
BoxObj b1 (tx0, ty0, tx1, ty1);
return b1.Intersects(userb);
} else {
BoxObj b2 (0, 0, xmax, ymax);
return b2.Intersects(userb);
}
}
示例4: objv
void TransformerFunc::execute() {
ComValue objv(stack_arg(0));
ComValue transv(stack_arg(0));
reset_stack();
if (objv.object_compview()) {
ComponentView* compview = (ComponentView*)objv.obj_val();
if (compview && compview->GetSubject()) {
OverlayComp* comp = (OverlayComp*)compview->GetSubject();
Graphic* gr = comp->GetGraphic();
if (gr) {
Transformer* trans = gr->GetTransformer();
if (transv.is_unknown() || !transv.is_array() || transv.array_val()->Number()!=6) {
AttributeValueList* avl = new AttributeValueList();
float a00, a01, a10, a11, a20, a21;
trans->matrix(a00, a01, a10, a11, a20, a21);
avl->Append(new AttributeValue(a00));
avl->Append(new AttributeValue(a01));
avl->Append(new AttributeValue(a10));
avl->Append(new AttributeValue(a11));
avl->Append(new AttributeValue(a20));
avl->Append(new AttributeValue(a21));
ComValue retval(avl);
push_stack(retval);
} else {
float a00, a01, a10, a11, a20, a21;
AttributeValueList* avl = transv.array_val();
Iterator it;
AttributeValue* av;
avl->First(it);
av = avl->GetAttrVal(it);
a00 = av->float_val();
avl->Next(it);
av = avl->GetAttrVal(it);
a01 = av->float_val();
avl->Next(it);
av = avl->GetAttrVal(it);
a10 = av->float_val();
avl->Next(it);
av = avl->GetAttrVal(it);
a11 = av->float_val();
avl->Next(it);
av = avl->GetAttrVal(it);
a20 = av->float_val();
avl->Next(it);
av = avl->GetAttrVal(it);
a21 = av->float_val();
Transformer t(a00, a01, a10, a11, a20, a21);
*gr->GetTransformer()=t;
ComValue compval(new OverlayViewRef(comp), comp->class_symid());
push_stack(compval);
}
}
}
}
}
示例5: ComputeRel
static Transformer* ComputeRel (Viewer* v, Transformer* t) {
Transformer* rel = new Transformer;
GraphicComp* comp = v->GetGraphicView()->GetGraphicComp();
comp->GetGraphic()->TotalTransformation(*rel);
rel->Postmultiply(t);
return rel;
}
示例6: symbol_add
Transformer* CreateGraphicFunc::get_transformer(AttributeList* al) {
static int transform_symid = symbol_add("transform");
AttributeValue* transformv = nil;
Transformer* rel = nil;
AttributeValueList* avl = nil;
if (al &&
(transformv=al->find(transform_symid)) &&
transformv->is_array() &&
(avl=transformv->array_val()) &&
avl->Number()==6) {
float a00, a01, a10, a11, a20, a21;
Iterator it;
avl->First(it); a00=avl->GetAttrVal(it)->float_val();
avl->Next(it); a01=avl->GetAttrVal(it)->float_val();
avl->Next(it); a10=avl->GetAttrVal(it)->float_val();
avl->Next(it); a11=avl->GetAttrVal(it)->float_val();
avl->Next(it); a20=avl->GetAttrVal(it)->float_val();
avl->Next(it); a21=avl->GetAttrVal(it)->float_val();
rel = new Transformer(a00, a01, a10, a11, a20, a21);
} else {
rel = ((OverlayViewer*)_ed->GetViewer())->GetRel();
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
}
return rel;
}
示例7: Picture
LinkComp::LinkComp (Line* line) {
if (line != nil) {
Coord x0, y0, x1, y1;
float fx0, fy0, fx1, fy1;
line->GetOriginal(x0, y0, x1, y1);
Transformer* t = line->GetTransformer();
Graphic* parent = new Picture(line);
parent->SetTransformer(nil);
if (t == nil) {
fx0 = x0; fy0 = y0; fx1 = x1; fy1 = y1;
} else {
t->Transform(float(x0), float(y0), fx0, fy0);
t->Transform(float(x1), float(y1), fx1, fy1);
}
delete line;
line = new Line(0, 0, 1, 1);
InitLine(line, fx0, fy0, fx1, fy1);
PinGraphic* pg1 = new PinGraphic;
PinGraphic* pg2 = new PinGraphic;
pg1->SetBrush(psnonebr);
pg2->SetBrush(psnonebr);
pg1->Translate(fx0, fy0);
pg2->Translate(fx1, fy1);
_conn1 = new PinComp(pg1);
_conn2 = new PinComp(pg2);
parent->Append(line, pg1, pg2);
SetGraphic(parent);
}
}
示例8: transform
void View::transform(
Transformer& t, const Allocation& a, const Allocation&
) const {
scene2view(a);
const Allotment& ax = a.x_allotment();
const Allotment& ay = a.y_allotment();
csize(ax.begin(), ax.span(), ay.begin(), ay.span());
float sx = ax.span()/XYView::width();
float sy = ay.span()/XYView::height();
// if (sx > sy) sx = sy;
t.translate( -x(), -y());
t.scale(sx, sx);
View* v = (View*)this;
v->x_pick_epsilon_ = pick_epsilon/sx;
v->y_pick_epsilon_ = pick_epsilon/sx;
t.translate((ax.begin() + ax.end())/2,(ay.begin() + ay.end())/2);
//printf("\nx origin=%g span=%g alignment=%g begin=%g end=%g\n", ax.origin(), ax.span(), ax.alignment(), ax.begin(), ax.end());
//printf("\ny origin=%g span=%g alignment=%g begin=%g end=%g\n", ay.origin(), ay.span(), ay.alignment(), ay.begin(), ay.end());
Coord x1,y1;
t.transform(x() - x_span_/2, y() - y_span_/2, x1, y1);
if (!Math::equal(ax.begin(), x1, 1) || !Math::equal(ay.begin(), y1, 1)) {
t.inverse_transform(ax.begin(), ay.begin(), x1, y1);
v->x_span_ = 2*(x() - x1);
v->y_span_ = 2*(y() - y1);
v->size(x1,y1,x1+v->x_span_, y1+v->y_span_);
}
}
示例9: GetTransformer
void Graphic::invTransform (Coord& tx, Coord& ty, Graphic* g) {
Transformer* t = (g == nil) ? GetTransformer() : g->GetTransformer();
if (t != nil) {
t->InvTransform(tx, ty);
}
}
示例10: Transformer
Command* PadView::InterpGraphicCompManip (Manipulator* m) {
Command* cmd = nil;
DragManip* dm = (DragManip*) m;
SlidingRect* sr = (SlidingRect*) dm->GetRubberband();
Coord l, b, r, t;
sr->GetCurrent(l, b, r, t);
if (l != r || b != t) {
DragManip* dm = (DragManip*) m;
Editor* ed = dm->GetViewer()->GetEditor();
BrushVar* brVar = (BrushVar*) ed->GetState("Brush");
Transformer* rel = dm->GetTransformer();
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
Graphic* pg = GetGraphicComp()->GetGraphic();
PadGraphic* padGraphic = new PadGraphic(l, b, r, t, pg);
if (brVar != nil) padGraphic->SetBrush(brVar->GetBrush());
padGraphic->SetTransformer(rel);
Unref(rel);
cmd = new PasteCmd(ed, new Clipboard(NewSubject(padGraphic)));
}
return cmd;
}
示例11: GetGraphic
void LineView::GetEndpoints (Coord& x0, Coord& y0, Coord& x1, Coord& y1) {
Line* line = (Line*) GetGraphic();
Transformer t;
line->GetOriginal(x0, y0, x1, y1);
line->TotalTransformation(t);
t.Transform(x0, y0);
t.Transform(x1, y1);
}
示例12: OvDeleteCmd
Command* TextOvView::InterpretManipulator (Manipulator* m) {
Viewer* v = m->GetViewer();
Editor* ed = v->GetEditor();
Tool* tool = m->GetTool();
Command* cmd = nil;
if (tool->IsA(GRAPHIC_COMP_TOOL) || tool->IsA(RESHAPE_TOOL)) {
TextManip* tm = (TextManip*) m;
int size;
const char* text = tm->GetText(size);
if (size == 0) {
if (tool->IsA(RESHAPE_TOOL)) {
cmd = new OvDeleteCmd(ed);
} else {
v->Update(); // to repair text display-incurred damage
}
} else {
Coord xpos, ypos;
tm->GetPosition(xpos, ypos);
Painter* p = tm->GetPainter();
Transformer* rel = tm->GetPainter()->GetTransformer();
int lineHt = tm->GetLineHeight();
Graphic* pg = GetGraphicComp()->GetGraphic();
TextGraphic* textgr = new TextGraphic(text, lineHt, pg);
if (tool->IsA(GRAPHIC_COMP_TOOL)) {
textgr->SetTransformer(nil);
}
if (rel != nil) {
if (v->GetOrientation()==Rotated && !tool->IsA(RESHAPE_TOOL))
rel->Rotate(-90);
rel->InvTransform(xpos, ypos);
}
if (v->GetOrientation()==Rotated && !tool->IsA(RESHAPE_TOOL))
textgr->Rotate(90.0);
textgr->Translate(xpos, ypos);
textgr->FillBg(false);
textgr->SetFont((PSFont*) p->GetFont());
textgr->SetColors((PSColor*) p->GetFgColor(), nil);
if (tool->IsA(GRAPHIC_COMP_TOOL)) {
cmd = new PasteCmd(ed, new Clipboard(new TextOvComp(textgr)));
} else {
cmd = new ReplaceCmd(ed, new TextOvComp(textgr));
}
}
} else {
cmd = OverlayView::InterpretManipulator(m);
}
return cmd;
}
示例13: GetGraphic
void RectView::GetCorners (Coord* x, Coord* y) {
SF_Rect* rect = (SF_Rect*) GetGraphic();
Coord tx[4], ty[4];
Transformer t;
rect->GetOriginal(tx[0], ty[0], tx[2], ty[2]);
rect->GetOriginal(tx[3], ty[1], tx[1], ty[3]);
rect->TotalTransformation(t);
t.TransformList((Coord*) tx, (Coord*) ty, 4, x, y);
}
示例14: GetPoint
boolean Vertices::GetPoint (int index, Coord& px, Coord& py) {
if (index<0 || index>=count()) return false;
Coord tx, ty;
Transformer t;
tx = x()[index];
ty = y()[index];
TotalTransformation(t);
t.Transform(tx, ty, px, py);
return true;
}
示例15: IconObject
// constructor
Shape::Shape(const Shape& other)
#ifdef ICON_O_MATIC
: IconObject(other),
Transformable(other),
Observer(),
PathContainerListener(),
#else
: Transformable(other),
#endif
fPaths(new (nothrow) PathContainer(false)),
fStyle(NULL),
fPathSource(fPaths),
fTransformers(4),
fNeedsUpdate(true),
fLastBounds(0, 0, -1, -1),
fHinting(other.fHinting),
fMinVisibilityScale(other.fMinVisibilityScale),
fMaxVisibilityScale(other.fMaxVisibilityScale)
#ifdef ICON_O_MATIC
, fListeners(8)
#endif
{
SetStyle(other.fStyle);
if (fPaths) {
#ifdef ICON_O_MATIC
fPaths->AddListener(this);
#endif
// copy the path references from
// the other shape
if (other.fPaths) {
int32 count = other.fPaths->CountPaths();
for (int32 i = 0; i < count; i++) {
if (!fPaths->AddPath(other.fPaths->PathAtFast(i)))
break;
}
}
}
// clone vertex transformers
int32 count = other.CountTransformers();
for (int32 i = 0; i < count; i++) {
Transformer* original = other.TransformerAtFast(i);
Transformer* cloned = original->Clone(fPathSource);
if (!AddTransformer(cloned)) {
delete cloned;
break;
}
}
}