SWFMatrix gradientMatrix(GradientFill::Type t, const SWFMatrix& m) { SWFMatrix base; switch (t) { case GradientFill::LINEAR: base.set_translation(128, 0); base.set_scale(1.0 / 128, 1.0 / 128); break; case GradientFill::RADIAL: base.set_scale(1.0 / 512, 1.0 / 512); break; } base.concatenate(m); return base; }
void Bitmap::construct(as_object* /*init*/) { if (_bitmapData) _bitmapData->attach(this); if (!_def && !_bitmapData) return; // Width and height are a maximum of 2880, so there is no risk of // overflow const int w = pixelsToTwips(_width); const int h = pixelsToTwips(_height); SWFMatrix mat; mat.set_scale(1.0 / 20, 1.0 / 20); // Can this be tiled? And smoothing? FillStyle fill = BitmapFill(BitmapFill::CLIPPED, bitmap(), mat, BitmapFill::SMOOTHING_UNSPECIFIED); const size_t fillLeft = _shape.addFillStyle(fill); Path bmpath(w, h, fillLeft, 0, 0, false); bmpath.drawLineTo(w, 0); bmpath.drawLineTo(0, 0); bmpath.drawLineTo(0, h); bmpath.drawLineTo(w, h); _shape.add_path(bmpath); _shape.finalize(); set_invalidated(); }