Esempio n. 1
0
 public ViewBox(float minx, float miny, float width, float height, PreserveAspectRatio PSR)
 {
     this.psr    = new PreserveAspectRatio();
     this.min_x  = minx;
     this.min_y  = miny;
     this.width  = width;
     this.height = height;
     this.psr    = PSR;
 }
Esempio n. 2
0
        public Matrix GetViewMatrix(float width, float height, float x, float y)
        {
            float          single5;
            float          single6;
            float          single7;
            float          single8;
            float          single11;
            float          single12;
            float          single13;
            ViewBox        box1    = this;
            Matrix         matrix1 = new Matrix();
            parAlign       align1  = parAlign.none;
            parMeetOrSlice slice1  = parMeetOrSlice.slice;
            float          single1 = 0f;
            float          single2 = 0f;
            float          single3 = 0f;
            float          single4 = 0f;

            single1 = box1.width;
            single2 = box1.height;
            single3 = box1.min_x;
            single4 = box1.min_y;
            PreserveAspectRatio ratio1 = box1.psr;

            align1 = ratio1.Align;
            slice1 = ratio1.Mos;
            float single9  = width / single1;
            float single10 = height / single2;

            if (single9 >= single10)
            {
                single12 = single9;
                single13 = single10;
            }
            else
            {
                single12 = single10;
                single13 = single9;
            }
            if (slice1 == parMeetOrSlice.meet)
            {
                single11 = single13;
                single7  = single1 * single11;
                single8  = single2 * single11;
                switch (align1)
                {
                case parAlign.xMinYMin:
                {
                    single5 = x - single3;
                    single6 = y - single4;
                    goto Label_02FF;
                }

                case parAlign.xMidYMin:
                {
                    single5 = ((width - single7) / 2f) - single3;
                    single6 = y - single4;
                    goto Label_02FF;
                }

                case parAlign.xMaxYMin:
                {
                    single5 = (width - single7) - single3;
                    single6 = y - single4;
                    goto Label_02FF;
                }

                case parAlign.xMinYMid:
                {
                    single5 = x - single3;
                    single6 = ((height - single8) / 2f) - single4;
                    goto Label_02FF;
                }

                case parAlign.xMidYMid:
                {
                    single5 = ((width - single7) / 2f) - single3;
                    single6 = ((height - single8) / 2f) - single4;
                    goto Label_02FF;
                }

                case parAlign.xMaxYMid:
                {
                    single5 = (width - single7) - single3;
                    single6 = ((height - single8) / 2f) - single4;
                    goto Label_02FF;
                }

                case parAlign.xMinYMax:
                {
                    single5 = x - single3;
                    single6 = (height - single8) - single4;
                    goto Label_02FF;
                }

                case parAlign.xMidYMax:
                {
                    single5 = ((width - single7) / 2f) - single3;
                    single6 = (height - single8) - single4;
                    goto Label_02FF;
                }

                case parAlign.xMaxYMax:
                {
                    single5 = (width - single7) - single3;
                    single6 = (height - single8) - single4;
                    goto Label_02FF;
                }
                }
                single5 = x - single3;
                single6 = y - single4;
                single7 = single1;
                single8 = single2;
            }
            else
            {
                single11 = single12;
                single7  = width / single11;
                single8  = height / single11;
                switch (align1)
                {
                case parAlign.xMinYMin:
                {
                    single5 = x + single3;
                    single6 = y + single4;
                    goto Label_02FF;
                }

                case parAlign.xMidYMin:
                {
                    single5 = ((single1 - single7) / 2f) + single3;
                    single6 = y + single4;
                    goto Label_02FF;
                }

                case parAlign.xMaxYMin:
                {
                    single5 = (single1 - single7) + single3;
                    single6 = y + single4;
                    goto Label_02FF;
                }

                case parAlign.xMinYMid:
                {
                    single5 = x + single3;
                    single6 = ((single2 - single8) / 2f) + single4;
                    goto Label_02FF;
                }

                case parAlign.xMidYMid:
                {
                    single5 = ((single1 - single7) / 2f) + single3;
                    single6 = ((single2 - single8) / 2f) + single4;
                    goto Label_02FF;
                }

                case parAlign.xMaxYMid:
                {
                    single5 = (single1 - single7) + single3;
                    single6 = ((single2 - single8) / 2f) + single4;
                    goto Label_02FF;
                }

                case parAlign.xMinYMax:
                {
                    single5 = x + single3;
                    single6 = (single2 - single8) + single4;
                    goto Label_02FF;
                }

                case parAlign.xMidYMax:
                {
                    single5 = ((single1 - single7) / 2f) + single3;
                    single6 = (single2 - single8) + single4;
                    goto Label_02FF;
                }

                case parAlign.xMaxYMax:
                {
                    single5 = (single1 - single7) + single3;
                    single6 = (single2 - single8) + single4;
                    goto Label_02FF;
                }
                }
                single5 = x + single3;
                single6 = y + single4;
                single7 = single1;
                single8 = single2;
            }
Label_02FF:
            if ((width != 0f) && (height != 0f))
            {
                float single14 = width / single7;
                float single15 = height / single8;
                matrix1.Scale(single14, single15);
            }
            matrix1.Translate(single5 - x, single6 - y);
            return(matrix1);
        }