Example #1
0
 public override void Read(Vault vault, BinaryReader br)
 {
     SubjectHALId = br.ReadUInt32();
     TextHALId    = br.ReadUInt32();
     _pictureText = new Text(Class, Field, Collection);
     _pictureText.Read(vault, br);
 }
Example #2
0
        public override void Read(Vault vault, BinaryReader br)
        {
            _debugNameText = new Text(Class, Field, Collection);
            _debugNameText.Read(vault, br);

            TwoSidedStencilMode = br.ReadBoolean();
            ZEnable             = br.ReadBoolean();
            ZWriteEnable        = br.ReadBoolean();
            StencilEnable       = br.ReadBoolean();
            ZFunc                = br.ReadEnum <State_GPUFunc>();
            StencilFunc          = br.ReadEnum <State_GPUFunc>();
            StencilFuncCCW       = br.ReadEnum <State_GPUFunc>();
            StencilRef           = br.ReadUInt32();
            StencilRefCCW        = br.ReadUInt32();
            StencilMask          = br.ReadUInt32();
            StencilMaskCCW       = br.ReadUInt32();
            StencilWriteMask     = br.ReadUInt32();
            StencilWriteMaskCCW  = br.ReadUInt32();
            StencilFailOp        = br.ReadEnum <State_StencilOp>();
            StencilFailOpCCW     = br.ReadEnum <State_StencilOp>();
            StencilZFailOp       = br.ReadEnum <State_StencilOp>();
            StencilZFailOpCCW    = br.ReadEnum <State_StencilOp>();
            StencilPassOp        = br.ReadEnum <State_StencilOp>();
            StencilPassOpCCW     = br.ReadEnum <State_StencilOp>();
            HiStencilFunc        = br.ReadEnum <State_HiCompare>();
            HiStencilRef         = br.ReadUInt32();
            HiStencilEnable      = br.ReadBoolean();
            HiStencilWriteEnable = br.ReadBoolean();
            br.AlignReader(4);
        }
Example #3
0
 public override void Read(Vault vault, BinaryReader br)
 {
     HAL_ID              = br.ReadUInt32();
     CF_HAL_ID           = br.ReadUInt32();
     Price               = br.ReadInt32();
     ShowroomUnlock      = br.ReadInt32();
     Tier1Price          = br.ReadInt32();
     Tier2Price          = br.ReadInt32();
     Tier3Price          = br.ReadInt32();
     Tier4Price          = br.ReadInt32();
     Tier                = br.ReadByte();
     Tier1ShowroomUnlock = br.ReadByte();
     Tier2ShowroomUnlock = br.ReadByte();
     Tier3ShowroomUnlock = br.ReadByte();
     Tier4ShowroomUnlock = br.ReadByte();
     br.AlignReader(4);
     BrandHALId    = br.ReadUInt32();
     LogoTextureId = br.ReadUInt32();
     DetailHash    = br.ReadUInt32();
     PartDetails   = new VLTPointerContainer <FEPartDetail>(Class, Field, Collection);
     PartDetails.Read(vault, br);
     _offerIdText = new Text(Class, Field, Collection);
     _offerIdText.Read(vault, br);
     IsOnlineLockable = br.ReadBoolean();
     br.AlignReader(4);
 }
Example #4
0
 public override void Read(Vault vault, BinaryReader br)
 {
     Parts = new DynamicSizeArray <RefSpec>(Class, Field, Collection);
     Parts.Read(vault, br);
     _slotNameText = new Text(Class, Field, Collection);
     _slotNameText.Read(vault, br);
 }
Example #5
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _debugNameText = new Text(Class, Field, Collection);
     _debugNameText.Read(vault, br);
     BlendEnable     = br.ReadBoolean();
     AlphaTestEnable = br.ReadBoolean();
     br.AlignReader(4);
     AlphaTestRef   = br.ReadUInt32();
     AlphaTestFunc  = br.ReadEnum <State_BlendFunc>();
     SourceColor    = br.ReadArray(br.ReadEnum <State_BlendInput>, 4);
     DestColor      = br.ReadArray(br.ReadEnum <State_BlendInput>, 4);
     OperationColor = br.ReadArray(br.ReadEnum <State_BlendOp>, 4);
     SourceAlpha    = br.ReadArray(br.ReadEnum <State_BlendInput>, 4);
     DestAlpha      = br.ReadArray(br.ReadEnum <State_BlendInput>, 4);
     OperationAlpha = br.ReadArray(br.ReadEnum <State_BlendOp>, 4);
     BlendFactor    = new Vector4(Class, Field, Collection);
     BlendFactor.Read(vault, br);
     RGBAEnableRT0                = br.ReadArray(br.ReadBoolean, 4);
     RGBAEnableRT1                = br.ReadArray(br.ReadBoolean, 4);
     RGBAEnableRT2                = br.ReadArray(br.ReadBoolean, 4);
     RGBAEnableRT3                = br.ReadArray(br.ReadBoolean, 4);
     AlphaToMaskEnable_XENON      = br.ReadBoolean();
     HiPrecisionBlendEnable_XENON = br.ReadArray(br.ReadBoolean, 4);
     BlendEnable_PS3              = br.ReadArray(br.ReadBoolean, 4);
     BlendFactorF16_PS3           = br.ReadBoolean();
     br.AlignReader(4);
 }
Example #6
0
 public override void Read(Vault vault, BinaryReader br)
 {
     br.ReadUInt32(); // stringhash32(KitName)
     _kitName = new Text(Class, Field, Collection);
     _kitName.Read(vault, br);
     Offset = br.ReadUInt32();
 }
Example #7
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _text = new Text(Class, Field, Collection);
     br.ReadInt64();
     br.ReadUInt32();
     _text.Read(vault, br);
 }
Example #8
0
        public override void Read(Vault vault, BinaryReader br)
        {
            HAL_ID        = br.ReadUInt32();
            CF_HAL_ID     = br.ReadUInt32();
            Price         = br.ReadInt32();
            Drift         = br.ReadBoolean();
            Drag          = br.ReadBoolean();
            Grip          = br.ReadBoolean();
            Speed         = br.ReadBoolean();
            Tier          = br.ReadUInt32();
            BrandHALId    = br.ReadUInt32();
            LogoTextureId = br.ReadUInt32();

            AutoSculptCamera1 = new VLTListContainer <RefSpec>(Class, Field, Collection, br.ReadByte());
            AutoSculptCamera2 = new VLTListContainer <RefSpec>(Class, Field, Collection, br.ReadByte());
            AutoSculptCamera3 = new VLTListContainer <RefSpec>(Class, Field, Collection, br.ReadByte());
            byte b = br.ReadByte();

            if (b != 0)
            {
                throw new InvalidDataException();
            }

            AutoSculptCamera1.Read(vault, br);
            AutoSculptCamera2.Read(vault, br);
            AutoSculptCamera3.Read(vault, br);

            DetailHash = br.ReadUInt32();

            PartDetails = new VLTPointerContainer <FEPartDetail>(Class, Field, Collection);
            PartDetails.Read(vault, br);
            _offerIdText = new Text(Class, Field, Collection);
            _offerIdText.Read(vault, br);
        }
Example #9
0
        public override void Read(Vault vault, BinaryReader br)
        {
            _slotNameText = new Text(Class, Field, Collection);
            Camera        = new RefSpec(Class, Field, Collection);

            _slotNameText.Read(vault, br);
            Camera.Read(vault, br);
        }
Example #10
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _copType = new Text(Class, Field, Collection);
     _copType.Read(vault, br);
     br.ReadUInt32();
     Count  = br.ReadUInt32();
     Chance = br.ReadUInt32();
 }
Example #11
0
        public override void Read(Vault vault, BinaryReader br)
        {
            _keyString = new Text(Class, Field, Collection);
            _keyString.Read(vault, br);

            br.ReadUInt32(); // stringhash32(KeyString)
            Value = br.ReadSingle();
        }
Example #12
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _name = new Text(Class, Field, Collection);
     _name.Read(vault, br);
     mCurveStart    = br.ReadUInt16();
     mCurveCount    = br.ReadUInt16();
     mTriangleStart = br.ReadUInt16();
     mTriangleCount = br.ReadUInt16();
 }
Example #13
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _slotNameText = new Text(Class, Field, Collection);
     _slotNameText.Read(vault, br);
     ModeFlags = br.ReadEnum <StatsModeFlag>();
     SlotDesc  = br.ReadUInt32();
     TuningSliderListString = br.ReadUInt32();
     Stats = br.ReadArray(br.ReadEnum <FEPhysicsStatType>, 2);
 }
        public void Test01_Text_Exception_When_Invalid_Path()
        {
            #region Arrange

            string data;
            textManager.Read("Texto.txt", out data);

            #endregion
        }
Example #15
0
        public override void Read(Vault vault, BinaryReader br)
        {
            Car        = new RefSpec(Class, Field, Collection);
            _eventText = new Text(Class, Field, Collection);

            Car.Read(vault, br);
            _eventText.Read(vault, br);
            MinDelta = br.ReadSingle();
            MaxDelta = br.ReadSingle();
            Shift    = br.ReadSingle();
        }
Example #16
0
 public override void Read(Vault vault, BinaryReader br)
 {
     PartID          = br.ReadInt32();
     _attachPartText = new Text(Class, Field, Collection);
     _attachPartText.Read(vault, br);
     Material = new RefSpec(Class, Field, Collection);
     Material.Read(vault, br);
     _smackableCollisionNameText = new Text(Class, Field, Collection);
     _smackableCollisionNameText.Read(vault, br);
     SmackableCollisionAttribute = new RefSpec(Class, Field, Collection);
     SmackableCollisionAttribute.Read(vault, br);
 }
Example #17
0
        public override void Read(Vault vault, BinaryReader br)
        {
            PresetRide = new RefSpec(Class, Field, Collection);
            PresetRide.Read(vault, br);

            _presetSkinNameText = new Text(Class, Field, Collection);
            _presetSkinNameText.Read(vault, br);

            VehicleCategory = br.ReadUInt32();

            _channelNameText = new Text(Class, Field, Collection);
            _channelNameText.Read(vault, br);
        }
Example #18
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _offerIdText = new Text(Class, Field, Collection);
     _ptrPackages = br.ReadUInt32();
     Cost         = br.ReadSingle();
     Tier1_Cost   = br.ReadSingle();
     Tier2_Cost   = br.ReadSingle();
     Tier3_Cost   = br.ReadSingle();
     Tier4_Cost   = br.ReadSingle();
     _offerIdText.Read(vault, br);
     _packageLength = br.ReadByte();
     br.AlignReader(4);
 }
Example #19
0
        public override void Read(Vault vault, BinaryReader br)
        {
            _actorNameText      = new Text(Class, Field, Collection);
            _carChannelNameText = new Text(Class, Field, Collection);

            _actorNameText.Read(vault, br);
            _carChannelNameText.Read(vault, br);

            IsDriver = br.ReadBoolean();
            br.AlignReader(4);
            ExitAnimSec      = br.ReadSingle();
            IsFacePixelation = br.ReadBoolean();
            br.AlignReader(4);
        }
Example #20
0
        private static Header ReadHeader(FileStream fs)
        {
            Header header = new Header();

            // Read names.
            header.diffuseName = new Text();
            header.diffuseName = Text.Read(fs);

            byte[] byteArray = new byte[Marshal.SizeOf(typeof(Header))];

            fs.Read(byteArray, 0, Marshal.SizeOf(typeof(Header)));
            header = Importer.BinaryToStruct <Header>(byteArray);

            return(header);
        }
Example #21
0
 public override void Read(Vault vault, BinaryReader br)
 {
     _nameText = new Text(Class, Field, Collection);
     _nameText.Read(vault, br);
     Unknown1  = br.ReadUInt32();
     Unknown2  = br.ReadUInt32();
     Unknown3  = br.ReadUInt32();
     Unknown4  = br.ReadSingle();
     Unknown5  = br.ReadUInt32();
     Unknown6  = br.ReadUInt32();
     Unknown7  = br.ReadUInt32();
     Unknown8  = br.ReadUInt32();
     Unknown9  = br.ReadUInt32();
     Unknown10 = br.ReadUInt32();
     Unknown11 = br.ReadUInt32();
     Unknown12 = br.ReadUInt32();
     Unknown13 = br.ReadUInt32();
     Unknown14 = br.ReadUInt32();
     Unknown15 = br.ReadUInt32();
 }
 public override void Read(Vault vault, BinaryReader br)
 {
     ScissorData    = new ScissorData(Class, Field, Collection);
     _debugNameText = new Text(Class, Field, Collection);
     _debugNameText.Read(vault, br);
     CullMode             = br.ReadEnum <State_RasterizerCullMode>();
     DepthBias            = br.ReadSingle();
     ScaleDepthBias       = br.ReadSingle();
     ScissorTestEnable    = br.ReadBoolean();
     PrimitiveResetEnable = br.ReadBoolean();
     br.AlignReader(4);
     PrimitiveResetIndex = br.ReadUInt32();
     ScissorData.Read(vault, br);
     FillMode = br.ReadEnum <State_RasterizerFillMode>();
     MultiSampleAntialiasEnable = br.ReadBoolean();
     br.AlignReader(4);
     MultiSampleMask       = br.ReadUInt32();
     ViewPortEnable        = br.ReadBoolean();
     HalfPixelOffsetEnable = br.ReadBoolean();
     br.AlignReader(4);
     ShadeMode = br.ReadEnum <State_RasterizerShadeMode>();
     FrontFace = br.ReadEnum <State_RasterizerFrontFace>();
 }
Example #23
0
        public void Convert(ICollection <CuttingScheme> output, StreamReader tr)
        {
            // сканирование dxf, загрузка линий и текстов
            int    typeCode;
            string data;

            while (true)
            {
                typeCode = int.Parse(tr.ReadLine());
                data     = tr.ReadLine();
                if (typeCode == 0 && data == "SECTION")
                {
                    typeCode = int.Parse(tr.ReadLine());
                    data     = tr.ReadLine();
                    if (typeCode == 2 && data == "ENTITIES")
                    {
                        break;
                    }
                }
            }

            List <Line> lines = new List <Line>();

            _texts = new LinkedList <Text>();

            while (!tr.EndOfStream)
            {
                typeCode = int.Parse(tr.ReadLine());
                data     = tr.ReadLine();
                if (typeCode == 0 && data == "LINE")
                {
                    Line line = new Line();
                    line.Read(tr);
                    lines.Add(line);
                }
                else if (typeCode == 0 && data == "TEXT")
                {
                    Text text = new Text();
                    text.Read(tr);
                    _texts.AddLast(text);
                }
            }

            // составляем список резов, выбирая линии со стилем HIDDEN
            LinkedList <Line> buffer = new LinkedList <Line>(lines);

            _cuts = new LinkedList <Line>();
            BazUtils.TakeFrom(buffer, _cuts, BazUtils.CutsPredicate);

            // составляем список прямоугольноков, собирая их из линий
            List <Line>            otherLines = new List <Line>();
            LinkedList <Rectangle> rects      = new LinkedList <Rectangle>();

            while (buffer.Count > 0)
            {
                Line line1 = buffer.First.Value;
                buffer.RemoveFirst();
                Line line2 = BazUtils.FindContLine(line1, buffer);
                if (line2 == null)
                {
                    otherLines.Add(line1);
                    continue;
                }
                buffer.Remove(line2);
                Line line3 = BazUtils.FindContLine(line2, buffer);
                if (line3 == null)
                {
                    otherLines.Add(line1);
                    otherLines.Add(line2);
                    continue;
                }
                buffer.Remove(line3);
                Line line4 = BazUtils.FindContLine(line2, buffer);
                if (line4 != null)
                {
                    otherLines.Add(line1);
                    otherLines.Add(line2);
                    otherLines.Add(line3);
                    continue;
                }
                buffer.Remove(line4);

                Rectangle rect = new Rectangle();
                rect.LeftBottom.X = Math.Min(line1.P1.X, line2.P2.X);
                rect.LeftBottom.Y = Math.Min(line1.P1.Y, line2.P2.Y);
                rect.RightTop.X   = Math.Max(line1.P1.X, line2.P2.X);
                rect.RightTop.Y   = Math.Max(line1.P1.Y, line2.P2.Y);
                rects.AddLast(rect);
            }

            BazUtils.BubbleSort <Rectangle>(rects, Rectangle.SquareDescending);
            while (rects.Count > 0)
            {
                // находим прямоугольники листа и его обрезанной части
                Rectangle sheetRect = rects.First.Value;
                rects.RemoveFirst();
                List <Rectangle> internals = new List <Rectangle>();
                BazUtils.TakeFrom <Rectangle>(rects, internals, sheetRect.IsContains);
                if (internals.Count == 0)
                {
                    break;
                }
                Rectangle cutoffRect = internals[0];

                // определяем ширину реза и направление первого реза
                CutMatcher       matcher = new CutMatcher();
                CuttingDirection firstCut;
                matcher.Bounds = cutoffRect;
                Line match = BazUtils.Lookup(_cuts, matcher.MatchHorizontalCut);
                if (match == null)
                {
                    match        = BazUtils.Lookup(_cuts, matcher.MatchVerticalCut);
                    _cutterThick = (cutoffRect.LeftBottom.Y - match.P1.Y) * 2;
                    firstCut     = CuttingDirection.Vertical;
                }
                else
                {
                    _cutterThick = (cutoffRect.LeftBottom.X - match.P1.X) * 2;
                    firstCut     = CuttingDirection.Horizontal;
                }

                // заполняем полученные параметры раскроя
                ParametersCollection pars = new ParametersCollection();
                pars.CutterThickness = (decimal)(_cutterThick * 10.0);
                pars.CutOffLeft      = (decimal)((cutoffRect.LeftBottom.X - sheetRect.LeftBottom.X) * 10.0);
                pars.CutOffBottom    = (decimal)((cutoffRect.LeftBottom.Y - sheetRect.LeftBottom.Y) * 10.0);
                pars.CutOffRight     = (decimal)((sheetRect.RightTop.X - cutoffRect.RightTop.X) * 10.0);
                pars.CutOffTop       = (decimal)((sheetRect.RightTop.Y - cutoffRect.RightTop.Y) * 10.0);
                _scheme                 = new CuttingScheme();
                _scheme.Parameters      = pars;
                _scheme.Sheet           = new Sheet();
                _scheme.Sheet.Thickness = 16;
                _scheme.Height          = (decimal)((sheetRect.RightTop.Y - sheetRect.LeftBottom.Y) * 10.0);
                _scheme.Width           = (decimal)((sheetRect.RightTop.X - sheetRect.LeftBottom.X) * 10.0);
                _scheme.Sheet.Width     = _scheme.Width;
                _scheme.Sheet.Height    = _scheme.Height;

                // составляем сам раскрой
                if (firstCut == CuttingDirection.Vertical)
                {
                    CutHorizontalStrip(_scheme.RootSection, cutoffRect);
                }
                else
                {
                    CutVerticalStrip(_scheme.RootSection, cutoffRect);
                }

                // получаем количество листов из строчки под раскроем
                List <Text> sheetInfo   = new List <Text>();
                TextMatcher textMatcher = new TextMatcher();
                textMatcher.Bounds = sheetRect.HorizStrip(sheetRect.LeftBottom.Y - 30, sheetRect.LeftBottom.Y);
                BazUtils.TakeFrom <Text>(_texts, sheetInfo, textMatcher.IsInside);
                sheetInfo.Sort(Text.PosYAscending);
                string sheetsCountStr = sheetInfo[0].Value;
                int    eqPos          = sheetsCountStr.LastIndexOf('=');
                _scheme.Repetitions = int.Parse(sheetsCountStr.Substring(eqPos + 1, sheetsCountStr.Length - eqPos - 1));

                output.Add(_scheme);
            }
        }
Example #24
0
 public override void Read(Vault vault, BinaryReader br)
 {
     SceneRootType   = br.ReadEnum <eSceneRoot>();
     _markerNameText = new Text(Class, Field, Collection);
     _markerNameText.Read(vault, br);
 }
Example #25
0
        public void Convert(ICollection<CuttingScheme> output, StreamReader tr)
        {
            // сканирование dxf, загрузка линий и текстов
            int typeCode;
            string data;
            while (true)
            {
                typeCode = int.Parse(tr.ReadLine());
                data = tr.ReadLine();
                if (typeCode == 0 && data == "SECTION")
                {
                    typeCode = int.Parse(tr.ReadLine());
                    data = tr.ReadLine();
                    if (typeCode == 2 && data == "ENTITIES")
                    {
                        break;
                    }
                }
            }

            List<Line> lines = new List<Line>();
            _texts = new LinkedList<Text>();

            while (!tr.EndOfStream)
            {
                typeCode = int.Parse(tr.ReadLine());
                data = tr.ReadLine();
                if (typeCode == 0 && data == "LINE")
                {
                    Line line = new Line();
                    line.Read(tr);
                    lines.Add(line);
                }
                else if (typeCode == 0 && data == "TEXT")
                {
                    Text text = new Text();
                    text.Read(tr);
                    _texts.AddLast(text);
                }
            }

            // составляем список резов, выбирая линии со стилем HIDDEN
            LinkedList<Line> buffer = new LinkedList<Line>(lines);
            _cuts = new LinkedList<Line>();
            BazUtils.TakeFrom(buffer, _cuts, BazUtils.CutsPredicate);

            // составляем список прямоугольноков, собирая их из линий
            List<Line> otherLines = new List<Line>();
            LinkedList<Rectangle> rects = new LinkedList<Rectangle>();
            while (buffer.Count > 0)
            {
                Line line1 = buffer.First.Value;
                buffer.RemoveFirst();
                Line line2 = BazUtils.FindContLine(line1, buffer);
                if (line2 == null)
                {
                    otherLines.Add(line1);
                    continue;
                }
                buffer.Remove(line2);
                Line line3 = BazUtils.FindContLine(line2, buffer);
                if (line3 == null)
                {
                    otherLines.Add(line1);
                    otherLines.Add(line2);
                    continue;
                }
                buffer.Remove(line3);
                Line line4 = BazUtils.FindContLine(line2, buffer);
                if (line4 != null)
                {
                    otherLines.Add(line1);
                    otherLines.Add(line2);
                    otherLines.Add(line3);
                    continue;
                }
                buffer.Remove(line4);

                Rectangle rect = new Rectangle();
                rect.LeftBottom.X = Math.Min(line1.P1.X, line2.P2.X);
                rect.LeftBottom.Y = Math.Min(line1.P1.Y, line2.P2.Y);
                rect.RightTop.X = Math.Max(line1.P1.X, line2.P2.X);
                rect.RightTop.Y = Math.Max(line1.P1.Y, line2.P2.Y);
                rects.AddLast(rect);
            }

            BazUtils.BubbleSort<Rectangle>(rects, Rectangle.SquareDescending);
            while (rects.Count > 0)
            {
                // находим прямоугольники листа и его обрезанной части
                Rectangle sheetRect = rects.First.Value;
                rects.RemoveFirst();
                List<Rectangle> internals = new List<Rectangle>();
                BazUtils.TakeFrom<Rectangle>(rects, internals, sheetRect.IsContains);
                if (internals.Count == 0)
                {
                    break;
                }
                Rectangle cutoffRect = internals[0];

                // определяем ширину реза и направление первого реза
                CutMatcher matcher = new CutMatcher();
                CuttingDirection firstCut;
                matcher.Bounds = cutoffRect;
                Line match = BazUtils.Lookup(_cuts, matcher.MatchHorizontalCut);
                if (match == null)
                {
                    match = BazUtils.Lookup(_cuts, matcher.MatchVerticalCut);
                    _cutterThick = (cutoffRect.LeftBottom.Y - match.P1.Y) * 2;
                    firstCut = CuttingDirection.Vertical;
                }
                else
                {
                    _cutterThick = (cutoffRect.LeftBottom.X - match.P1.X) * 2;
                    firstCut = CuttingDirection.Horizontal;
                }

                // заполняем полученные параметры раскроя
                ParametersCollection pars = new ParametersCollection();
                pars.CutterThickness = (decimal)(_cutterThick * 10.0);
                pars.CutOffLeft = (decimal)((cutoffRect.LeftBottom.X - sheetRect.LeftBottom.X) * 10.0);
                pars.CutOffBottom = (decimal)((cutoffRect.LeftBottom.Y - sheetRect.LeftBottom.Y) * 10.0);
                pars.CutOffRight = (decimal)((sheetRect.RightTop.X - cutoffRect.RightTop.X) * 10.0);
                pars.CutOffTop = (decimal)((sheetRect.RightTop.Y - cutoffRect.RightTop.Y) * 10.0);
                _scheme = new CuttingScheme();
                _scheme.Parameters = pars;
                _scheme.Sheet = new Sheet();
                _scheme.Sheet.Thickness = 16;
                _scheme.Height = (decimal)((sheetRect.RightTop.Y - sheetRect.LeftBottom.Y) * 10.0);
                _scheme.Width = (decimal)((sheetRect.RightTop.X - sheetRect.LeftBottom.X) * 10.0);
                _scheme.Sheet.Width = _scheme.Width;
                _scheme.Sheet.Height = _scheme.Height;

                // составляем сам раскрой
                if (firstCut == CuttingDirection.Vertical)
                {
                    CutHorizontalStrip(_scheme.RootSection, cutoffRect);
                }
                else
                {
                    CutVerticalStrip(_scheme.RootSection, cutoffRect);
                }
                
                // получаем количество листов из строчки под раскроем
                List<Text> sheetInfo = new List<Text>();
                TextMatcher textMatcher = new TextMatcher();
                textMatcher.Bounds = sheetRect.HorizStrip(sheetRect.LeftBottom.Y - 30, sheetRect.LeftBottom.Y);
                BazUtils.TakeFrom<Text>(_texts, sheetInfo, textMatcher.IsInside);
                sheetInfo.Sort(Text.PosYAscending);
                string sheetsCountStr = sheetInfo[0].Value;
                int eqPos = sheetsCountStr.LastIndexOf('=');
                _scheme.Repetitions = int.Parse(sheetsCountStr.Substring(eqPos + 1, sheetsCountStr.Length - eqPos - 1));

                output.Add(_scheme);
            }
        }