本文整理汇总了C++中Transformer::Invert方法的典型用法代码示例。如果您正苦于以下问题:C++ Transformer::Invert方法的具体用法?C++ Transformer::Invert怎么用?C++ Transformer::Invert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transformer
的用法示例。
在下文中一共展示了Transformer::Invert方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InterpGraphicCompManip
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;
}
示例2: Align
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());
}
示例3: get_transformer
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;
}
示例4: InterpretManipulator
Command* EllipseView::InterpretManipulator (Manipulator* m) {
DragManip* dm = (DragManip*) m;
Editor* ed = dm->GetViewer()->GetEditor();
Tool* tool = dm->GetTool();
Transformer* rel = dm->GetTransformer();
Command* cmd = nil;
if (tool->IsA(GRAPHIC_COMP_TOOL)) {
RubberEllipse* re = (RubberEllipse*) dm->GetRubberband();
Coord x, y, dummy1, dummy2;
re->GetCurrent(x, y, dummy1, dummy2);
if (dummy1 != x || dummy2 != y) {
BrushVar* brVar = (BrushVar*) ed->GetState("BrushVar");
PatternVar* patVar = (PatternVar*) ed->GetState("PatternVar");
ColorVar* colVar = (ColorVar*) ed->GetState("ColorVar");
Coord xr, yr;
re->CurrentRadii(xr, yr);
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
Graphic* pg = GetGraphicComp()->GetGraphic();
SF_Ellipse* ellipse = new SF_Ellipse(x, y, xr, yr, pg);
if (brVar != nil) ellipse->SetBrush(brVar->GetBrush());
if (patVar != nil) ellipse->SetPattern(patVar->GetPattern());
if (colVar != nil) {
ellipse->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
ellipse->SetTransformer(rel);
Unref(rel);
cmd = new PasteCmd(ed, new Clipboard(new EllipseComp(ellipse)));
}
} else {
cmd = GraphicView::InterpretManipulator(m);
}
return cmd;
}
示例5: InterpLinkCompManip
Command* LinkView::InterpLinkCompManip (Manipulator* m) {
Viewer* v = m->GetViewer();
Editor* ed = v->GetEditor();
GraphicView* views = v->GetGraphicView();
BrushVar* brVar = (BrushVar*) ed->GetState("BrushVar");
ConnectManip* cm = (ConnectManip*) m;
Transformer* rel = cm->GetTransformer();
RubberGroup* rg = (RubberGroup*) cm->GetRubberband();
RubberLine* rl = (RubberLine*) rg->First();
Coord x0, y0, x1, y1;
Connector* c1, *c2;
ConnectorView* target1, *target2;
MacroCmd* macro = new MacroCmd(ed);
rl->GetCurrent(x0, y0, x1, y1);
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
Graphic* pg = GetGraphicComp()->GetGraphic();
Line* line = new Line(x0, y0, x1, y1, pg);
if (brVar != nil) line->SetBrush(brVar->GetBrush());
line->SetTransformer(rel);
Unref(rel);
LinkComp* linkComp = NewSubject(line);
linkComp->GetConnectors(c1, c2);
macro->Append(new PasteCmd(ed, new Clipboard(linkComp)));
target1 = views->ConnectorIntersecting(x0-SLOP, y0-SLOP, x0+SLOP, y0+SLOP);
target2 = views->ConnectorIntersecting(x1-SLOP, y1-SLOP, x1+SLOP, y1+SLOP);
if (target1 != nil) {
macro->Append(new ConnectCmd(ed, c1, target1->GetConnector()));
}
if (target2 != nil) {
macro->Append(new ConnectCmd(ed, c2, target2->GetConnector()));
}
return macro;
}
示例6: Align
void Graphic::Align (Alignment falign, Graphic* moved, Alignment malign) {
float fx0, fy0, fx1, fy1, mx0, my0, mx1, my1, dx = 0, dy = 0;
GetBounds(fx0, fy0, fx1, fy1);
moved->GetBounds(mx0, my0, mx1, my1);
switch (falign) {
case BottomLeft:
case CenterLeft:
case TopLeft:
case Left:
dx = fx0;
break;
case BottomCenter:
case Center:
case TopCenter:
case HorizCenter:
dx = (fx0 + fx1 + 1)/2;
break;
case BottomRight:
case CenterRight:
case TopRight:
case Right:
dx = fx1 + 1;
break;
}
switch (falign) {
case BottomLeft:
case BottomCenter:
case BottomRight:
case Bottom:
dy = fy0;
break;
case CenterLeft:
case Center:
case CenterRight:
case VertCenter:
dy = (fy0 + fy1 + 1)/2;
break;
case TopLeft:
case TopCenter:
case TopRight:
case Top:
dy = fy1 + 1;
break;
}
switch (malign) {
case BottomLeft:
case CenterLeft:
case TopLeft:
case Left:
dx -= mx0;
break;
case BottomCenter:
case Center:
case TopCenter:
case HorizCenter:
dx -= (mx0 + mx1 + 1)/2;
break;
case BottomRight:
case CenterRight:
case TopRight:
case Right:
dx -= (mx1 + 1);
break;
}
switch (malign) {
case BottomLeft:
case BottomCenter:
case BottomRight:
case Bottom:
dy -= my0;
break;
case CenterLeft:
case Center:
case CenterRight:
case VertCenter:
dy -= (my0 + my1 + 1)/2;
break;
case TopLeft:
case TopCenter:
case TopRight:
case Top:
dy -= (my1 + 1);
break;
}
if (dx != 0 || dy != 0) {
Transformer parents;
moved->parentXform(parents);
parents.Invert();
parents.Transform(0.0, 0.0, fx0, fy0);
parents.Transform(dx, dy, mx0, my0);
moved->Translate(mx0-fx0, my0-fy0);
}
}
示例7: InterpretManipulator
Command* MultiLineView::InterpretManipulator (Manipulator* m) {
DragManip* dm = (DragManip*) m;
Editor* ed = dm->GetViewer()->GetEditor();
Tool* tool = dm->GetTool();
Transformer* rel = dm->GetTransformer();
Command* cmd = nil;
if (tool->IsA(GRAPHIC_COMP_TOOL)) {
GrowingVertices* gv = (GrowingVertices*) dm->GetRubberband();
Coord* x, *y;
int n, pt;
gv->GetCurrent(x, y, n, pt);
if (n > 2 || x[0] != x[1] || y[0] != y[1]) {
BrushVar* brVar = (BrushVar*) ed->GetState("BrushVar");
PatternVar* patVar = (PatternVar*) ed->GetState("PatternVar");
ColorVar* colVar = (ColorVar*) ed->GetState("ColorVar");
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
Graphic* pg = GetGraphicComp()->GetGraphic();
SF_MultiLine* polygon = new SF_MultiLine(x, y, n, pg);
if (brVar != nil) polygon->SetBrush(brVar->GetBrush());
if (patVar != nil) polygon->SetPattern(patVar->GetPattern());
if (colVar != nil) {
polygon->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
polygon->SetTransformer(rel);
Unref(rel);
cmd = new PasteCmd(ed, new Clipboard(new MultiLineComp(polygon)));
}
delete x;
delete y;
} else if (tool->IsA(RESHAPE_TOOL)) {
GrowingVertices* gv = (GrowingVertices*) dm->GetRubberband();
Coord* x, *y;
int n, pt;
gv->RemoveVertex();
gv->GetCurrent(x, y, n, pt);
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
SF_MultiLine* polygon = new SF_MultiLine(x, y, n, GetGraphic());
delete x;
delete y;
polygon->SetTransformer(rel);
Unref(rel);
cmd = new ReplaceCmd(ed, new MultiLineComp(polygon));
} else {
cmd = VerticesView::InterpretManipulator(m);
}
return cmd;
}
示例8: InterpretManipulator
Command* RectView::InterpretManipulator (Manipulator* m) {
DragManip* dm = (DragManip*) m;
Editor* ed = dm->GetViewer()->GetEditor();
Tool* tool = dm->GetTool();
Transformer* rel = dm->GetTransformer();
Command* cmd = nil;
if (tool->IsA(GRAPHIC_COMP_TOOL)) {
RubberRect* rr = (RubberRect*) dm->GetRubberband();
Coord x0, y0, x1, y1;
rr->GetCurrent(x0, y0, x1, y1);
if (x0 != x1 || y0 != y1) {
BrushVar* brVar = (BrushVar*) ed->GetState("BrushVar");
PatternVar* patVar = (PatternVar*) ed->GetState("PatternVar");
ColorVar* colVar = (ColorVar*) ed->GetState("ColorVar");
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
Graphic* pg = GetGraphicComp()->GetGraphic();
SF_Rect* rect = new SF_Rect(x0, y0, x1, y1, pg);
if (brVar != nil) rect->SetBrush(brVar->GetBrush());
if (patVar != nil) rect->SetPattern(patVar->GetPattern());
if (colVar != nil) {
rect->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
rect->SetTransformer(rel);
Unref(rel);
cmd = new PasteCmd(ed, new Clipboard(new RectComp(rect)));
}
} else if (tool->IsA(RESHAPE_TOOL)) {
RubberGroup* rubberGroup = (RubberGroup*) dm->GetRubberband();
RubberLine* rubberLine = (RubberLine*) rubberGroup->First();
SF_Polygon* polygon;
Coord x[4], y[4];
Coord x0, y0;
GetCorners(x, y);
rubberLine->GetCurrent(x0, y0, x[_reshapeCorner], y[_reshapeCorner]);
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
polygon = new SF_Polygon(x, y, 4, GetGraphic());
polygon->SetTransformer(rel);
Unref(rel);
cmd = new ReplaceCmd(ed, new PolygonComp(polygon));
} else if (tool->IsA(MOVE_TOOL)) {
SlidingLineList* sll;
Transformer* rel = dm->GetTransformer();
Coord* ox, *oy, *cx, *cy;
float fx0, fy0, fx1, fy1;
int n;
sll = (SlidingLineList*) dm->GetRubberband();
sll->GetOriginal(ox, oy, n);
sll->GetCurrent(cx, cy, n);
if (rel != nil) {
rel->InvTransform(float(ox[0]), float(oy[0]), fx0, fy0);
rel->InvTransform(float(cx[0]), float(cy[0]), fx1, fy1);
}
delete ox; delete oy; delete cx; delete cy;
cmd = new MoveCmd(ed, fx1 - fx0, fy1 - fy0);
} else if (tool->IsA(SCALE_TOOL)) {
ScalingLineList* sll = (ScalingLineList*) dm->GetRubberband();
float sxy = sll->CurrentScaling();
cmd = new ScaleCmd(ed, sxy, sxy);
} else if (tool->IsA(ROTATE_TOOL)) {
RotatingLineList* rll = (RotatingLineList*) dm->GetRubberband();
float angle = rll->CurrentAngle() - rll->OriginalAngle();
cmd = new RotateCmd(ed, angle);
} else {
cmd = GraphicView::InterpretManipulator(m);
}
return cmd;
}
示例9: InterpretManipulator
Command* ArrowSplineView::InterpretManipulator (Manipulator* m) {
DragManip* dm = (DragManip*) m;
Editor* ed = dm->GetViewer()->GetEditor();
Tool* tool = dm->GetTool();
Transformer* rel = dm->GetTransformer();
Command* cmd = nil;
ArrowVar* aVar = (ArrowVar*) ed->GetState("ArrowVar");
if (tool->IsA(GRAPHIC_COMP_TOOL)) {
GrowingVertices* gv = (GrowingVertices*) dm->GetRubberband();
Coord* x, *y;
int n;
gv->GetCurrent(x, y, n);
if (n > 2 || x[0] != x[1] || y[0] != y[1]) {
BrushVar* brVar = (BrushVar*) ed->GetState("BrushVar");
PatternVar* patVar = (PatternVar*) ed->GetState("PatternVar");
ColorVar* colVar = (ColorVar*) ed->GetState("ColorVar");
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
ArrowOpenBSpline* aml = new ArrowOpenBSpline(
x, y, n, aVar->Head(), aVar->Tail(),
dm->GetViewer()->GetMagnification(), stdgraphic
);
if (brVar != nil) aml->SetBrush(brVar->GetBrush());
if (patVar != nil) aml->SetPattern(patVar->GetPattern());
if (colVar != nil) {
aml->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
aml->SetTransformer(rel);
Unref(rel);
cmd = new PasteCmd(ed, new Clipboard(new ArrowSplineComp(aml)));
}
delete x;
delete y;
} else if (tool->IsA(RESHAPE_TOOL)) {
GrowingVertices* gv = (GrowingVertices*) dm->GetRubberband();
Coord* x, *y;
int n, pt;
gv->RemoveVertex();
gv->GetCurrent(x, y, n, pt);
if (rel != nil) {
rel = new Transformer(rel);
rel->Invert();
}
ArrowOpenBSpline* orig = GetArrowSplineComp()->GetArrowOpenBSpline();
ArrowOpenBSpline* aml = new ArrowOpenBSpline(
x, y, n, orig->Head(), orig->Tail(),
dm->GetViewer()->GetMagnification(), GetGraphic()
);
delete x;
delete y;
aml->SetTransformer(rel);
Unref(rel);
cmd = new ReplaceCmd(ed, new ArrowSplineComp(aml));
} else {
cmd = SplineView::InterpretManipulator(m);
}
return cmd;
}