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; }
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; } }