void MacPrinterCanvas::start(float scale) { static char szMsg[] = "NEURON"; scale_ = scale; if (!get()) { return; } //if (!Escape(hdc, STARTDOC, sizeof szMsg-1, szMsg, NULL)) { //DebugMessage("STARTDOC failed\n"); // abort(); //} DOCINFO di; di.cbSize = sizeof(DOCINFO); di.lpszDocName = "NEURON"; di.lpszOutput = NULL; StartDoc(hdc, &di); StartPage(hdc); // SetMapMode(hdc, MM_TWIPS); int a = GetMapMode(hdc); SIZE b; GetViewportExtEx(hdc, &b); POINT c; GetViewportOrgEx(hdc, &c); XFORM d; GetWorldTransform(hdc, &d); if (a < -10) { return; } damage_all(); RECT r; //SetRectRgn(&r, 0, 0, hres_/2, vres_/2); r.left = 0; r.top=0; r.right = hres_; r.bottom=vres_; beginPaint(hdc, r); //SelectClipRgn(hdc, NULL); //d.eM11 = d.eM22 *= 2.; //SetWorldTransform(hdc, &d); }
void XYView::scale_view(Coord xorg, Coord yorg, float dxscl, float dyscl) { Coord x0, y0, l, b, r, t; Coord dx = Math::abs(dxscl); Coord dy = Math::abs(dyscl); if (dx < .9*dy) { dx = 0.; dy = dyscl; } else if (dy < .9*dx) { dx = dxscl; dy = 0.; } else { dx = dxscl; dy = dyscl; } s2o().transform(xorg, yorg, x0, y0); //printf("org %g %g %g %g\n", xorg, yorg, x0, y0); l = -(left()-x0)*dx + left(); b = -(bottom()-y0)*dy + bottom(); r = -(right()-x0)*dx + right(); t = -(top()-y0)*dy + top(); #if 1 if (dxscl > 1) { MyMath::round(l, r, MyMath::Expand, 4); } else { MyMath::round(l, r, MyMath::Contract, 4); } if (dyscl > 1) { MyMath::round(b, t, MyMath::Expand, 4); } else { MyMath::round(b, t, MyMath::Contract, 4); } #endif size(l, b, r, t); damage_all(); }
bool MacPrinterCanvas::start() { #if carbon return false; #else //debugfile("MacPrinter::init\n"); GetPort(&oldPort); PrOpen(); if (!prRecHdl) { prRecHdl = THPrint(NewHandleClear(sizeof(TPrint))); if (PrError() != noErr) { return false; } PrintDefault(prRecHdl); if (PrError() != noErr) { return false; } PrStlDialog(prRecHdl); }else{ PrValidate(prRecHdl); } gPrinterPort = PrOpenDoc(prRecHdl, nil, nil); if (PrError() != noErr) { return false; } PrOpenPage(gPrinterPort, nil); if (PrError() != noErr) { return false; } damage_all(); beginPaint(); return true; #endif }
void XYView::move_view(Coord dx1, Coord dy1) { // printf("move by %g %g \n", dx1, dy1); Coord x0, x1, y0, y1; Coord dx = Math::abs(dx1); Coord dy = Math::abs(dy1); if (dx < .9*dy) { dx = 0.; dy = dy1; } else if (dy < .9*dx) { dx = dx1; dy = 0.; } else { dx = dx1; dy = dy1; } s2o().transform(0, 0, x0, y0); s2o().transform(dx, dy, x1, y1); x0 = x0 - x1 + left(); y0 = y0 - y1 + bottom(); x1 = x0 + width(); y1 = y0 + height(); #if 1 if (dx > 0) { MyMath::round(x0, x1, MyMath::Higher, 4); } else { MyMath::round(x0, x1, MyMath::Lower, 4); } if (dy > 0) { MyMath::round(y0, y1, MyMath::Higher, 4); } else { MyMath::round(y0, y1, MyMath::Lower, 4); } #endif XYView::origin(x0, y0); damage_all(); }