Esempio n. 1
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        public static void DrawBegin(DDPicture picture, double x, double y)
        {
            if (DB.Picture != null)
            {
                throw new DDError();
            }

            double w = picture.Get_W();
            double h = picture.Get_H();

            w /= 2.0;
            h /= 2.0;

            DB.Picture = picture;
            DB.X       = x;
            DB.Y       = y;
            DB.Layout  = new FreeInfo()
            {
                LTX = -w,
                LTY = -h,
                RTX = w,
                RTY = -h,
                RBX = w,
                RBY = h,
                LBX = -w,
                LBY = h,
            };
        }
Esempio n. 2
0
        public DDPicture ToPicture()
        {
            if (this.Picture == null)
            {
                this.Picture = DDPictureLoaders2.Wrapper(this);
            }

            return(this.Picture);
        }
Esempio n. 3
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        public static void DrawCenter(DDPicture picture, double x, double y)
        {
            if (
                x < -(double)IntTools.IMAX || (double)IntTools.IMAX < x ||
                y < -(double)IntTools.IMAX || (double)IntTools.IMAX < y
                )
            {
                throw new DDError();
            }

            DrawBegin(picture, x, y);
            DrawEnd();
        }
Esempio n. 4
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        public static void DrawFree(DDPicture picture, double ltx, double lty, double rtx, double rty, double rbx, double rby, double lbx, double lby)
        {
            FreeInfo layout = new FreeInfo()
            {
                LTX = ltx,
                LTY = lty,
                RTX = rtx,
                RTY = rty,
                RBX = rbx,
                RBY = rby,
                LBX = lbx,
                LBY = lby,
            };

            DrawPic(picture, layout);
        }
Esempio n. 5
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        public static void DrawSimple(DDPicture picture, double x, double y)
        {
            if (
                x < -(double)IntTools.IMAX || (double)IntTools.IMAX < x ||
                y < -(double)IntTools.IMAX || (double)IntTools.IMAX < y
                )
            {
                throw new DDError();
            }

            SimpleInfo layout = new SimpleInfo()
            {
                X = x,
                Y = y,
            };

            DrawPic(picture, layout);
        }
Esempio n. 6
0
        public static DDPicture GetPicture(DDPicture picture, int l, int t, int w, int h)
        {
            if (
                l < 0 || IntTools.IMAX < l ||
                t < 0 || IntTools.IMAX < t ||
                w < 1 || IntTools.IMAX - l < w ||
                h < 1 || IntTools.IMAX - t < h
                )
            {
                throw new DDError();
            }

            // ? 範囲外
            if (
                picture.Get_W() < l + w ||
                picture.Get_H() < t + h
                )
            {
                throw new DDError();
            }

            return(new DDPicture(
                       () =>
            {
                int handle = DX.DerivationGraph(l, t, w, h, picture.GetHandle());

                if (handle == -1)                         // ? 失敗
                {
                    throw new DDError();
                }

                return new DDPicture.PictureInfo()
                {
                    Handle = handle,
                    W = w,
                    H = h,
                };
            },
                       DDPictureLoaderUtils.ReleaseInfo,          // やる事同じなので共用しちゃう。
                       DDDerivationUtils.Add
                       ));
        }
Esempio n. 7
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        private static void DrawPic(DDPicture picture, ILayoutInfo layout_binding)
        {
            DrawInfo info = new DrawInfo()
            {
                Picture = picture,
                Layout  = layout_binding,
                Extra   = Extra,
            };

            if (Extra.TL == null)
            {
                DrawPicMain(info);
            }
            else
            {
                Extra.TL.Add(() =>
                {
                    DrawPicMain(info);
                    return(false);
                });
            }
        }
Esempio n. 8
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        private static void DrawPic(DDPicture picture, ILayoutInfo layout)
        {
            if (Extra.TL == null)
            {
                DrawPic_Main(picture, layout);
            }
            else
            {
                ExtraInfo storedExtra = Extra;

                Extra.TL.Add(() =>
                {
                    ExtraInfo currExtra = Extra;

                    Extra = storedExtra;
                    DrawPic_Main(picture, layout);
                    Extra = currExtra;

                    return(false);
                });
            }
        }
Esempio n. 9
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        public static void DrawRect_LTRB(DDPicture picture, double l, double t, double r, double b)
        {
            if (
                l < -(double)IntTools.IMAX || (double)IntTools.IMAX - 1.0 < l ||
                t < -(double)IntTools.IMAX || (double)IntTools.IMAX - 1.0 < t ||
                r < l + 1.0 || (double)IntTools.IMAX < r ||
                b < t + 1.0 || (double)IntTools.IMAX < b
                )
            {
                throw new DDError();
            }

            RectInfo layout = new RectInfo()
            {
                L = l,
                T = t,
                R = r,
                B = b,
            };

            DrawPic(picture, layout);
        }
Esempio n. 10
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void DrawFree(DDPicture picture, D2Point lt, D2Point rt, D2Point rb, D2Point lb)
 {
     DrawFree(picture, lt.X, lt.Y, rt.X, rt.Y, rb.X, rb.Y, lb.X, lb.Y);
 }
Esempio n. 11
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void DrawBeginRect(DDPicture picture, double l, double t, double w, double h)
 {
     DrawBegin(picture, l + w / 2.0, t + h / 2.0);
     DrawSetSize(w, h);
 }
Esempio n. 12
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void DrawBeginRect_LTRB(DDPicture picture, double l, double t, double r, double b)
 {
     DrawBeginRect(picture, l, t, r - l, b - t);
 }
Esempio n. 13
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        private static void DrawPic_Main(DDPicture picture, ILayoutInfo layout)
        {
            // app > @ enter DrawPic

            // < app

            if (Extra.A != -1)
            {
                SetBlend(DX.DX_BLENDMODE_ALPHA, Extra.A);
            }
            else if (Extra.BlendAdd != -1)
            {
                SetBlend(DX.DX_BLENDMODE_ADD, Extra.BlendAdd);
            }
            else if (Extra.BlendInv)
            {
                SetBlend(DX.DX_BLENDMODE_INVSRC, 255);
            }

            if (Extra.Mosaic)
            {
                DX.SetDrawMode(DX.DX_DRAWMODE_NEAREST);
            }
            if (Extra.Bright.R != -1)
            {
                SetBright(Extra.Bright.R, Extra.Bright.G, Extra.Bright.B);
            }

            {
                FreeInfo u = layout as FreeInfo;

                if (u != null)
                {
                    // ? 失敗
                    if (
                        Extra.IntPos ?
                        DX.DrawModiGraph(
                            DoubleTools.ToInt(u.LTX),
                            DoubleTools.ToInt(u.LTY),
                            DoubleTools.ToInt(u.RTX),
                            DoubleTools.ToInt(u.RTY),
                            DoubleTools.ToInt(u.RBX),
                            DoubleTools.ToInt(u.RBY),
                            DoubleTools.ToInt(u.LBX),
                            DoubleTools.ToInt(u.LBY),
                            picture.GetHandle(),
                            1
                            )
                        != 0
                                                :
                        DX.DrawModiGraphF(
                            (float)u.LTX,
                            (float)u.LTY,
                            (float)u.RTX,
                            (float)u.RTY,
                            (float)u.RBX,
                            (float)u.RBY,
                            (float)u.LBX,
                            (float)u.LBY,
                            picture.GetHandle(),
                            1
                            )
                        != 0
                        )
                    {
                        if (Extra.IgnoreError == false)
                        {
                            throw new DDError();
                        }
                    }
                    goto endDraw;
                }
            }

            {
                RectInfo u = layout as RectInfo;

                if (u != null)
                {
                    // ? 失敗
                    if (
                        Extra.IntPos ?
                        DX.DrawExtendGraph(
                            DoubleTools.ToInt(u.L),
                            DoubleTools.ToInt(u.T),
                            DoubleTools.ToInt(u.R),
                            DoubleTools.ToInt(u.B),
                            picture.GetHandle(),
                            1
                            )
                        != 0
                                                :
                        DX.DrawExtendGraphF(
                            (float)u.L,
                            (float)u.T,
                            (float)u.R,
                            (float)u.B,
                            picture.GetHandle(),
                            1
                            )
                        != 0
                        )
                    {
                        if (Extra.IgnoreError == false)
                        {
                            throw new DDError();
                        }
                    }
                    goto endDraw;
                }
            }

            {
                SimpleInfo u = layout as SimpleInfo;

                if (u != null)
                {
                    // ? 失敗
                    if (
                        Extra.IntPos ?
                        DX.DrawGraph(
                            DoubleTools.ToInt(u.X),
                            DoubleTools.ToInt(u.Y),
                            picture.GetHandle(),
                            1
                            )
                        != 0
                                                :
                        DX.DrawGraphF(
                            (float)u.X,
                            (float)u.Y,
                            picture.GetHandle(),
                            1
                            )
                        != 0
                        )
                    {
                        if (Extra.IgnoreError == false)
                        {
                            throw new DDError();
                        }
                    }
                    goto endDraw;
                }
            }

            throw new DDError();             // ? 不明なレイアウト
endDraw:

            if (Extra.A != -1 || Extra.BlendAdd != -1 || Extra.BlendInv)
            {
                ResetBlend();
            }
            if (Extra.Mosaic)
            {
                DX.SetDrawMode(DX.DX_DRAWMODE_BILINEAR);
            }
            if (Extra.Bright.R != -1)
            {
                ResetBright();
            }

            // app > @ leave DrawPic

            {
                FreeInfo u = layout as FreeInfo;

                if (u != null)
                {
                    double l = u.LTX;
                    double t = u.LTY;
                    double r = u.LTX;
                    double b = u.LTY;

                    l = Math.Min(l, u.RTX);
                    l = Math.Min(l, u.RBX);
                    l = Math.Min(l, u.LBX);

                    t = Math.Min(t, u.RTY);
                    t = Math.Min(t, u.RBY);
                    t = Math.Min(t, u.LBY);

                    r = Math.Max(r, u.RTX);
                    r = Math.Max(r, u.RBX);
                    r = Math.Max(r, u.LBX);

                    b = Math.Max(b, u.RTY);
                    b = Math.Max(b, u.RBY);
                    b = Math.Max(b, u.LBY);

                    Charlotte.Games.NamedCrashMgr.LastDrawedCrash = Charlotte.Common.Options.DDCrashUtils.Rect(new D4Rect(
                                                                                                                   l,
                                                                                                                   t,
                                                                                                                   r - l,
                                                                                                                   b - t
                                                                                                                   ));

                    goto endPostDraw;
                }
            }

            {
                RectInfo u = layout as RectInfo;

                if (u != null)
                {
                    double l = u.L;
                    double t = u.T;
                    double r = u.R;
                    double b = u.B;

                    Charlotte.Games.NamedCrashMgr.LastDrawedCrash = Charlotte.Common.Options.DDCrashUtils.Rect(new D4Rect(
                                                                                                                   l,
                                                                                                                   t,
                                                                                                                   r - l,
                                                                                                                   b - t
                                                                                                                   ));

                    goto endPostDraw;
                }
            }

            {
                SimpleInfo u = layout as SimpleInfo;

                if (u != null)
                {
                    Charlotte.Games.NamedCrashMgr.LastDrawedCrash = Charlotte.Common.Options.DDCrashUtils.Rect(new D4Rect(
                                                                                                                   u.X,
                                                                                                                   u.Y,
                                                                                                                   picture.Get_W(),
                                                                                                                   picture.Get_H()
                                                                                                                   ));

                    goto endPostDraw;
                }
            }

            throw new DDError();             // ? 不明なレイアウト
endPostDraw:
            ;

            // < app
        }
Esempio n. 14
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void DrawRect(DDPicture picture, D4Rect rect)
 {
     DrawRect(picture, rect.L, rect.T, rect.W, rect.H);
 }
Esempio n. 15
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void DrawRect(DDPicture picture, double l, double t, double w, double h)
 {
     DrawRect_LTRB(picture, l, t, l + w, t + h);
 }
Esempio n. 16
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void DrawFree(DDPicture picture, P4Poly poly)
 {
     DrawFree(picture, poly.LT, poly.RT, poly.RB, poly.LB);
 }
Esempio n. 17
0
 public DDCommonEffect(DDPicture picture)
 {
     this.Pictures.Add(picture);
 }
Esempio n. 18
0
 public static void Add(DDPicture derivation)
 {
     Derivations.Add(derivation);
 }
Esempio n. 19
0
        //
        //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
        //
        private static void DrawPic_Main(DDPicture picture, ILayoutInfo layout)
        {
            // app > @ enter DrawPic

            // < app

            if (Extra.A != -1)
            {
                SetBlend(DX.DX_BLENDMODE_ALPHA, Extra.A);
            }
            else if (Extra.BlendAdd != -1)
            {
                SetBlend(DX.DX_BLENDMODE_ADD, Extra.BlendAdd);
            }
            else if (Extra.BlendInv)
            {
                SetBlend(DX.DX_BLENDMODE_INVSRC, 255);
            }

            if (Extra.Mosaic)
            {
                DX.SetDrawMode(DX.DX_DRAWMODE_NEAREST);
            }
            if (Extra.Bright.R != -1)
            {
                SetBright(Extra.Bright.R, Extra.Bright.G, Extra.Bright.B);
            }

            {
                FreeInfo u = layout as FreeInfo;

                if (u != null)
                {
                    // ? 失敗
                    if (
                        Extra.IntPos ?
                        DX.DrawModiGraph(
                            DoubleTools.ToInt(u.LTX),
                            DoubleTools.ToInt(u.LTY),
                            DoubleTools.ToInt(u.RTX),
                            DoubleTools.ToInt(u.RTY),
                            DoubleTools.ToInt(u.RBX),
                            DoubleTools.ToInt(u.RBY),
                            DoubleTools.ToInt(u.LBX),
                            DoubleTools.ToInt(u.LBY),
                            picture.GetHandle(),
                            1
                            )
                        != 0
                                                :
                        DX.DrawModiGraphF(
                            (float)u.LTX,
                            (float)u.LTY,
                            (float)u.RTX,
                            (float)u.RTY,
                            (float)u.RBX,
                            (float)u.RBY,
                            (float)u.LBX,
                            (float)u.LBY,
                            picture.GetHandle(),
                            1
                            )
                        != 0
                        )
                    {
                        if (Extra.IgnoreError == false)
                        {
                            throw new DDError();
                        }
                    }
                    goto endDraw;
                }
            }

            {
                RectInfo u = layout as RectInfo;

                if (u != null)
                {
                    // ? 失敗
                    if (
                        Extra.IntPos ?
                        DX.DrawExtendGraph(
                            DoubleTools.ToInt(u.L),
                            DoubleTools.ToInt(u.T),
                            DoubleTools.ToInt(u.R),
                            DoubleTools.ToInt(u.B),
                            picture.GetHandle(),
                            1
                            )
                        != 0
                                                :
                        DX.DrawExtendGraphF(
                            (float)u.L,
                            (float)u.T,
                            (float)u.R,
                            (float)u.B,
                            picture.GetHandle(),
                            1
                            )
                        != 0
                        )
                    {
                        if (Extra.IgnoreError == false)
                        {
                            throw new DDError();
                        }
                    }
                    goto endDraw;
                }
            }

            {
                SimpleInfo u = layout as SimpleInfo;

                if (u != null)
                {
                    // ? 失敗
                    if (
                        Extra.IntPos ?
                        DX.DrawGraph(
                            DoubleTools.ToInt(u.X),
                            DoubleTools.ToInt(u.Y),
                            picture.GetHandle(),
                            1
                            )
                        != 0
                                                :
                        DX.DrawGraphF(
                            (float)u.X,
                            (float)u.Y,
                            picture.GetHandle(),
                            1
                            )
                        != 0
                        )
                    {
                        if (Extra.IgnoreError == false)
                        {
                            throw new DDError();
                        }
                    }
                    goto endDraw;
                }
            }

            throw new DDError();             // ? 不明なレイアウト
endDraw:

            if (Extra.A != -1 || Extra.BlendAdd != -1 || Extra.BlendInv)
            {
                ResetBlend();
            }
            if (Extra.Mosaic)
            {
                DX.SetDrawMode(DX.DX_DRAWMODE_BILINEAR);
            }
            if (Extra.Bright.R != -1)
            {
                ResetBright();
            }

            // app > @ leave DrawPic

            // < app
        }
Esempio n. 20
0
 //
 //	copied the source file by https://github.com/stackprobe/Factory/blob/master/SubTools/CopyLib.c
 //
 public static void Add(DDPicture picture)
 {
     Pictures.Add(picture);
 }