Subversion Repositories AndroidProjects

Rev

Rev 1414 | Blame | Compare with Previous | Last modification | View Log | RSS feed

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.ComponentModel;

using BauzoidNET.graphics.sprite;

namespace ShapeEditor.file.shapes
{
    public abstract class BaseShapeElement
    {
        [Browsable(false)]
        public string ShapeName { get; set; }


        private int mStartFrame = -1;
        public int StartFrame
        {
            get
            {
                return mStartFrame;
            }
            set
            {
                mStartFrame = value;
                UpdateName();
            }
        }

        private int mEndFrame = -1;
        public int EndFrame
        {
            get
            {
                return mEndFrame;
            }
            set
            {
                mEndFrame = value;
                UpdateName();
            }
        }

        protected Document mDocument = null;

        public BaseShapeElement(Document doc, string name)
        {
            mDocument = doc;
            ShapeName = name;
        }

        public string GetFrameRangeStr()
        {
            return "[" + StartFrame + ".." + EndFrame + "] ";
        }

        public bool IsInFrameRange(int frame)
        {
            if ((StartFrame == -1) || (EndFrame == -1))
                return true;

            return ((frame >= StartFrame) && (frame <= EndFrame));
        }

        public void WriteFrameRange(System.IO.TextWriter tw)
        {
            tw.WriteLine("frameRange " + StartFrame + ", " + EndFrame + ";");
        }

        public abstract string GetName();
        public abstract void UpdateName();

        public abstract void Render(SpriteTransform transform);
        public abstract void RenderSelected(SpriteTransform transform, bool drawHandles = true);
        public abstract int GetNumHandles();
        public abstract int FindHandleAt(float x, float y);

        public abstract bool IsInside(float x, float y);

        public abstract void DragHandle(int handle, float dx, float dy);
        public abstract void DragMove(float dx, float dy);
        public abstract void FixCoordinates();

        public abstract Cursor GetCursor(int handle);

        public abstract void WriteFile(System.IO.TextWriter tw);

    }
}