예제 #1
0
 Dock.Offset IVideo.OffsetAbsoluteGet()
 {
     Dock.Offset cOffset = new Dock.Offset(this.stArea.nLeft, this.stArea.nTop);
     if (null != this.cContainer && this.cContainer is IVideo)
     {
         Dock.Offset cParent = ((IVideo)this.cContainer).OffsetAbsoluteGet();
         cOffset.nLeft += cParent.nLeft;
         cOffset.nTop  += cParent.nTop;
     }
     return(cOffset);
 }
예제 #2
0
        public Preferences(string sData)
        {
            try
            {
                XmlDocument cXmlDocument = new XmlDocument();
                cXmlDocument.LoadXml(sData);
                XmlNode cXmlNode = cXmlDocument.NodeGet("data");
                _sRequest    = cXmlNode.AttributeOrDefaultGet <string>("request", "polls.zed");
                _nTemplate   = cXmlNode.AttributeOrDefaultGet <byte>("template", 0);
                _sWorkFolder = cXmlNode.AttributeGet <string>("work_folder");
                if (!System.IO.Directory.Exists(_sWorkFolder))
                {
                    throw new Exception("work foldeer doesn't exist! [folder=" + _sWorkFolder + "]");
                }
                _tsUpdateInterval       = cXmlNode.AttributeOrDefaultGet <TimeSpan>("update_interval", new TimeSpan(0, 0, 10));
                _nRollPrerenderQueueMax = cXmlNode.AttributeOrDefaultGet <int>("render_queue", 30);
                _cPoll = new Poll(cXmlNode.NodeGet("poll"));

                _cGlobalOffset = new Dock.Offset(cXmlNode.NodeGet("offset"));

                string  sName, sOuterXML, sHeadXML = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
                XmlNode cNodeRoll;
                foreach (XmlNode cNode in cXmlNode.NodesGet("roll"))
                {
                    sName = cNode.AttributeValueGet("name");

                    cNodeRoll = cNode;
                    switch (sName)
                    {
                    case "images":
                        cXmlDocument = new XmlDocument();
                        sOuterXML    = cNode.OuterXml.Replace("%%IMG_LEFT%%", System.IO.Path.Combine(_sWorkFolder, _cPoll.aCandidates[0].sImage));
                        sOuterXML    = sOuterXML.Replace("%%IMG_RIGHT%%", System.IO.Path.Combine(_sWorkFolder, _cPoll.aCandidates[1].sImage));
                        cXmlDocument.LoadXml(sHeadXML + sOuterXML);
                        cNodeRoll           = cXmlDocument.NodeGet("roll");
                        _nImagesLoopDur     = cNodeRoll.AttributeOrDefaultGet <int>("_loop_dur", 75);
                        _nImagesInterval    = cNodeRoll.AttributeOrDefaultGet <int>("_interval", 600);
                        _cRollImages        = new Roll(cNodeRoll);
                        _cRollImages.stArea = _cRollImages.stArea.Move(_cGlobalOffset);
                        break;

                    case "top":
                        PollUpdate();
                        cXmlDocument = new XmlDocument();
                        sOuterXML    = cNode.OuterXml.Replace("%%TOP_TXT1%%", _cPoll.aDescription[0].ForXML());
                        string sNameArt = _nTemplate == 0 ? _cPoll.aDescription[1] : _cPoll.aCandidates[0].sName;
                        sOuterXML = sOuterXML.Replace("%%TOP_TXT2_1%%", sNameArt.ForXML());
                        sOuterXML = sOuterXML.Replace("%%TOP_TXT2_2%%", _cPoll.aDescription[2].ForXML());
                        sNameArt  = _nTemplate == 0 ? _cPoll.aDescription[1] : _cPoll.aCandidates[1].sName;
                        sOuterXML = sOuterXML.Replace("%%TOP_TXT2_3%%", sNameArt.ForXML());
                        cXmlDocument.LoadXml(sHeadXML + sOuterXML);
                        cNodeRoll      = cXmlDocument.NodeGet("roll");
                        _nTextInTopGap = cNodeRoll.AttributeOrDefaultGet <int>("_text_in_top_gap", 30);
                        _nTopLoopDur   = cNodeRoll.AttributeOrDefaultGet <int>("_loop_dur", 200);
                        _cRollTop      = new Roll(cNodeRoll);
                        Text cInit = (Text)_cRollTop.EffectGet("top_init");
                        cInit.cDock.cOffset.nLeft += (short)((_cRollTop.stArea.nWidth - cInit.stArea.nWidth) / 2);
                        Text cLeft  = (Text)_cRollTop.EffectGet("top_left");
                        Text cMid   = (Text)_cRollTop.EffectGet("top_mid");
                        Text cRight = (Text)_cRollTop.EffectGet("top_right");

                        short nMidLeft = (short)((_cRollTop.stArea.nWidth - cMid.stArea.nWidth) / 2);
                        cMid.cDock.cOffset.nLeft += nMidLeft;
                        short nLeftLeft = (short)(nMidLeft - _nTextInTopGap - cLeft.stArea.nWidth);
                        cLeft.cDock.cOffset.nLeft += nLeftLeft;
                        short nRightLeft = (short)(nMidLeft + cMid.stArea.nWidth + _nTextInTopGap);
                        cRight.cDock.cOffset.nLeft += nRightLeft;

                        //int nWTotal = cLeft.stArea.nWidth + cMid.stArea.nWidth + cRight.stArea.nWidth + 2 * _nTextInTopGap;
                        //short nLeft = (short)((_cRollTop.stArea.nWidth - nWTotal) / 2);
                        //cLeft.cDock.cOffset.nLeft += nLeft;
                        //cMid.cDock.cOffset.nLeft += (short)(nLeft + cLeft.stArea.nWidth + _nTextInTopGap);
                        //cRight.cDock.cOffset.nLeft += (short)(nLeft + cLeft.stArea.nWidth + cMid.stArea.nWidth + 2 * _nTextInTopGap);

                        _cRollTop.stArea = _cRollTop.stArea.Move(_cGlobalOffset);
                        break;

                    case "bot":
                        cXmlDocument = new XmlDocument();
                        sOuterXML    = cNode.OuterXml.Replace("%%BOT_TXT_L%%", _cPoll.aCandidates[0].sDescription);
                        sOuterXML    = sOuterXML.Replace("%%BOT_TXT_R%%", _cPoll.aCandidates[1].sDescription);
                        cXmlDocument.LoadXml(sHeadXML + sOuterXML);
                        cNodeRoll            = cXmlDocument.NodeGet("roll");
                        _nBotBlueWindowWidth = cNodeRoll.AttributeOrDefaultGet <int>("_blue_window_width", 372);
                        _cRollBot            = new Roll(cNodeRoll);
                        Text cBLeft  = (Text)_cRollBot.EffectGet("bot_left");
                        Text cBRight = (Text)_cRollBot.EffectGet("bot_right");
                        cBLeft.cDock.cOffset.nLeft  += (short)((_nBotBlueWindowWidth - cBLeft.stArea.nWidth) / 2);
                        cBRight.cDock.cOffset.nLeft += (short)((_nBotBlueWindowWidth - cBRight.stArea.nWidth) / 2);
                        _cRollBot.stArea             = _cRollBot.stArea.Move(_cGlobalOffset);
                        break;

                    case "mid":
                        PollUpdate();
                        _cPoll.nMidGap          = cNode.AttributeOrDefaultGet <int>("_mid_gap", 46);
                        _cPoll.sOuterXMLMidRoll = cNode.OuterXml;
                        _cRollMid        = _cPoll.NewRollMidGet();
                        _cRollMid.stArea = _cRollMid.stArea.Move(_cGlobalOffset);
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                (new Logger()).WriteNotice("Preferences error: [error=" + ex.ToString() + "][source_xml=" + sData + "]");
                throw;
            }
        }