public void RenderItem(Context cr, Gdk.Point renderAnchor, int width, Do.Universe.Item item, bool drawArrow)
        {
            cr.Rectangle(renderAnchor.X, renderAnchor.Y, width, Height);
            cr.SetSourceRGBA(0, 0, 0, 0);
            cr.Operator = Operator.Source;
            cr.Fill();
            cr.Operator = Operator.Over;

            Gdk.Pixbuf pixbuf = IconProvider.PixbufFromIconName(item.Icon, IconSize);
            Gdk.CairoHelper.SetSourcePixbuf(cr, pixbuf, 2, 2);
            cr.Paint();

            pixbuf.Dispose();

            foreach (int i in parent.Secondary)
            {
                if (parent.Results[i] == item)
                {
                    pixbuf = IconProvider.PixbufFromIconName("gtk-add", IconSize);
                    Gdk.CairoHelper.SetSourcePixbuf(cr, pixbuf, 2, 2);
                    cr.PaintWithAlpha(.7);
                    pixbuf.Dispose();
                }
            }

            Pango.Layout layout = new Pango.Layout(parent.PangoContext);
            layout.Width     = Pango.Units.FromPixels(width - IconSize - 25);
            layout.Ellipsize = Pango.EllipsizeMode.End;
            layout.SetMarkup("<span foreground=\"#" + parent.ItemTextColor + "\">" + GLib.Markup.EscapeText(item.Name) + "</span>");
            layout.FontDescription = Pango.FontDescription.FromString("normal bold");
            layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels(10);

            cr.MoveTo(IconSize + 6, 4);
            Pango.CairoHelper.ShowLayout(cr, layout);

            layout.SetMarkup("<span foreground=\"#" + parent.ItemTextColor + "\">" + GLib.Markup.EscapeText(item.Description) + "</span>");
            layout.FontDescription.Dispose();
            layout.FontDescription = Pango.FontDescription.FromString("normal");
            layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels(10);
            cr.MoveTo(IconSize + 8, 19);
            Pango.CairoHelper.ShowLayout(cr, layout);

            if (drawArrow)
            {
                cr.MoveTo(width - 15, 13);
                cr.LineTo(width - 15 + 7, 17);
                cr.LineTo(width - 15, 21);
                Gdk.Color gc = new Gdk.Color();
                Gdk.Color.Parse("#" + parent.ItemTextColor, ref gc);
                cr.SetSourceRGB(gc);
                cr.Fill();
            }


            layout.FontDescription.Dispose();
            layout.Dispose();
            (cr as IDisposable).Dispose();
        }
Example #2
0
        public void BezelSetPaneObject(Pane pane, Do.Universe.Item obj)
        {
            if (Context.GetPaneObject(pane) == obj && obj != null)
            {
                return;
            }

            OldContext.SetPaneObject(pane, Context.GetPaneObject(pane));
            Context.SetPaneObject(pane, obj);

            icon_fade [(int)pane] = 0;
            Draw();
        }
Example #3
0
        protected void IconDataFunc(TreeViewColumn column, CellRenderer cell,
                                    TreeModel model, TreeIter iter)
        {
            CellRendererPixbuf renderer = cell as CellRendererPixbuf;

            Do.Universe.Item o           = (resultsTreeview.Model as ListStore).GetValue(iter, 0) as Do.Universe.Item;
            bool             isSecondary = false;

            foreach (int i in secondary)
            {
                if (model.GetStringFromIter(iter) == i.ToString())
                {
                    isSecondary = true;
                }
            }

            Gdk.Pixbuf final;
            if (isSecondary)
            {
                using (Gdk.Pixbuf source = IconProvider.PixbufFromIconName(o.Icon, DefaultResultIconSize))
                    using (Gdk.Pixbuf emblem = IconProvider.PixbufFromIconName("gtk-add", DefaultResultIconSize)) {
                        final = new Pixbuf(Colorspace.Rgb,
                                           true,
                                           8,
                                           DefaultResultIconSize,
                                           DefaultResultIconSize);

                        source.CopyArea(0, 0, source.Width, source.Height, final, 0, 0);

                        emblem.Composite(final,
                                         0,
                                         0,
                                         DefaultResultIconSize,
                                         DefaultResultIconSize,
                                         0,
                                         0,
                                         1,
                                         1,
                                         InterpType.Bilinear,
                                         220);
                    }
            }
            else
            {
                final = IconProvider.PixbufFromIconName(o.Icon, DefaultResultIconSize);
            }
            renderer.Pixbuf = final;
            final.Dispose();
        }
Example #4
0
        void BufferItem(Do.Universe.Item item)
        {
            if (!IsDrawable)
            {
                return;
            }
            using (var cr = Gdk.CairoHelper.Create(GdkWindow)) {
                Surface surface = cr.CreateSimilarToTarget(InternalWidth, SurfaceHeight);
                using (var cr2 = new Context(surface)) {
                    ItemRenderer.RenderItem(cr2, new Gdk.Point(border_width, 0), InternalWidth, item, controller.ItemHasChildren(item));

                    if (surface_cache.ContainsKey(item))
                    {
                        surface_cache[item].Dispose();
                    }
                    surface_cache[item] = surface;
                }
            }
        }
Example #5
0
 private void RenderPixbuf(Pane pane, Context cr)
 {
     Do.Universe.Item obj = Context.GetPaneObject(pane);
     RenderPixbuf(pane, cr, obj.Icon, 1);
 }