示例#1
0
        public void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary <string, object> documentHost, object model)
        {
            var value = "html"; //default value of "html"

            var parameter = statement.Parameters.FirstOrDefault();

            if (parameter != null)
            {
                Type modelType = model != null?model.GetType() : null;

                var modelValueProvider = Host.ModelValueProviderFactory.Get(modelType);

                object result;
                if (modelValueProvider.GetValue(documentHost, model, statement.Parameters[0].Value, out result))
                {
                    value = result.ToString();
                }
            }

            if (_docTypes.ContainsKey(value))
            {
                value = _docTypes[value]();
            }

            documentHost.Add("doctype", value);

            writer.Write(string.Format("<!DOCTYPE {0}>", value));
        }
示例#2
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            //get the parameter
            var partial = GetLocalModel(documentHost, statement, model) as string;
            if (string.IsNullOrEmpty(partial))
            {
                throw new ArgumentNullException("partial");
            }
            //ok...we need to load the layoutpage
            //then pass the node's children into the layout page
            //then return the result
            var engine = (Host as AspNetHost).ViewEngine;
            var result = engine.FindView(null, partial, null, false);
            if (result != null)
            {
                var parrotView = (result.View as ParrotView);
                using (var stream = parrotView.LoadStream())
                {
                    var document = parrotView.LoadDocument(stream);

                    DocumentView view = new DocumentView(Host, rendererFactory, documentHost, document);

                    view.Render(writer);
                }
            }
        }
示例#3
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            //get the parameter
            List<object> parameters = new List<object>()
                {
                    writer, 
                    documentHost
                };

            if (statement.Parameters != null && statement.Parameters.Any())
            {
                //assume only the first is the path
                //second is the argument (model)
                //TODO: fix this
                parameters.AddRange((List<object>)GetLocalModel(documentHost, statement, model));
            }
            else
            {
                //layout = "_layout";
                throw new InvalidOperationException("Missing parameters");
            }

            var call = _renderAction.SingleOrDefault(r => r.GetParameters().Count() == parameters.Count);

            if (call != null)
            {
                call.Invoke(this, parameters.ToArray());
            }
            else
            {
                //throw an exception
            }
        }
示例#4
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            var localModel = GetLocalModel(documentHost, statement, model);

            //Assert that we're looping over something
            IEnumerable loop = localModel as IEnumerable;
            if (loop == null)
            {
                throw new InvalidCastException("model is not IEnumerable");
            }

            //create a local copy
            IList<object> items = ToList(loop);

            //create locals object to handle local values to the method
            Locals locals = new Locals(documentHost);

            for (int i = 0; i < items.Count; i++)
            {
                var item = items[i];

                foreach (var child in statement.Children)
                {
                    var renderer = rendererFactory.GetRenderer(child.Name);
                    locals.Push(IteratorItem(i, items));

                    renderer.Render(writer, rendererFactory, child, documentHost, item);

                    locals.Pop();
                }
            }
        }
示例#5
0
        public void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            var value = "html"; //default value of "html"

            var parameter = statement.Parameters.FirstOrDefault();
            if (parameter != null)
            {
                Type modelType = model != null ? model.GetType() : null;
                var modelValueProvider = Host.ModelValueProviderFactory.Get(modelType);

                object result;
                if (modelValueProvider.GetValue(documentHost, model, statement.Parameters[0].Value, out result))
                {
                    value = result.ToString();
                }
            }

            if (_docTypes.ContainsKey(value))
            {
                value = _docTypes[value]();
            }

            documentHost.Add("doctype", value);

            writer.Write(string.Format("<!DOCTYPE {0}>", value));
        }
示例#6
0
        public override void RenderChildren(IParrotWriter writer, Nodes.Statement statement, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, object model, string defaultTag = null)
        {
            if (string.IsNullOrEmpty(defaultTag))
            {
                defaultTag = DefaultChildTag;
            }

            //get model from parameter
            //required - do not remove
            if (statement.Parameters != null && statement.Parameters.Count == 1)
            {
                var localModel = GetLocalModel(documentHost, statement, model);

                if (localModel is IEnumerable)
                {
                    //create locals object to handle local values to the method
                    Locals locals = new Locals(documentHost);

                    IList<object> items = ToList(model as IEnumerable);
                    for (int i = 0; i < items.Count; i++)
                    {
                        var localItem = items[i];
                        locals.Push(IteratorItem(i, items));

                        base.RenderChildren(writer, statement.Children, rendererFactory, documentHost, defaultTag, localItem);

                        locals.Pop();
                    }
                }
            }
            else
            {
                base.RenderChildren(writer, statement.Children, rendererFactory, documentHost, defaultTag, model);
            }
        }
示例#7
0
 public DocumentView(IHost host, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, Document document)
 {
     DocumentHost = documentHost;
     _host = host;
     _rendererFactory = rendererFactory;
     _document = document;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ReportBuilder"/> class.
        /// </summary>
        /// <param name="parser">The IParser to use.</param>
        /// <param name="rendererFactory">The renderer factory.</param>
        /// <param name="targetDirectory">The directory where the generated report should be saved.</param>
        /// <param name="assemblyFilter">The assembly filter.</param>
        public ReportBuilder(IParser parser, IRendererFactory rendererFactory, string targetDirectory, IAssemblyFilter assemblyFilter)
        {
            if (parser == null)
            {
                throw new ArgumentNullException("parser");
            }

            if (rendererFactory == null)
            {
                throw new ArgumentNullException("rendererFactory");
            }

            if (targetDirectory == null)
            {
                throw new ArgumentNullException("targetDirectory");
            }

            if (assemblyFilter == null)
            {
                throw new ArgumentNullException("assemblyFilter");
            }

            this.parser = parser;
            this.rendererFactory = rendererFactory;
            this.targetDirectory = targetDirectory;
            this.assemblyFilter = assemblyFilter;
        }
示例#9
0
        public void doLayerCompose(Bitmap below, IView2D view, IRenderer r)
        {
            r.DrawImage(below, 0, 0);

            if (Visable)
            {
                IRenderer r2 = IRendererFactory.GetPreferredRenderer(new Bitmap(below.Width, below.Height));
                Render(view, r2);
                Bitmap thisLayer = r2.RenderTargetAsGDIBitmap();

                switch (ComposeMode)
                {
                case ComposeModes.Normal:
                    if (Opacity < 1)
                    {
                        Bitmap thisLayerScaled = thisLayer.MultiplyOpacity(Opacity);
                        r.DrawImage(thisLayerScaled, 0, 0);
                    }
                    else
                    {
                        r.DrawImage(thisLayer, 0, 0);
                    }
                    break;

                case ComposeModes.Multiply:
                    goto case ComposeModes.Normal;    //TODO: ignoring ComposeModes for now

                case ComposeModes.Difference:
                    goto case ComposeModes.Normal;    //TODO: ignoring ComposeModes for now
                }

                //TODO: ignoring ComposeModes for now
            }
        }
示例#10
0
        private static Bitmap mapToIsoMetric(Bitmap b, IsoMetricTileGenerationSettings settings)
        {
            int newWidth = (int)Math.Ceiling(Math.Sqrt(2 * (Math.Pow(Math.Max(b.Width, b.Height), 2))));

            //keep the width even
            if ((newWidth % 2) != 0)
            {
                newWidth++;
            }
            int           newHeight     = newWidth;
            int           halfNewWidth  = newWidth / 2;
            int           halfNewHeight = newWidth / 2;
            IRenderer     r             = IRendererFactory.GetPreferredRenderer(newWidth, newHeight);
            TransMatrix2D rot           = TransMatrix2D.FromRotation(Math.PI / 4.0, new Point2D(halfNewWidth, halfNewHeight));

            r.SetTransform(rot);
            r.DrawImage(b,
                        halfNewWidth - (b.Width / 2) + 1,
                        halfNewHeight - (b.Height / 2) + 1);

            Bitmap rotated = r.RenderTargetAsGDIBitmap();

            //apply squash
            if (Math.Abs(settings.HeightRatio) > 0.0001)
            {
                //return new Bitmap(rotated, rotated.Width, rotated.Height / 2);
                return(new Bitmap(rotated, b.Width, b.Height / 2));
            }
            return(rotated);
        }
示例#11
0
        public static IXwtRender TryLoad(ToolkitType type, out IRendererFactory renderfactory)
        {
            /* switch (OSPlatform)
             * {
             *   case PlatformID.MacOSX:
             *       return TryLoad("XamMac", type, out renderfactory);
             *
             *   default:*/
            switch (type)
            {
            case ToolkitType.XamMac:
                return(TryLoad("XamMac", type, out renderfactory));

            case ToolkitType.Wpf:
                return(TryLoad("WPF", type, out renderfactory));

            case ToolkitType.Gtk:
            case ToolkitType.Gtk3:
                return(TryLoad("GTK", type, out renderfactory));
            }

            /*   break;
             * }*/
            throw new NotImplementedException();
        }
示例#12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ReportBuilder"/> class.
        /// </summary>
        /// <param name="parser">The IParser to use.</param>
        /// <param name="rendererFactory">The renderer factory.</param>
        /// <param name="targetDirectory">The directory where the generated report should be saved.</param>
        /// <param name="assemblyFilter">The assembly filter.</param>
        public ReportBuilder(IParser parser, IRendererFactory rendererFactory, string targetDirectory, IAssemblyFilter assemblyFilter)
        {
            if (parser == null)
            {
                throw new ArgumentNullException("parser");
            }

            if (rendererFactory == null)
            {
                throw new ArgumentNullException("rendererFactory");
            }

            if (targetDirectory == null)
            {
                throw new ArgumentNullException("targetDirectory");
            }

            if (assemblyFilter == null)
            {
                throw new ArgumentNullException("assemblyFilter");
            }

            this.parser          = parser;
            this.rendererFactory = rendererFactory;
            this.targetDirectory = targetDirectory;
            this.assemblyFilter  = assemblyFilter;
        }
示例#13
0
        private Bitmap renderMazeAsImage(bool systemDPI = false)
        {
            if (maze == null)
            {
                return(null);
            }
            int       gap          = 32;
            Rectangle renderBounds = new Rectangle(gap, gap, maze.TotalSizeInPixels.Width, maze.TotalSizeInPixels.Height);
            IRenderer r            = IRendererFactory.GetPreferredRenderer(renderBounds.Width + (gap * 2), renderBounds.Height + (gap * 2));

            r.Clear(maze.FillColor);
            maze.Render(r, renderBounds);

            if (currentPath != null)
            {
                maze.renderPath(r, renderBounds, currentPath);
            }
            if (currentMazeMask != null)
            {
                maze.renderMask(r, renderBounds, currentMazeMask);
            }



            Bitmap b = r.RenderTargetAsGDIBitmap();

            if (!systemDPI)
            {
                b.SetResolution((float)maze.DPI, (float)maze.DPI);
            }
            return(b);
        }
示例#14
0
        public void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            var modelValueProviderFactory = _host.ModelValueProviderFactory;

            string result = "";
            if (statement is StringLiteral)
            {
                foreach (var value in (statement as StringLiteral).Values)
                {
                    result += GetModelValue(
                        modelValueProviderFactory,
                        documentHost,
                        model,
                        value.Type,
                        value.Data
                        );
                }
            }
            else
            {
                result = GetModelValue(modelValueProviderFactory, documentHost, model, StringLiteralPartType.Encoded, statement.Name);
            }

            writer.Write(result);
        }
示例#15
0
        public void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary <string, object> documentHost, object model)
        {
            var modelValueProviderFactory = _host.ModelValueProviderFactory;

            string result = "";

            if (statement is StringLiteral)
            {
                foreach (var value in (statement as StringLiteral).Values)
                {
                    result += GetModelValue(
                        modelValueProviderFactory,
                        documentHost,
                        model,
                        value.Type,
                        value.Data
                        );
                }
            }
            else
            {
                result = GetModelValue(modelValueProviderFactory, documentHost, model, StringLiteralPartType.Encoded, statement.Name);
            }

            writer.Write(result);
        }
示例#16
0
 public DocumentView(IHost host, IRendererFactory rendererFactory, IDictionary <string, object> documentHost, Document document)
 {
     DocumentHost     = documentHost;
     _host            = host;
     _rendererFactory = rendererFactory;
     _document        = document;
 }
示例#17
0
 public Canvas3D(MainWindow window)
 {
     this.owner         = window;
     this.RenderFactory = window.RenderFactory;
     this.XwtRender     = window.XwtRender;
     this.Xwt           = window.Xwt;
 }
示例#18
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary <string, object> documentHost, object model)
        {
            var localModel = GetLocalModel(documentHost, statement, model);

            //Assert that we're looping over something
            IEnumerable loop = localModel as IEnumerable;

            if (loop == null)
            {
                throw new InvalidCastException("model is not IEnumerable");
            }

            //create a local copy
            IList <object> items = ToList(loop);

            //create locals object to handle local values to the method
            Locals locals = new Locals(documentHost);

            for (int i = 0; i < items.Count; i++)
            {
                var item = items[i];

                foreach (var child in statement.Children)
                {
                    var renderer = rendererFactory.GetRenderer(child.Name);
                    locals.Push(IteratorItem(i, items));

                    renderer.Render(writer, rendererFactory, child, documentHost, item);

                    locals.Pop();
                }
            }
        }
示例#19
0
        public override void Render(Parrot.Infrastructure.IParrotWriter writer, IRendererFactory rendererFactory, Nodes.Statement statement, IDictionary <string, object> documentHost, object model)
        {
            var localModel = GetLocalModel(documentHost, statement, model);

            if (localModel is bool && (bool)localModel)
            {
                RenderChildren(writer, statement.Children, rendererFactory, documentHost, base.DefaultChildTag, model);
            }
        }
示例#20
0
        public override void Render(Parrot.Infrastructure.IParrotWriter writer, IRendererFactory rendererFactory, Nodes.Statement statement, IDictionary<string, object> documentHost, object model)
        {
            var localModel = GetLocalModel(documentHost, statement, model);

            if (localModel is bool && (bool)localModel)
            {
                RenderChildren(writer, statement.Children, rendererFactory, documentHost, base.DefaultChildTag, model);
            }
        }
示例#21
0
            public Canvas3D(MainWindow window)
            {
                this.RenderFactory = window.Renderfactory;
                this.XwtRender     = window.XwtRender;
                this.Xwt           = window.Xwt;

                base.BackgroundColor = global::Xwt.Drawing.Colors.DarkGreen;
                base.MinWidth        = base.MinHeight = 100;
            }
示例#22
0
文件: lwf_core.cs 项目: osdakira/lwf
 public void SetRendererFactory(IRendererFactory rendererFactory = null)
 {
     if (rendererFactory == null)
     {
         rendererFactory = new NullRendererFactory();
     }
     m_rendererFactory = rendererFactory;
     m_rendererFactory.Init(this);
 }
示例#23
0
        public opentkdoc(IRendererFactory factory, IXwtRender xwtrender, IXwt xwt)
        {
            this.xwtrender = xwtrender;
            this.xwt       = xwt;
            this.factory   = factory;

            base.BackgroundColor = Colors.Black;
            base.MinWidth        = base.MinHeight = 100;
        }
示例#24
0
 public WindowFactory(IRendererFactory rendererFactory, IResourceManager resourceManager, ISceneReader sceneReader)
 {
   if (rendererFactory == null) throw new ArgumentNullException("rendererFactory");
   if (resourceManager == null) throw new ArgumentNullException("resourceManager");
   if (sceneReader == null) throw new ArgumentNullException("sceneReader");
   _rendererFactory = rendererFactory;
   _resourceManager = resourceManager;
   _sceneReader = sceneReader;
 }
示例#25
0
        public XamMac(out IRendererFactory rendererFactory)
            : base()
        {
            rendererFactory = new FrameFactory(() => /*CGLGetCurrentContext()*/ NSOpenGLContext.CurrentContext?.CGLContext.Handle ?? IntPtr.Zero);

            Application.Initialize(ToolkitType.XamMac);

            // NSApplication.Initialize(); // Problem: This does not allow creating a separate app and using CocoaNativeWindow.
        }
 public InstrumentFactory(
     InstrumentStateSnapshotCache instrumentStateSnapshotCache = null,
     IRendererFactory rendererFactory = null,
     IPerformanceCounterInstanceFactory performanceCounterInstanceFactory = null)
 {
     _instrumentStateSnapshotCache = instrumentStateSnapshotCache ?? new InstrumentStateSnapshotCache();
     _rendererFactory = rendererFactory ?? new RendererFactory();
     _performanceCounterInstanceFactory = performanceCounterInstanceFactory ?? new PerformanceCounterInstanceInstanceFactory();
 }
示例#27
0
        protected override void CreateTag(IParrotWriter writer, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, object model, Statement statement)
        {
            string tagName = string.IsNullOrWhiteSpace(statement.Name) ? DefaultChildTag : statement.Name;

            TagBuilder builder = new TagBuilder(tagName);
            //add attributes
            RenderAttributes(rendererFactory, documentHost, model, statement, builder);

            writer.Write(builder.ToString(TagRenderMode.SelfClosing));
        }
示例#28
0
        public ParrotView(IHost host, IRendererFactory rendererFactory, ParrotViewLocator parrotViewLocator, Func<TextReader> contents, IParrotWriter writer)
        {
            _host = host;
            _rendererFactory = rendererFactory;
            _parrotViewLocator = parrotViewLocator;
            _contents = contents;
            _writer = writer;

            _rendererFactory.RegisterFactory(new LayoutRenderer(_host, _parrotViewLocator));
        }
示例#29
0
        public RenderService(
            ConfigService configService,
            IRepositoryPullService pullService,
            IRendererFactory rendererFactory)
        {
            this.configService   = configService;
            this.pullService     = pullService;
            this.rendererFactory = rendererFactory;

            this.pullService.RepositoryChanged += RepositoryChanged;
        }
示例#30
0
        public LWF(Data lwfData, IRendererFactory r)
#endif
        {
            m_data = lwfData;

            interactive     = m_data.buttonConditions.Length > 0;
            m_frameRate     = m_data.header.frameRate;
            m_execLimit     = 3;
            m_frameSkip     = true;
            m_tick          = 1.0f / m_frameRate;
            m_roundOffTick  = m_tick * ROUND_OFF_TICK_RATE;
            m_attachVisible = true;
            m_interceptByNotAllowOrDenyButtons = true;
            m_intercepted             = false;
            scaleByStage              = 1.0f;
            m_needsUpdate             = false;
            m_needsUpdateForAttachLWF = false;
            m_pointX     = Single.MinValue;
            m_pointY     = Single.MinValue;
            m_pressing   = false;
            m_instanceId = ++m_instanceOffset;
            m_alive      = true;
#if LWF_USE_LUA
            m_luaState         = l;
            m_instanceIdString = instanceId.ToString();
            InitLua();
#endif

            if (!interactive && m_data.frames.Length == 1)
            {
                DisableExec();
            }

            m_property  = new Property(this);
            m_instances = new IObject[m_data.instanceNames.Length];
            InitEvent();
            m_movieCommands             = new MovieCommands();
            m_programObjectConstructors =
                new ProgramObjectConstructor[m_data.programObjects.Length];
            m_textDictionary = new TextDictionary();

            m_matrix                 = new Matrix();
            m_matrixIdentity         = new Matrix();
            m_execMatrix             = new Matrix();
            m_colorTransform         = new ColorTransform();
            m_colorTransformIdentity = new ColorTransform();
            m_execColorTransform     = new ColorTransform();
            m_blendModes             = new BlendModes();
            m_maskModes              = new MaskModes();

            Init();

            SetRendererFactory(r);
        }
示例#31
0
        protected override void CreateTag(IParrotWriter writer, IRendererFactory rendererFactory, IDictionary <string, object> documentHost, object model, Statement statement)
        {
            string tagName = string.IsNullOrWhiteSpace(statement.Name) ? DefaultChildTag : statement.Name;

            TagBuilder builder = new TagBuilder(tagName);

            //add attributes
            RenderAttributes(rendererFactory, documentHost, model, statement, builder);

            writer.Write(builder.ToString(TagRenderMode.SelfClosing));
        }
示例#32
0
        private static Bitmap addBorder(Bitmap b, IsoMetricTileGenerationSettings settings)
        {
            int       margin    = settings.BorderSize;
            int       newWidth  = b.Width + (margin * 2);
            int       newHeight = b.Width + (margin * 2);
            IRenderer r         = IRendererFactory.GetPreferredRenderer(newWidth, newHeight);

            switch (settings.BorderProtection)
            {
            case IsoMetricTileGenerationSettings.IsoMetricBorderProtection.RepeatEdge:
                //draw top edge streched across top margin
                Rectangle srcEdge  = new Rectangle(0, 0, b.Width, 1);
                Rectangle destRect = new Rectangle(margin, 0, b.Width, margin);
                r.DrawImage(b, destRect, srcEdge);
                //r.FillRectangle(Color.Red, destRect);

                //draw bottom edge
                srcEdge  = new Rectangle(0, b.Height - 1, b.Width, 1);
                destRect = new Rectangle(margin, b.Height + margin, b.Width, margin);
                r.DrawImage(b, destRect, srcEdge);
                //r.FillRectangle(Color.Red, destRect);

                //draw left edge
                srcEdge  = new Rectangle(0, 0, 1, b.Height);
                destRect = new Rectangle(0, margin, margin, b.Height);
                r.DrawImage(b, destRect, srcEdge);
                //r.FillRectangle(Color.Red, destRect);

                //draw right edge
                srcEdge  = new Rectangle(b.Width - 1, 0, 1, b.Height);
                destRect = new Rectangle(b.Width + margin, margin, margin, b.Height);
                r.DrawImage(b, destRect, srcEdge);
                //r.FillRectangle(Color.Red, destRect);

                //draw corners
                int xPos = margin + b.Width;
                int yPos = margin + b.Height;
                r.FillRectangle(b.GetPixel(0, 0), new Rectangle(0, 0, margin, margin));
                r.FillRectangle(b.GetPixel(b.Width - 1, 0), new Rectangle(xPos, 0, margin, margin));
                r.FillRectangle(b.GetPixel(0, b.Height - 1), new Rectangle(0, yPos, margin, margin));
                r.FillRectangle(b.GetPixel(b.Width - 1, b.Height - 1), new Rectangle(xPos, yPos, margin, margin));

                //draw original image
                r.DrawImage(b, margin, margin);
                break;

            case IsoMetricTileGenerationSettings.IsoMetricBorderProtection.MirrorAboutEdge:
                break;

            case IsoMetricTileGenerationSettings.IsoMetricBorderProtection.ToroidalWrap:
                break;
            }
            return(r.RenderTargetAsGDIBitmap());
        }
示例#33
0
        private string GetType(Statement statement, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, object model)
        {
            for (int i = 0; i < statement.Attributes.Count; i++)
            {
                if (statement.Attributes[i].Key.Equals("type", StringComparison.OrdinalIgnoreCase))
                {
                    return RenderAttribute(statement.Attributes[i], rendererFactory, documentHost, model);
                }
            }

            return "hidden";
        }
示例#34
0
        /// <summary>
        /// Render content based on its <see cref="Raw"/> and <see cref="RenderConfigs"/>.
        /// </summary>
        /// <param name="renderFactory">The <see cref="IRendererFactory"/> to produce renderers.</param>
        /// <returns>A <see cref="Task"/> when render completes.</returns>
        public async Task RenderAsync(IRendererFactory renderFactory)
        {
            var renderItem = Raw;

            foreach (var config in RenderConfigs.OrderBy(r => r.Order))
            {
                var renderer = renderFactory.CreateRenderer(config.RendererId);
                renderItem = await renderer.RenderAsync(renderItem, config.RendererData);
            }

            Content = renderItem;
        }
示例#35
0
        protected void RenderChildren(IParrotWriter writer, StatementList children, IRendererFactory rendererFactory, IDictionary <string, object> documentHost, string defaultTag, object model)
        {
            Func <string, string> tagName = s => string.IsNullOrEmpty(s) ? defaultTag : s;

            foreach (var child in children)
            {
                child.Name = tagName(child.Name);
                var renderer = rendererFactory.GetRenderer(child.Name);

                renderer.Render(writer, rendererFactory, child, documentHost, model);
            }
        }
示例#36
0
        private string GetType(Statement statement, IRendererFactory rendererFactory, IDictionary <string, object> documentHost, object model)
        {
            for (int i = 0; i < statement.Attributes.Count; i++)
            {
                if (statement.Attributes[i].Key.Equals("type", StringComparison.OrdinalIgnoreCase))
                {
                    return(RenderAttribute(statement.Attributes[i], rendererFactory, documentHost, model));
                }
            }

            return("hidden");
        }
示例#37
0
 public GTK(out IRendererFactory render, bool initialize)
 {
     if (System.Environment.OSVersion.Platform == PlatformID.Unix ||
         System.Environment.OSVersion.Platform == PlatformID.MacOSX)
     {
         impl = new X11(out render);
     }
     else
     {
         impl = new Windows(out render);
     }
 }
示例#38
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            var childrenQueue = documentHost.GetValueOrDefault(LayoutRenderer.LayoutChildren) as Queue<StatementList>;
            if (childrenQueue == null)
            {
                //TODO: replace this with a real exception
                throw new Exception("Children elements empty");
            }

            var children = childrenQueue.Dequeue();

            RenderChildren(writer, children, rendererFactory, documentHost, DefaultChildTag, model);
        }
示例#39
0
 public Game(IRendererFactory renderFactory)
 {
     GameMode = GameModes.Play;
     this.renderFactory = renderFactory;
     Level = new Level.Level(this, renderFactory.LevelRenderer);
     Robot = new Robot.Robot(this, renderFactory.RobotRenderer);
     HUD = new Hud(this, renderFactory.HudRenderer,
         renderFactory.CommandBarRenderer, renderFactory.CommandMainProgramRenderer, renderFactory.FunctionOneRenderer, renderFactory.FunctionTwoRenderer,
         renderFactory.HudIconFactory);
     MainProgram = new CommandList(this);
     FunctionOneCommands = new CommandList(this);
     FunctionTwoCommands = new CommandList(this);
     CommandFactory.GameHandler = this;
     Position = new RobotPosition(this);
 }
示例#40
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            //get the parameter
            List<string> parameters = new List<string>();
            if (statement.Parameters != null && statement.Parameters.Any())
            {
                //assume only the first is the path
                //second is the argument (model)
                //TODO: fix this

                //statement.Parameters[0].Value;

                parameters.AddRange(statement.Parameters.Select(p => p.CalculatedValue));
                documentHost.Add(parameters[0], parameters[1]);
            }
        }
示例#41
0
        public MainWindow(IRendererFactory renderfactory, IXwtRender xwtrender, IXwt xwt)
        {
            this.Renderfactory = renderfactory;
            this.XwtRender     = xwtrender;
            this.Xwt           = xwt;

            this.Content = new Canvas3D(this)
            {
                MinWidth            = 100,
                MinHeight           = 100,
                HorizontalPlacement = WidgetPlacement.Fill,
                VerticalPlacement   = WidgetPlacement.Fill,
                ExpandHorizontal    = true,
                ExpandVertical      = true
            };
        }
示例#42
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            string layout = "";
            if (statement.Parameters != null && statement.Parameters.Any())
            {
                Type modelType = model != null ? model.GetType() : null;
                var modelValueProvider = Host.ModelValueProviderFactory.Get(modelType);

                //var parameterLayout = GetLocalModelValue(documentHost, statement, modelValueProvider, model) ?? "_layout";
                var parameterLayout = GetLocalModel(documentHost, statement, model) ?? "_layout";

                //assume only the first is the path
                //second is the argument (model)
                layout = parameterLayout.ToString();
            }


            //ok...we need to load the view
            //then pass the model to it and
            //then return the result

            var result = _parrotViewLocator.LocateView(layout);

            if (result != null)
            {
                var parrotView = new ParrotView(_host, rendererFactory, _parrotViewLocator, result.Contents, writer);
                string contents = result.Contents().ReadToEnd();

                var document = parrotView.LoadDocument(contents);

                //Create a new DocumentView and DocumentHost
                if (!documentHost.ContainsKey("_LayoutChildren_"))
                {
                    documentHost.Add("_LayoutChildren_", new Queue<StatementList>());
                }
                (documentHost["_LayoutChildren_"] as Queue<StatementList>).Enqueue(statement.Children);

                DocumentView view = new DocumentView(_host, rendererFactory, documentHost, document);

                view.Render(writer);
            }
            else
            {
                throw new Exception(string.Format("Layout {0} could not be found", layout));
            }
        }
示例#43
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary <string, object> documentHost, object model)
        {
            var localModel = GetLocalModel(documentHost, statement, model);

            string statementToOutput = "default";

            if (localModel != null)
            {
                statementToOutput = localModel.ToString();
            }

            //check that there is a parameter

            foreach (var child in statement.Children)
            {
                string value;
                var    valueWriter = Host.CreateWriter();

                //get string value
                var renderer = rendererFactory.GetRenderer(child.Name);
                if (renderer is StringLiteralRenderer)
                {
                    renderer.Render(valueWriter, rendererFactory, child, documentHost, model);
                    value = valueWriter.Result();
                }
                else
                {
                    value = child.Name;
                }

                if (value.Equals(statementToOutput, StringComparison.OrdinalIgnoreCase))
                {
                    //render only the child
                    RenderChildren(writer, child, rendererFactory, documentHost, model);
                    return;
                }
            }

            var defaultChild = statement.Children.SingleOrDefault(s => s.Name.Equals("default", StringComparison.OrdinalIgnoreCase));

            if (defaultChild != null)
            {
                RenderChildren(writer, defaultChild, rendererFactory, documentHost, model);
            }
        }
示例#44
0
        public Bitmap Render(Size flagSize)
        {
            IRenderer g = IRendererFactory.GetPreferredRenderer(flagSize.Width, flagSize.Height);

            g.SetHighQuality(false);
            //draw feild
            g.FillRectangle(FieldCol, 0, 0, flagSize.Width, flagSize.Height);

            //draw layers
            foreach (var layerInfo in FlagLayers)
            {
                //render image
                Bitmap b = layerInfo.Item1.RenderImage(layerInfo.Item2, flagSize);
                g.DrawImage(b, 0, 0);
            }

            return(g.RenderTargetAsGDIBitmap());
        }
 public WindowFactory(IRendererFactory rendererFactory, IResourceManager resourceManager, ISceneReader sceneReader)
 {
     if (rendererFactory == null)
     {
         throw new ArgumentNullException("rendererFactory");
     }
     if (resourceManager == null)
     {
         throw new ArgumentNullException("resourceManager");
     }
     if (sceneReader == null)
     {
         throw new ArgumentNullException("sceneReader");
     }
     _rendererFactory = rendererFactory;
     _resourceManager = resourceManager;
     _sceneReader     = sceneReader;
 }
示例#46
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            var localModel = GetLocalModel(documentHost, statement, model);

            string statementToOutput = "default";

            if (localModel != null)
            {
                statementToOutput = localModel.ToString();
            }

            //check that there is a parameter

            foreach (var child in statement.Children)
            {
                string value;
                var valueWriter = Host.CreateWriter();

                //get string value
                var renderer = rendererFactory.GetRenderer(child.Name);
                if (renderer is StringLiteralRenderer)
                {
                    renderer.Render(valueWriter, rendererFactory, child, documentHost, model);
                    value = valueWriter.Result();
                }
                else
                {
                    value = child.Name;
                }

                if (value.Equals(statementToOutput, StringComparison.OrdinalIgnoreCase))
                {
                    //render only the child
                    RenderChildren(writer, child, rendererFactory, documentHost, model);
                    return;
                }
            }

            var defaultChild = statement.Children.SingleOrDefault(s => s.Name.Equals("default", StringComparison.OrdinalIgnoreCase));
            if (defaultChild != null)
            {
                RenderChildren(writer, defaultChild, rendererFactory, documentHost, model);
            }
        }
示例#47
0
        public override Bitmap RenderImage(LayerSettings ls, Size flagSize)
        {
            //draw crest
            IRenderer g = IRendererFactory.GetPreferredRenderer(flagSize.Width, flagSize.Height);

            int    xPos      = 0;
            int    yPos      = 0;
            int    newHeight = flagSize.Height / 3;
            int    newWidth  = (int)((newHeight / (double)Image.Height) * Image.Width); //maintain aspect ratio
            double ratio;

            switch (ls.crestPosition)
            {
            case CrestPositions.Central:
                ratio     = ls.nominalSize / (double)Math.Max(Image.Width, Image.Height);
                newWidth  = (int)(Image.Width * ratio);
                newHeight = (int)(Image.Height * ratio);
                xPos      = (flagSize.Width / 2) - (newWidth / 2);
                yPos      = (flagSize.Height / 2) - (newHeight / 2);
                break;

            case CrestPositions.TopLeft:
                xPos = 0;
                yPos = 0;
                break;

            case CrestPositions.Left:
                newHeight = (int)(flagSize.Height * 0.75);
                newWidth  = (int)((newHeight / (double)Image.Height) * Image.Width);    //maintain aspect ratio
                xPos      = 0;
                yPos      = (flagSize.Height / 2) - (newHeight / 2);
                break;

            default:
                break;
            }

            int    blue = Color.Blue.ToArgb();
            Bitmap b    = (Bitmap)Image.Clone();

            FlagGenerator.recolorImage(b, blue, ls.Color);
            g.DrawImage(b, xPos, yPos, newWidth, newHeight);
            return(g.RenderTargetAsGDIBitmap());
        }
示例#48
0
        public void Destroy()
        {
            m_rootMovie.Destroy();
#if LWF_USE_LUA
            DestroyLua();
#endif
            if (m_rendererFactory != null)
            {
                m_rendererFactory.Destruct();
                m_rendererFactory = null;
            }

            m_alive = false;

            if (lwfUnloader != null)
            {
                lwfUnloader();
            }
        }
示例#49
0
        protected virtual void CreateTag(IParrotWriter writer, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, object model, Statement statement)
        {
            string tagName = string.IsNullOrWhiteSpace(statement.Name) ? DefaultChildTag : statement.Name;

            TagBuilder builder = new TagBuilder(tagName);
            //add attributes
            RenderAttributes(rendererFactory, documentHost, model, statement, builder);
            //AppendAttributes(builder, statement.Attributes, documentHost, modelValueProvider);

            writer.Write(builder.ToString(TagRenderMode.StartTag));
            //render children

            if (statement.Children.Count > 0)
            {
                RenderChildren(writer, statement, rendererFactory, documentHost, model);
            }

            writer.Write(builder.ToString(TagRenderMode.EndTag));
        }
示例#50
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            string layout = "";
            if (statement.Parameters != null && statement.Parameters.Any())
            {
                Type modelType = model != null ? model.GetType() : null;
                var modelValueProvider = Host.ModelValueProviderFactory.Get(modelType);

                var parameterLayout = GetLocalModel(documentHost, statement, model) ?? "_layout";

                //assume only the first is the path
                //second is the argument (model)
                layout = parameterLayout.ToString();
            }


            //ok...we need to load the view
            //then pass the model to it and
            //then return the result
            var engine = (Host as AspNetHost).ViewEngine;
            var result = engine.FindView(null, layout, null, false);
            if (result != null)
            {
                var parrotView = (result.View as ParrotView);
                using (var stream = parrotView.LoadStream())
                {
                    var document = parrotView.LoadDocument(stream);

                    //Create a new DocumentView and DocumentHost
                    
                    if (!documentHost.ContainsKey(LayoutChildren))
                    {
                        documentHost.Add(LayoutChildren, new Queue<StatementList>());
                    }
                    (documentHost[LayoutChildren] as Queue<StatementList>).Enqueue(statement.Children);

                    DocumentView view = new DocumentView(Host, rendererFactory, documentHost, document);

                    view.Render(writer);
                }
            }
        }
示例#51
0
        public void BeforeRender(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            //process parameters
            if (statement.Parameters != null && statement.Parameters.Any())
            {
                foreach (var parameter in statement.Parameters)
                {
                    if (parameter.Value != null && ((parameter.Value.StartsWith("\"") && parameter.Value.EndsWith("\"")) || (parameter.Value.StartsWith("'") && parameter.Value.EndsWith("'"))))
                    {
                        var stringLiteral = new StringLiteral(parameter.Value);
                        var renderer = rendererFactory.GetRenderer("string");
                        var w = new StandardWriter();
                        {
                            renderer.Render(w, rendererFactory, stringLiteral, documentHost, model);
                        }

                        parameter.CalculatedValue = w.Result();
                    }
                }
            }
        }
示例#52
0
        public virtual void RenderChildren(IParrotWriter writer, Statement statement, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, object model, string defaultTag = null)
        {
            if (string.IsNullOrEmpty(defaultTag))
            {
                defaultTag = DefaultChildTag;
            }

            if (model is IEnumerable && statement.Parameters.Any())
            {
                foreach (object item in model as IEnumerable)
                {
                    var localItem = item;

                    RenderChildren(writer, statement.Children, rendererFactory, documentHost, defaultTag, localItem);
                }
            }
            else
            {
                RenderChildren(writer, statement.Children, rendererFactory, documentHost, defaultTag, model);
            }
        }
示例#53
0
        protected override void CreateTag(Parrot.Infrastructure.IParrotWriter writer, IRendererFactory rendererFactory, IDictionary<string, object> documentHost, object model, Nodes.Statement statement)
        {
            var xhtml = false;
            if (documentHost.ContainsKey("doctype"))
            {
                //we have a registered doctype, is it xml?
                if (documentHost["doctype"].ToString().IndexOf("xhtml", StringComparison.OrdinalIgnoreCase) != -1)
                {
                    //it's xhtml, we need to output cdata
                    xhtml = true;
                }
            }

            string tagName = string.IsNullOrWhiteSpace(statement.Name) ? DefaultChildTag : statement.Name;

            TagBuilder builder = new TagBuilder(tagName);
            //add attributes
            RenderAttributes(rendererFactory, documentHost, model, statement, builder);
            //AppendAttributes(builder, statement.Attributes, documentHost, modelValueProvider);

            writer.Write(builder.ToString(TagRenderMode.StartTag));
            //render children

            if (xhtml)
            {
                writer.Write("//<![CDATA[");
            }

            if (statement.Children.Count > 0)
            {
                RenderChildren(writer, statement, rendererFactory, documentHost, model);
            }

            if (xhtml)
            {
                writer.Write("//]]>");
            }

            writer.Write(builder.ToString(TagRenderMode.EndTag));
        }
示例#54
0
        public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
        {
            //get the input type
            string type = GetType(statement, rendererFactory, documentHost, model);
            switch (type)
            {
                case "checkbox":
                case "radio":
                    //special handling for "checked"
                    //is there a checked attribute
                    for (int i = 0; i < statement.Attributes.Count; i++)
                    {
                        if (statement.Attributes[i].Key == "checked")
                        {
                            string attributeValue = RenderAttribute(statement.Attributes[i], rendererFactory, documentHost, model);

                            switch (attributeValue)
                            {
                                case "true":
                                    statement.Attributes[i] = new Nodes.Attribute(statement.Attributes[i].Key, new StringLiteral("\"checked\""));
                                    //.Value = "checked";
                                    break;
                                case "false":
                                case "null":
                                    //remove this attribute
                                    statement.Attributes.RemoveAt(i);
                                    i -= 1;
                                    break;
                            }
                        }
                    }

                    break;
            }

            base.Render(writer, rendererFactory, statement, documentHost, model);
        }
示例#55
0
 public override void Render(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
 {
     var localModel = GetLocalModel(documentHost, statement, model);
     CreateTag(writer, rendererFactory, documentHost, localModel, statement);
 }
示例#56
0
 public void AfterRender(IParrotWriter writer, IRendererFactory rendererFactory, Statement statement, IDictionary<string, object> documentHost, object model)
 {
 }
示例#57
0
		internal static LayoutInfo MakeLayoutInfo(int maxWidth, IVwGraphics vg, IRendererFactory factory)
		{
			return new LayoutInfo(2, 2, 96, 96, maxWidth, vg, factory);
		}
示例#58
0
文件: lwf_core.cs 项目: yonekawa/lwf
 public void SetRendererFactory(IRendererFactory rendererFactory = null)
 {
     if (rendererFactory == null)
     rendererFactory = new NullRendererFactory();
     m_rendererFactory = rendererFactory;
     m_rendererFactory.Init(this);
 }
示例#59
0
文件: lwf_core.cs 项目: yonekawa/lwf
        public LWF(Data lwfData, IRendererFactory r)
        {
            m_data = lwfData;

            interactive = m_data.buttonConditions.Length > 0;
            m_frameRate = m_data.header.frameRate;
            m_execLimit = 3;
            m_tick = 1.0f / m_frameRate;
            m_roundOffTick = m_tick * ROUND_OFF_TICK_RATE;
            m_attachVisible = true;
            m_interceptByNotAllowOrDenyButtons = true;
            m_intercepted = false;
            scaleByStage = 1.0f;
            m_pointX = Single.MinValue;
            m_pointY = Single.MinValue;
            m_pressing = false;
            m_instanceId = ++m_instanceOffset;
            m_alive = true;

            if (!interactive && m_data.frames.Length == 1)
            DisableExec();

            m_property = new Property(this);
            m_instances = new IObject[m_data.instanceNames.Length];
            InitEvent();
            m_movieCommands = new MovieCommands();
            m_programObjectConstructors =
            new ProgramObjectConstructor[m_data.programObjects.Length];
            m_textDictionary = new TextDictionary();

            m_matrix = new Matrix();
            m_matrixIdentity = new Matrix();
            m_colorTransform = new ColorTransform();
            m_colorTransformIdentity = new ColorTransform();

            Init();

            SetRendererFactory(r);
        }
示例#60
0
		public LayoutInfo(LayoutTransform source, int maxWidth, IVwGraphics graphics, IRendererFactory rf)
			: this(source.XOffset, source.YOffset, source.DpiX, source.DpiY, maxWidth, graphics, rf)
		{
		}