コード例 #1
0
ファイル: gtklevelbar.c プロジェクト: 3dfxmadscientist/gtk
static void
gtk_level_bar_get_preferred_height (GtkWidget *widget,
                                    gint      *minimum,
                                    gint      *natural)
{
  GtkLevelBar *self = GTK_LEVEL_BAR (widget);
  GtkBorder borders;
  gint num_blocks;
  gint height, block_height;

  num_blocks = gtk_level_bar_get_num_blocks (self);
  gtk_level_bar_get_min_block_size (self, NULL, &block_height);

  gtk_level_bar_get_borders (self, &borders);
  height = borders.top + borders.bottom;

  if (self->priv->orientation == GTK_ORIENTATION_VERTICAL)
    height += num_blocks * block_height;
  else
    height += block_height;

  if (minimum)
    *minimum = height;
  if (natural)
    *natural = height;
}
コード例 #2
0
ファイル: gtklevelbar.c プロジェクト: 3dfxmadscientist/gtk
static void
gtk_level_bar_draw_fill (GtkLevelBar *self,
                         cairo_t     *cr)
{
  GtkWidget *widget = GTK_WIDGET (self);
  GtkBorder trough_borders;
  gboolean inverted;
  cairo_rectangle_int_t fill_area;

  gtk_level_bar_get_borders (self, &trough_borders);

  fill_area.x = trough_borders.left;
  fill_area.y = trough_borders.top;
  fill_area.width = gtk_widget_get_allocated_width (widget) -
    trough_borders.left - trough_borders.right;
  fill_area.height = gtk_widget_get_allocated_height (widget) -
    trough_borders.top - trough_borders.bottom;

  inverted = self->priv->inverted;
  if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
    {
      if (self->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
        inverted = !inverted;
    }

  if (self->priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
    gtk_level_bar_draw_fill_continuous (self, cr, inverted, &fill_area);
  else if (self->priv->bar_mode == GTK_LEVEL_BAR_MODE_DISCRETE)
    gtk_level_bar_draw_fill_discrete (self, cr, inverted, &fill_area);
}
コード例 #3
0
ファイル: gtklevelbar.c プロジェクト: 3dfxmadscientist/gtk
static void
gtk_level_bar_get_preferred_width (GtkWidget *widget,
                                   gint      *minimum,
                                   gint      *natural)
{
  GtkLevelBar *self = GTK_LEVEL_BAR (widget);
  GtkBorder borders;
  gint num_blocks;
  gint width, block_width;

  num_blocks = gtk_level_bar_get_num_blocks (self);
  gtk_level_bar_get_min_block_size (self, &block_width, NULL);

  gtk_level_bar_get_borders (self, &borders);
  width = borders.left + borders.right;

  if (self->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
    width += num_blocks * block_width;
  else
    width += block_width;

  if (minimum)
    *minimum = width;
  if (natural)
    *natural = width;
}
コード例 #4
0
ファイル: gtklevelbar.c プロジェクト: Therzok/gtk
static void
gtk_level_bar_draw_fill (GtkLevelBar *self,
                         cairo_t     *cr)
{
  GtkWidget *widget = GTK_WIDGET (self);
  GtkBorder trough_borders;
  cairo_rectangle_int_t fill_area;

  gtk_level_bar_get_borders (self, &trough_borders);

  fill_area.x = trough_borders.left;
  fill_area.y = trough_borders.top;
  fill_area.width = gtk_widget_get_allocated_width (widget) -
    trough_borders.left - trough_borders.right;
  fill_area.height = gtk_widget_get_allocated_height (widget) -
    trough_borders.top - trough_borders.bottom;

  if (self->priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
    gtk_level_bar_draw_fill_continuous (self, cr, &fill_area);
  else
    gtk_level_bar_draw_fill_discrete (self, cr, &fill_area);
}