public override void Render (CellContext context, StateType state, double cellWidth, double cellHeight) { if (data_handler == null) { return; } if (!has_sort) { base.Render (context, state, cellWidth, cellHeight); return; } Gdk.Rectangle arrow_alloc = new Gdk.Rectangle (); arrow_alloc.Width = (int)(cellHeight / 3.0); arrow_alloc.Height = (int)((double)arrow_alloc.Width / 1.6); arrow_alloc.X = (int)cellWidth - arrow_alloc.Width - Spacing; arrow_alloc.Y = ((int)cellHeight - arrow_alloc.Height) / 2; double textWidth = arrow_alloc.X - Spacing; if (textWidth > 0) { base.Render (context, state, textWidth, cellHeight); } SortType sort_type = ((ISortableColumn)data_handler ()).SortType; if (sort_type != SortType.None) { context.Theme.DrawArrow (context.Context, arrow_alloc, sort_type); } }
public override void Render(CellContext context, StateType state, double cellWidth, double cellHeight) { if (BoundObject == null) { return; } if (!(BoundObject is TrackInfo)) { throw new InvalidCastException ("CubanoTitleCell can only bind to TrackInfo objects"); } TrackInfo track = (TrackInfo)BoundObject; context.Layout.Width = (int)((cellWidth - 8) * Pango.Scale.PangoScale); context.Layout.Ellipsize = Pango.EllipsizeMode.End; //context.Layout.FontDescription = context.Widget.PangoContext.FontDescription.Copy (); context.Layout.FontDescription.Weight = font_weight; context.Layout.SetMarkup (String.Format ("<big>{0}</big> {1}", track.TrackNumber, GLib.Markup.EscapeText (track.DisplayTrackTitle))); int text_width; int text_height; context.Layout.GetPixelSize (out text_width, out text_height); context.Context.MoveTo (4, ((int)cellHeight - text_height) / 2); Cairo.Color color = context.Theme.Colors.GetWidgetColor ( context.TextAsForeground ? GtkColorClass.Foreground : GtkColorClass.Text, state); color.A = (!context.Sensitive) ? 0.3 : 1.0; context.Context.Color = color; PangoCairoHelper.ShowLayout (context.Context, context.Layout); }
public override void Render(CellContext context, StateFlags state, double cellWidth, double cellHeight) { if (BoundObject == null) { return; } if (!(BoundObject is TrackInfo)) { throw new InvalidCastException ("ColumnCellAlbum can only bind to AlbumInfo objects"); } TrackInfo track = (TrackInfo)BoundObject; context.Layout.Width = (int)((cellWidth - 8) * Pango.Scale.PangoScale); context.Layout.Ellipsize = Pango.EllipsizeMode.End; context.Layout.FontDescription.Weight = font_weight; context.Layout.SetMarkup (String.Format ("<b>{0}</b>\n<small><i>{1}</i></small>", GLib.Markup.EscapeText (track.DisplayTrackTitle), GLib.Markup.EscapeText (track.DisplayArtistName))); int text_width; int text_height; context.Layout.GetPixelSize (out text_width, out text_height); context.Context.MoveTo (4, ((int)cellHeight - text_height) / 2); context.Widget.StyleContext.Save (); context.Widget.StyleContext.AddClass ("entry"); Cairo.Color color = CairoExtensions.GdkRGBAToCairoColor (context.Widget.StyleContext.GetColor (StateFlags.Selected)); context.Widget.StyleContext.Restore (); color.A = (!context.Opaque) ? 0.3 : 1.0; context.Context.SetSourceColor (color); PangoCairoHelper.ShowLayout (context.Context, context.Layout); }
public override void Render (CellContext context, StateType state, double cellWidth, double cellHeight) { PodcastTrackInfo podcast = PodcastTrackInfo.From (BoundTrack); if (podcast != null) { if (podcast.Activity == PodcastItemActivity.DownloadPending) { context.Opaque = false; } } base.Render (context, state, cellWidth, cellHeight); }
public override void Render(CellContext context, double cellWidth, double cellHeight) { ContactTrackInfo ci = ContactTrackInfo.From (BoundTrack); if (ci != null) { if (ci.IsDownloadPending) { context.Opaque = false; } } base.Render (context, cellWidth, cellHeight); }
public override void Render (CellContext context, double cellWidth, double cellHeight) { int cell_width = (int)cellWidth - 2 * Xpad; int cell_height = (int)cellHeight - 2 * Ypad; int x = context.Area.X + xpad + ((cell_width - Size) / 2); int y = context.Area.Y + ypad + ((cell_height - Size) / 2); if (context.State == StateType.Normal && last_hover_bound == BoundObjectParent) { context.State = StateType.Prelight; } Style.PaintCheck (context.Widget.Style, context.Drawable, context.State, Value ? ShadowType.In : ShadowType.Out, context.Clip, context.Widget, "cellcheck", x, y, Size, Size); }
public void Render (CellContext context, Rect allocation, IPhoto photo) { string caption = GetCaptionString (photo); var text_color = context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, context.State); var layout = context.Layout; layout.Ellipsize = Pango.EllipsizeMode.End; layout.Alignment = Pango.Alignment.Center; layout.Width = (int)(allocation.Width * Pango.Scale.PangoScale); layout.SetText (caption); context.Context.Color = text_color; context.Context.MoveTo (allocation.X, allocation.Y); PangoCairoHelper.ShowLayout (context.Context, layout); }
public override void Render(CellContext context, Gtk.StateType state, double cellWidth, double cellHeight) { Base.SafeUri uri = BoundObject as Base.SafeUri; if (uri == null || !uri.IsLocalPath) return; var mood_service = ServiceStack.ServiceManager.Get<MoodbarService> (); var moodbar = mood_service.GetMoodbarQuick (uri.LocalPath); if (moodbar == null) return; Cairo.Context cr = context.Context; cr.Rectangle (0, 1, cellWidth, cellHeight-2); cr.Clip (); moodbar.Render (cr, 0, 0, ((int)cellWidth), ((int)cellHeight)); cr.ResetClip (); }
public override void Render (CellContext context, double cellWidth, double cellHeight) { Gdk.Rectangle area = new Gdk.Rectangle (0, 0, (int)cellWidth, (int)cellHeight); // FIXME: Compute font height and set to renderer.Size renderer.Value = Value; bool is_hovering = hover_bound == BoundObjectParent && hover_bound != null; renderer.Render (context.Context, area, context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, context.State), is_hovering, is_hovering, hover_value, 0.8, 0.45, 0.35); // FIXME: Something is hosed in the view when computing cell dimensions // The cell width request is always smaller than the actual cell, so // this value is preserved once we compute it from rendering so the // input stuff can do its necessary calculations actual_area_hack = area; }
public override void Render (CellContext context, Gtk.StateType state, double cellWidth, double cellHeight) { base.Render (context, state, cellWidth, cellHeight); if (measure) { solution_value_widths.Clear (); var sb = new StringBuilder (); int x = 0, w, h; foreach (var str in SolutionOptions) { sb.Append (str); context.Layout.SetMarkup (sb.ToString ()); context.Layout.GetPixelSize (out w, out h); x += w; solution_value_widths.Add (x); sb.Append (solution_joiner); } } }
public override void Render(CellContext context, double cellWidth, double cellHeight) { // check state and parameters: if (BoundObject == null) { return; } var artistInfo = BoundObject as ArtistInfo; if (artistInfo == null) { throw new InvalidCastException ("FanArtArtistColumnCell can only bind ArtistInfo objects"); } var musicBrainzID = GetArtistsMbid (artistInfo); bool image = false; // get artist image: if (musicBrainzID != null && FanArtMusicBrainz.HasImage (musicBrainzID)) { string imagePath = FanArtArtistImageSpec.GetPath ( FanArtArtistImageSpec.CreateArtistImageFileName (musicBrainzID)); var fas = ServiceManager.Get<FanArtService> (); if (!Banshee.IO.File.Exists (new Hyena.SafeUri (imagePath))) { if (!fas.IsThereActiveJob ()) { ServiceManager.DbConnection.Execute ( "INSERT OR REPLACE INTO ArtistImageDownloads (MusicBrainzID, Downloaded, LastAttempt) VALUES (?, ?, ?)", musicBrainzID, 0, DateTime.MinValue); var artistName = FanArtMusicBrainz.ArtistNameByMBID (musicBrainzID); ServiceManager.DbConnection.Execute ( "INSERT OR REPLACE INTO ArtistMusicBrainz (ArtistName, MusicBrainzId, LastAttempt) VALUES (?, ?, ?)", artistName, musicBrainzID, DateTime.MinValue); fas.FetchArtistImages (true); } } else { image = RenderArtistImage (imagePath, context); } } if (!image) { RenderArtistText (artistInfo.DisplayName, cellWidth, context); } }
public string GetTooltipMarkup(CellContext cellContext, double columnWidth) { var our_attributes = AttributesForBoundObject.Select (i => attributes_uc[i]); return our_attributes.Count () > 0 ? String.Format ("Creative Commons {0}", String.Join ("-", our_attributes.ToArray ())) : null; }
public void UpdateText(CellContext context, double cellWidth) { string text = last_text = GetText (BoundObject); UpdateText (context.Layout, cellWidth, text); }
public string GetTooltipMarkup(CellContext cellContext, double columnWidth) { UpdateText (cellContext, columnWidth); return IsEllipsized ? GLib.Markup.EscapeText (Text) : null; }
public virtual void Render(CellContext context, double cellWidth, double cellHeight) { }
public override void Render (CellContext context, StateType state, double cellWidth, double cellHeight) { if (BoundObject == null) { return; } if (!(BoundObject is AlbumInfo)) { throw new InvalidCastException ("ColumnCellAlbum can only bind to AlbumInfo objects"); } AlbumInfo album = (AlbumInfo)BoundObject; bool is_default = false; ImageSurface image = artwork_manager == null ? null : artwork_manager.LookupScaleSurface (album.ArtworkId, image_size, true); if (image == null) { image = default_cover_image; is_default = true; } // int image_render_size = is_default ? image.Height : (int)cellHeight - 8; int image_render_size = image_size; int x = image_spacing; int y = ((int)cellHeight - image_render_size) / 2; ArtworkRenderer.RenderThumbnail (context.Context, image, false, x, y, image_render_size, image_render_size, !is_default, context.Theme.Context.Radius); int fl_width = 0, fl_height = 0, sl_width = 0, sl_height = 0; Cairo.Color text_color = context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, state); text_color.A = 0.75; Pango.Layout layout = context.Layout; layout.Width = (int)((cellWidth - cellHeight - x - 10) * Pango.Scale.PangoScale); layout.Ellipsize = Pango.EllipsizeMode.End; layout.FontDescription.Weight = Pango.Weight.Bold; // Compute the layout sizes for both lines for centering on the cell int old_size = layout.FontDescription.Size; layout.SetText (album.DisplayTitle); layout.GetPixelSize (out fl_width, out fl_height); if (!String.IsNullOrEmpty (album.ArtistName)) { layout.FontDescription.Weight = Pango.Weight.Normal; layout.FontDescription.Size = (int)(old_size * Pango.Scale.Small); layout.FontDescription.Style = Pango.Style.Italic; layout.SetText (album.ArtistName); layout.GetPixelSize (out sl_width, out sl_height); } // Calculate the layout positioning x = ((int)cellHeight - x) + 10; y = (int)((cellHeight - (fl_height + sl_height)) / 2); // Render the second line first since we have that state already if (!String.IsNullOrEmpty (album.ArtistName)) { context.Context.MoveTo (x, y + fl_height); context.Context.Color = text_color; PangoCairoHelper.ShowLayout (context.Context, layout); } // Render the first line, resetting the state layout.SetText (album.DisplayTitle); layout.FontDescription.Weight = Pango.Weight.Bold; layout.FontDescription.Size = old_size; layout.FontDescription.Style = Pango.Style.Normal; layout.SetText (album.DisplayTitle); context.Context.MoveTo (x, y); text_color.A = 1; context.Context.Color = text_color; PangoCairoHelper.ShowLayout (context.Context, layout); }
public abstract void Render (CellContext context);
public override void Render(CellContext context, double cellWidth, double cellHeight) { if (!artwork_initialized) { artwork_manager = ServiceManager.Get<ArtworkManager> (); if (!artwork_manager.IsCachedSize (image_size)) { artwork_manager.AddCachedSize (image_size); } if (artwork_manager != null) { artwork_manager.ChangeCacheSize (ImageSize, GetAllAlbumsCount () + 3); } artwork_initialized = true; } bool is_queryalble_source = ServiceManager.SourceManager.ActiveSource is PrimarySource; is_queryalble_source = is_queryalble_source || ServiceManager.SourceManager.ActiveSource is PlaylistSource; is_queryalble_source = is_queryalble_source || ServiceManager.SourceManager.ActiveSource is SmartPlaylistSource; if (BoundObject == null) { return; } if (!(BoundObject is ArtistInfo)) { throw new InvalidCastException ("ColumnCellArtist can only bind to ArtistInfo objects"); } var artist = (ArtistInfo)BoundObject; DatabaseArtistInfo db_artist = DatabaseArtistInfo.FindOrCreate (artist.Name, artist.NameSort); AlbumInfo[] albums = GetAlbums (db_artist.DbId); int album_count = albums.Length; string pattern = Catalog.GetString ("All Artists ({0})") .Replace ("(", "\\(") .Replace (")", "\\)") .Replace ("{0}", "[0-9]+"); if (!String.IsNullOrEmpty (artist.Name) && System.Text.RegularExpressions.Regex.IsMatch (artist.Name, pattern)) { album_count = GetAllAlbumsCount (); } ImageSurface image = null; var images = new List<ImageSurface> (); int non_empty = 0; for (int i = 0; i < albums.Length && non_empty < 3; i++) { if (artwork_manager != null) { ImageSurface sur = artwork_manager.LookupScaleSurface (albums [i].ArtworkId, image_size, true); images.Add (sur); if (sur != null) { non_empty++; } } } //bringing non-empty images to the front images.Sort (delegate (ImageSurface a, ImageSurface b) { if (a == null && b != null) return -1; if (a != null && b == null) return 1; return 0; }); if (images.Count > 3) { images.RemoveRange (3, images.Count - 3); } bool is_default = false; if (images.Count == 0) { image = default_cover_image; is_default = true; } else { image = images[images.Count - 1]; } int image_render_size = image_size; int x = image_spacing; int y = image_spacing; if (use_small_images) { x = image_spacing / 2; y = image_spacing / 2; } const int y_image_spacing = 1; int x_offset = (use_small_images ? album_spacing_small : album_spacing_normal); if (images.Count > 1) x_offset *= 2; int y_offset = (images.Count > 1) ? y_image_spacing * 2 : y_image_spacing; for (int i = 0; i < images.Count - 1; i++) { int move_x = x + ((i) * (use_small_images ? album_spacing_small : album_spacing_normal)); int move_y = y + ((i) * y_image_spacing); ArtworkRenderer.RenderThumbnail (context.Context, images[i], false, move_x, move_y, image_render_size, image_render_size, !is_default, context.Theme.Context.Radius, true, new Color (1.0, 1.0, 1.0, 1.0)); } if (images.Count > 0) { ArtworkRenderer.RenderThumbnail (context.Context, image, false, x + x_offset, y + y_offset, image_render_size, image_render_size, !is_default, context.Theme.Context.Radius, true, new Color (1.0, 1.0, 1.0, 1.0)); } else { ArtworkRenderer.RenderThumbnail (context.Context, image, false, x + x_offset, y + y_offset, image_render_size, image_render_size, !is_default, context.Theme.Context.Radius); } int fl_width = 0, fl_height = 0, sl_width = 0, sl_height = 0; context.Widget.StyleContext.Save (); context.Widget.StyleContext.AddClass ("entry"); Color text_color = CairoExtensions.GdkRGBAToCairoColor (context.Widget.StyleContext.GetColor (context.State)); context.Widget.StyleContext.Restore (); text_color.A = 0.75; Pango.Layout layout = context.Layout; layout.Width = (int)((cellWidth - cellHeight - x - 10) * Pango.Scale.PangoScale); layout.Ellipsize = Pango.EllipsizeMode.End; layout.FontDescription.Weight = Pango.Weight.Bold; // Compute the layout sizes for both lines for centering on the cell int old_size = layout.FontDescription.Size; layout.SetText (artist.DisplayName); layout.GetPixelSize (out fl_width, out fl_height); layout.FontDescription.Weight = Pango.Weight.Normal; layout.FontDescription.Size = (int)(old_size * Pango.Scale.Small); layout.FontDescription.Style = Pango.Style.Italic; string album_string_singular = Catalog.GetString ("Album"); string album_string_plural = Catalog.GetString ("Albums"); layout.SetText (album_count + " " + ((album_count == 1) ? album_string_singular : album_string_plural)); layout.GetPixelSize (out sl_width, out sl_height); // Calculate the layout positioning x = ((int)cellHeight - x) + (use_small_images ? album_spacing_small : album_spacing_normal) + 8; y = use_small_images ? (int)((cellHeight - (fl_height)) / 2) : (int)((cellHeight - (fl_height + sl_height)) / 2); // Render the second line first since we have that state already if (album_count > 0 && is_queryalble_source) { if (use_small_images) { context.Context.MoveTo (cellWidth - sl_width - image_spacing, y + image_spacing / 2); } else { context.Context.MoveTo (x, y + fl_height); } context.Context.SetSourceColor (text_color); if (!use_small_images || fl_width + x + sl_width <= cellWidth) { Pango.CairoHelper.ShowLayout (context.Context, layout); } } // Render the first line, resetting the state layout.SetText (artist.DisplayName); layout.FontDescription.Weight = Pango.Weight.Bold; layout.FontDescription.Size = old_size; layout.FontDescription.Style = Pango.Style.Normal; layout.SetText (artist.DisplayName); context.Context.MoveTo (x, y); text_color.A = 1; context.Context.SetSourceColor (text_color); Pango.CairoHelper.ShowLayout (context.Context, layout); }
public abstract void Render(CellContext context);
public void UpdateText(CellContext context, double cellWidth) { string text = last_text = GetText(BoundObject); UpdateText(context.Layout, cellWidth, text); }
protected virtual void RenderImageSurface (CellContext context, Rect allocation, ImageSurface imageSurface) { ArtworkRenderer.RenderThumbnail (context.Context, imageSurface, false, allocation.X, allocation.Y, allocation.Width, allocation.Height, true, context.Theme.Context.Radius, imageSurface == null, new Color (0.8, 0.8, 0.8)); }
public virtual void Render(CellContext context, double cellWidth, double cellHeight) { Render(context, context.State, cellWidth, cellHeight); }
protected override void ClippedRender(CellContext context) { Render(context, ContentAllocation.Width, ContentAllocation.Height); }
public virtual void Render(CellContext context, Gtk.StateType state, double cellWidth, double cellHeight) { }
public abstract void Render(CellContext context, StateType state, double cellWidth, double cellHeight);
public override void Render(CellContext context, double cellWidth, double cellHeight) { int cell_width = (int)cellWidth - 2 * Xpad; int cell_height = (int)cellHeight - 2 * Ypad; int x = Xpad + ((cell_width - Size) / 2); int y = Ypad + ((cell_height - Size) / 2); if (context.State == StateFlags.Normal && last_hover_bound == BoundObjectParent) { context.State = StateFlags.Prelight; } context.Widget.StyleContext.Save (); context.Widget.StyleContext.AddClass ("check"); context.Widget.StyleContext.State = (Value ? StateFlags.Active : StateFlags.Normal); context.Widget.StyleContext.RenderCheck (context.Context, x, y, Size, Size); context.Widget.StyleContext.Restore (); }
public virtual void Render (CellContext context, Gtk.StateType state, double cellWidth, double cellHeight) { }
public override void Render (CellContext context) { if (inner_allocation.IsEmpty || ! valid) return; context.Context.Translate (inner_allocation.X, inner_allocation.Y); var photo = BoundPhoto; var view_layout = ParentLayout as PhotoGridViewLayout; if (photo != last_photo) { last_photo = photo; Reload (photo); } view_layout.CaptionRender.Render (context, caption_allocation, photo); ThreadAssist.BlockingProxyToMain (() => { RenderThumbnail (photo, context); ReloadIfSuboptimalSize (photo); }); }
//int? height; //public override Size Measure (Size available) //{ //int min, max; //GetWidthRange (ParentLayout.View.PangoLayout, out min, out max); // /*if (height == null) { using (var layout = new Pango.Layout (ParentLayout.View.PangoContext)) { if (layout.FontDescription == null) { layout.FontDescription = new Pango.FontDescription (); } UpdateText (layout, 100, "Woo Mar"); height = TextHeight; } }*/ //return FixedSize ?? new Size (0, (double)height + Padding.Y); //} public override void Render (CellContext context, double cellWidth, double cellHeight) { UpdateText (context, cellWidth); if (String.IsNullOrEmpty (last_text)) { return; } //context.Context.Rectangle (0, 0, cellWidth, cellHeight); //context.Context.Clip (); context.Context.MoveTo (Padding.Left, ((int)cellHeight - text_height) / 2); Cairo.Color color = context.Theme.Colors.GetWidgetColor ( context.TextAsForeground ? GtkColorClass.Foreground : GtkColorClass.Text, context.State); color.A = Alpha ?? (context.Opaque ? 1.0 : 0.5); context.Context.SetSourceColor (color); PangoCairoHelper.ShowLayout (context.Context, context.Layout); //context.Context.ResetClip (); }
void RenderThumbnail (IPhoto photo, CellContext context) { ImageSurface image_surface = null; if (!(ParentLayout as PhotoGridViewLayout).SurfaceCache.TryGetValue (photo, out image_surface)) return; // Scale needed to fill the grid slot. double scalex = image_surface == null ? 1 : image_surface.Width / thumbnail_allocation.Width; double scaley = image_surface == null ? 1 : image_surface.Height / thumbnail_allocation.Height; // Upscale if the photo is larger than the allocation. bool upscale = photo.Width > thumbnail_allocation.Width || photo.Height > thumbnail_allocation.Height; if (!upscale) { scalex = Math.Max (1.0, scalex); scaley = Math.Max (1.0, scaley); } double scale = 1 / Math.Max (scalex, scaley); RenderThumbnail (context.Context, image_surface, false, 0.0, 0.0, thumbnail_allocation.Width, thumbnail_allocation.Height, context.Theme.Context.Radius, false, new Color (0.8, 0.0, 0.0), CairoCorners.All, scale); }
//int? height; //public override Size Measure (Size available) //{ //int min, max; //GetWidthRange (ParentLayout.View.PangoLayout, out min, out max); // /*if (height == null) { using (var layout = new Pango.Layout (ParentLayout.View.PangoContext)) { if (layout.FontDescription == null) { layout.FontDescription = new Pango.FontDescription (); } UpdateText (layout, 100, "Woo Mar"); height = TextHeight; } }*/ //return FixedSize ?? new Size (0, (double)height + Padding.Y); //} public override void Render(CellContext context, double cellWidth, double cellHeight) { UpdateText (context, cellWidth); if (String.IsNullOrEmpty (last_text)) { return; } //context.Context.Rectangle (0, 0, cellWidth, cellHeight); //context.Context.Clip (); context.Context.MoveTo (Padding.Left, ((int)cellHeight - text_height) / 2); var color = CairoExtensions.GdkRGBAToCairoColor (context.Theme.Widget.StyleContext.GetColor (context.State)); color.A = Alpha ?? (context.Opaque ? 1.0 : 0.5); context.Context.Color = color; PangoCairoHelper.ShowLayout (context.Context, context.Layout); //context.Context.ResetClip (); }
public override void Render (CellContext context, StateType state, double cellWidth, double cellHeight) { if (BoundObject == null) { return; } if (!(BoundObject is Feed)) { throw new InvalidCastException("ColumnCellPodcast can only bind to Feed objects"); } Feed feed = (Feed)BoundObject; bool is_default = false; ImageSurface image = artwork_manager == null ? null : artwork_manager.LookupScaleSurface (PodcastService.ArtworkIdFor (feed), image_size, true); if (image == null) { image = default_cover_image; is_default = true; } // int image_render_size = is_default ? image.Height : (int)cellHeight - 8; int image_render_size = image_size; int x = image_spacing; int y = ((int)cellHeight - image_render_size) / 2; ArtworkRenderer.RenderThumbnail (context.Context, image, false, x, y, image_render_size, image_render_size, !is_default, context.Theme.Context.Radius); int fl_width = 0, fl_height = 0, sl_width = 0, sl_height = 0; Cairo.Color text_color = context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, state); text_color.A = 0.75; Pango.Layout layout = context.Layout; layout.Width = (int)((cellWidth - cellHeight - x - 10) * Pango.Scale.PangoScale); layout.Ellipsize = Pango.EllipsizeMode.End; layout.FontDescription.Weight = Pango.Weight.Bold; // Compute the layout sizes for both lines for centering on the cell int old_size = layout.FontDescription.Size; layout.SetText (feed.Title ?? String.Empty); layout.GetPixelSize (out fl_width, out fl_height); if (feed.DbId > 0) { layout.FontDescription.Weight = Pango.Weight.Normal; layout.FontDescription.Size = (int)(old_size * Pango.Scale.Small); layout.FontDescription.Style = Pango.Style.Italic; if (feed.LastDownloadTime == DateTime.MinValue) { layout.SetText (Catalog.GetString ("Never updated")); } else if (feed.LastDownloadTime.Date == DateTime.Now.Date) { layout.SetText (String.Format (Catalog.GetString ("Updated at {0}"), feed.LastDownloadTime.ToShortTimeString ())); } else { layout.SetText (String.Format (Catalog.GetString ("Updated {0}"), Hyena.Query.RelativeTimeSpanQueryValue.RelativeToNow (feed.LastDownloadTime).ToUserQuery ())); } layout.GetPixelSize (out sl_width, out sl_height); } // Calculate the layout positioning x = ((int)cellHeight - x) + 10; y = (int)((cellHeight - (fl_height + sl_height)) / 2); // Render the second line first since we have that state already if (feed.DbId > 0) { context.Context.MoveTo (x, y + fl_height); context.Context.Color = text_color; PangoCairoHelper.ShowLayout (context.Context, layout); } // Render the first line, resetting the state layout.SetText (feed.Title ?? String.Empty); layout.FontDescription.Weight = Pango.Weight.Bold; layout.FontDescription.Size = old_size; layout.FontDescription.Style = Pango.Style.Normal; layout.SetText (feed.Title ?? String.Empty); context.Context.MoveTo (x, y); text_color.A = 1; context.Context.Color = text_color; PangoCairoHelper.ShowLayout (context.Context, layout); }
protected override void ClippedRender(CellContext context) { var artwork_id = BoundObject as string; var image_surface = artwork_id != null && artwork_manager != null ? artwork_manager.LookupScaleSurface (artwork_id, (int)ImageSize, true) : null; ArtworkRenderer.RenderThumbnail (context.Context, image_surface, false, 0, 0, ImageSize, ImageSize, true, context.Theme.Context.Radius, image_surface == null, new Color (0.8, 0.8, 0.8) ); }
public string GetTooltipMarkup(CellContext cellContext, double columnWidth) { return GetTextAlternative (BoundObject); }
public override void Render(CellContext context, StateFlags state, double cellWidth, double cellHeight) { context.Context.Translate (0, 0.5); int draw_x = 0; foreach (int i in AttributesForBoundObject) { Gdk.Pixbuf render_pixbuf = pixbufs[i]; if (render_pixbuf != null) { Cairo.Rectangle pixbuf_area = new Cairo.Rectangle (draw_x, (cellHeight - render_pixbuf.Height) / 2, render_pixbuf.Width, render_pixbuf.Height); if (!context.Opaque) { context.Context.Save (); } Gdk.CairoHelper.SetSourcePixbuf (context.Context, render_pixbuf, pixbuf_area.X, pixbuf_area.Y); context.Context.Rectangle (pixbuf_area); if (!context.Opaque) { context.Context.Clip (); context.Context.PaintWithAlpha (0.5); context.Context.Restore (); } else { context.Context.Fill (); } } draw_x += ICON_SIZE; } }
public override void Render(CellContext context, StateFlags state, double cellWidth, double cellHeight) { TrackInfo track = BoundTrack; if (track == null) { return; } int icon_index = GetIconIndex (track); TooltipMarkup = icon_index == -1 ? null : StatusNames[icon_index]; if (icon_index < 0 || pixbufs == null || pixbufs[icon_index] == null) { return; } context.Context.Translate (0, 0.5); Gdk.Pixbuf render_pixbuf = pixbufs[icon_index]; Cairo.Rectangle pixbuf_area = new Cairo.Rectangle ((cellWidth - render_pixbuf.Width) / 2, (cellHeight - render_pixbuf.Height) / 2, render_pixbuf.Width, render_pixbuf.Height); if (!context.Opaque) { context.Context.Save (); } Gdk.CairoHelper.SetSourcePixbuf (context.Context, render_pixbuf, pixbuf_area.X, pixbuf_area.Y); context.Context.Rectangle (pixbuf_area); if (!context.Opaque) { context.Context.Clip (); context.Context.PaintWithAlpha (0.5); context.Context.Restore (); } else { context.Context.Fill (); } }
public string GetTooltipMarkup(CellContext cellContext, double columnWidth) { UpdateText(cellContext, columnWidth); return(IsEllipsized ? GLib.Markup.EscapeText(Text) : null); }
public override void Render (CellContext context) { if (inner_allocation.IsEmpty) { return; } // Need to call this again here to make sure we have the latest artwork var album = BoundObject as AlbumInfo; if (album != null) { image_surface = artwork_manager != null ? artwork_manager.LookupScaleSurface (album.ArtworkId, (int)ImageSize, true) : null; } context.Context.Translate (inner_allocation.X, inner_allocation.Y); RenderImageSurface (context, image_allocation, image_surface); // Render the overlay if (IsGridLayout && prelight_opacity > 0) { var cr = context.Context; var x = image_allocation.Width / 2.0; var y = image_allocation.Height / 2.0; var grad = new RadialGradient (x, y, 0, x, y, x); grad.AddColorStop (0, new Color (0, 0, 0, 0.1 * prelight_opacity)); grad.AddColorStop (1, new Color (0, 0, 0, 0.35 * prelight_opacity)); cr.Pattern = grad; CairoExtensions.RoundedRectangle (cr, image_allocation.X, image_allocation.Y, image_allocation.Width, image_allocation.Height, context.Theme.Context.Radius); cr.Fill (); grad.Destroy (); /*cr.Save (); cr.LineWidth = 2; cr.Antialias = Cairo.Antialias.Default; // math prep for rendering multiple controls... double max_controls = 3; double spacing = 4; double radius = (width - ((max_controls + 1) * spacing)) / max_controls / 2; // render first control cr.Arc (width / 2, height - radius - 2 * spacing, radius, 0, 2 * Math.PI); cr.Color = new Color (0, 0, 0, 0.4); cr.FillPreserve (); cr.Color = new Color (1, 1, 1, 0.8); cr.Stroke (); cr.Restore ();*/ } if (lines == null || lines.Length < 2) { return; } var text_color = context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, context.State); var layout = context.Layout; layout.Ellipsize = Pango.EllipsizeMode.End; layout.Width = (int)(first_line_allocation.Width * Pango.Scale.PangoScale); int normal_size = layout.FontDescription.Size; int small_size = (int)(normal_size * Pango.Scale.Small); if (!String.IsNullOrEmpty (lines[0])) { layout.FontDescription.Size = small_size; layout.SetText (lines[0]); context.Context.Color = text_color; context.Context.MoveTo (first_line_allocation.X, first_line_allocation.Y); PangoCairoHelper.ShowLayout (context.Context, layout); } if (!String.IsNullOrEmpty (lines[1])) { layout.FontDescription.Weight = Pango.Weight.Normal; layout.FontDescription.Size = small_size; layout.SetText (lines[1]); text_color.A = 0.60; context.Context.Color = text_color; context.Context.MoveTo (second_line_allocation.X, second_line_allocation.Y); PangoCairoHelper.ShowLayout (context.Context, layout); } layout.FontDescription.Size = normal_size; }