示例#1
0
        static bloScreen loadScreen(string input, bloFormat format)
        {
            bloScreen screen = null;

            using (Stream stream = File.OpenRead(input)) {
                switch (format)
                {
                case bloFormat.Compact: screen = bloScreen.loadCompact(stream); break;

                case bloFormat.Blo1: screen = bloScreen.loadBlo1(stream); break;

                case bloFormat.Xml: screen = bloScreen.loadXml(stream); break;
                }
            }
            return(screen);
        }
示例#2
0
        internal void load(bloPane parentPane, object source, bloFormat format)
        {
            mParent = parentPane;
            if (mParent != null)
            {
                mParent.mChildren.Add(this);
            }
            mCullMode      = gxCullMode.None;
            mConnectParent = false;
            switch (format)
            {
            case bloFormat.Compact: loadCompact(source as aBinaryReader); break;

            case bloFormat.Blo1: loadBlo1(source as aBinaryReader); break;

            case bloFormat.Xml: loadXml(source as xElement); break;

            default: throw new NotImplementedException("Format is not implemented.");
            }
        }
示例#3
0
        static void doCommandLine(aCommandLine cmd)
        {
            bool      inputSet = false;
            string    input    = null;
            bloFormat format   = bloFormat.Blo1;

            var searchPaths = new List <string>(5);

            bool sizeSet = false;
            int  width = 0, height = 0;

            foreach (var param in cmd)
            {
                switch (param.Name.ToLowerInvariant())
                {
                case "-input": {
                    if (param.Count < 1)
                    {
                        break;
                    }
                    inputSet = true;
                    input    = param[0];
                    format   = (param.Count >= 2 ? parseFormat(param[1]) : bloFormat.Blo1);
                    break;
                }

                case "-search-paths": {
                    foreach (var arg in param)
                    {
                        searchPaths.Add(arg);
                    }
                    break;
                }

                case "-display-size": {
                    if (param.Count != 2)
                    {
                        break;
                    }
                    if (Int32.TryParse(param[0], out width) && Int32.TryParse(param[1], out height))
                    {
                        sizeSet = true;
                    }
                    break;
                }
                }
            }

            if (!inputSet)
            {
                doUsage();
                return;
            }

            if (!File.Exists(input))
            {
                Console.WriteLine("Could not find input file '{0}'", input);
                return;
            }

            var path = Path.GetDirectoryName(Path.GetFullPath(input));
            var file = Path.GetFileName(input);

            createFinder(path, searchPaths);
            var screen = loadScreen(input, format);

            if (screen == null)
            {
                Console.WriteLine("Failed to load input file '{0}'", input);
                return;
            }

            if (sizeSet)
            {
                openViewer(screen, file, width, height);
            }
            else
            {
                openViewer(screen, file);
            }
        }
示例#4
0
        static int doCommandLine(aCommandLine cmd)
        {
            bool      inputSet    = false;
            string    input       = null;
            bloFormat inputFormat = bloFormat.Blo1;

            bool      outputSet    = false;
            string    output       = null;
            bloFormat outputFormat = bloFormat.Blo1;

            var searchPaths = new List <string>(5);

            foreach (var param in cmd)
            {
                switch (param.Name.ToLowerInvariant())
                {
                case "-input": {
                    if (param.Count < 1)
                    {
                        break;
                    }
                    inputSet    = true;
                    input       = param[0];
                    inputFormat = (param.Count >= 2 ? parseFormat(param[1]) : bloFormat.Blo1);
                    break;
                }

                case "-output": {
                    if (param.Count < 1)
                    {
                        break;
                    }
                    outputSet    = true;
                    output       = param[0];
                    outputFormat = (param.Count >= 2 ? parseFormat(param[1]) : bloFormat.Blo1);
                    break;
                }

                case "-search-paths": {
                    foreach (var arg in param)
                    {
                        searchPaths.Add(arg);
                    }
                    break;
                }
                }
            }

            if (!inputSet || !outputSet)
            {
                return(doUsage());
            }

            var inputFile  = Path.GetFullPath(input);
            var outputFile = Path.GetFullPath(output);

            var inputPath  = Path.GetDirectoryName(inputFile);
            var outputPath = Path.GetDirectoryName(outputFile);

            var finder = new bloResourceFinder(inputPath);

            foreach (var searchPath in searchPaths)
            {
                finder.addGlobalPath(searchPath);
            }
            bloResourceFinder.setFinder(finder);

            if (!File.Exists(inputFile))
            {
                Console.WriteLine("Could not find input file '{0}'", inputFile);
                return(1);
            }

            if (inputFile == outputFile)
            {
                Console.WriteLine("Input and output files cannot be the same.");
                return(1);
            }

            if (inputFormat == outputFormat)
            {
                File.Copy(inputFile, outputFile);
                return(0);
            }

            bloScreen screen = null;

            using (var stream = File.OpenRead(inputFile)) {
                switch (inputFormat)
                {
                case bloFormat.Compact: screen = bloScreen.loadCompact(stream); break;

                case bloFormat.Blo1: screen = bloScreen.loadBlo1(stream); break;

                case bloFormat.Xml: screen = bloScreen.loadXml(stream); break;

                default: {
                    Console.WriteLine("Unimplemented input format {0}", inputFormat);
                    return(1);
                }
                }
            }

            if (screen == null)
            {
                Console.WriteLine("Failed to input file '{0}'", inputFile);
                return(1);
            }

            using (var stream = File.Create(outputFile)) {
                switch (outputFormat)
                {
                case bloFormat.Compact: screen.saveCompact(stream); break;

                case bloFormat.Blo1: screen.saveBlo1(stream); break;

                case bloFormat.Xml: screen.saveXml(stream); break;

                default: {
                    Console.WriteLine("Unimplemented output format {0}", outputFormat);
                    return(1);
                }
                }
            }

            return(0);
        }