コード例 #1
0
ファイル: minghsp.c プロジェクト: tkhaga/MingHSP
EXPORT BOOL WINAPI i_setMatrix(float a, float b, float c, float d)
{
	if (setMatrix_flag)
	{
		lstrcpy(funcname, "i_setMatrix");
		SWFDisplayItem_setMatrix(mhsp_item, a, b, c, d, m1, m2);
		setMatrix_flag = 0;
	}
	else {
		m1 = a;
		m2 = b;
		setMatrix_flag = 1;
	}
	return 0;
}
コード例 #2
0
void drvSWF::show_image(const PSImage & imageinfo)
{

	if (outBaseName == "") {
		errf << "images cannot be handled via standard output. Use an output file" << endl;
		return;
	}


	if (imageinfo.isFileImage) {
		// use imageinfo.FileName;
#if 0
		outf << "<image "		// x=\"" << 0 << "\" y=\"" << 0 << "\"" 
			<< " transform=\"matrix("
			<< imageinfo.normalizedImageCurrentMatrix[0] << ' '
			<< /* - */ -imageinfo.normalizedImageCurrentMatrix[1] << ' '
			// doch doch - zumindest bei im.ps 
			// - no longer needed due to normalization in pstoedit.pro
			<< imageinfo.normalizedImageCurrentMatrix[2] << ' '
			<< -imageinfo.normalizedImageCurrentMatrix[3] << ' '
// transfer
			<< imageinfo.normalizedImageCurrentMatrix[4] << ' '
			<< currentDeviceHeight - imageinfo.normalizedImageCurrentMatrix[5]
			<< ")\"" << " width=\"" << imageinfo.
			width << "\"" << " height=\"" << imageinfo.
			height << "\"" << " xlink:href=\"" << imageinfo.FileName << "\"></image>" << endl;

#endif

#if (defined(USE_PNG) && USE_PNG)
		// from 0.3 on ming may support png directly
		SWFBitmap *bm = new SWFBitmap(imageinfo.FileName.value());
#else
		unsigned int len = strlen(imageinfo.FileName.value());
		char *outfile = cppstrdup(imageinfo.FileName.value());
		outfile[len - 3] = 'd';
		outfile[len - 2] = 'b';
		outfile[len - 1] = 'l';
		png2dbl(imageinfo.FileName.value(), outfile);
		SWFBitmap *bm = new SWFBitmap(outfile);
		delete [] outfile;
#endif
		(void) remove(imageinfo.FileName.value());

		SWFShape *s = new SWFShape;
		SWFFill *swffill = s->addBitmapFill(bm, SWFFILL_TILED_BITMAP);
		s->setRightFill(swffill);

		const float h = (float) bm->getHeight();
		const float w = (float) bm->getWidth();
		s->movePen(0.0f, 0.0f);
		s->drawLine(w, 0.0f);
		s->drawLine(0.0f, h);
		s->drawLine(-w, 0.0f);
		s->drawLine(0.0f, -h);

		/// cout << " h:" << bm->getHeight() << " w:" << bm->getWidth() << endl;
		// SWFDisplayItem *d = movie->add(bm);
		s->end();
		SWFDisplayItem *d = movie->add(s);

		const float *CTM = imageinfo.normalizedImageCurrentMatrix;
		float ma = CTM[0];
		float mb = -CTM[1];
		float mc = CTM[2];
		float md = -CTM[3];

		const Point p(CTM[4], CTM[5]);
		float mx = swfx(p);
		float my = swfy(p);


#if 1
		d->move(0.0f, 0.0f);
		SWFDisplayItem_setMatrix(d->item, ma, mb, mc, md, mx, my);
//          d->item->flags |= ITEM_DISPLACED;
//  d->item->flags |= ITEM_TRANSFORMED;

#else
		const Point p(CTM[4], CTM[5]);
		d->move(swfx(p), swfy(p));
		//  d->rotate(30);
		d->scale(ma, -md);
#endif



	} else {

		errf << "unhandled case for image " << endl;
	}

}