コード例 #1
0
ファイル: HotFontImporter.cs プロジェクト: klenin/Citrus
        public Font ParseFont(Stream stream, Font font = null)
        {
            var path = Serialization.GetCurrentSerializationPath();

            this.textureSize = GetTextureSize(path);
            using (var reader = new StreamReader(stream)) {
                string text = reader.ReadToEnd();
                lexer = new HotLexer("", text, true);
            }
            var type = lexer.ParseQuotedString();

            if (type != "Hot::Font")
            {
                throw new Exception("Unknown type of object '{0}'", type);
            }
            if (font == null)
            {
                font = new Font();
            }
            AddFontTextures(font, path);
            lexer.ParseToken('{');
            while (lexer.PeekChar() != '}')
            {
                ParseFontProperty(font, lexer.ParseWord());
            }
            lexer.ParseToken('}');
            return(font);
        }
コード例 #2
0
ファイル: HotFontImporter.cs プロジェクト: klenin/Citrus
        public Font ParseFont(string srcPath, string dstPath)
        {
            this.textureSize = GetTextureSize(srcPath);
            this.lexer       = CreateLexer(srcPath);
            var type = lexer.ParseQuotedString();

            if (type != "Hot::Font")
            {
                throw new Exception("Unknown type of object '{0}'", type);
            }
            var font = new Font();

            AddFontTextures(font, srcPath, dstPath);
            lexer.ParseToken('{');
            while (lexer.PeekChar() != '}')
            {
                ParseFontProperty(font, lexer.ParseWord());
            }
            lexer.ParseToken('}');
            return(font);
        }
コード例 #3
0
ファイル: HotSceneImporter.cs プロジェクト: klenin/Citrus
 public Node Import(Stream stream, Node node, INodeThumbnailProvider thumbnailProvider)
 {
     using (TextReader reader = new StreamReader(stream)) {
         string text = reader.ReadToEnd();
         lexer = new HotLexer(sourcePath, text, isTangerine);
         var savedDefaultWidgetSize = Widget.DefaultWidgetSize;
         try {
             Widget.DefaultWidgetSize = new Vector2(100, 100);
             node = ParseNode(node);
         } finally {
             Widget.DefaultWidgetSize = savedDefaultWidgetSize;
         }
         lexer.ReadLine();
         thumbnailProvider?.SetThumbnail(node, ReadThumbnail(lexer));
         if (isTangerine)
         {
             ConvertFolderBeginEndToDescriptors(node);
             ReplaceAnimationEngine(node);
         }
         return(node);
     }
 }
コード例 #4
0
ファイル: HotSceneImporter.cs プロジェクト: klenin/Citrus
        string ReadThumbnail(HotLexer lexer)
        {
            var l = lexer.ReadLine();

            if (l != ThumbnailMarker)
            {
                return(null);
            }
            var sb        = new System.Text.StringBuilder();
            var firstLine = true;

            while ((l = lexer.ReadLine()) != null)
            {
                if (!firstLine)
                {
                    sb.Append('\r');
                    sb.Append('\n');
                }
                firstLine = false;
                sb.Append(l);
            }
            return(sb.ToString());
        }