示例#1
0
 public static BitmapFont FromFile(string path, FormatHint formatHint)
 {
     using (var fileStream = File.OpenRead(path))
     {
         return(FromStream(fileStream, formatHint, true));
     }
 }
示例#2
0
        public void Save(string path, FormatHint formatHint)
        {
            using (var fileStream = File.Create(path))
            {
                switch (formatHint)
                {
                case FormatHint.Binary:
                {
                    using (var binaryWriter = new BinaryWriter(fileStream))
                    {
                        WriteBinary(binaryWriter);
                    }

                    break;
                }

                case FormatHint.XML:
                {
                    var settings = new XmlWriterSettings
                    {
                        Indent      = true,
                        IndentChars = "  "
                    };

                    using (var xmlWriter = XmlWriter.Create(fileStream, settings))
                    {
                        WriteXML(xmlWriter);
                    }

                    break;
                }

                case FormatHint.Text:
                {
                    using (var streamWriter = new StreamWriter(fileStream))
                    {
                        WriteText(streamWriter);
                    }

                    break;
                }

                default:
                    throw new ArgumentOutOfRangeException(nameof(formatHint), formatHint, null);
                }
            }
        }
示例#3
0
        public static BitmapFont FromStream(Stream stream, FormatHint formatHint, bool leaveOpen)
        {
            switch (formatHint)
            {
            case FormatHint.Binary:
                using (var binaryReader = new BinaryReader(stream, Encoding.UTF8, leaveOpen))
                    return(ReadBinary(binaryReader));

            case FormatHint.XML:
                using (var streamReader = new StreamReader(stream, Encoding.UTF8, true, 1024, leaveOpen))
                    return(ReadXML(streamReader));

            case FormatHint.Text:
                using (var streamReader = new StreamReader(stream, Encoding.UTF8, true, 1024, leaveOpen))
                    return(ReadText(streamReader));

            default:
                throw new ArgumentOutOfRangeException(nameof(formatHint), formatHint, null);
            }
        }
示例#4
0
    // #############################################################################################
    // protected methods
    // #############################################################################################

        /** ****************************************************************************************
         * Clears all values.
         ******************************************************************************************/
        protected void        clear()
        {
            Config=         null;
            Priority=       -1;
            Delim=          '\0';
            FormatHints=    0;


            Category._();
            Name    ._();
            Comments._();
            Fullname._();
            ClearValues();

        }
示例#5
0
        Variable   Define( VariableDefinition definition, params Object[] replacements )
        {
            clear();

            Delim=                  definition.Delim;
            FormatHints=            definition.FormatHints;
            FormatAttrAlignment=    definition.FormatAttrAlignment;

            // set Category, Name, Comment
            if(  definition.Category != null ) Category._( definition.Category );
            else                               Category._( definition.CategoryFallback );

            Name    ._( definition.Name    );
            Comments._( definition.Comments );
            if ( definition.DefaultValue != null )
                DefaultValue._()._( definition.DefaultValue );
            else
                DefaultValue.SetNull();

            // replace strings
            if ( replacements != null && replacements.Length > 0 )
            {
                AString search= Fullname;                        // just an alias name
                AString repl=   new AString(); values.Add(repl); // reuse this string later
                for( int i= 0; i < replacements.Length; i++ )
                {
                    search._()._("%")._(i + 1);
                    repl  ._()._( replacements[i] );

                    Category    .SearchAndReplace( search, repl );
                    Name        .SearchAndReplace( search, repl );
                    Comments    .SearchAndReplace( search, repl );
                    DefaultValue.SearchAndReplace( search, repl );
                }
                search._();
           }


            // set full name
            if( Category.IsNotEmpty() )
                Fullname._( Category )._( '_' );
            Fullname._( Name );

            ALIB.ASSERT_WARNING(  Name.IsNotEmpty(), "Empty variable name given" );

            return this;
        }