예제 #1
0
        private static VObject CreateImageVObject(PsdFrame frame)
        {
            if (frame.Width == 0 || frame.Height == 0)
            {
                return(null);
            }

            var rect = new RectangleF(
                Common.ConvertPixelsToPoints(frame.DpiX, frame.X),
                Common.ConvertPixelsToPoints(frame.DpiY, frame.Y),
                Common.ConvertPixelsToPoints(frame.DpiX, frame.Width),
                Common.ConvertPixelsToPoints(frame.DpiY, frame.Height));

            var imageVObject = new ImageVObject {
                Opacity = frame.Opacity
            };

            imageVObject.ChangeControlPoints(rect.Left, rect.Top, rect.Right, rect.Bottom);

            return(imageVObject);
        }
예제 #2
0
        public static VObject CreateVObject(
            PsdFrame frame,
            bool skipGroupPrefix = false,
            Regex markersRegex   = null,
            bool forceRichText   = false,
            bool getRichTextForBoundedTextOnly = false)
        {
            if (frame == null)
            {
                throw new ArgumentNullException("frame");
            }

            VObject vObject = null;

            switch (frame.Type)
            {
            case FrameType.Group:
                break;

            case FrameType.Text:
                vObject = CreateTextVObject((PsdTextFrame)frame, forceRichText, getRichTextForBoundedTextOnly);
                break;

            case FrameType.Shape:
                vObject = CreateShapeVObject((PsdShapeFrame)frame);
                break;

            default:
                vObject = CreateImageVObject(frame);
                break;
            }

            if (vObject != null)
            {
                vObject.Name = GetVObjectName(frame, skipGroupPrefix, markersRegex);
            }

            return(vObject);
        }
예제 #3
0
        public static string GetVObjectName(PsdFrame frame, bool skipGroupPrefix, Regex markersRegex)
        {
            var prefix = "";

            if (!skipGroupPrefix && frame.Parent != null)
            {
                var parts = new Stack <string>();

                var parent = frame.Parent;
                while (parent != null && parent.Name != null)
                {
                    parts.Push(parent.Name);
                    parent = parent.Parent;
                }

                prefix = string.Join("/", parts.ToArray()) + "/";
            }

            var frameName = frame.Name ?? "";
            var name      = markersRegex != null?markersRegex.Replace(frameName, "") : frameName;

            return(prefix + name.Trim());
        }