예제 #1
0
        static SwfRectIntData CalculateBitmapTrimmedRect(SwfLibraryBitmapDefine bitmap)
        {
            var rect = new SwfRectIntData {
                xMin = bitmap.Width,
                yMin = bitmap.Height,
                xMax = 0,
                yMax = 0
            };

            for (var i = 0; i < bitmap.Height; ++i)
            {
                for (var j = 0; j < bitmap.Width; ++j)
                {
                    var a = bitmap.ARGB32[(j + i * bitmap.Width) * 4];
                    if (a > 0)
                    {
                        rect.xMin = Mathf.Min(j, rect.xMin);
                        rect.yMin = Mathf.Min(i, rect.yMin);
                        rect.xMax = Mathf.Max(j + 1, rect.xMax);
                        rect.yMax = Mathf.Max(i + 1, rect.yMax);
                    }
                }
            }
            return(rect.width < 1 || rect.height < 1
                                ? new SwfRectIntData(0, 0, 1, 1)
                                : rect);
        }
예제 #2
0
        static SwfBitmapData ConvertBitmap(ushort id, SwfLibraryBitmapDefine bitmap)
        {
            var trimmed_rect = bitmap.Redirect > 0
                                ? new SwfRectIntData(bitmap.Width, bitmap.Height)
                                : CalculateBitmapTrimmedRect(bitmap);

            return(new SwfBitmapData {
                Id = id,
                ARGB32 = bitmap.ARGB32,
                Redirect = bitmap.Redirect,
                RealWidth = bitmap.Width,
                RealHeight = bitmap.Height,
                TrimmedRect = trimmed_rect
            });
        }