CSJ2K.j2k.entropy.encoder.PostCompRateAllocator.parseAlayers C# (CSharp) Method

parseAlayers() private static method

Convenience method that parses the 'Alayers' option.
private static parseAlayers ( System params_Renamed, float rate ) : CSJ2K.j2k.entropy.encoder.LayersInfo
params_Renamed System
rate float The overall target bitrate /// ///
return CSJ2K.j2k.entropy.encoder.LayersInfo
        private static LayersInfo parseAlayers(System.String params_Renamed, float rate)
        {
            LayersInfo lyrs;
            SupportClass.StreamTokenizerSupport stok;
            bool islayer, ratepending;
            float r;

            lyrs = new LayersInfo(rate);
            stok = new SupportClass.StreamTokenizerSupport(new System.IO.StringReader(params_Renamed));
            stok.EOLIsSignificant(false);

            try
            {
                stok.NextToken();
            }
            catch (System.IO.IOException e)
            {
                throw new System.InvalidOperationException("An IOException has ocurred where it " + "should never occur");
            }
            ratepending = false;
            islayer = false;
            r = 0; // to keep compiler happy
            while (stok.ttype != SupportClass.StreamTokenizerSupport.TT_EOF)
            {
                switch (stok.ttype)
                {

                    case SupportClass.StreamTokenizerSupport.TT_NUMBER:
                        if (islayer)
                        {
                            // layer parameter
                            try
                            {
                                //UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'"
                                lyrs.addOptPoint(r, (int) stok.nval);
                            }
                            catch (System.ArgumentException e)
                            {
                                //UPGRADE_TODO: The equivalent in .NET for method 'java.lang.Throwable.getMessage' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'"
                                throw new System.ArgumentException("Error in 'Alayers' " + "option: " + e.Message);
                            }
                            ratepending = false;
                            islayer = false;
                        }
                        else
                        {
                            // rate parameter
                            if (ratepending)
                            {
                                // Add pending rate parameter
                                try
                                {
                                    lyrs.addOptPoint(r, 0);
                                }
                                catch (System.ArgumentException e)
                                {
                                    //UPGRADE_TODO: The equivalent in .NET for method 'java.lang.Throwable.getMessage' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'"
                                    throw new System.ArgumentException("Error in 'Alayers' " + "option: " + e.Message);
                                }
                            }
                            // Now store new rate parameter
                            //UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'"
                            r = (float) stok.nval;
                            ratepending = true;
                        }
                        break;

                    case '+':
                        if (!ratepending || islayer)
                        {
                            throw new System.ArgumentException("Layer parameter without " + "previous rate parameter " + "in 'Alayers' option");
                        }
                        islayer = true; // Next number is layer parameter
                        break;

                    case SupportClass.StreamTokenizerSupport.TT_WORD:
                        try
                        {
                            stok.NextToken();
                        }
                        catch (System.IO.IOException e)
                        {
                            throw new System.InvalidOperationException("An IOException has ocurred where it " + "should never occur");
                        }
                        if (stok.ttype != SupportClass.StreamTokenizerSupport.TT_EOF)
                        {
                            throw new System.ArgumentException("'sl' argument of " + "'-Alayers' option must be " + "used alone.");
                        }
                        break;

                    default:
                        throw new System.ArgumentException("Error parsing 'Alayers' " + "option");

                }
                try
                {
                    stok.NextToken();
                }
                catch (System.IO.IOException e)
                {
                    throw new System.InvalidOperationException("An IOException has ocurred where it " + "should never occur");
                }
            }
            if (islayer)
            {
                throw new System.ArgumentException("Error parsing 'Alayers' " + "option");
            }
            if (ratepending)
            {
                try
                {
                    lyrs.addOptPoint(r, 0);
                }
                catch (System.ArgumentException e)
                {
                    //UPGRADE_TODO: The equivalent in .NET for method 'java.lang.Throwable.getMessage' may return a different value. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1043'"
                    throw new System.ArgumentException("Error in 'Alayers' " + "option: " + e.Message);
                }
            }
            return lyrs;
        }