Beispiel #1
0
        public TestCircle()
        {
            m_pntVel    = new EPointF(0, 0);
            m_pntThrust = new EPoint(0, 0);

            aKeysPressedX = new ArrayList();
            aKeysPressedY = new ArrayList();

            Bitmap   bmp = new Bitmap(40, 40, PixelFormat.Format24bppRgb);
            Graphics g   = Graphics.FromImage(bmp);

            g.FillEllipse(new SolidBrush(Color.Red), 0, 0, 40, 40);
            g.Dispose();
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            mb.CenterRegPoint();
            Member = mb;

            m_aLines = new ArrayList();
            for (int i = 0; i < 1; i++)
            {
                TestLine line = new TestLine(m_endogine);
                line.SetLine(new EPointF((i) * 150, 0), new EPointF((i + 1) * 150, 150));
                m_aLines.Add(line);
            }

            LocZ = 10;
            Loc  = new EPointF(171, 171);
            m_endogine.KeyEvent += new KeyEventHandler(m_endogine_KeyEvent);
        }
Beispiel #2
0
        public Dragbar()
        {
            this.m_bNoScalingOnSetRect = true;
            Name = "Dragbar";

            m_frame             = new Frame();
            m_frame.Parent      = this;
            m_frame.MouseActive = true;
            m_frame.MouseEvent += new MouseEventDelegate(m_frame_MouseEvent);
            MemberSpriteBitmap mb = (MemberSpriteBitmap)m_endogine.CastLib.GetOrCreate("Button2Up");

            m_frame.Member          = mb;
            m_frame.Ink             = RasterOps.ROPs.BgTransparent;
            m_frame.Member.ColorKey = Color.FromArgb(0, 0, 0);
            m_frame.LocZ            = 1;

            m_btnClose             = new Button();
            m_btnClose.Parent      = this;
            m_btnClose.MouseActive = true;
            m_btnClose.MouseEvent += new MouseEventDelegate(m_btnClose_MouseEvent);
            m_btnClose.Ink         = RasterOps.ROPs.D3DTest2;
            m_btnClose.LocZ        = 2;

            LabelGDI lbl = new LabelGDI();

            lbl.Parent = this;
            lbl.Name   = "Title";
            lbl.Text   = "Dialog";
            lbl.LocZ   = 3;
        }
Beispiel #3
0
        private void CreateVisualization()
        {
            if (this.bConstructing)
            {
                return;
            }

            this.bmpTopology = this.CreateBitmap();

            Bitmap bmp = (Bitmap)this.bmpTopology.Clone();

            Endogine.BitmapHelpers.Filters.EmbossFrom24BitGrayscale(bmp);

            this.bmpInclination = this.CreateInclinationBitmap(this.bmpTopology);
            bmp = this.bmpInclination;
//			Bitmap bmp2 = this.SplitInvert(bmp);

            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            //mb.CenterRegPoint();
            this.Member = mb;
            this.Ink    = RasterOps.ROPs.AddPin;

            for (int i = this.ChildCount - 1; i >= 0; i--)
            {
                this.GetChildByIndex(i).Dispose();
            }

//			Sprite sp = new Sprite();
//			sp.Parent = this;
//			MemberSpriteBitmap mb2 = new MemberSpriteBitmap(bmp2);
//			sp.Member = mb2;
//			sp.Ink = RasterOps.ROPs.SubtractPin;
        }
Beispiel #4
0
        public Sprite CreateSprite()
        {
            //TODO: check if we've already created a member!
            System.Drawing.Bitmap bmp = this.Bitmap;
            if (bmp == null)
            {
                return(null);
            }
            Sprite sp = new Sprite();

            sp.Name  = this.Name;
            sp.LocZ  = this.LayerID;
            sp.Blend = this.Opacity;
            //TODO:
            //sp.Loc = layerInfo.ReferencePoint;
            //sp.Ink = layerInfo.BlendKey;
            sp.Color = this.SheetColor;
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            sp.Member = mb;
            foreach (EffectLayers.Effect effect in this.Effects)
            {
            }
            return(sp);
        }
Beispiel #5
0
        private void CreateNew(int a_nLocX)
        {
            Sprite sp = new Sprite();

            sp.Name = "Obstacle";
            sp.LocZ = 5;
            //TODO: new animation system
            MemberSpriteBitmap mb = (MemberSpriteBitmap)EndogineHub.Instance.CastLib.GetOrCreate("asteroid01");

            //mb.NumFramesPerAxis = new EPoint(7,6);
            sp.Member = mb;

            if (a_nLocX <= 0)
            {
                a_nLocX = GameMain.Instance.CaveWalls.GetMaxX();
            }
            float[] walls = GameMain.Instance.CaveWalls.GetWallsYOnX(a_nLocX);

            Random rnd = new Random();

            sp.Loc = new EPointF(a_nLocX, (walls[1] - walls[0]) * (float)rnd.NextDouble() + walls[0]);
            //sp.AutoAnimator.StepSize = 0.1f;
            sp.Scaling = new EPointF(0.3f, 0.3f);

            BhReportWhenOutside bh = new BhReportWhenOutside();

            sp.AddBehavior(bh);
            bh.Outside += new CaveHunter.BhReportWhenOutside.OutsideDelegate(bh_Outside);

            m_obstacles.Add(sp);
        }
Beispiel #6
0
        public Colorizer()
        {
            Bitmap   bmp = new Bitmap(1, 1);
            Graphics g   = Graphics.FromImage(bmp);

            g.FillRectangle(new SolidBrush(Color.FromArgb(255, 255, 255)), 0, 0, 1, 1);
            Endogine.MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);
            this.Member = mb;
            this.Ink    = RasterOps.ROPs.SubtractPin;
        }
Beispiel #7
0
        public void Create(int width, int height)
        {
            Bitmap   bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            Graphics g   = Graphics.FromImage(bmp);

            g.FillRectangle(new SolidBrush(Color.White), 0, 0, bmp.Width, bmp.Height);
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            this.Member  = mb;
            this._canvas = this.Member.Canvas;
            //this._pm = this.Member.PixelManipulator;
        }
Beispiel #8
0
        private Sprite CreateSpriteWithMemberAndAxis(MemberSpriteBitmap mb, string axis)
        {
            Sprite sp = new Sprite();

            sp.Name   = axis;
            sp.Parent = this.m_sp;
            sp.Member = mb;
            sp.LocZ   = 1000;
            m_aSprites.Add(sp);
            sp.MouseActive = true;
            sp.MouseEvent += new Endogine.Sprite.MouseEventDelegate(sp_MouseEvent);
            return(sp);
        }
Beispiel #9
0
        public MemberSpriteBitmap CreateAsMember(int nTwipSize)
        {
            Bitmap bmp = this.RenderToBitmap(nTwipSize);

            if (bmp == null)
            {
                return(null);
            }
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            mb.Name     = "Flash_" + this.Id.ToString();
            mb.RegPoint = this.Bounds.Location * -1;           //.ToEPoint()
            return(mb);
        }
Beispiel #10
0
 public static void LoadMovie(string a_sFilename, Sprite a_sp)
 {
     FileInfo fileMovie = new FileInfo(a_sFilename);
     FileInfo[] files = fileMovie.Directory.GetFiles();
     foreach (FileInfo file in files)
     {
         System.Type type = GetFileWouldBeMemberType(file.FullName);
         if (type == typeof(MemberSpriteBitmap))
         {
             MemberSpriteBitmap mb = new MemberSpriteBitmap(file.FullName);
         }
     }
     Load(a_sFilename, a_sp);
 }
Beispiel #11
0
        public MeterBar()
        {
            this.m_bMeInvisibleButNotChildren = true;
            this.Name = "MeterBar";
            this.SourceRect = new ERectangle(0,0,1,1);
            m_spBar = new Sprite();
            m_spBar.Parent = this;

            MemberSpriteBitmap mb = new MemberSpriteBitmap(
                Endogine.BitmapHelpers.BitmapHelper.CreateFilledBitmap(new EPoint(1,1), System.Drawing.Color.FromArgb(255,255,255)));
            m_spBar.Member = mb;

            Value = 0;
        }
Beispiel #12
0
        public static void LoadMovie(string a_sFilename, Sprite a_sp)
        {
            FileInfo fileMovie = new FileInfo(a_sFilename);

            FileInfo[] files = fileMovie.Directory.GetFiles();
            foreach (FileInfo file in files)
            {
                System.Type type = GetFileWouldBeMemberType(file.FullName);
                if (type == typeof(MemberSpriteBitmap))
                {
                    MemberSpriteBitmap mb = new MemberSpriteBitmap(file.FullName);
                }
            }
            Load(a_sFilename, a_sp);
        }
Beispiel #13
0
        public MeterBar()
        {
            this.m_bMeInvisibleButNotChildren = true;
            this.Name       = "MeterBar";
            this.SourceRect = new ERectangle(0, 0, 1, 1);
            m_spBar         = new Sprite();
            m_spBar.Parent  = this;

            MemberSpriteBitmap mb = new MemberSpriteBitmap(
                Endogine.BitmapHelpers.BitmapHelper.CreateFilledBitmap(new EPoint(1, 1), System.Drawing.Color.FromArgb(255, 255, 255)));

            m_spBar.Member = mb;

            Value = 0;
        }
Beispiel #14
0
        public static Dictionary <char, int[, ]> CreatePicRefs(Font font, string characters, List <object> pensAndBrushes)
        {
            Bitmap[]     bitmaps = FontGenerator.Generate(font, characters, pensAndBrushes);
            ERectangle[] rects;
            EPoint[]     offsets;

            Bitmap bmpLarge = Endogine.BitmapHelpers.TexturePacking.TreePack(bitmaps, out rects, out offsets);             //.PackBitmapsIntoOneLarge(trimmedBmps, null, out node);

            Dictionary <char, int[, ]> profiles = new Dictionary <char, int[, ]>();

            for (int i = 0; i < bitmaps.Length; i++)
            {
                Bitmap bmp = bitmaps[i];
                int[,] profile = GetProfile(bmp);
                profiles.Add(characters[i], profile);
            }

            MemberSpriteBitmap mb   = new MemberSpriteBitmap(bmpLarge);
            string             name = GetPrefix(font);

            mb.Name = name;

            string[] names = new string[characters.Length];
            for (int i = 0; i < characters.Length; i++)
            {
                names[i] = ((int)characters[i]).ToString();
            }

            //bmpLarge.Save("_fonttest.png");
            //Endogine.BitmapHelpers.TexturePacking.CreateDocFromRectsAndOffsets(rects, offsets, names).Save("_fonttest.xml");

            for (int i = 0; i < bitmaps.Length; i++)
            {
                PicRef pic = new PicRef(name + "_" + characters.Substring(i, 1), mb);
                pic.Offset          = new EPoint(0, offsets[i].Y);       //Ignore the X offset
                pic.SourceRectangle = rects[i];
                //EH.Instance.CastLib.Pictures.AddPicture(pic);
            }

            return(profiles);
        }
Beispiel #15
0
        public void SetLine(EPointF a_pnt1, EPointF a_pnt2)
        {
            m_rct = ERectangleF.FromLTRB(a_pnt1.X, a_pnt1.Y, a_pnt2.X, a_pnt2.Y);
            if (Member != null)
            {
                Member.Dispose();
            }

            Loc = m_rct.Location;

            Bitmap   bmp = new Bitmap((int)Math.Abs(m_rct.Width), (int)Math.Abs(m_rct.Height), PixelFormat.Format24bppRgb);
            Graphics g   = Graphics.FromImage(bmp);

            //Point pnt1 = a_pnt1;
            //if (a_pnt1.Y <= a_pnt2.Y && a_pnt1.X <= a_pnt2.X)
            g.DrawLine(new Pen(Color.White, 1), new Point(0, 0), new Point((int)m_rct.Width, (int)m_rct.Height));
            g.Dispose();

            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            Member = mb;
        }
Beispiel #16
0
        private void CreateDragDropSprite(System.Windows.Forms.DragEventArgs e)
        {
            string[] aInfo = GetDraggedInfo(e);
            if (aInfo == null)
            {
                return;
            }

            if (aInfo[0] == "Member" || aInfo[0] == "File")
            {
                //Endogine.ResourceManagement.MemberBase mb = EH.Instance.CastLib.GetByName(aInfo[1]);
                Endogine.ResourceManagement.MemberBase mb =
                    EH.Instance.CastLib.GetOrCreate(aInfo[1]);

                MemberSpriteBitmap mbSp = (MemberSpriteBitmap)mb;

                this.draggedSprite        = new Sprite();
                this.draggedSprite.Member = mbSp;
                Point pnt = dragToControl.PointToClient(new Point(e.X, e.Y));
                //Point pnt = EH.Instance.Stage.RenderControl.PointToClient(new Point(e.X, e.Y));
                this.draggedSprite.Loc           = new EPointF(pnt);
                EH.Instance.LatestCreatedSprites = null;
                this.draggedSprite.Parent        = EH.Instance.SpriteToAddChildrenTo;
                if (this.draggedSprite.Disposing)
                {
                    //after setting parent, the sprite may have been disposed,
                    //and transformed into another sprite-derived type.
                    //this.draggedSprite = null;
                    this.draggedSprite = EH.Instance.LatestCreatedSprites[0];
                }

                //System.Runtime.Remoting.ObjectHandle obj = System.Activator.CreateInstance("EndoTest01", "Endogine.ResourceManagement.MemberBase");
                //object o = obj.Unwrap();
                //Endogine.ResourceManagement.MemberBase mb = (Endogine.ResourceManagement.MemberBase)o;
            }
        }
Beispiel #17
0
        public Car()
        {
            this._carType = new CarType();
            this._carType.CenterOfMassToFront  = 1;                                                                    //2.5f;
            this._carType.CenterOfMassToRear   = 1;                                                                    // 1.5f;
            this._carType.CenterOfMassToGround = 1;                                                                    // 0.5f;
            this._carType.Wheelbase            = this._carType.CenterOfMassToFront + this._carType.CenterOfMassToRear; //2f;
            this._carType.Mass        = 1500;
            this._carType.Inertia     = 1500;
            this._carType.Width       = 1.5f; // 2;
            this._carType.Length      = 3;    // 4.5f;
            this._carType.WheelLength = 0.7f;
            this._carType.WheelWidth  = 0.3f;

            this._environment                  = new Environment();
            this._environment.Drag             = 5;
            this._environment.Resistance       = 30;
            this._environment.CornerStiffnessR = -5.2f;
            this._environment.CornerStiffnessF = -5.0f;
            this._environment.MaxGrip          = 2;

            float    size = 5;
            Bitmap   bmp  = new Bitmap((int)(this._carType.Width * size), (int)(this._carType.Length * size), System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            Graphics g    = Graphics.FromImage(bmp);

            g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(0, 0, bmp.Width, bmp.Height));
            g.FillRectangle(new SolidBrush(Color.Blue), new Rectangle(0, 3 * bmp.Height / 4, bmp.Width, bmp.Height / 4));
            g.Dispose();
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

            this.Member = mb;

            this._keys = new KeysSteering(Endogine.KeysSteering.KeyPresets.ArrowsSpace);
            this._keys.AddKeyPreset(KeysSteering.KeyPresets.awsdCtrlShift);
            this._keys.ReceiveEndogineKeys(null);
        }
Beispiel #18
0
        public Sprite Execute(Flash player, Sprite spExistingSprite)
        {
            if (spExistingSprite == null)
            {
                Sprite sp = new Sprite();
                sp.TextureFilter = Sprite.TextureFilters.High;
                sp.LocZ          = this.Depth;
                sp.Ink           = RasterOps.ROPs.BgTransparent;
                //sp.Visible = false;
                spExistingSprite = sp;
                //EH.Put("New sprite");
            }
            ushort characterId = this.CharacterId;

            if (this.CharacterId > 0)
            {
                this.Owner.CharacterIdsByDepth[this.Depth] = this.CharacterId;
            }
            else
            {
                characterId = (ushort)this.Owner.CharacterIdsByDepth[this.Depth];
            }
            object character = this.Owner.Characters[characterId];

            //EH.Put("Depth: "+this.Depth.ToString());
            if (character == null)
            {
                throw new Exception("Error - no character. Id: " + characterId.ToString());
            }

            //EH.Put("Char: "+character.GetType().ToString() + " "+characterId.ToString());

            if (this.Matrix != null)
            {
                spExistingSprite.Loc     = new EPointF(this.Matrix.Tx, this.Matrix.Ty);             ///player.TwipSize;
                spExistingSprite.Scaling = new EPointF(this.Matrix.A, this.Matrix.D) / 65535;
                //EH.Put("Loc: "+spExistingSprite.Loc.ToString() + " Sc: "+spExistingSprite.Scaling.ToString());
                //TODO: rotation etc
            }

            MemberSpriteBitmap mb = null;

            if (character != null)
            {
                if (character is Shape.MorphShape)
                {
                    //EH.Put("Ratio:"+this.Ratio);
                    Shape.MorphShape ms = (Shape.MorphShape)character;
                    EPoint           ptOffset;
                    string           sOut = "MS" + ms.Id.ToString() + "-" + this.Ratio.ToString().PadLeft(5, '0') + "d" + this.Depth;
//					if (this.Ratio == 0)
//					{
//						System.Collections.ArrayList morphed = ms.CreateMorphedShape((float)this.Ratio/65535);
//						string s = ms.WriteCommands(morphed);
//						Endogine.Files.FileReadWrite.Write(sOut+".txt", s);
//
//						Shape.MorphShape.Debug = false;
//						if (this.Depth == 6)
//							Shape.MorphShape.Debug = true;
//					}
                    Bitmap bmp = ms.RenderToBitmap(this.Owner.TwipSize, (float)this.Ratio / 65535, out ptOffset);
                    if (bmp == null)
                    {
                        return(null);
                    }
                    mb          = new MemberSpriteBitmap(bmp);
                    mb.RegPoint = ptOffset * -1;
                    //bmp.Save(sOut+".png");
                    //mb.RegPoint = this.Bounds.Location*-1; //.ToEPoint()
                }
                else if (character is Shape.Shape)
                {
                    Shape.Shape shape = (Shape.Shape)character;
                    mb = (MemberSpriteBitmap)this.Owner.Members[shape.Id];
                    if (mb == null)
                    {
//						Bitmap bmp = shape.RenderToBitmap(this.Owner.TwipSize);
//						bmp.Save("S"+shape.Id+"d"+this.Depth+".png");
//
//						string s = shape.WriteCommands(shape.CommandList);
//						Endogine.Files.FileReadWrite.Write("S0d"+this.Depth+".txt", s);

                        mb = shape.CreateAsMember(this.Owner.TwipSize);
                        if (mb != null)
                        {
                            mb.Name = "Flash_" + shape.Id.ToString();
                        }
                        this.Owner.Members[shape.Id] = mb;
                    }
                }
            }
            if (mb == null)
            {
                mb = (MemberSpriteBitmap)EH.Instance.CastLib.GetByName("BallGreen");
            }
            spExistingSprite.Member = mb;

            return(spExistingSprite);
        }
 public void SetMemberBitmap(MemberSpriteBitmap a_mb)
 {
     m_mb = a_mb;
 }
Beispiel #20
0
 public Sprite CreateSprite()
 {
     //TODO: check if we've already created a member!
     System.Drawing.Bitmap bmp = this.Bitmap;
     if (bmp == null)
         return null;
     Sprite sp = new Sprite();
     sp.Name = this.Name;
     sp.LocZ = this.LayerID;
     sp.Blend = this.Opacity;
     //TODO:
     //sp.Loc = layerInfo.ReferencePoint;
     //sp.Ink = layerInfo.BlendKey;
     sp.Color = this.SheetColor;
     MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);
     sp.Member = mb;
     foreach (EffectLayers.Effect effect in this.Effects)
     {
     }
     return sp;
 }
Beispiel #21
0
        private void miGDIPerlin_Click(object sender, System.EventArgs e)
        {
            if (m_spProcedural == null)
            {
                #region Procedural noise bitmap

                Random rnd = new Random();
                Endogine.Procedural.Noise procedural = null;
                switch (rnd.Next(4))
                {
                case 0:
                    procedural           = new Endogine.Procedural.Plasma();
                    procedural.Decay     = 0.5f;
                    procedural.Frequency = 0.1f;
                    procedural.Octaves   = 3;
                    break;

                case 1:
                    procedural           = new Endogine.Procedural.Wood();
                    procedural.Decay     = 0.5f;
                    procedural.Frequency = 0.1f;
                    procedural.Octaves   = 3;
                    ((Endogine.Procedural.Wood)procedural).NumCircles = 5;
                    ((Endogine.Procedural.Wood)procedural).Turbulence = 0.3f;
                    break;

                case 2:
                    procedural           = new Endogine.Procedural.Marble();
                    procedural.Decay     = 0.5f;
                    procedural.Frequency = 0.1f;
                    procedural.Octaves   = 3;
                    ((Endogine.Procedural.Marble)procedural).Periods    = new EPointF(15, 30);
                    ((Endogine.Procedural.Marble)procedural).Turbulence = 3.3f;
                    break;

                case 3:
                    procedural           = new Endogine.Procedural.Noise();
                    procedural.Decay     = 0.5f;
                    procedural.Frequency = 1f;
                    procedural.Octaves   = 3;
                    break;
                }


                Bitmap   bmp;
                Graphics g;
                bmp = new Bitmap(200, 200);
                Endogine.BitmapHelpers.Canvas canvas = Endogine.BitmapHelpers.Canvas.Create(bmp);

                //create a color table that makes it look like lakes and mountains:
                System.Collections.SortedList aColors = new System.Collections.SortedList();
                aColors.Add(0.0, Color.FromArgb(0, 0, 190));
                aColors.Add(0.1, Color.FromArgb(0, 0, 255));
                aColors.Add(0.11, Color.FromArgb(0, 200, 0));
                aColors.Add(0.5, Color.FromArgb(150, 100, 0));
                aColors.Add(1.0, Color.FromArgb(255, 255, 255));
                procedural.SetColors(aColors);
                //write pixels to bitmap:
                canvas.Locked = true;
                procedural.WriteToBitmap(canvas);
                canvas.Locked = false;
                #endregion

                #region Create gradient bitmap
                //Create two gradients using GDI+, and merge them with my CopyPixels for special effects
                Bitmap bmpGradient = new Bitmap(200, 200);
                g = Graphics.FromImage(bmpGradient);
                LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(4, 0, bmpGradient.Width, bmpGradient.Height), Color.FromArgb(255, 0, 0), Color.FromArgb(0, 255, 0), 0f);
                g.FillRectangle(brush, brush.Rectangle);

                Bitmap bmp2 = new Bitmap(bmpGradient.Width, bmpGradient.Height);
                brush = new LinearGradientBrush(new Rectangle(0, 0, bmp2.Width, bmp2.Height), Color.FromArgb(0, 0, 255), Color.FromArgb(0, 0, 0), (float)90);
                Graphics g2 = Graphics.FromImage(bmp2);
                g2.FillRectangle(brush, brush.Rectangle);

                RasterOps.CopyPixels(bmpGradient, bmp2, (int)RasterOps.ROPs.AddPin, 255);
                RasterOps.CopyPixels(bmp, bmpGradient, (int)RasterOps.ROPs.Lightest, 255);
                g.Dispose();
                #endregion

                MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);

                m_spProcedural         = new Sprite();
                m_spProcedural.Name    = "Procedural";
                m_spProcedural.Member  = mb;
                m_spProcedural.Scaling = new EPointF(2, 2);
                m_spProcedural.Ink     = 0;
            }
            else
            {
                //TODO: the bitmap will still remain in memory, should have an "autodispose" option,
                //so that resources gets disposed when no sprites are using them
                m_spProcedural.Dispose();
                m_spProcedural = null;
            }
        }
Beispiel #22
0
        public Brush GetBrush()
        {
            Brush brush = null;

            switch (this.FillStyleType)
            {
            case FillStyleTypes.Solid:
                if (this.MorphPosition > 0)
                {
                    //brush = new SolidBrush(ColorEx.ColorHsb.InterpolateRgbInHsbSpace(Color.Red, Color.Green, this.MorphPosition));
                    brush = new SolidBrush(ColorEx.ColorHsb.InterpolateRgbInHsbSpace(this.Color, this.ColorEnd, this.MorphPosition));
                }
                else
                {
                    brush = new SolidBrush(this.Color);
                }
                break;

            case FillStyleTypes.RadialGradient:
            case FillStyleTypes.LinearGradient:
                //TODO: radial
                if (this.MorphPosition > 0)
                {
                    //TODO: this.GradientEnd this.MatrixEnd
                }
                LinearGradientBrush gradBrush = new LinearGradientBrush(new PointF(0, 0), new PointF(0, 1), Color.White, Color.Black);
                gradBrush.InterpolationColors = this.Gradient;
                gradBrush.Transform           = this.Matrix.GetDotNet();
                brush = gradBrush;
                break;

            case FillStyleTypes.RepeatingBitmap:
            case FillStyleTypes.ClippedBitmap:
            case FillStyleTypes.NonSmoothedRepeatingBitmap:
            case FillStyleTypes.NonSmoothedClippedBitmap:
                MemberSpriteBitmap mb  = (MemberSpriteBitmap)EH.Instance.CastLib.GetByName("Flash_" + this.CharacterId.ToString());
                Bitmap             bmp = mb.Bitmap;

                if (this.MorphPosition > 0)
                {
                    //TODO: this.BitmapFillMatrixEnd
                }
                //TODO: BitmapFillMatrix
                ImageAttributes attr = new ImageAttributes();
                if (this.FillStyleType == FillStyleTypes.RepeatingBitmap ||
                    this.FillStyleType == FillStyleTypes.NonSmoothedRepeatingBitmap)
                {
                    attr.SetWrapMode(WrapMode.Tile);
                }
                else
                {
                    attr.SetWrapMode(WrapMode.Clamp);
                }

                TextureBrush txBrush = new TextureBrush(bmp, new RectangleF(0, 0, 1, 1), attr);
                if (this.Matrix != null)
                {
                    txBrush.Transform = this.Matrix.GetDotNet();
                }
                break;
            }
            return(brush);
        }
Beispiel #23
0
        public override void Init(Record record)
        {
            base.Init (record);

            BinaryFlashReader reader = record.GetDataReader();
            this.Id = reader.ReadUInt16();

            Bitmap bmp = null;
            byte[] alphaData = null;

            if (record.Tag == Flash.Tags.DefineBits) //Jpeg with separate jpeg table
            {
                ushort start = reader.ReadUInt16();
                if (start != 0xd8ff)
                    throw new Exception("JPEG start error");

                MemoryStream stream = new MemoryStream();
                BinaryWriter writer = new BinaryWriter(stream);
                writer.Write(this._jpegTables);
                writer.Write(reader.ReadBytes((int)record.TagLength));
                this._jpegTables = null;
                writer.Close();
                stream.Close();
                byte[] data = stream.ToArray();

                stream = new MemoryStream(data);
                bmp = new Bitmap(stream);
                stream.Close();
            }
            else if (record.Tag == Flash.Tags.DefineBitsJPEG2) //Jpeg with included jpeg table
            {
                byte[] data = reader.ReadBytes((int)record.TagLength);
                MemoryStream stream = new MemoryStream(data);
                bmp = new Bitmap(stream);
                stream.Close();
            }
            else if (record.Tag == Flash.Tags.DefineBitsJPEG3) //Jpeg with alpha
            {
                uint alphaDataOffset = reader.ReadUInt32();
                byte[] data = reader.ReadBytes((int)alphaDataOffset);
                MemoryStream stream = new MemoryStream(data);
                bmp = new Bitmap(stream);
                stream.Close();
                byte[] alphaDataZCompressed = reader.ReadBytes((int)reader.BytesToEnd);
                //TODO: unpack zlib compressed data
            }
            else
            {
                //ZLib-compressed
                bool UseAlpha = (record.Tag==Flash.Tags.DefineBitsLossless2?true:false);
                byte format = reader.ReadByte();
                ushort width = reader.ReadUInt16();
                ushort height = reader.ReadUInt16();
                int stride = ((width+3)/4)*4;

                int numPaletteEntries = 0;
                long size = 0;
                int bpp = 1;
                int bytesPerPaletteEntry = 3;

                if (format==3)
                {
                    numPaletteEntries = reader.ReadByte();
                    if (UseAlpha)
                        bytesPerPaletteEntry = 4;
                    size = stride*height + bytesPerPaletteEntry*numPaletteEntries;
                }
                else
                {
                    if (format==4)
                        bpp = 2;
                    else if (format==5)
                        bpp = 3;
                    size = bpp*width*height;
                }

                size+=248+1024; //Don't know why...

                byte[] compressed = reader.ReadBytes((int)reader.BytesToEnd);
                byte[] decompressed = null; //zlib.decompress(compressed);

                if (format==3)
                {
                    Color[] palette = new Color[numPaletteEntries];
                    for (int i=0; i<numPaletteEntries;i++)
                    {
                        Color clr = Color.White;
                        int ptr = i*bytesPerPaletteEntry;
                        if (bytesPerPaletteEntry==3)
                            clr = Color.FromArgb(decompressed[ptr],decompressed[ptr+1],decompressed[ptr+2]);
                        else
                            clr = Color.FromArgb(decompressed[ptr],decompressed[ptr+1],decompressed[ptr+2],decompressed[ptr+3]);
                        palette[i] = clr;
                    }
                    int pixelPtr = numPaletteEntries*bytesPerPaletteEntry;
                    bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                    //TODO:
                }
                else
                {
                    //TODO:
                }

            }

            if (bmp!=null)
            {
                if (alphaData!=null)
                {
                    //TODO: write to bmp's alpha channel
                }
                MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);
                mb.Name = "Flash_"+this.Id.ToString();
            }

            this.InitDone();
        }
Beispiel #24
0
 public static Canvas Create(MemberSpriteBitmap mb)
 {
     return(mb.Canvas);
     //return Canvas.Create(mb.PixelDataProvider);
 }
Beispiel #25
0
        public void Init()
        {
            this.UIParentSprite        = new Sprite();
            this.UIParentSprite.Parent = this.m_sp.Parent;
            this.UIParentSprite.Name   = "Transformer";

            this.moveSprite             = new Sprite();
            this.moveSprite.Parent      = this.UIParentSprite;
            this.moveSprite.LocZ        = 999;
            this.moveSprite.Name        = "Move";
            this.moveSprite.MouseActive = true;
            this.moveSprite.MouseEvent += new Endogine.Sprite.MouseEventDelegate(moveSprite_MouseEvent);
            this.moveSprite.Cursor      = System.Windows.Forms.Cursors.SizeAll;
            this.m_aSprites.Add(this.moveSprite);

            this.rotateSprite             = new Sprite();
            this.rotateSprite.Parent      = this.UIParentSprite;
            this.rotateSprite.LocZ        = 998;
            this.rotateSprite.Name        = "Rotate";
            this.rotateSprite.MouseActive = true;
            this.rotateSprite.MouseEvent += new Endogine.Sprite.MouseEventDelegate(rotateSprite_MouseEvent);
            this.rotateSprite.Cursor      = System.Windows.Forms.Cursors.Hand;
            this.m_aSprites.Add(this.rotateSprite);


            Bitmap   bmpCross = new Bitmap(8, 8, PixelFormat.Format24bppRgb);
            Graphics g        = Graphics.FromImage(bmpCross);
            Pen      pen      = new Pen(System.Drawing.Color.Gray);

            g.DrawRectangle(pen, 0, 0, bmpCross.Width, bmpCross.Height);
            g.DrawLine(pen, bmpCross.Width / 2, 0, bmpCross.Width / 2, bmpCross.Height);
            g.DrawLine(pen, 0, bmpCross.Height / 2, bmpCross.Width, bmpCross.Height / 2);
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpCross);

            mb.CenterRegPoint();

            this.pivotSprite             = new Sprite();
            this.pivotSprite.Parent      = this.UIParentSprite;
            this.pivotSprite.Name        = "Pivot";
            this.pivotSprite.Member      = mb;
            this.pivotSprite.LocZ        = 1002;
            this.pivotSprite.MouseActive = true;
            this.pivotSprite.MouseEvent += new Endogine.Sprite.MouseEventDelegate(pivotSprite_MouseEvent);
            this.pivotSprite.Cursor      = System.Windows.Forms.Cursors.NoMove2D;
            this.m_aSprites.Add(this.pivotSprite);


            //8 squares for resizing:
            Bitmap bmpSquare = new Bitmap(8, 8, PixelFormat.Format24bppRgb);

            g = Graphics.FromImage(bmpSquare);
            //g.DrawRectangle(new Pen(Color.Gray), 0,0,bmpSquare.Width, bmpSquare.Height);
            g.FillRectangle(new SolidBrush(System.Drawing.Color.Gray), 0, 0, bmpSquare.Width, bmpSquare.Height);
            mb = new MemberSpriteBitmap(bmpSquare);
            mb.CenterRegPoint();

            resizeSquares = new ArrayList();

            for (int y = 0; y < 3; y++)
            {
                for (int x = 0; x < 3; x++)
                {
                    if (x == 1 && y == 1)
                    {
                        continue;
                    }
                    Sprite spSquare = new Sprite();
                    //spSquare.Parent = this.m_sp;
                    spSquare.Parent = this.UIParentSprite;
                    spSquare.Name   = "Size";
                    spSquare.Member = mb;
                    resizeSquares.Add(spSquare);
                    spSquare.Tag         = new EPoint(x, y);
                    spSquare.LocZ        = 1000;
                    spSquare.Ink         = RasterOps.ROPs.BgTransparent;
                    spSquare.MouseActive = true;
                    spSquare.MouseEvent += new Endogine.Sprite.MouseEventDelegate(spSquare_MouseEvent);
                    this.m_aSprites.Add(spSquare);
                }
            }
            ((Sprite)resizeSquares[0]).Cursor = System.Windows.Forms.Cursors.SizeNWSE;
            ((Sprite)resizeSquares[7]).Cursor = System.Windows.Forms.Cursors.SizeNWSE;
            ((Sprite)resizeSquares[2]).Cursor = System.Windows.Forms.Cursors.SizeNESW;
            ((Sprite)resizeSquares[5]).Cursor = System.Windows.Forms.Cursors.SizeNESW;
            ((Sprite)resizeSquares[1]).Cursor = System.Windows.Forms.Cursors.SizeNS;
            ((Sprite)resizeSquares[6]).Cursor = System.Windows.Forms.Cursors.SizeNS;
            ((Sprite)resizeSquares[3]).Cursor = System.Windows.Forms.Cursors.SizeWE;
            ((Sprite)resizeSquares[4]).Cursor = System.Windows.Forms.Cursors.SizeWE;

            this.Update();
        }
Beispiel #26
0
        public static Dictionary<char, int[, ]> CreatePicRefs(Font font, string characters, List<object> pensAndBrushes)
        {
            Bitmap[] bitmaps = FontGenerator.Generate(font, characters, pensAndBrushes);
            ERectangle[] rects;
            EPoint[] offsets;

            Bitmap bmpLarge = Endogine.BitmapHelpers.TexturePacking.TreePack(bitmaps, out rects, out offsets); //.PackBitmapsIntoOneLarge(trimmedBmps, null, out node);

            Dictionary<char, int[,]> profiles = new Dictionary<char, int[,]>();
            for (int i=0; i<bitmaps.Length; i++)
            {
                Bitmap bmp = bitmaps[i];
                int[,] profile = GetProfile(bmp);
                profiles.Add(characters[i], profile);
            }

            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpLarge);
            string name = GetPrefix(font);
            mb.Name = name;

            string[] names = new string[characters.Length];
            for (int i=0; i<characters.Length;i++)
                names[i] = ((int)characters[i]).ToString();

            //bmpLarge.Save("_fonttest.png");
            //Endogine.BitmapHelpers.TexturePacking.CreateDocFromRectsAndOffsets(rects, offsets, names).Save("_fonttest.xml");

            for (int i=0; i<bitmaps.Length; i++)
            {
                PicRef pic = new PicRef(name+"_"+characters.Substring(i,1), mb);
                pic.Offset = new EPoint(0,offsets[i].Y); //Ignore the X offset
                pic.SourceRectangle = rects[i];
                //EH.Instance.CastLib.Pictures.AddPicture(pic);
            }

            return profiles;
        }
Beispiel #27
0
        private void PlayerBall_MouseEvent(Sprite sender, System.Windows.Forms.MouseEventArgs e, MouseEventType t)
        {
            if (t == Sprite.MouseEventType.Down)
            {
                forceMarker.Visible = true;
            }
            else if (t == Sprite.MouseEventType.StillDown)
            {
                MemberSpriteBitmap mb = forceMarker.Member;
                if (mb != null)
                {
                    mb.Dispose();
                }

                //this.MouseDownLoc.X, this.MouseDownLoc.Y
                ERectangleF rctLine = ERectangleF.FromLTRB(this.Loc.X, this.Loc.Y, this.MouseLastLoc.X, this.MouseLastLoc.Y);
                forceVector = rctLine.Size;

                if (rctLine.Width != 0 && rctLine.Height != 0)
                {
                    Bitmap   bmp = new Bitmap((int)Math.Abs(rctLine.Width) + 1, (int)Math.Abs(rctLine.Height) + 1, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                    Graphics g   = Graphics.FromImage(bmp);

                    ERectangleF rctOrigo = rctLine.Copy();
                    rctOrigo.MakeTopLeftAtOrigo();

                    Pen pen = new Pen(Color.Red, 2);
                    g.DrawLine(pen, rctOrigo.X, rctOrigo.Y, rctOrigo.X + rctOrigo.Width, rctOrigo.Y + rctOrigo.Height);
                    g.Dispose();

                    EPointF locOffset = new EPointF();
                    if (rctOrigo.Width < 0)
                    {
                        locOffset.X = rctOrigo.Width;
                    }
                    if (rctOrigo.Height < 0)
                    {
                        locOffset.Y = rctOrigo.Height;
                    }

                    mb = new MemberSpriteBitmap(bmp);
                    forceMarker.Member = mb;
                    forceMarker.Loc    = this.Loc + locOffset;
                }
                else
                {
                    forceMarker.Member = null;
                }
            }
            else if (t == Sprite.MouseEventType.UpOutside || t == Sprite.MouseEventType.Click)
            {
                this.Velocity = forceVector * -0.1f;

                forceMarker.Visible = false;
                MemberSpriteBitmap mb = forceMarker.Member;
                if (mb != null)
                {
                    forceMarker.Member = null;
                    mb.Dispose();
                }
            }
        }
Beispiel #28
0
 public MemberSpriteBitmap CreateAsMember(int nTwipSize)
 {
     Bitmap bmp = this.RenderToBitmap(nTwipSize);
     if (bmp==null)
         return null;
     MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);
     mb.Name = "Flash_"+this.Id.ToString();
     mb.RegPoint = this.Bounds.Location*-1; //.ToEPoint()
     return mb;
 }
Beispiel #29
0
        private void CreateNewTiles(int a_nLocX)
        {
            //use perlin noise to generate wall structure
            ArrayList aNoise = new ArrayList();

            for (int x = 0; x < m_nTileWidth; x++)
            {
                aNoise.Add(0f);
            }
            m_noise.Offset = new EPointF(a_nLocX, 0);
            m_noise.FillArray(aNoise);

            PointF[] aPoints1 = new PointF[m_nTileWidth];
            PointF[] aPoints2 = new PointF[m_nTileWidth];
            for (int x = 0; x < m_nTileWidth; x++)
            {
                m_fCaveHeight *= 0.9997f;
                float fAllowedY = m_rctPlayArea.Height - m_fCaveHeight;
                m_fMidY = ((float)aNoise[x]) * fAllowedY;

                float[] yPair = new float[] { m_fMidY, m_fMidY + m_fCaveHeight };

                aPoints1[x] = new PointF(x, yPair[0]);
                aPoints2[x] = new PointF(x, yPair[1]);

                m_locYPairs.Add(x + a_nLocX, yPair);
            }

            ArrayList aBothTileLines = new ArrayList();

            aBothTileLines.Add(new TileLines(aPoints1));
            aBothTileLines.Add(new TileLines(aPoints2));


            for (int i = 0; i < 2; i++)
            {
                TileLines tileLines = (TileLines)aBothTileLines[i];
                Bitmap    bmp;
                Graphics  g;
                float     fYDiff = tileLines.MaxY - tileLines.MinY + 1;
                bmp = new Bitmap(m_nTileWidth, (int)fYDiff);
                g   = Graphics.FromImage(bmp);
                g.FillRectangle(new SolidBrush(Color.Black), 0, 0, bmp.Width, bmp.Height);
                //g.DrawLines(new Pen(Color.White, 2), tileLines.Points);
                //create polygon from lines:
                PointF[] polygon = tileLines.GetPolygon(i == 1);
                g.FillPolygon(new SolidBrush(Color.White), polygon);
                g.Dispose();

                MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);
                Sprite             sp = new Sprite();
                sp.Member = mb;
                sp.LocX   = a_nLocX;
                sp.LocY   = tileLines.MinY;
                if (i == 0)
                {
                    sp.Name = "Ceiling";
                }
                else
                {
                    sp.Name = "Floor";
                }

                BhReportWhenOutside bh = new BhReportWhenOutside();
                sp.AddBehavior(bh);
                bh.Outside += new CaveHunter.BhReportWhenOutside.OutsideDelegate(bh_Outside);

                m_wallSprites.Add(sp);


                Sprite spFill = new Sprite();
                spFill.MemberName = "BG1";
                if (i == 0)
                {
                    spFill.Rect = new ERectangleF(sp.LocX, m_rctPlayArea.Top, this.m_nTileWidth, sp.Rect.Top);
                }
                else
                {
                    spFill.Rect = new ERectangleF(sp.LocX, sp.Rect.Bottom, this.m_nTileWidth, m_rctPlayArea.Bottom - sp.Rect.Bottom);
                }
                bh = new BhReportWhenOutside();
                spFill.AddBehavior(bh);
                bh.Outside += new CaveHunter.BhReportWhenOutside.OutsideDelegate(bh_Outside);

                m_wallSprites.Add(spFill);
            }
        }
Beispiel #30
0
        public override void Init(Record record)
        {
            base.Init(record);

            BinaryFlashReader reader = record.GetDataReader();

            this.Id = reader.ReadUInt16();

            Bitmap bmp = null;

            byte[] alphaData = null;

            if (record.Tag == Flash.Tags.DefineBits)             //Jpeg with separate jpeg table
            {
                ushort start = reader.ReadUInt16();
                if (start != 0xd8ff)
                {
                    throw new Exception("JPEG start error");
                }


                MemoryStream stream = new MemoryStream();
                BinaryWriter writer = new BinaryWriter(stream);
                writer.Write(this._jpegTables);
                writer.Write(reader.ReadBytes((int)record.TagLength));
                this._jpegTables = null;
                writer.Close();
                stream.Close();
                byte[] data = stream.ToArray();

                stream = new MemoryStream(data);
                bmp    = new Bitmap(stream);
                stream.Close();
            }
            else if (record.Tag == Flash.Tags.DefineBitsJPEG2)             //Jpeg with included jpeg table
            {
                byte[]       data   = reader.ReadBytes((int)record.TagLength);
                MemoryStream stream = new MemoryStream(data);
                bmp = new Bitmap(stream);
                stream.Close();
            }
            else if (record.Tag == Flash.Tags.DefineBitsJPEG3)             //Jpeg with alpha
            {
                uint         alphaDataOffset = reader.ReadUInt32();
                byte[]       data            = reader.ReadBytes((int)alphaDataOffset);
                MemoryStream stream          = new MemoryStream(data);
                bmp = new Bitmap(stream);
                stream.Close();
                byte[] alphaDataZCompressed = reader.ReadBytes((int)reader.BytesToEnd);
                //TODO: unpack zlib compressed data
            }
            else
            {
                //ZLib-compressed
                bool   UseAlpha = (record.Tag == Flash.Tags.DefineBitsLossless2?true:false);
                byte   format   = reader.ReadByte();
                ushort width    = reader.ReadUInt16();
                ushort height   = reader.ReadUInt16();
                int    stride   = ((width + 3) / 4) * 4;

                int  numPaletteEntries = 0;
                long size = 0;
                int  bpp  = 1;
                int  bytesPerPaletteEntry = 3;

                if (format == 3)
                {
                    numPaletteEntries = reader.ReadByte();
                    if (UseAlpha)
                    {
                        bytesPerPaletteEntry = 4;
                    }
                    size = stride * height + bytesPerPaletteEntry * numPaletteEntries;
                }
                else
                {
                    if (format == 4)
                    {
                        bpp = 2;
                    }
                    else if (format == 5)
                    {
                        bpp = 3;
                    }
                    size = bpp * width * height;
                }

                size += 248 + 1024;             //Don't know why...

                byte[] compressed   = reader.ReadBytes((int)reader.BytesToEnd);
                byte[] decompressed = null;                 //zlib.decompress(compressed);

                if (format == 3)
                {
                    Color[] palette = new Color[numPaletteEntries];
                    for (int i = 0; i < numPaletteEntries; i++)
                    {
                        Color clr = Color.White;
                        int   ptr = i * bytesPerPaletteEntry;
                        if (bytesPerPaletteEntry == 3)
                        {
                            clr = Color.FromArgb(decompressed[ptr], decompressed[ptr + 1], decompressed[ptr + 2]);
                        }
                        else
                        {
                            clr = Color.FromArgb(decompressed[ptr], decompressed[ptr + 1], decompressed[ptr + 2], decompressed[ptr + 3]);
                        }
                        palette[i] = clr;
                    }
                    int pixelPtr = numPaletteEntries * bytesPerPaletteEntry;
                    bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                    //TODO:
                }
                else
                {
                    //TODO:
                }
            }

            if (bmp != null)
            {
                if (alphaData != null)
                {
                    //TODO: write to bmp's alpha channel
                }
                MemberSpriteBitmap mb = new MemberSpriteBitmap(bmp);
                mb.Name = "Flash_" + this.Id.ToString();
            }

            this.InitDone();
        }
Beispiel #31
0
        public Sprite Execute(Flash player, Sprite spExistingSprite)
        {
            if (spExistingSprite == null)
            {
                Sprite sp = new Sprite();
                sp.TextureFilter = Sprite.TextureFilters.High;
                sp.LocZ = this.Depth;
                sp.Ink = RasterOps.ROPs.BgTransparent;
                //sp.Visible = false;
                spExistingSprite = sp;
                //EH.Put("New sprite");
            }
            ushort characterId = this.CharacterId;
            if (this.CharacterId > 0)
                this.Owner.CharacterIdsByDepth[this.Depth] = this.CharacterId;
            else
                characterId = (ushort)this.Owner.CharacterIdsByDepth[this.Depth];
            object character = this.Owner.Characters[characterId];

            //EH.Put("Depth: "+this.Depth.ToString());
            if (character==null)
            {
                throw new Exception("Error - no character. Id: " + characterId.ToString());
            }

            //EH.Put("Char: "+character.GetType().ToString() + " "+characterId.ToString());

            if (this.Matrix!=null)
            {
                spExistingSprite.Loc = new EPointF(this.Matrix.Tx, this.Matrix.Ty); ///player.TwipSize;
                spExistingSprite.Scaling = new EPointF(this.Matrix.A, this.Matrix.D)/65535;
                //EH.Put("Loc: "+spExistingSprite.Loc.ToString() + " Sc: "+spExistingSprite.Scaling.ToString());
                //TODO: rotation etc
            }

            MemberSpriteBitmap mb = null;
            if (character!=null)
            {
                if (character is Shape.MorphShape)
                {
                    //EH.Put("Ratio:"+this.Ratio);
                    Shape.MorphShape ms = (Shape.MorphShape)character;
                    EPoint ptOffset;
                    string sOut = "MS"+ms.Id.ToString()+"-"+this.Ratio.ToString().PadLeft(5,'0')+"d"+this.Depth;
            //					if (this.Ratio == 0)
            //					{
            //						System.Collections.ArrayList morphed = ms.CreateMorphedShape((float)this.Ratio/65535);
            //						string s = ms.WriteCommands(morphed);
            //						Endogine.Files.FileReadWrite.Write(sOut+".txt", s);
            //
            //						Shape.MorphShape.Debug = false;
            //						if (this.Depth == 6)
            //							Shape.MorphShape.Debug = true;
            //					}
                    Bitmap bmp = ms.RenderToBitmap(this.Owner.TwipSize, (float)this.Ratio/65535, out ptOffset);
                    if (bmp==null)
                        return null;
                    mb = new MemberSpriteBitmap(bmp);
                    mb.RegPoint = ptOffset*-1;
                    //bmp.Save(sOut+".png");
                    //mb.RegPoint = this.Bounds.Location*-1; //.ToEPoint()
                }
                else if (character is Shape.Shape)
                {
                    Shape.Shape shape = (Shape.Shape)character;
                    mb = (MemberSpriteBitmap)this.Owner.Members[shape.Id];
                    if (mb == null)
                    {
            //						Bitmap bmp = shape.RenderToBitmap(this.Owner.TwipSize);
            //						bmp.Save("S"+shape.Id+"d"+this.Depth+".png");
            //
            //						string s = shape.WriteCommands(shape.CommandList);
            //						Endogine.Files.FileReadWrite.Write("S0d"+this.Depth+".txt", s);

                        mb = shape.CreateAsMember(this.Owner.TwipSize);
                        if (mb!=null)
                            mb.Name = "Flash_"+shape.Id.ToString();
                        this.Owner.Members[shape.Id] = mb;
                    }
                }
            }
            if (mb==null)
                mb = (MemberSpriteBitmap)EH.Instance.CastLib.GetByName("BallGreen");
            spExistingSprite.Member = mb;

            return spExistingSprite;
        }
Beispiel #32
0
        private void CalcSourceRects()
        {
            MemberSpriteBitmap mb = this.Member;

            this._cuttingRectPixels = ERectangle.FromLTRB(
                (int)(this._cuttingRectFract.Left * mb.Size.X),
                (int)(this._cuttingRectFract.Top * mb.Size.Y),
                (int)(this._cuttingRectFract.Right * mb.Size.X),
                (int)(this._cuttingRectFract.Bottom * mb.Size.Y));

            if (this._cuttingRectFract.Width > 0.001f && this._cuttingRectPixels.Width == 0)
            {
                this._cuttingRectPixels.Width++;
            }
            if (this._cuttingRectFract.Height > 0.001f && this._cuttingRectPixels.Height == 0)
            {
                this._cuttingRectPixels.Height++;
            }


            ERectangleF[,] rects = this.CreateRectanglesFromCuttingRect(this._cuttingRectPixels.ToERectangleF(), this.Member.Size.ToEPointF());
            this._midSection     = rects[1, 1].ToERectangle();

            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    ERectangleF rct = rects[x, y];
                    if (rct.Width == 0 || rct.Height == 0)
                    {
                        if (this._spriteArray[x, y] != null)
                        {
                            this._spriteArray[x, y].Dispose();
                            this._spriteArray[x, y] = null;
                        }
                    }
                    else
                    {
                        Sprite sp = this._spriteArray[x, y];
                        if (sp == null)
                        {
                            sp        = new Sprite();
                            sp.Parent = this;
                            sp.Name   = x.ToString() + ";" + y.ToString();
                            this._spriteArray[x, y] = sp;
                        }
                        sp.Member     = this.Member;
                        sp.SourceRect = rct.ToERectangle();
                        sp.RegPoint   = sp.SourceRect.Location;
                    }
                }
            }

            this.m_aSprites.Clear();
            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    if (this._spriteArray[x, y] != null)
                    {
                        this.m_aSprites.Add(this._spriteArray[x, y]);
                    }
                }
            }
        }
 private Sprite CreateSpriteWithMemberAndAxis(MemberSpriteBitmap mb, string axis)
 {
     Sprite sp = new Sprite();
     sp.Name = axis;
     sp.Parent = this.m_sp;
     sp.Member = mb;
     sp.LocZ = 1000;
     m_aSprites.Add(sp);
     sp.MouseActive = true;
     sp.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(sp_MouseEvent);
     return sp;
 }
Beispiel #34
0
 public static Canvas Create(MemberSpriteBitmap mb)
 {
     return mb.Canvas;
     //return Canvas.Create(mb.PixelDataProvider);
 }
        public void Init()
        {
            this.UIParentSprite = new Sprite();
            this.UIParentSprite.Parent = this.m_sp.Parent;
            this.UIParentSprite.Name = "Transformer";

            this.moveSprite = new Sprite();
            this.moveSprite.Parent = this.UIParentSprite;
            this.moveSprite.LocZ = 999;
            this.moveSprite.Name = "Move";
            this.moveSprite.MouseActive = true;
            this.moveSprite.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(moveSprite_MouseEvent);
            this.moveSprite.Cursor = System.Windows.Forms.Cursors.SizeAll;
            this.m_aSprites.Add(this.moveSprite);

            this.rotateSprite = new Sprite();
            this.rotateSprite.Parent = this.UIParentSprite;
            this.rotateSprite.LocZ = 998;
            this.rotateSprite.Name = "Rotate";
            this.rotateSprite.MouseActive = true;
            this.rotateSprite.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(rotateSprite_MouseEvent);
            this.rotateSprite.Cursor = System.Windows.Forms.Cursors.Hand;
            this.m_aSprites.Add(this.rotateSprite);

            Bitmap bmpCross = new Bitmap(8,8,PixelFormat.Format24bppRgb);
            Graphics g = Graphics.FromImage(bmpCross);
            Pen pen = new Pen(System.Drawing.Color.Gray);
            g.DrawRectangle(pen, 0,0,bmpCross.Width, bmpCross.Height);
            g.DrawLine(pen, bmpCross.Width/2,0,bmpCross.Width/2,bmpCross.Height);
            g.DrawLine(pen, 0,bmpCross.Height/2,bmpCross.Width,bmpCross.Height/2);
            MemberSpriteBitmap mb = new MemberSpriteBitmap(bmpCross);
            mb.CenterRegPoint();

            this.pivotSprite = new Sprite();
            this.pivotSprite.Parent = this.UIParentSprite;
            this.pivotSprite.Name = "Pivot";
            this.pivotSprite.Member = mb;
            this.pivotSprite.LocZ = 1002;
            this.pivotSprite.MouseActive = true;
            this.pivotSprite.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(pivotSprite_MouseEvent);
            this.pivotSprite.Cursor = System.Windows.Forms.Cursors.NoMove2D;
            this.m_aSprites.Add(this.pivotSprite);

            //8 squares for resizing:
            Bitmap bmpSquare = new Bitmap(8,8,PixelFormat.Format24bppRgb);
            g = Graphics.FromImage(bmpSquare);
            //g.DrawRectangle(new Pen(Color.Gray), 0,0,bmpSquare.Width, bmpSquare.Height);
            g.FillRectangle(new SolidBrush(System.Drawing.Color.Gray), 0, 0, bmpSquare.Width, bmpSquare.Height);
            mb = new MemberSpriteBitmap(bmpSquare);
            mb.CenterRegPoint();

            resizeSquares = new ArrayList();

            for (int y = 0; y < 3; y++)
            {
                for (int x = 0; x < 3; x++)
                {
                    if (x == 1 && y == 1)
                        continue;
                    Sprite spSquare = new Sprite();
                    //spSquare.Parent = this.m_sp;
                    spSquare.Parent = this.UIParentSprite;
                    spSquare.Name = "Size";
                    spSquare.Member = mb;
                    resizeSquares.Add(spSquare);
                    spSquare.Tag = new EPoint(x,y);
                    spSquare.LocZ = 1000;
                    spSquare.Ink = RasterOps.ROPs.BgTransparent;
                    spSquare.MouseActive = true;
                    spSquare.MouseEvent+=new Endogine.Sprite.MouseEventDelegate(spSquare_MouseEvent);
                    this.m_aSprites.Add(spSquare);
                }
            }
            ((Sprite)resizeSquares[0]).Cursor = System.Windows.Forms.Cursors.SizeNWSE;
            ((Sprite)resizeSquares[7]).Cursor = System.Windows.Forms.Cursors.SizeNWSE;
            ((Sprite)resizeSquares[2]).Cursor = System.Windows.Forms.Cursors.SizeNESW;
            ((Sprite)resizeSquares[5]).Cursor = System.Windows.Forms.Cursors.SizeNESW;
            ((Sprite)resizeSquares[1]).Cursor = System.Windows.Forms.Cursors.SizeNS;
            ((Sprite)resizeSquares[6]).Cursor = System.Windows.Forms.Cursors.SizeNS;
            ((Sprite)resizeSquares[3]).Cursor = System.Windows.Forms.Cursors.SizeWE;
            ((Sprite)resizeSquares[4]).Cursor = System.Windows.Forms.Cursors.SizeWE;

            this.Update();
        }
 public void SetMemberBitmap(MemberSpriteBitmap a_mb)
 {
     m_mb = a_mb;
 }