Beispiel #1
0
        Action ReadAction()
        {
            var action = new Action();

            int index = ReadInt16();

            DebugOutput.Dump("Index: " + index);

            action.ShiftKey   = ReadByte();
            action.CommandKey = ReadByte();
            action.ColorIndex = ReadInt16();
            action.Name       = ReadUnicodeString();
            action.Expanded   = ReadByte();

            action.NrOfChildren = ReadInt32();
            DebugOutput.Dump("{0} ({1})", action.Name, action.NrOfChildren);

            for (int i = 0; i < action.NrOfChildren; i++)
            {
                DebugOutput.Level++;
                var actionEvent = ReadActionEvent();
                if (actionEvent != null)
                {
                    action.Add(actionEvent);
                }
                else
                {
                    ParsingFailed++;
                    break;
                }
                DebugOutput.Level--;
            }
            return(action);
        }
Beispiel #2
0
        public override void Parse(ActionParser parser)
        {
            if (!parser.PreSix)
            {
                ClassID = parser.ReadTokenOrUnicodeString();
            }
            ClassID2 = parser.ReadTokenOrString();
            Key      = parser.ReadTokenOrUnicodeString();

            DebugOutput.Dump("Name: c = {ClassID}, c2 = {ClassID2}, k = {Key}");
        }
Beispiel #3
0
        public override void Parse(ActionParser parser)
        {
            if (!parser.PreSix)
            {
                ClassID = parser.ReadTokenOrUnicodeString();
            }
            Key   = parser.ReadTokenOrString();
            Type  = parser.ReadTokenOrString();
            Value = parser.ReadTokenOrString();

            DebugOutput.Dump($"Enmr: c = {ClassID}, k = {Key}, t = {Type}, v = {Value}");
        }
Beispiel #4
0
        public override void Parse(ActionParser parser)
        {
            if (!parser.PreSix)
            {
                ClassID = parser.ReadTokenOrUnicodeString();
            }
            Key   = parser.ReadTokenOrString();
            Type  = parser.ReadTokenOrString();
            Value = parser.ReadTokenOrString();

            DebugOutput.Dump("Enmr: c = {0}, k = {1}, t = {2}, v = {3}",
                             ClassID, Key, Type, Value);
        }
Beispiel #5
0
        public override void Parse(ActionParser parser)
        {
            int number = parser.ReadInt32();

            DebugOutput.Dump("number: " + number);

            for (int i = 0; i < number; i++)
            {
                string type = parser.ReadFourByteString();
                DebugOutput.Dump("type: " + type);

                Parameter parameter = null;

                switch (type)
                {
                case "Objc":
                    parameter = new ObjcParameter();
                    break;

                case "long":
                    parameter = new LongParameter();
                    break;

                case "obj":
                    parameter = new ReferenceParameter();
                    break;

                default:
                    Console.WriteLine("ReadVlLs: type {0} unknown!", type);
                    return;
                }

                if (parameter != null)
                {
                    DebugOutput.Level++;
                    parameter.Parse(parser);
                    DebugOutput.Level--;
                    Set.Add(parameter);
                }
            }
        }
Beispiel #6
0
        public override void Parse(ActionParser parser)
        {
            if (parser.PreSix)
            {
                _classID2 = parser.ReadFourByteString();
            }
            else
            {
                _classID = parser.ReadUnicodeString();
                DebugOutput.Dump("ClassID: " + _classID);
                _classID2 = parser.ReadTokenOrString();
            }

            DebugOutput.Dump("ClassID2: " + _classID2);

            int numberOfItems = parser.ReadInt32();

            DebugOutput.Dump("NumberOfItems: " + numberOfItems);

            DebugOutput.Level++;
            _children.Parse(parser, numberOfItems);
            DebugOutput.Level--;
        }
Beispiel #7
0
        public override void Parse(ActionParser parser)
        {
            if (parser.PreSix)
            {
                _classID2 = parser.ReadTokenOrString();
                DebugOutput.Dump("ClassID2: " + _classID2);

                int numberOfItems = parser.ReadInt32();
                DebugOutput.Dump("NumberOfItems: " + numberOfItems);
            }
            else
            {
                int numberOfItems = parser.ReadInt32();
                DebugOutput.Dump("NumberOfItems: " + numberOfItems);

                _classID = parser.ReadUnicodeString();
                DebugOutput.Dump("ClassID: " + _classID);

                _classID2 = parser.ReadTokenOrString();
                DebugOutput.Dump("ClassID2: " + _classID2);
            }

            int numberOfFields = parser.ReadInt32();

            DebugOutput.Dump("NumberOfFields: " + numberOfFields);

            for (int i = 0; i < numberOfFields; i++)
            {
                string key  = parser.ReadTokenOrString();
                string type = parser.ReadFourByteString();
                _units = parser.ReadFourByteString();

                DebugOutput.Dump("key: {0} ({1}) {2}", key, type, _units);

                int numberOfItems = parser.ReadInt32();
                DebugOutput.Dump("NumberOfItems2: " + numberOfItems);

                switch (type)
                {
                case "UnFl":
                    for (int j = 0; j < numberOfItems; j++)
                    {
                        double val = parser.ReadDouble();

                        Coordinate <double> c;
                        if (i == 0)
                        {
                            c = new Coordinate <double>();
                            _value.Add(c);
                            c.X = val;
                        }
                        else
                        {
                            _value[j].Y = val;
                        }
                    }
                    break;

                default:
                    Console.WriteLine("ObAr:Unknown type: " + type);
                    break;
                }
            }
        }
Beispiel #8
0
        public Parameter ReadItem()
        {
            string key;

            if (PreSix)
            {
                key = ReadFourByteString();
            }
            else
            {
                key = ReadTokenOrString();
            }

            string type = ReadFourByteString();

            DebugOutput.Dump($"key: {key} ({type})");

            Parameter parameter = null;

            switch (type)
            {
            case "alis":
                parameter = new AliasParameter();
                break;

            case "UntF":
                parameter = new DoubleParameter(true);
                break;

            case "bool":
                parameter = new BoolParameter();
                break;

            case "doub":
                parameter = new DoubleParameter(false);
                break;

            case "enum":
                parameter = new EnumParameter();
                break;

            case "obj":
                parameter = new ReferenceParameter();
                break;

            case "VlLs":
                parameter = new ListParameter();
                break;

            case "long":
                parameter = new LongParameter();
                break;

            case "Pth":
                parameter = new PathParameter();
                break;

            case "TEXT":
                parameter = new TextParameter();
                break;

            case "ObAr":
                parameter = new ObArParameter();
                break;

            case "Objc":
                parameter = new ObjcParameter();
                break;

            case "tdta":
                parameter = new RawDataParameter();
                break;

            case "type":
                parameter = new TypeParameter();
                break;

            default:
                Console.WriteLine("ReadItem: type {0} unknown!", type);
                throw new GimpSharpException();
            }

            DebugOutput.Level++;
            parameter.Parse(this);
            DebugOutput.Level--;
            parameter.Name = key;

            return(parameter);
        }
Beispiel #9
0
        ActionEvent ReadActionEvent()
        {
            byte expanded      = ReadByte();
            byte enabled       = ReadByte();
            byte withDialog    = ReadByte();
            byte dialogOptions = ReadByte();

            try
            {
                string text = ReadFourByteString();
                string eventName;

                if (text == "TEXT")
                {
                    eventName = ReadString();
                }
                else if (text == "long")
                {
                    eventName = ReadFourByteString();
                }
                else
                {
                    Console.WriteLine("Unknown text: " + text);
                    return(null);
                }

                var actionEvent = _map.Lookup(eventName);
                // actionEvent.EventForDisplay = ReadString();
                string tmp = ReadString();
                actionEvent.EventForDisplay = Abbreviations.GetUppercased(eventName);

                DebugOutput.Dump("EventName: " + eventName);

                actionEvent.HasDescriptor = (ReadInt32() != 0);
                if (!actionEvent.HasDescriptor)
                {
                    DebugOutput.Dump("HasDescriptor: " + actionEvent.HasDescriptor);
                    actionEvent.IsEnabled = (enabled == 0) ? false : true;
                    return(actionEvent);
                }

                if (PreSix == false)
                {
                    string classID = ReadUnicodeString();
                    DebugOutput.Dump("ClassID: " + classID);

                    string classID2 = ReadTokenOrString();
                    DebugOutput.Dump("ClassID2: " + classID2);
                }

                actionEvent.NumberOfItems = ReadInt32();
                DebugOutput.Dump("NumberOfItems: " + actionEvent.NumberOfItems);

                actionEvent           = actionEvent.Parse(this);
                actionEvent.IsEnabled = (enabled == 0) ? false : true;

                return(actionEvent);
            }
            catch (GimpSharpException e)
            {
                Console.WriteLine("-------------> Parsing failed");
                return(null);
            }
        }