Freeciv-3.3: /fast/freeciv/nightly/main/client/gui-gtk-4.0/sprite.c File Reference

Freeciv-3.3

Loading...
Searching...
No Matches
Macros | Functions
sprite.c File Reference
`#include "log.h"`
`#include "mem.h"`
`#include "shared.h"`
`#include "colors.h"`
`#include "mapview.h"`
`#include "sprite.h"`

Go to the source code of this file.

## Macros

#define | MAX_FILE_EXTENSIONS 50
#define | MULTI_UNc(a, b) ((a * b - (b / 2)) / 0xFF)
#define | DIV_UNc(a, b) (((guint16) (a) * 0xFF + ((b) / 2)) / (b))

## Functions

struct sprite * | crop_sprite (struct sprite *source, int x, int y, int width, int height, struct sprite *mask, int mask_offset_x, int mask_offset_y, float scale, bool smooth)
struct sprite * | create_sprite (int width, int height, struct color *pcolor)
void | get_sprite_dimensions (struct sprite *sprite, int *width, int *height)
const char ** | gfx_fileextensions (void)
static void | surf_destroy_callback (void *data)
struct sprite * | load_gfxfile (const char *filename, bool svgflag)
void | free_sprite (struct sprite *s)
struct sprite * | sprite_scale (struct sprite *src, int new_w, int new_h)
void | sprite_get_bounding_box (struct sprite *sprite, int *start_x, int *start_y, int *end_x, int *end_y)
struct sprite * | crop_blankspace (struct sprite *s)
GdkPixbuf * | sprite_get_pixbuf (struct sprite *sprite)
GdkPixbuf * | surface_get_pixbuf (cairo_surface_t *surf, int width, int height)
GdkPixbuf * | create_extra_pixbuf (const struct extra_type *pextra)
GtkWidget * | picture_new_from_surface (cairo_surface_t *surf)
void | picture_set_from_surface (GtkPicture *pic, cairo_surface_t *surf)
struct sprite * | load_gfxnumber (int num)

## Macro Definition Documentation

## ◆ DIV_UNc

#define DIV_UNc | ( |  | a,
|  |  | b
| ) |  | (((guint16) (a) * 0xFF + ((b) / 2)) / (b))

## ◆ MAX_FILE_EXTENSIONS

#define MAX_FILE_EXTENSIONS 50

Definition at line 29 of file sprite.c.

## ◆ MULTI_UNc

#define MULTI_UNc | ( |  | a,
|  |  | b
| ) |  | ((a * b - (b / 2)) / 0xFF)

## Function Documentation

## ◆ create_extra_pixbuf()

GdkPixbuf * create_extra_pixbuf | ( | const struct extra_type * | pextra | ) |

Create a pixbuf containing a representative image for the given extra type, to be used as an icon in the GUI.

May return NULL on error.

NB: You must call g_object_unref on the non-NULL return value when you no longer need it.

Definition at line 494 of file sprite.c.

## ◆ create_sprite()

struct sprite * create_sprite | ( | int | width,
|  | int | height,
|  | struct color * | pcolor
| ) |  |

Create a sprite with the given height, width and color.

Definition at line 84 of file sprite.c.

## ◆ crop_blankspace()

struct sprite * crop_blankspace | ( | struct sprite * | s | ) |

Crops all blankspace from a sprite (insofar as is possible as a rectangle)

Definition at line 386 of file sprite.c.

## ◆ crop_sprite()

struct sprite * crop_sprite | ( | struct sprite * | source,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | struct sprite * | mask,
|  | int | mask_offset_x,
|  | int | mask_offset_y,
|  | float | scale,
|  | bool | smooth
| ) |  |

Create a new sprite by cropping and taking only the given portion of the image.

source gives the sprite that is to be cropped.

x,y, width, height gives the rectangle to be cropped. The pixel at position of the source sprite will be at (0,0) in the new sprite, and the new sprite will have dimensions (width, height).

mask gives an additional mask to be used for clipping the new sprite.

mask_offset_x, mask_offset_y is the offset of the mask relative to the origin of the source image. The pixel at (mask_offset_x,mask_offset_y) in the mask image will be used to clip pixel (0,0) in the source image which is pixel (-x,-y) in the new image.

scale gives scale of new tileset smooth means if scaling might be bilinear, if set to false use nearest neighbor

Definition at line 52 of file sprite.c.

## ◆ free_sprite()

void free_sprite | ( | struct sprite * | s | ) |

Free a sprite and all associated image data.

Definition at line 278 of file sprite.c.

## ◆ get_sprite_dimensions()

void get_sprite_dimensions | ( | struct sprite * | sprite,
|  | int * | width,
|  | int * | height
| ) |  |

Find the dimensions of the sprite.

Definition at line 107 of file sprite.c.

## ◆ gfx_fileextensions()

const char ** gfx_fileextensions | ( | void |  | ) |

Returns the filename extensions the client supports Order is important.

Definition at line 117 of file sprite.c.

## ◆ load_gfxfile()

struct sprite * load_gfxfile | ( | const char * | filename,
|  | bool | svgflag
| ) |  |

Load the given graphics file into a sprite. This function loads an entire image file, which may later be broken up into individual sprites with crop_sprite().

Definition at line 170 of file sprite.c.

## ◆ load_gfxnumber()

struct sprite * load_gfxnumber | ( | int | num | ) |

Return a sprite image of a number.

Definition at line 559 of file sprite.c.

## ◆ picture_new_from_surface()

GtkWidget * picture_new_from_surface | ( | cairo_surface_t * | surf | ) |

Create a GtkPicture from cairo surface.

Definition at line 526 of file sprite.c.

Referenced by setup_widgets().

## ◆ picture_set_from_surface()

void picture_set_from_surface | ( | GtkPicture * | pic,
|  | cairo_surface_t * | surf
| ) |  |

Set a GtkPicture from cairo surface.

Definition at line 544 of file sprite.c.

Referenced by city_dialog_update_citizens(), create_diplomacy_dialog(), put_unit_picture(), put_unit_picture_city_overlays(), refresh_feeling_surface(), set_help_tile_from_extra(), set_help_tile_from_sprite(), set_help_tile_from_terrain(), set_indicator_icons(), and update_info_label().

## ◆ sprite_get_bounding_box()

void sprite_get_bounding_box | ( | struct sprite * | sprite,
|  | int * | start_x,
|  | int * | start_y,
|  | int * | end_x,
|  | int * | end_y
| ) |  |

Method returns the bounding box of a sprite. It assumes a rectangular object/mask. The bounding box contains the border (pixel which have unset pixel as neighbors) pixel.

Definition at line 321 of file sprite.c.

## ◆ sprite_get_pixbuf()

GdkPixbuf * sprite_get_pixbuf | ( | struct sprite * | sprite | ) |

Render a pixbuf from the sprite.

NOTE: the pixmap and mask of a sprite must not change after this function is called!

Definition at line 402 of file sprite.c.

## ◆ sprite_scale()

struct sprite * sprite_scale | ( | struct sprite * | src,
|  | int | new_w,
|  | int | new_h
| ) |  |

Scales a sprite. If the sprite contains a mask, the mask is scaled as as well.

Definition at line 291 of file sprite.c.

## ◆ surf_destroy_callback()

static void surf_destroy_callback | ( | void * | data | ) |

static

Called when the cairo surface with freeciv allocated data is destroyed.

Definition at line 160 of file sprite.c.

## ◆ surface_get_pixbuf()

GdkPixbuf * surface_get_pixbuf | ( | cairo_surface_t * | surf,
|  | int | width,
|  | int | height
| ) |  |

Render a pixbuf from the cairo surface

Definition at line 418 of file sprite.c.