Exemplo n.º 1
0
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);
            // Font and attributes.
            MHParseNode pFontBody = p.GetNamedArg(ASN1Codes.C_ORIGINAL_FONT);

            if (pFontBody != null)
            {
                m_OrigFont.Initialise(pFontBody.GetArgN(0), engine);
            }
            MHParseNode pFontAttrs = p.GetNamedArg(ASN1Codes.C_FONT_ATTRIBUTES);

            if (pFontAttrs != null)
            {
                pFontAttrs.GetArgN(0).GetStringValue(m_OriginalFontAttrs);
            }
            // Colours
            MHParseNode pTextColour = p.GetNamedArg(ASN1Codes.C_TEXT_COLOUR);

            if (pTextColour != null)
            {
                m_OriginalTextColour.Initialise(pTextColour.GetArgN(0), engine);
            }
            MHParseNode pBGColour = p.GetNamedArg(ASN1Codes.C_BACKGROUND_COLOUR);

            if (pBGColour != null)
            {
                m_OriginalBgColour.Initialise(pBGColour.GetArgN(0), engine);
            }
            // Character set
            MHParseNode pChset = p.GetNamedArg(ASN1Codes.C_CHARACTER_SET);

            if (pChset != null)
            {
                m_nCharSet = pChset.GetArgN(0).GetIntValue();
            }
            // Justification
            MHParseNode pHJust = p.GetNamedArg(ASN1Codes.C_HORIZONTAL_JUSTIFICATION);

            if (pHJust != null)
            {
                m_HorizJ = pHJust.GetArgN(0).GetEnumValue();
            }
            MHParseNode pVJust = p.GetNamedArg(ASN1Codes.C_VERTICAL_JUSTIFICATION);

            if (pVJust != null)
            {
                m_VertJ = pVJust.GetArgN(0).GetEnumValue();
            }
            // Line orientation
            MHParseNode pLineO = p.GetNamedArg(ASN1Codes.C_LINE_ORIENTATION);

            if (pLineO != null)
            {
                m_LineOrientation = pLineO.GetArgN(0).GetEnumValue();
            }
            // Start corner
            MHParseNode pStartC = p.GetNamedArg(ASN1Codes.C_START_CORNER);

            if (pStartC != null)
            {
                m_StartCorner = pStartC.GetArgN(0).GetEnumValue();
            }
            // Text wrapping
            MHParseNode pTextWrap = p.GetNamedArg(ASN1Codes.C_TEXT_WRAPPING);

            if (pTextWrap != null)
            {
                m_fTextWrap = pTextWrap.GetArgN(0).GetBoolValue();
            }

            m_pDisplay    = engine.GetContext().CreateText();
            m_NeedsRedraw = true;
        }
Exemplo n.º 2
0
        public override void Initialise(MHParseNode p, MHEngine engine)
        {
            base.Initialise(p, engine);
            // OnSpawnCloseDown
            MHParseNode pOnSpawn = p.GetNamedArg(ASN1Codes.C_ON_SPAWN_CLOSE_DOWN);

            if (pOnSpawn != null)
            {
                m_OnSpawnCloseDown.Initialise(pOnSpawn, engine);
            }
            // OnRestart
            MHParseNode pOnRestart = p.GetNamedArg(ASN1Codes.C_ON_RESTART);

            if (pOnRestart != null)
            {
                m_OnRestart.Initialise(pOnRestart, engine);
            }
            // Default attributes.  These are encoded in a group in binary.
            MHParseNode pDefattrs = p.GetNamedArg(ASN1Codes.C_DEFAULT_ATTRIBUTES);

            // but in the text form they're encoded in the Application block.
            if (pDefattrs == null)
            {
                pDefattrs = p;
            }
            MHParseNode pCharSet = pDefattrs.GetNamedArg(ASN1Codes.C_CHARACTER_SET);

            if (pCharSet != null)
            {
                m_nCharSet = pCharSet.GetArgN(0).GetIntValue();
            }
            // Colours
            MHParseNode pBGColour = pDefattrs.GetNamedArg(ASN1Codes.C_BACKGROUND_COLOUR);

            if (pBGColour != null)
            {
                m_BGColour.Initialise(pBGColour.GetArgN(0), engine);
            }
            MHParseNode pTextColour = pDefattrs.GetNamedArg(ASN1Codes.C_TEXT_COLOUR);

            if (pTextColour != null)
            {
                m_TextColour.Initialise(pTextColour.GetArgN(0), engine);
            }
            MHParseNode pButtonRefColour = pDefattrs.GetNamedArg(ASN1Codes.C_BUTTON_REF_COLOUR);

            if (pButtonRefColour != null)
            {
                m_ButtonRefColour.Initialise(pButtonRefColour.GetArgN(0), engine);
            }
            MHParseNode pHighlightRefColour = pDefattrs.GetNamedArg(ASN1Codes.C_HIGHLIGHT_REF_COLOUR);

            if (pHighlightRefColour != null)
            {
                m_HighlightRefColour.Initialise(pHighlightRefColour.GetArgN(0), engine);
            }
            MHParseNode pSliderRefColour = pDefattrs.GetNamedArg(ASN1Codes.C_SLIDER_REF_COLOUR);

            if (pSliderRefColour != null)
            {
                m_SliderRefColour.Initialise(pSliderRefColour.GetArgN(0), engine);
            }
            // Content hooks
            MHParseNode pTextCHook = pDefattrs.GetNamedArg(ASN1Codes.C_TEXT_CONTENT_HOOK);

            if (pTextCHook != null)
            {
                m_nTextCHook = pTextCHook.GetArgN(0).GetIntValue();
            }
            MHParseNode pIPCHook = pDefattrs.GetNamedArg(ASN1Codes.C_IP_CONTENT_HOOK);

            if (pIPCHook != null)
            {
                m_nIPCHook = pIPCHook.GetArgN(0).GetIntValue();
            }
            MHParseNode pStrCHook = pDefattrs.GetNamedArg(ASN1Codes.C_STREAM_CONTENT_HOOK);

            if (pStrCHook != null)
            {
                m_nStrCHook = pStrCHook.GetArgN(0).GetIntValue();
            }
            MHParseNode pBitmapCHook = pDefattrs.GetNamedArg(ASN1Codes.C_BITMAP_CONTENT_HOOK);

            if (pBitmapCHook != null)
            {
                m_nBitmapCHook = pBitmapCHook.GetArgN(0).GetIntValue();
            }
            MHParseNode pLineArtCHook = pDefattrs.GetNamedArg(ASN1Codes.C_LINE_ART_CONTENT_HOOK);

            if (pLineArtCHook != null)
            {
                m_nLineArtCHook = pLineArtCHook.GetArgN(0).GetIntValue();
            }
            // Font.  This is a little tricky.  There are two attributes both called Font.
            // In the binary notation the font here is encoded as 42 whereas the text form
            // finds the first occurrence of :Font in the table and returns 13.
            MHParseNode pFont = pDefattrs.GetNamedArg(ASN1Codes.C_FONT2);

            if (pFont == null)
            {
                pFont = pDefattrs.GetNamedArg(ASN1Codes.C_FONT);
            }
            if (pFont != null)
            {
                m_Font.Initialise(pFont.GetArgN(0), engine);
            }
            // Font attributes.
            MHParseNode pFontAttrs = pDefattrs.GetNamedArg(ASN1Codes.C_FONT_ATTRIBUTES);

            if (pFontAttrs != null)
            {
                pFontAttrs.GetArgN(0).GetStringValue(m_FontAttrs);
            }
        }