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); }
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; } }