HtmlBoxes.HtmlHost GetHtmlHost(SampleViewport viewport) { if (htmlHost == null) { htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, //1. img request (s, e) => { //load resource -- sync or async? string absolutePath = imgFolderPath + "\\" + e.ImageBinder.ImageSource; if (!System.IO.File.Exists(absolutePath)) { return; } //load create and load bitmap e.ImageBinder.SetImage(LoadBitmap(absolutePath)); }, //2. stylesheet request (s, e) => { }); } return htmlHost; }
public static MyHtmlVisualRoot CreateHtmlVisualRoot( HtmlHost htmlHost, WebDom.WebDocument htmldoc, HtmlRenderBox htmlFrgmentRenderBox) { //1. builder RenderTreeBuilder renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree ////build rootbox from htmldoc CssBox rootElement = renderTreeBuilder.BuildCssRenderTree(htmldoc, htmlHost.BaseStylesheet, htmlFrgmentRenderBox); //3. create small htmlContainer MyHtmlVisualRoot htmlContainer = new MyHtmlVisualRoot(htmlHost); htmlContainer.WebDocument = htmldoc; htmlContainer.SetRootCssBox(rootElement); htmlContainer.SetMaxSize(htmlFrgmentRenderBox.Width, 0); //htmlContainer.SetRootRenderElement(htmlFrgmentRenderBox); LayoutVisitor lay = htmlHost.GetSharedHtmlLayoutVisitor(htmlContainer); htmlContainer.PerformLayout(lay); htmlHost.ReleaseHtmlLayoutVisitor(lay); htmlFrgmentRenderBox.SetHtmlContainer(htmlContainer, rootElement); return(htmlContainer); }
internal override CssBox GetPrincipalBox(CssBox parentCssBox, HtmlHost htmlHost) { if (rootbox != null) { return this.rootbox; } else { var root = (HtmlElement)shadowDoc.RootNode; //1. builder var renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree ////build rootbox from htmldoc var rootElement = renderTreeBuilder.BuildCssRenderTree2(shadowDoc, htmlHost.BaseStylesheet, htmlHost.RootGfx); //3. create small htmlContainer rootbox = new CssBox(this.Spec, parentCssBox.RootGfx); root.SetPrincipalBox(rootbox); htmlHost.UpdateChildBoxes(root, true); return rootbox; } }
protected override void OnStartDemo(SampleViewport viewport) { this.sampleViewport = viewport; imageContentMan = new ContentManagers.ImageContentManager(); imageContentMan.ImageLoadingRequest += (s, e) => { e.SetResultImage(LoadBitmap(e.ImagSource)); }; //init host myHtmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, (s, e) => this.imageContentMan.AddRequestImage(e.ImageBinder), (s, e) => { }); //----------------------------------------------------- this.groundHtmlBox = new HtmlBox(myHtmlHost, 800, 600); string html = @"<div></div>"; //if you want to use full html-> use HtmlBox instead this.sampleViewport.AddContent(groundHtmlBox); //----------------------------------------------------- groundHtmlBox.LoadHtmlFragmentString(html); this.groundHtmlDoc = groundHtmlBox.HtmlContainer.WebDocument as HtmlDocument; OnHtmlHostCreated(); }
public static HtmlBoxes.HtmlHost CreateHtmlHost(SampleViewport sampleViewport, EventHandler <ContentManagers.ImageRequestEventArgs> imageReqHandler, EventHandler <ContentManagers.TextRequestEventArgs> textReq) { HtmlBoxes.HtmlHost htmlhost = new HtmlBoxes.HtmlHost(); htmlhost.SetRootGraphics(sampleViewport.Root); List <HtmlBoxes.HtmlContainer> htmlContUpdateList = new List <HtmlBoxes.HtmlContainer>(); sampleViewport.Root.ClearingBeforeRender += (s, e) => { //1. htmlhost.ClearUpdateWaitingCssBoxes(); //1. int j = htmlContUpdateList.Count; for (int i = 0; i < j; ++i) { var htmlCont = htmlContUpdateList[i]; htmlCont.RefreshDomIfNeed(); htmlCont.IsInUpdateQueue = false; } htmlContUpdateList.Clear(); }; htmlhost.RegisterCssBoxGenerator(new LayoutFarm.CustomWidgets.MyCustomCssBoxGenerator(htmlhost)); htmlhost.AttachEssentailHandlers(imageReqHandler, textReq); htmlhost.SetHtmlContainerUpdateHandler(htmlCont => { if (!htmlCont.IsInUpdateQueue) { htmlCont.IsInUpdateQueue = true; htmlContUpdateList.Add(htmlCont); } }); return(htmlhost); }
HtmlBoxes.HtmlHost GetHtmlHost(SampleViewport viewport) { if (htmlHost == null) { htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, //1. img request (s, e) => { //load resource -- sync or async? string absolutePath = imgFolderPath + "\\" + e.ImageBinder.ImageSource; if (!System.IO.File.Exists(absolutePath)) { return; } //load create and load bitmap System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(absolutePath); e.ImageBinder.SetImage(new Bitmap(bmp.Width, bmp.Height, bmp)); }, //2. stylesheet request (s, e) => { }); } return(htmlHost); }
HtmlBoxes.HtmlHost GetHtmlHost(AppHost host) { if (htmlHost == null) { htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(host, //1. img request (s, e) => { //load resource -- sync or async? string absolutePath = imgFolderPath + "\\" + e.ImageBinder.ImageSource; if (!System.IO.File.Exists(absolutePath)) { return; } //load create and load bitmap e.ImageBinder.SetLocalImage(host.LoadImage(absolutePath)); }, //2. stylesheet request (s, e) => { }); } return(htmlHost); }
public void StartModule(LayoutFarm.SampleViewport sampleViewport) { this.viewport = sampleViewport; dzBoardModule = new DesignBoardModule(); menuModule = new MenuBoardModule(); menuModule.menuItemClick += new EventHandler <MenuItemClickEventArgs>(menuModule_menuItemClick); var contentMx = new LayoutFarm.ContentManagers.ImageContentManager(); contentMx.ImageLoadingRequest += contentMx_ImageLoadingRequest; //app specific here documentRootPath = System.Windows.Forms.Application.ExecutablePath; this.htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, (s, e) => contentMx.AddRequestImage(e.ImageBinder), contentMx_LoadStyleSheet); //1. design board dzBoardModule.StartModule(htmlHost, this.viewport); ////2. canvas board //drawingBoard.StartModule(htmlHost, this.viewport); //3. menu menuModule.StartModule(htmlHost, this.viewport); //------------------------------------------------------ //context knowledge*** //------------------------------------------------------ }
public static MyHtmlContainer CreateHtmlContainerFromFullHtml( HtmlHost htmlHost, string fullHtmlString, HtmlRenderBox htmlFrgmentRenderBox) { var htmldoc = WebDocumentParser.ParseDocument( new LayoutFarm.WebDom.Parser.TextSource(fullHtmlString.ToCharArray())); //1. builder var renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree ////build rootbox from htmldoc var rootElement = renderTreeBuilder.BuildCssRenderTree(htmldoc, htmlHost.BaseStylesheet, htmlFrgmentRenderBox); //3. create small htmlContainer var htmlContainer = new MyHtmlContainer(htmlHost); htmlContainer.WebDocument = htmldoc; htmlContainer.RootCssBox = rootElement; htmlContainer.SetMaxSize(htmlFrgmentRenderBox.Width, 0); var lay = htmlHost.GetSharedHtmlLayoutVisitor(htmlContainer); htmlContainer.PerformLayout(lay); htmlHost.ReleaseHtmlLayoutVisitor(lay); htmlFrgmentRenderBox.SetHtmlContainer(htmlContainer, rootElement); return htmlContainer; }
public static MyHtmlVisualRoot CreateHtmlVisualRootFromFullHtml( HtmlHost htmlHost, string fullHtmlString, HtmlRenderBox htmlFrgmentRenderBox) { HtmlDocument htmldoc = WebDocumentParser.ParseDocument( htmlHost, new LayoutFarm.WebDom.Parser.TextSource(fullHtmlString.ToCharArray())); //1. builder RenderTreeBuilder renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree ////build rootbox from htmldoc CssBox rootElement = renderTreeBuilder.BuildCssRenderTree(htmldoc, htmlHost.BaseStylesheet, htmlFrgmentRenderBox); //3. create small htmlContainer MyHtmlVisualRoot htmlContainer = new MyHtmlVisualRoot(htmlHost); htmlContainer.WebDocument = htmldoc; htmlContainer.SetRootCssBox(rootElement); htmlContainer.SetMaxSize(htmlFrgmentRenderBox.Width, 0); // LayoutVisitor lay = htmlHost.GetSharedHtmlLayoutVisitor(htmlContainer); htmlContainer.PerformLayout(lay); htmlHost.ReleaseHtmlLayoutVisitor(lay); htmlFrgmentRenderBox.SetHtmlContainer(htmlContainer, rootElement); return(htmlContainer); }
public static MyHtmlContainer CreateHtmlContainer( HtmlHost htmlHost, WebDom.WebDocument htmldoc, HtmlRenderBox htmlFrgmentRenderBox) { //1. builder var renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree ////build rootbox from htmldoc var rootElement = renderTreeBuilder.BuildCssRenderTree(htmldoc, htmlHost.BaseStylesheet, htmlFrgmentRenderBox); //3. create small htmlContainer var htmlContainer = new MyHtmlContainer(htmlHost); htmlContainer.WebDocument = htmldoc; htmlContainer.RootCssBox = rootElement; htmlContainer.SetMaxSize(htmlFrgmentRenderBox.Width, 0); var lay = htmlHost.GetSharedHtmlLayoutVisitor(htmlContainer); htmlContainer.PerformLayout(lay); htmlHost.ReleaseHtmlLayoutVisitor(lay); htmlFrgmentRenderBox.SetHtmlContainer(htmlContainer, rootElement); return htmlContainer; }
protected override void OnStart(AppHost host, IGameHTMLUI pcx) { ////================================================== //html box HtmlBoxes.HtmlHost htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); var htmlBox = new HtmlBox(htmlHost, 800, 400); StringBuilder stbuilder = new StringBuilder(); stbuilder.Append("<html><head></head><body>"); stbuilder.Append("<div>custom box1</div>"); stbuilder.Append("<x id=\"my_custombox1\"></x>"); stbuilder.Append("<div>custom box2</div>"); stbuilder.Append("<x type=\"textbox\" id=\"my_custombox1\"></x>"); stbuilder.Append("</body></html>"); htmlBox.LoadHtmlString(stbuilder.ToString()); host.AddChild(htmlBox); //================================================== //textbox var textbox = new LayoutFarm.CustomWidgets.TextBox(400, 100, true); textbox.SetLocation(0, 200); host.AddChild(textbox); textbox.Focus(); }
internal static LayoutFarm.HtmlBoxes.CssBox CreateCssBox( LayoutFarm.WebDom.IHtmlElement domE, LayoutFarm.HtmlBoxes.CssBox parentBox, LayoutFarm.Css.BoxSpec spec, LayoutFarm.HtmlBoxes.HtmlHost htmlhost) { //create cssbox //test only! var newspec = new BoxSpec(); BoxSpec.InheritStyles(newspec, spec); newspec.BackgroundColor = Color.Blue; newspec.Width = new CssLength(50, CssUnitOrNames.Pixels); newspec.Height = new CssLength(50, CssUnitOrNames.Pixels); newspec.Position = CssPosition.Absolute; newspec.Freeze(); //freeze before use HtmlElement htmlElement = (HtmlElement)domE; var newBox = new CssBox(newspec, parentBox.RootGfx); newBox.SetController(domE); htmlElement.SetPrincipalBox(newBox); //auto set bc of the element parentBox.AppendChild(newBox); htmlhost.UpdateChildBoxes(htmlElement, true); //---------- return newBox; }
HtmlBoxes.HtmlHost GetHtmlHost(SampleViewport viewport) { if (htmlHost == null) { htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, null, null); var htmlBoxContentMx = new HtmlHostContentManager(); var contentMx = new LayoutFarm.ContentManagers.ImageContentManager(); contentMx.ImageLoadingRequest += contentMx_ImageLoadingRequest; htmlBoxContentMx.AddImageContentMan(contentMx); htmlBoxContentMx.Bind(htmlHost); } return(htmlHost); }
HtmlBoxes.HtmlHost GetHtmlHost(AppHost host) { if (_htmlHost == null) { _htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); var htmlBoxContentMx = new HtmlHostContentManager(); var imgLoadingQ = new LayoutFarm.ContentManagers.ImageLoadingQueueManager(); imgLoadingQ.AskForImage += contentMx_AskForImg; htmlBoxContentMx.ImgLoadingQueue = imgLoadingQ; htmlBoxContentMx.Bind(_htmlHost); } return(_htmlHost); }
HtmlBoxes.HtmlHost GetHtmlHost(SampleViewport viewport) { if (htmlHost == null) { htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, null, null); var htmlBoxContentMx = new HtmlHostContentManager(); var contentMx = new LayoutFarm.ContentManagers.ImageContentManager(); contentMx.ImageLoadingRequest += contentMx_ImageLoadingRequest; htmlBoxContentMx.AddImageContentMan(contentMx); htmlBoxContentMx.Bind(htmlHost); } return htmlHost; }
public static HtmlBoxes.HtmlHost CreateHtmlHost(SampleViewport sampleViewport, EventHandler<ContentManagers.ImageRequestEventArgs> imageReqHandler, EventHandler<ContentManagers.TextRequestEventArgs> textReq) { HtmlBoxes.HtmlHost htmlhost = new HtmlBoxes.HtmlHost(); htmlhost.SetRootGraphics(sampleViewport.Root); htmlhost.RegisterCssBoxGenerator(new LayoutFarm.CustomWidgets.MyCustomCssBoxGenerator(htmlhost)); htmlhost.AttachEssentailHandlers(imageReqHandler, textReq); htmlhost.SetHtmlContainerUpdateHandler(htmlCont => { sampleViewport.Root.AddToUpdateQueue(htmlCont); }); return htmlhost; }
protected override void OnStart(AppHost host) { { string html = @"<html><head></head><body><div>OK1</div><div>OK2</div></body></html>"; string testFilename = @"D:\projects\HtmlRenderer\Source\Test8_HtmlRenderer.Demo\Samples\0_acid1_dev\00.htm"; //string testFilename = "..\\Test8_HtmlRenderer.Demo\\Samples\\0_acid1_dev\\00.htm"; if (System.IO.File.Exists(testFilename)) { html = System.IO.File.ReadAllText(testFilename); } //html box1 HtmlBoxes.HtmlHost htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); //html box var htmlBox = new HtmlBox(htmlhost, 800, 600); htmlBox.SetLocation(0, 0); //htmlBox.PreferSoftwareRenderer = true; host.AddChild(htmlBox); htmlBox.LoadHtmlString(html); //================================================== } { //html box2 HtmlBoxes.HtmlHost htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); //html box var htmlBox = new HtmlBox(htmlhost, 800, 400); #if DEBUG htmlBox.dbugPreferSoftwareRenderer = true; #endif htmlBox.SetLocation(0, 610);//** host.AddChild(htmlBox); string html = @"<html><head></head><body><div>OK3</div><div>OK4</div></body></html>"; htmlBox.LoadHtmlString(html); //================================================== } //{ // //textbox // var textbox = new LayoutFarm.CustomWidgets.TextBox(400, 25, true); // textbox.SetLocation(0, 0); // host.AddChild(textbox); // textbox.Focus(); //} }
protected override void OnStartDemo(SampleViewport viewport) { this.viewport = viewport; this.htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, null, null); SetupHtmlMenuBox(); //================================================== //box1 test area //html box this.testHtmlBox = new HtmlBox(htmlhost, 800, 400); testHtmlBox.SetLocation(30, 50); viewport.AddContent(testHtmlBox); string html = @"<html><head></head><body><div id='div1'>OK1</div><div>OK2</div></body></html>"; testHtmlBox.LoadHtmlString(html); //================================================== }
public static HtmlBoxes.HtmlHost CreateHtmlHost(SampleViewport sampleViewport, EventHandler <ContentManagers.ImageRequestEventArgs> imageReqHandler, EventHandler <ContentManagers.TextRequestEventArgs> textReq) { HtmlBoxes.HtmlHost htmlhost = new HtmlBoxes.HtmlHost(sampleViewport.P); htmlhost.SetRootGraphics(sampleViewport.Root); htmlhost.RegisterCssBoxGenerator(new LayoutFarm.CustomWidgets.MyCustomCssBoxGenerator(htmlhost)); htmlhost.AttachEssentailHandlers(imageReqHandler, textReq); htmlhost.SetHtmlContainerUpdateHandler(htmlCont => { sampleViewport.Root.AddToUpdateQueue(htmlCont); }); return(htmlhost); }
public void SetHtmlHost(HtmlHost htmlhost) { this.htmlhost = htmlhost; htmlhost.SetHtmlContainerUpdateHandler(htmlCont => { var updatedHtmlCont = htmlCont as MyHtmlContainer; if (updatedHtmlCont != null && !updatedHtmlCont.IsInUpdateQueue) { updatedHtmlCont.IsInUpdateQueue = true; waitingUpdateList.Add(updatedHtmlCont); } }); htmlContainer = new MyHtmlContainer(htmlhost); htmlContainer.AttachEssentialHandlers( OnRefresh, myHtmlContainer_NeedUpdateDom, OnRefresh, null); htmlLayoutVisitor = new LayoutVisitor(this.gfxPlatform); htmlLayoutVisitor.Bind(htmlContainer); //------------------------------------------------------- timer01.Interval = 20;//20ms? timer01.Tick += (s, e) => { //clear waiting int j = waitingUpdateList.Count; for (int i = 0; i < j; ++i) { var htmlCont = waitingUpdateList[i]; htmlCont.IsInUpdateQueue = false; htmlCont.RefreshDomIfNeed(); } for (int i = j - 1; i >= 0; --i) { waitingUpdateList.RemoveAt(i); } }; timer01.Enabled = true; //------------------------------------------- _htmlInputEventAdapter = new HtmlInputEventAdapter(gfxPlatform.SampleIFonts); _htmlInputEventAdapter.Bind(htmlContainer); //------------------------------------------- }
internal override CssBox GetPrincipalBox(CssBox parentCssBox, HtmlHost host) { if (this.CurrentPrincipalBox != null) { return this.CurrentPrincipalBox; } else { RenderElement re; object controller; lazyCreator((RootGraphic)parentCssBox.RootGfx, out re, out controller); CssBox wrapper = CustomCssBoxGenerator.CreateWrapper(controller, re, this.Spec, false); this.SetPrincipalBox(wrapper); return wrapper; } }
protected override void OnStart(AppHost host, IGameHTMLUI pcx) { _host = host; this.htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); SetupHtmlMenuBox(); //================================================== //box1 test area //html box this.testHtmlBox = new HtmlBox(htmlhost, 800, 400); testHtmlBox.SetLocation(30, 50); host.AddChild(testHtmlBox); string html = @"<html><head></head><body><div id='div1'>OK1</div><div>OK2</div></body></html>"; testHtmlBox.LoadHtmlString(html); //================================================== }
protected override void OnStartDemo(SampleViewport viewport) { this.viewport = viewport; this.htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, null, null); SetupHtmlMenuBox(); //================================================== //box1 test area //html box this.testHtmlBox = new HtmlBox(htmlhost, 800, 400); testHtmlBox.SetLocation(30, 50); viewport.AddContent(testHtmlBox); string html = @"<html><head></head><body><div id='div1'>OK1</div><div>OK2</div></body></html>"; testHtmlBox.LoadHtmlString(html); //================================================== }
public static MyHtmlContainer CreateHtmlContainerFromFragmentHtml( HtmlHost htmlHost, string htmlFragment, HtmlRenderBox htmlFrgmentRenderBox) { var htmldoc = htmlHost.CreateNewSharedHtmlDoc(); var myHtmlBodyElement = htmldoc.CreateElement("body"); htmldoc.RootNode.AddChild(myHtmlBodyElement); //data is wraped up within div? //TODO: review this, use shadow dom instead var newDivHost = htmldoc.CreateElement("div"); myHtmlBodyElement.AddChild(newDivHost); WebDocumentParser.ParseHtmlDom( new LayoutFarm.WebDom.Parser.TextSource(htmlFragment.ToCharArray()), htmldoc, newDivHost); //1. builder var renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree var rootElement = renderTreeBuilder.BuildCssRenderTree( htmldoc, htmldoc.CssActiveSheet, htmlFrgmentRenderBox); //3. create small htmlContainer var htmlContainer = new MyHtmlContainer(htmlHost); htmlContainer.WebDocument = newDivHost.OwnerDocument; htmlContainer.RootCssBox = rootElement; htmlContainer.SetMaxSize(htmlFrgmentRenderBox.Width, 0); var lay = htmlHost.GetSharedHtmlLayoutVisitor(htmlContainer); htmlContainer.PerformLayout(lay); htmlHost.ReleaseHtmlLayoutVisitor(lay); htmlFrgmentRenderBox.SetHtmlContainer(htmlContainer, rootElement); return(htmlContainer); }
protected override void OnStartDemo(SampleViewport viewport) { htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, null, null); ////================================================== //html box { HtmlBox lightHtmlBox = new HtmlBox(htmlHost, 800, 50); lightHtmlBox.SetLocation(50, 450); viewport.AddContent(lightHtmlBox); //light box can't load full html //all light boxs of the same lightbox host share resource with the host string html = @"<div>OK1</div><div>OK2</div>"; //if you want to use full html-> use HtmlBox instead lightHtmlBox.LoadHtmlFragmentString(html); } //================================================== { HtmlBox lightHtmlBox2 = new HtmlBox(htmlHost, 800, 50); lightHtmlBox2.SetLocation(0, 60); viewport.AddContent(lightHtmlBox2); //light box can't load full html //all light boxs of the same lightbox host share resource with the host string html2 = @"<div>OK3</div><div>OK4</div>"; //if you want to use ful l html-> use HtmlBox instead lightHtmlBox2.LoadHtmlFragmentString(html2); } //================================================== { HtmlBox lightHtmlBox3 = new HtmlBox(htmlHost, 800, 50); lightHtmlBox3.SetLocation(0, 100); viewport.AddContent(lightHtmlBox3); //fragment dom //create dom then to thie light box lightHtmlBox3.LoadHtmlDom(CreateSampleHtmlDoc()); } //================================================== //textbox var textbox = new LayoutFarm.CustomWidgets.TextBox(400, 150, true); textbox.SetLocation(0, 200); viewport.AddContent(textbox); textbox.Focus(); }
public override LayoutFarm.HtmlBoxes.CssBox CreateCssBox( DomElement domE, LayoutFarm.HtmlBoxes.CssBox parentBox, BoxSpec spec, HtmlHost host) { switch (domE.Name) { case "input": { var inputBox = CreateInputBox(domE, parentBox, spec, myHost.RootGfx, host); if (inputBox != null) { return inputBox; } } break; case "canvas": { //test only //TODO: review here var canvas = new LayoutFarm.CustomWidgets.MiniAggCanvasBox(400, 400); var wrapperBox = CreateWrapper( canvas, canvas.GetPrimaryRenderElement(myHost.RootGfx), spec, true); parentBox.AppendChild(wrapperBox); return wrapperBox; } } //default unknown var simpleBox = new LayoutFarm.CustomWidgets.SimpleBox(100, 20); simpleBox.BackColor = PixelFarm.Drawing.Color.LightGray; var wrapperBox2 = CreateWrapper( simpleBox, simpleBox.GetPrimaryRenderElement(myHost.RootGfx), spec, false); parentBox.AppendChild(wrapperBox2); return wrapperBox2; }
protected override void OnStart(AppHost host) { //html box _host = host; var loadingQueueMx = new LayoutFarm.ContentManagers.ImageLoadingQueueManager(); loadingQueueMx.AskForImage += loadingQueue_AskForImg; HtmlBoxes.HtmlHost htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(host, (s, e) => loadingQueueMx.AddRequestImage(e.ImageBinder), contentMx_LoadStyleSheet); // _htmlBox = new HtmlBox(htmlHost, 1024, 800); _htmlBox.SetLocation(0, 10); //test host.AddChild(_htmlBox); if (_htmltext == null) { _htmltext = @"<html><head></head><body>NOT FOUND!</body></html>"; } _htmlBox.LoadHtmlString(_htmltext); }
protected override void OnStart(AppHost host) { { //html box1 HtmlBoxes.HtmlHost htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); //html box var htmlBox = new HtmlBox(htmlhost, 800, 400); htmlBox.SetLocation(0, 0); //htmlBox.PreferSoftwareRenderer = true; host.AddChild(htmlBox); string html = @"<html><head></head><body><div>OK1</div><div>OK2</div></body></html>"; htmlBox.LoadHtmlString(html); //================================================== } { //html box2 HtmlBoxes.HtmlHost htmlhost = HtmlHostCreatorHelper.CreateHtmlHost(host, null, null); //html box var htmlBox = new HtmlBox(htmlhost, 800, 400); htmlBox.PreferSoftwareRenderer = true; htmlBox.SetLocation(0, 420);//** host.AddChild(htmlBox); string html = @"<html><head></head><body><div>OK3</div><div>OK4</div></body></html>"; htmlBox.LoadHtmlString(html); //================================================== } //{ // //textbox // var textbox = new LayoutFarm.CustomWidgets.TextBox(400, 25, true); // textbox.SetLocation(0, 0); // host.AddChild(textbox); // textbox.Focus(); //} }
public static MyHtmlContainer CreateHtmlContainerFromFragmentHtml( HtmlHost htmlHost, string htmlFragment, HtmlRenderBox htmlFrgmentRenderBox) { var htmldoc = htmlHost.CreateNewSharedHtmlDoc(); var myHtmlBodyElement = htmldoc.CreateElement("body"); htmldoc.RootNode.AddChild(myHtmlBodyElement); //data is wraped up within div? //TODO: review this, use shadow dom instead var newDivHost = htmldoc.CreateElement("div"); myHtmlBodyElement.AddChild(newDivHost); WebDocumentParser.ParseHtmlDom( new LayoutFarm.WebDom.Parser.TextSource(htmlFragment.ToCharArray()), htmldoc, newDivHost); //1. builder var renderTreeBuilder = htmlHost.GetRenderTreeBuilder(); //------------------------------------------------------------------- //2. generate render tree var rootElement = renderTreeBuilder.BuildCssRenderTree( htmldoc, htmldoc.CssActiveSheet, htmlFrgmentRenderBox); //3. create small htmlContainer var htmlContainer = new MyHtmlContainer(htmlHost); htmlContainer.WebDocument = newDivHost.OwnerDocument; htmlContainer.RootCssBox = rootElement; htmlContainer.SetMaxSize(htmlFrgmentRenderBox.Width, 0); var lay = htmlHost.GetSharedHtmlLayoutVisitor(htmlContainer); htmlContainer.PerformLayout(lay); htmlHost.ReleaseHtmlLayoutVisitor(lay); htmlFrgmentRenderBox.SetHtmlContainer(htmlContainer, rootElement); return htmlContainer; }
public static HtmlBoxes.HtmlHost CreateHtmlHost(AppHost appHost, EventHandler <ContentManagers.ImageRequestEventArgs> imageReqHandler, EventHandler <ContentManagers.TextRequestEventArgs> textReq) { List <HtmlBoxes.HtmlVisualRoot> htmlVisualRootUpdateList = new List <HtmlBoxes.HtmlVisualRoot>(); var config = new HtmlBoxes.HtmlHostCreationConfig() { RootGraphic = appHost.RootGfx, TextService = appHost.RootGfx.TextServices }; //1. HtmlBoxes.HtmlHost htmlhost = new HtmlBoxes.HtmlHost(config); //create html host with config appHost.RootGfx.ClearingBeforeRender += (s, e) => { // htmlhost.ClearUpdateWaitingCssBoxes(); // int j = htmlVisualRootUpdateList.Count; for (int i = 0; i < j; ++i) { HtmlBoxes.HtmlVisualRoot htmlVisualRoot = htmlVisualRootUpdateList[i]; htmlVisualRoot.RefreshDomIfNeed(); htmlVisualRoot.IsInUpdateQueue = false; } htmlVisualRootUpdateList.Clear(); }; //2. htmlhost.RegisterCssBoxGenerator(new LayoutFarm.CustomWidgets.MyCustomCssBoxGenerator(htmlhost)); //3. htmlhost.AttachEssentailHandlers(imageReqHandler, textReq); //4. htmlhost.SetHtmlVisualRootUpdateHandler(htmlVisualRoot => { if (!htmlVisualRoot.IsInUpdateQueue) { htmlVisualRoot.IsInUpdateQueue = true; htmlVisualRootUpdateList.Add(htmlVisualRoot); } }); //----------------------------------------------------------------- if (PaintLab.Svg.VgResourceIO.VgImgIOHandler == null) { var imgLoadingQ = new ContentManagers.ImageLoadingQueueManager(); imgLoadingQ.AskForImage += (s, e) => { //check loading policy here // e.SetResultImage(LoadImage(e.ImagSource)); }; PaintLab.Svg.VgResourceIO.VgImgIOHandler = (LayoutFarm.ImageBinder binder, PaintLab.Svg.VgVisualElement imgRun, object requestFrom) => { imgLoadingQ.AddRequestImage(binder); }; } return(htmlhost); }
public MyHtmlContainer(HtmlHost htmlhost) { this.htmlhost = htmlhost; }
public abstract CssBox CreateCssBox(LayoutFarm.WebDom.DomElement tag, CssBox parentBox, BoxSpec spec, HtmlHost host);
public CssScrollView(HtmlHost htmlhost, Css.BoxSpec boxSpec) : base(boxSpec) { _htmlhost = htmlhost; }
public CssScrollView(HtmlHost htmlhost, Css.BoxSpec boxSpec, IRootGraphics rootgfx) : base(boxSpec, rootgfx) { _htmlhost = htmlhost; }
public HtmlBox(HtmlHost htmlHost, int width, int height) : base(width, height) { this.htmlhost = htmlHost; }
LayoutFarm.HtmlBoxes.CssBox CreateInputBox(DomElement domE, LayoutFarm.HtmlBoxes.CssBox parentBox, BoxSpec spec, LayoutFarm.RootGraphic rootgfx, HtmlHost host) { var typeAttr = domE.FindAttribute("type"); if (typeAttr != null) { switch (typeAttr.Value) { case "text": { // user can specific width of textbox //var textbox = new LayoutFarm.CustomWidgets.TextBox(100, 17, false); var textbox = new LayoutFarm.CustomWidgets.TextBoxContainer(100, 20, false); var wrapperBox = CreateWrapper( textbox, textbox.GetPrimaryRenderElement(rootgfx), spec, true); //place holder support var placeHolderAttr = domE.FindAttribute("placeholder"); if (placeHolderAttr != null) { textbox.PlaceHolderText = placeHolderAttr.Value; } parentBox.AppendChild(wrapperBox); return wrapperBox; } case "button": { //use subdom? technique //todo: review the technique here var button = new HtmlWidgets.Button(60, 30); var ihtmlElement = domE as LayoutFarm.WebDom.IHtmlElement; if (ihtmlElement != null) { button.Text = ihtmlElement.innerHTML; } else { button.Text = ""; } button.Text = "testButton"; DomElement buttonDom = button.GetPresentationDomNode((HtmlDocument)domE.OwnerDocument); CssBox buttonCssBox = host.CreateBox2(parentBox, (WebDom.Impl.HtmlElement)buttonDom, true); // CreateCssBox(buttonDom, parentBox, spec, host); //var ui = button.GetPrimaryUIElement(this.myHost); //var wrapperBox = CreateWrapper( // button, // ui.GetPrimaryRenderElement(rootgfx), // spec, true); //parentBox.AppendChild(wrapperBox); //return wrapperBox; parentBox.AppendChild(buttonCssBox); return buttonCssBox; } case "textbox": { var textbox = new LayoutFarm.CustomWidgets.TextBox(100, 17, false); CssBox wrapperBox = CreateWrapper( textbox, textbox.GetPrimaryRenderElement(rootgfx), spec, true); parentBox.AppendChild(wrapperBox); return wrapperBox; } case "radio": { //tempfix -> just copy the Button code, //TODO: review here, use proper radio button var box = new LayoutFarm.CustomWidgets.SimpleBox(20, 20); CssBox wrapperBox = CreateWrapper( box, box.GetPrimaryRenderElement(rootgfx), spec, true); parentBox.AppendChild(wrapperBox); return wrapperBox; } break; } } return null; }
//------------------------------------------- internal virtual CssBox GetPrincipalBox(CssBox parentCssBox, HtmlHost host) { //this method is called when HasCustomPrincipalBoxGenerator = true throw new NotImplementedException(); }
internal RenderTreeBuilder(HtmlHost htmlHost) { this.htmlHost = htmlHost; this.contentTextSplitter = new HtmlContentTextSplitter(); }
// public MyHtmlVisualRoot(HtmlHost htmlhost) { _htmlhost = htmlhost; _textService = htmlhost.GetTextService(); }
public void SetHtmlHost(HtmlHost htmlhost) { this.htmlhost = htmlhost; htmlhost.SetHtmlContainerUpdateHandler(htmlCont => { var updatedHtmlCont = htmlCont as MyHtmlContainer; if (updatedHtmlCont != null && !updatedHtmlCont.IsInUpdateQueue) { updatedHtmlCont.IsInUpdateQueue = true; waitingUpdateList.Add(updatedHtmlCont); } }); htmlContainer = new MyHtmlContainer(htmlhost); htmlContainer.AttachEssentialHandlers( OnRefresh, myHtmlContainer_NeedUpdateDom, OnRefresh, null); htmlLayoutVisitor = new LayoutVisitor(); htmlLayoutVisitor.Bind(htmlContainer); //------------------------------------------------------- timer01.Interval = 20;//20ms? timer01.Tick += (s, e) => { //clear waiting int j = waitingUpdateList.Count; for (int i = 0; i < j; ++i) { var htmlCont = waitingUpdateList[i]; htmlCont.IsInUpdateQueue = false; htmlCont.RefreshDomIfNeed(); } for (int i = j - 1; i >= 0; --i) { waitingUpdateList.RemoveAt(i); } }; timer01.Enabled = true; //------------------------------------------- _htmlInputEventAdapter = new HtmlInputEventAdapter(); _htmlInputEventAdapter.Bind(htmlContainer); //------------------------------------------- }
public MyHtmlContainer(HtmlHost htmlhost) { this.htmlhost = htmlhost; }