Пример #1
0
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);
}
Пример #2
0
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();
}
Пример #3
0
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
}
Пример #4
0
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();
}