예제 #1
0
            public override void Write(FileWriter writer, LayoutHeader header)
            {
                long startPos = writer.Position - 8;

                writer.Write(AnimationOrder);
                writer.Write((ushort)Groups.Count);
                writer.Write(uint.MaxValue); //animNameOffset
                writer.Write(uint.MaxValue); //groupNamesOffset
                if (header.VersionMajor >= 8)
                {
                    writer.Write(0); //unk
                }
                writer.Write((ushort)StartFrame);
                writer.Write((ushort)EndFrame);

                writer.Write(ChildBinding);
                writer.Write(UnknownData);

                writer.WriteUint32Offset(startPos + 12, startPos);
                writer.WriteString(Name);
                writer.Align(4);

                writer.WriteUint32Offset(startPos + 16, startPos);
                for (int i = 0; i < Groups.Count; i++)
                {
                    writer.WriteString(Groups[i], 0x14);
                }

                writer.Align(4);
            }
예제 #2
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            long startPos = writer.Position - 8;

            base.Write(writer, header);
            writer.Write(Properties.Count);
            writer.Write(MagnifyX);
            writer.Write(MagnifyY);

            for (int i = 0; i < Properties.Count; i++)
            {
                Properties[i].Write(writer, header, startPos);
            }

            writer.WriteString(LayoutFileName);
            writer.Align(4);

            //  for (int i = 0; i < Properties.Count; i++)
            //     Properties[i].WriteProperties(writer, header, startPos);

            //   for (int i = 0; i < Properties.Count; i++)
            //      Properties[i].WriteUserData(writer, header, startPos);

            for (int i = 0; i < Properties.Count; i++)
            {
                Properties[i].WriteProperties(writer, header, startPos);
                Properties[i].WriteUserData(writer, header, startPos);
                Properties[i].WritePaneInfo(writer, header, startPos);
            }
        }
예제 #3
0
 public override void Write(FileWriter writer, LayoutHeader header)
 {
     writer.Write(DrawFromCenter);
     writer.Seek(3);
     writer.Write(Width);
     writer.Write(Height);
 }
예제 #4
0
            public override void Write(FileWriter writer, LayoutHeader header)
            {
                long pos = writer.Position;

                base.Write(writer, header);
                writer.Write(TextLength);
                writer.Write(MaxTextLength);
                writer.Write(MaterialIndex);
                writer.Write(FontIndex);
                writer.Write(TextAlignment);
                writer.Write(LineAlignment, false);
                writer.Write(_flags);
                writer.Seek(1);
                long _ofsTextPos = writer.Position;

                writer.Write(0); //text offset
                writer.Write(FontForeColor.ToBytes());
                writer.Write(FontBackColor.ToBytes());
                writer.Write(FontSize);
                writer.Write(CharacterSpace);
                writer.Write(LineSpace);

                writer.WriteUint32Offset(_ofsTextPos, pos);
                if (RestrictedTextLengthEnabled)
                {
                    writer.WriteString(Text, MaxTextLength);
                }
                else
                {
                    writer.WriteString(Text, TextLength);
                }
            }
예제 #5
0
        private void LoadRecent([NotNull] IEnumerable <LayoutHeader> layouts)
        {
            Debug.ArgumentNotNull(layouts, nameof(layouts));

            var list = AppHost.Settings.Get(LayoutSelectorRecent, GetStorageKey(), string.Empty) as string;

            if (string.IsNullOrEmpty(list))
            {
                return;
            }

            var items = list.Split('|');

            AddSection(Rocks.Resources.LayoutSelector_LoadRecent_Recently_Used_Layouts);

            foreach (var item in items)
            {
                var parts = item.Split('^');

                var name   = parts[0];
                var itemId = new ItemId(new Guid(parts[1]));

                var layoutUri = new ItemUri(DatabaseUri, itemId);

                var templateHeader = layouts.FirstOrDefault(header => header.LayoutUri == layoutUri);
                if (templateHeader == null)
                {
                    continue;
                }

                var layoutHeader = new LayoutHeader(layoutUri, name, templateHeader.Icon, templateHeader.Path, Rocks.Resources.Recent);

                AddLayoutItem(layoutHeader);
            }
        }
예제 #6
0
        private void WritePanes(FileWriter writer, BasePane pane, LayoutHeader header, ref int sectionCount)
        {
            WriteSection(writer, pane.Signature, pane, () => pane.Write(writer, header));
            sectionCount++;

            if (pane is IUserDataContainer && ((IUserDataContainer)pane).UserData != null &&
                ((IUserDataContainer)pane).UserData.Entries.Count > 0)
            {
                var userData = ((IUserDataContainer)pane).UserData;
                WriteSection(writer, "usd1", userData, () => userData.Write(writer, this));
                sectionCount++;
            }

            if (pane.HasChildern)
            {
                sectionCount += 2;

                //Write start of children section
                WriteSection(writer, "pas1", null);

                foreach (var child in pane.Childern)
                {
                    WritePanes(writer, child, header, ref sectionCount);
                }

                //Write pae1 of children section
                WriteSection(writer, "pae1", null);
            }
        }
예제 #7
0
 public void WritePaneInfo(FileWriter writer, LayoutHeader header, long startPos)
 {
     if (PaneInfo != null)
     {
         writer.WriteUint32Offset(_ofsPos + 8, startPos);
         writer.Write(PaneInfo);
     }
 }
예제 #8
0
 public void WriteProperties(FileWriter writer, LayoutHeader header, long startPos)
 {
     if (Property != null)
     {
         writer.WriteUint32Offset(_ofsPos, startPos);
         Header.WriteSection(writer, Property.Signature, Property, () => Property.Write(writer, header));
     }
 }
예제 #9
0
 public void WriteUserData(FileWriter writer, LayoutHeader header, long startPos)
 {
     if (UserData != null)
     {
         writer.WriteUint32Offset(_ofsPos + 4, startPos);
         UserData.Write(writer, header);
     }
 }
예제 #10
0
 public override void Write(FileWriter writer, LayoutHeader header)
 {
     base.Write(writer, header);
     writer.Write(ColorTopLeft.ToBytes());
     writer.Write(ColorTopRight.ToBytes());
     writer.Write(ColorBottomLeft.ToBytes());
     writer.Write(ColorBottomRight.ToBytes());
     writer.Write(MaterialIndex);
     writer.Write(TexCoords != null ? TexCoords.Length : 0);
 }
예제 #11
0
        public void Write(FileWriter writer, LayoutHeader header)
        {
            _pos = writer.Position;

            writer.Write(0); //nameOffset
            writer.Write(0); //dataOffset
            writer.Write((ushort)GetDataLength());
            writer.Write(Type, false);
            writer.Write(Unknown);
        }
예제 #12
0
 public override void Write(FileWriter writer, LayoutHeader header)
 {
     writer.Write(DrawFromCenter);
     writer.Seek(3);
     writer.Write(Width);
     writer.Write(Height);
     writer.Write(MaxPartsWidth);
     writer.Write(MaxPartsHeight);
     writer.WriteString(Name);
 }
예제 #13
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            writer.WriteString(Name, 0x10);
            writer.Write((ushort)Panes.Count);
            writer.Seek(2);

            for (int i = 0; i < Panes.Count; i++)
            {
                writer.WriteString(Panes[i], 0x10);
            }
        }
예제 #14
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            long startPos = writer.Position - 8;

            if (!Edited)
            {
                writer.Write(this.Data);
                return;
            }

            writer.Write((ushort)Entries.Count);
            writer.Write((ushort)0);

            long enryPos = writer.Position;

            for (int i = 0; i < Entries.Count; i++)
            {
                ((USD1Entry)Entries[i]).Write(writer, header);
            }

            for (int i = 0; i < Entries.Count; i++)
            {
                writer.WriteUint32Offset(Entries[i]._pos + 4, Entries[i]._pos);
                switch (Entries[i].Type)
                {
                case UserDataType.String:
                    writer.WriteString(Entries[i].GetString());
                    break;

                case UserDataType.Int:
                    writer.Write(Entries[i].GetInts());
                    break;

                case UserDataType.Float:
                    writer.Write(Entries[i].GetFloats());
                    break;

                case UserDataType.StructData:
                    foreach (UserDataStruct structure in Entries[i].GetStructs())
                    {
                        structure.Write(writer, header);
                    }
                    break;
                }
            }

            //Write strings after
            for (int i = 0; i < Entries.Count; i++)
            {
                writer.WriteUint32Offset(Entries[i]._pos, Entries[i]._pos);
                writer.WriteString(Entries[i].Name);
            }
        }
예제 #15
0
 public override void Write(FileWriter writer, LayoutHeader header)
 {
     writer.Write(_flags1);
     writer.Write(Alpha);
     writer.Write(PaneMagFlags);
     writer.WriteString(Name, 0x18);
     writer.Write(Translate);
     writer.Write(Rotate);
     writer.Write(Scale);
     writer.Write(Width);
     writer.Write(Height);
 }
예제 #16
0
 public void Write(FileWriter writer, LayoutHeader header, long startPos)
 {
     writer.WriteString(Name, 0x18);
     writer.Write(UsageFlag);
     writer.Write(BasicUsageFlag);
     writer.Write(MaterialUsageFlag);
     writer.Write((byte)0);
     //Reserve offset spaces
     _ofsPos = writer.Position;
     writer.Write(0); //Property Offset
     writer.Write(0); //External User Data
     writer.Write(0); //Panel Info Offset
 }
예제 #17
0
 public void WriteUserData(FileWriter writer, LayoutHeader header, long startPos)
 {
     if (UserData != null)
     {
         writer.WriteUint32Offset(_ofsPos + 4, startPos);
         long pos = writer.Position;
         writer.WriteSignature("usd1");
         writer.Write(uint.MaxValue);
         UserData.Write(writer, header);
         writer.Align(4);
         writer.WriteSectionSizeU32(pos + 4, pos, writer.Position);
     }
 }
예제 #18
0
        public async Task Create(CreateLayoutHeaderDto input)
        {
            var header = _dividingplanheaderRepository.Get(input.DividingPlanHeaderId);

            var @layoutheader = input.MapTo <LayoutHeader>();

            @layoutheader.TenantId = AbpSession.GetTenantId();

            @layoutheader = LayoutHeader.Create(input.LayoutJson, input.Remark);

            header.LayoutHeaders.Add(@layoutheader);

            await CurrentUnitOfWork.SaveChangesAsync();
        }
예제 #19
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            byte originL = (byte)OriginXMap.FirstOrDefault(x => x.Value == originX).Key;
            byte originH = (byte)OriginYMap.FirstOrDefault(x => x.Value == originY).Key;

            writer.Write(_flags1);
            writer.Write((byte)(((int)originL) + ((int)originH * 3)));
            writer.Write(Alpha);
            writer.Write(PaneMagFlags);
            writer.WriteString(Name, 0x18);
            writer.Write(Translate);
            writer.Write(Rotate);
            writer.Write(Scale);
            writer.Write(Width);
            writer.Write(Height);
        }
예제 #20
0
        void TryScrollToHeader(LayoutElement element)
        {
            LayoutHeader header = element as LayoutHeader;

            if (header == null)
            {
                header = element.GetParentByType <LayoutHeader>();
            }
            if (header == null)
            {
                return;
            }
            LayoutPageArea nearestPageArea = ((LayoutPage)header.Parent).PageAreas.First;

            ScrollToPosition(nearestPageArea.Range.Start);
        }
예제 #21
0
        private ListBoxItem AddLayoutItem([NotNull] LayoutHeader layoutHeader)
        {
            Debug.ArgumentNotNull(layoutHeader, nameof(layoutHeader));

            var item = new ListBoxItem
            {
                Tag     = layoutHeader,
                Content = layoutHeader.Name,
                ToolTip = layoutHeader.Path,
                Margin  = new Thickness(16, 0, 0, 0)
            };

            Layouts.Items.Add(item);

            return(item);
        }
예제 #22
0
        public static void GetLayoutsAsync([NotNull] this DataService dataService, [NotNull] DatabaseUri databaseUri, [NotNull] GetItemsCompleted <LayoutHeader> completed)
        {
            Assert.ArgumentNotNull(dataService, nameof(dataService));
            Assert.ArgumentNotNull(databaseUri, nameof(databaseUri));
            Assert.ArgumentNotNull(completed, nameof(completed));

            ExecuteCompleted c = delegate(string response, ExecuteResult executeResult)
            {
                if (!DataService.HandleExecute(response, executeResult))
                {
                    completed(Enumerable.Empty <LayoutHeader>());
                    return;
                }

                var list = new List <LayoutHeader>();

                var doc = GetDocument(response);
                if (doc == null)
                {
                    completed(Enumerable.Empty <LayoutHeader>());
                    return;
                }

                var root = doc.Root;
                if (root == null)
                {
                    completed(Enumerable.Empty <LayoutHeader>());
                    return;
                }

                foreach (var child in root.Elements())
                {
                    var itemId = new ItemId(new Guid(child.GetAttributeValue("id")));

                    var itemUri = new ItemUri(databaseUri, itemId);

                    var parentPath = (Path.GetDirectoryName(child.GetAttributeValue("path")) ?? string.Empty).Replace("\\", "/");
                    var layout     = new LayoutHeader(itemUri, child.Value, child.GetAttributeValue("icon"), child.GetAttributeValue("path"), parentPath);

                    list.Add(layout);
                }

                completed(list);
            };

            dataService.ExecuteAsync("Layouts.GetLayouts", c, databaseUri.DatabaseName.ToString());
        }
예제 #23
0
            public override void Write(FileWriter writer, LayoutHeader header)
            {
                writer.Write((ushort)Fonts.Count);
                writer.Seek(2);

                //Fill empty spaces for offsets later
                long pos = writer.Position;

                writer.Write(new uint[Fonts.Count]);

                //Save offsets and strings
                for (int i = 0; i < Fonts.Count; i++)
                {
                    writer.WriteUint32Offset(pos + (i * 4), pos);
                    writer.WriteString(Fonts[i]);
                }
            }
예제 #24
0
            public override void Write(FileWriter writer, LayoutHeader header)
            {
                writer.Write((ushort)Textures.Count);
                writer.Seek(2);

                //Fill empty spaces for offsets later and also add another for padding
                long pos = writer.Position;

                writer.Write(new uint[Textures.Count * 2]);

                //Save offsets and strings
                for (int i = 0; i < Textures.Count; i++)
                {
                    writer.WriteUint32Offset(pos + (i * 8), pos);
                    writer.WriteString(Textures[i]);
                }
            }
예제 #25
0
 public override void Write(FileWriter writer, LayoutHeader header)
 {
     base.Write(writer, header);
     writer.Write(ColorTopLeft.ToBytes());
     writer.Write(ColorTopRight.ToBytes());
     writer.Write(ColorBottomLeft.ToBytes());
     writer.Write(ColorBottomRight.ToBytes());
     writer.Write(MaterialIndex);
     writer.Write(TexCoords != null ? (byte)TexCoords.Length : (byte)0);
     writer.Write((byte)0);
     for (int i = 0; i < TexCoords.Length; i++)
     {
         writer.Write(TexCoords[i].TopLeft);
         writer.Write(TexCoords[i].TopRight);
         writer.Write(TexCoords[i].BottomLeft);
         writer.Write(TexCoords[i].BottomRight);
     }
 }
예제 #26
0
            public void Write(FileWriter writer, LayoutHeader header)
            {
                long startPos = writer.Position;

                writer.WriteString(Name, 0x14);
                writer.Write((byte)Tags.Count);
                writer.Write(Target, false);
                writer.Write((ushort)0);
                if (Tags.Count > 0)
                {
                    writer.Write(new uint[Tags.Count]);
                    for (int i = 0; i < Tags.Count; i++)
                    {
                        writer.WriteUint32Offset(startPos + 32 + (i * 4), startPos);
                        ((PaiTag)Tags[i]).Write(writer, header, Target);
                    }
                }
            }
예제 #27
0
            public void Write(FileWriter writer, LayoutHeader header, AnimationTarget target)
            {
                if ((byte)target == 2)
                {
                    writer.Write(Unknown);
                }

                long startPos = writer.Position;

                writer.WriteSignature(Tag);
                writer.Write((byte)Entries.Count);
                writer.Seek(3);
                writer.Write(new uint[Entries.Count]);
                for (int i = 0; i < Entries.Count; i++)
                {
                    writer.WriteUint32Offset(startPos + 8 + (i * 4), startPos);
                    ((BxlanPaiTagEntry)Entries[i]).Write(writer, header);
                }
            }
예제 #28
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            if (header.Version >= 0x05020000)
            {
                writer.WriteString(Name, 34);
                writer.Write((ushort)Panes.Count);
            }
            else
            {
                writer.WriteString(Name, 24);
                writer.Write((ushort)Panes.Count);
                writer.Seek(2);
            }

            for (int i = 0; i < Panes.Count; i++)
            {
                writer.WriteString(Panes[i], 24);
            }
        }
예제 #29
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            long pos = writer.Position - 8;

            writer.Write((ushort)Materials.Count);
            writer.Seek(2);

            long _ofsPos = writer.Position;

            //Fill empty spaces for offsets later
            writer.Write(new uint[Materials.Count]);

            //Save offsets and strings
            for (int i = 0; i < Materials.Count; i++)
            {
                writer.WriteUint32Offset(_ofsPos + (i * 4), pos);
                ((Material)Materials[i]).Write(writer, header);
                writer.Align(4);
            }
        }
예제 #30
0
        public override void Write(FileWriter writer, LayoutHeader header)
        {
            long pos = writer.Position - 8;

            base.Write(writer, header);
            writer.Write(TextLength);
            writer.Write(MaxTextLength);
            writer.Write(MaterialIndex);
            writer.Write(FontIndex);
            writer.Write(TextAlignment);
            writer.Write(LineAlignment, false);
            writer.Write(_flags);
            writer.Seek(1);
            long _ofsTextPos = writer.Position;

            writer.Write(0); //text offset
            writer.Write(FontTopColor.ToBytes());
            writer.Write(FontBottomColor.ToBytes());
            writer.Write(FontSize);
            writer.Write(CharacterSpace);
            writer.Write(LineSpace);

            if (Text != null)
            {
                Encoding encoding = Encoding.Unicode;
                if (writer.ByteOrder == Syroot.BinaryData.ByteOrder.BigEndian)
                {
                    encoding = Encoding.BigEndianUnicode;
                }

                writer.WriteUint32Offset(_ofsTextPos, pos);
                if (RestrictedTextLengthEnabled)
                {
                    writer.WriteString(Text, MaxTextLength, encoding);
                }
                else
                {
                    writer.WriteString(Text, TextLength, encoding);
                }
            }
        }