OpenTTD: CargoesField Struct Reference

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Public Member Functions | Data Fields | Static Public Attributes | Static Private Member Functions
CargoesField Struct Reference

Data about a single field in the IndustryCargoesWindow panel. More...

## Public Member Functions
void | MakeEmpty (CargoesFieldType type)
| Make one of the empty fields (CFT_EMPTY or CFT_SMALL_EMPTY).
void | MakeIndustry (IndustryType ind_type)
| Make an industry type field.
int | ConnectCargo (CargoID cargo, bool producer)
| Connect a cargo from an industry to the CFT_CARGO column.
bool | HasConnection ()
| Does this CFT_CARGO field have a horizontal connection?
void | MakeCargo (const CargoID *cargoes, uint length, int count=-1, bool top_end=false, bool bottom_end=false)
| Make a piece of cargo column.
void | MakeCargoLabel (const CargoID *cargoes, uint length, bool left_align)
| Make a field displaying cargo type names.
void | MakeHeader (StringID textid)
| Make a header above an industry column.
int | GetCargoBase (int xpos) const
| For a CFT_CARGO, compute the left position of the left-most vertical cargo connection.
void | Draw (int xpos, int ypos) const
| Draw the field.
CargoID | CargoClickedAt (const CargoesField *left, const CargoesField *right, Point pt) const
| Decide which cargo was clicked at in a CFT_CARGO field.
CargoID | CargoLabelClickedAt (Point pt) const
| Decide what cargo the user clicked in the cargo label field.

## Data Fields
CargoesFieldType | type
| Type of field.
union {
struct {
IndustryType ind_type
| Industry type (NUM_INDUSTRYTYPES means 'houses').
CargoID other_produced [MAX_CARGOES]
| Cargoes produced but not used in this figure.
CargoID other_accepted [MAX_CARGOES]
| Cargoes accepted but not used in this figure.
} industry
| Industry data (for CFT_INDUSTRY).
struct {
CargoID vertical_cargoes [MAX_CARGOES]
| Cargoes running from top to bottom (cargo ID or INVALID_CARGO).
byte num_cargoes
| Number of cargoes.
CargoID supp_cargoes [MAX_CARGOES]
| Cargoes entering from the left (index in vertical_cargoes, or INVALID_CARGO).
byte top_end
| Stop at the top of the vertical cargoes.
CargoID cust_cargoes [MAX_CARGOES]
| Cargoes leaving to the right (index in vertical_cargoes, or INVALID_CARGO).
byte bottom_end
| Stop at the bottom of the vertical cargoes.
} cargo
| Cargo data (for CFT_CARGO).
struct {
CargoID cargoes [MAX_CARGOES]
| Cargoes to display (or INVALID_CARGO).
bool left_align
| Align all cargo texts to the left (else align to the right).
} cargo_label
| Label data (for CFT_CARGO_LABEL).
StringID header
| Header text (for CFT_HEADER).
} | u

## Static Public Attributes
static const int | VERT_INTER_INDUSTRY_SPACE = 6
| Amount of space between two industries in a column.
static const int | HOR_CARGO_BORDER_SPACE = 15
| Amount of space between the left/right edge of a CFT_CARGO field, and the left/right most vertical cargo.
static const int | CARGO_STUB_WIDTH = 10
| Width of a cargo not carried in the column (should be less than HOR_CARGO_BORDER_SPACE).
static const int | HOR_CARGO_WIDTH = 15
| Width of a vertical cargo column (inclusive the border line).
static const int | HOR_CARGO_SPACE = 5
| Amount of horizontal space between two vertical cargoes.
static const int | CARGO_FIELD_WIDTH = HOR_CARGO_BORDER_SPACE * 2 + HOR_CARGO_WIDTH * MAX_CARGOES + HOR_CARGO_SPACE * (MAX_CARGOES - 1)
| Width of a CFT_CARGO field.
static const int | VERT_CARGO_SPACE = 4
| Amount of vertical space between two connected cargoes at an industry.
static const int | VERT_CARGO_EDGE = 4
| Amount of vertical space between top/bottom and the top/bottom connected cargo at an industry.
static const int | BLOB_DISTANCE = 5
| Distance of the industry legend colour from the edge of the industry box.
static const int | BLOB_WIDTH = 12
| Width of the industry legend colour, including border.
static const int | BLOB_HEIGHT = 9
| Height of the industry legend colour, including border.
static const int | INDUSTRY_LINE_COLOUR = PC_YELLOW
| Line colour of the industry type box.
static const int | CARGO_LINE_COLOUR = PC_YELLOW
| Line colour around the cargo.
static int | small_height
| Height of the header row.
static int | normal_height
| Height of the non-header rows.
static int | industry_width
| Width of an industry field.

## Static Private Member Functions
static void | DrawHorConnection (int left, int right, int top, const CargoSpec *csp)
| Draw a horizontal cargo connection.

## Detailed Description

Data about a single field in the IndustryCargoesWindow panel.

Definition at line 1528 of file industry_gui.cpp.

## Member Function Documentation

CargoID CargoesField::CargoClickedAt | ( | const CargoesField * | left,
|  | const CargoesField * | right,
|  | Point | pt
| ) |  | const
| inline

Decide which cargo was clicked at in a CFT_CARGO field.

Parameters

  left | Left industry neighbour if available (else `NULL` should be supplied).
  right | Right industry neighbour if available (else `NULL` should be supplied).
  pt | Click position in the cargo field.

Returns
  Cargo clicked at, or INVALID_CARGO if none.

Definition at line 1855 of file industry_gui.cpp.

References cargo_label, CFT_CARGO, CFT_CARGO_LABEL, CFT_INDUSTRY, FONT_HEIGHT_NORMAL, GetCargoBase(), HOR_CARGO_SPACE, HOR_CARGO_WIDTH, industry, INVALID_CARGO, MAX_CARGOES, type, VERT_CARGO_EDGE, VERT_CARGO_SPACE, and VERT_INTER_INDUSTRY_SPACE.

Referenced by IndustryCargoesWindow::OnClick(), and IndustryCargoesWindow::OnHover().

CargoID CargoesField::CargoLabelClickedAt | ( | Point | pt | ) | const
| inline

Decide what cargo the user clicked in the cargo label field.

Parameters

  pt | Click position in the cargo label field.

Returns
  Cargo clicked at, or INVALID_CARGO if none.

Definition at line 1912 of file industry_gui.cpp.

References CFT_CARGO_LABEL, FONT_HEIGHT_NORMAL, INVALID_CARGO, MAX_CARGOES, type, VERT_CARGO_EDGE, VERT_CARGO_SPACE, and VERT_INTER_INDUSTRY_SPACE.

Referenced by IndustryCargoesWindow::OnClick(), and IndustryCargoesWindow::OnHover().

int CargoesField::ConnectCargo | ( | CargoID | cargo,
|  | bool | producer
| ) |  |
| inline

Connect a cargo from an industry to the CFT_CARGO column.

Parameters

  cargo | Cargo to connect.
  produced | Cargo is produced (if `false`, cargo is assumed to be accepted).

Returns
  Horizontal connection index, or `-1` if not accepted at all.

Definition at line 1593 of file industry_gui.cpp.

References CFT_CARGO, INVALID_CARGO, and type.

Referenced by CargoesRow::ConnectIndustryAccepted(), CargoesRow::ConnectIndustryProduced(), and CargoesRow::MakeCargoLabel().

void CargoesField::Draw | ( | int | xpos,
|  | int | ypos
| ) |  | const
| inline

Draw the field.

Parameters

  xpos | Position of the left edge.
  vpos | Position of the top edge.

Definition at line 1709 of file industry_gui.cpp.

References _current_text_dir, BLOB_DISTANCE, BLOB_HEIGHT, BLOB_WIDTH, CARGO_FIELD_WIDTH, CARGO_LINE_COLOUR, CARGO_STUB_WIDTH, CFT_CARGO, CFT_CARGO_LABEL, CFT_EMPTY, CFT_HEADER, CFT_INDUSTRY, CFT_SMALL_EMPTY, DrawHorConnection(), DrawString(), FILLRECT_OPAQUE, FONT_HEIGHT_NORMAL, CargoSpec::Get(), GetCargoBase(), GetIndustrySpec(), GfxFillRect(), HOR_CARGO_SPACE, HOR_CARGO_WIDTH, INDUSTRY_LINE_COLOUR, industry_width, INVALID_CARGO, IndustrySpec::map_colour, MAX_CARGOES, CargoSpec::name, IndustrySpec::name, normal_height, NUM_INDUSTRYTYPES, PC_BLACK, SA_HOR_CENTER, SA_LEFT, SA_RIGHT, small_height, TD_RTL, type, VERT_CARGO_EDGE, VERT_CARGO_SPACE, VERT_INTER_INDUSTRY_SPACE, WD_FRAMERECT_LEFT, and WD_FRAMERECT_RIGHT.

static void CargoesField::DrawHorConnection | ( | int | left,
|  | int | right,
|  | int | top,
|  | const CargoSpec * | csp
| ) |  |
| inlinestaticprivate

Draw a horizontal cargo connection.

Parameters

  left | Left-most coordinate to draw.
  right | Right-most coordinate to draw.
  top | Top coordinate of the cargo connection.
  csp | Cargo to draw.

Definition at line 1935 of file industry_gui.cpp.

References CARGO_LINE_COLOUR, FILLRECT_OPAQUE, FONT_HEIGHT_NORMAL, and GfxFillRect().

Referenced by Draw().

int CargoesField::GetCargoBase | ( | int | xpos | ) | const
| inline

For a CFT_CARGO, compute the left position of the left-most vertical cargo connection.

Parameters

  xpos | Left position of the field.

Returns
  Left position of the left-most vertical cargo column.

Definition at line 1691 of file industry_gui.cpp.

References CARGO_FIELD_WIDTH, CFT_CARGO, HOR_CARGO_SPACE, HOR_CARGO_WIDTH, and type.

Referenced by CargoClickedAt(), and Draw().

bool CargoesField::HasConnection | ( |  | ) |
| inline

Does this CFT_CARGO field have a horizontal connection?

Returns
  `true` if a horizontal connection exists, `false` otherwise.

Definition at line 1622 of file industry_gui.cpp.

References CFT_CARGO, INVALID_CARGO, MAX_CARGOES, and type.

void CargoesField::MakeCargo | ( | const CargoID * | cargoes,
|  | uint | length,
|  | int | count = `-1`,
|  | bool | top_end = `false`,
|  | bool | bottom_end = `false`
| ) |  |
| inline

Make a piece of cargo column.

Parameters

  cargoes | Array of CargoID (may contain INVALID_CARGO).
  length | Number of cargoes in cargoes.
  count | Number of cargoes to display (should be at least the number of valid cargoes, or `-1` to let the method compute it).
  top_end | This is the first cargo field of this column.
  bottom_end | This is the last cargo field of this column.

Note
  supp_cargoes and cust_cargoes should be filled in later.

Definition at line 1642 of file industry_gui.cpp.

References bottom_end, CFT_CARGO, INVALID_CARGO, MAX_CARGOES, MemSetT(), top_end, and type.

Referenced by IndustryCargoesWindow::ComputeCargoDisplay(), and IndustryCargoesWindow::ComputeIndustryDisplay().

void CargoesField::MakeCargoLabel | ( | const CargoID * | cargoes,
|  | uint | length,
|  | bool | left_align
| ) |  |
| inline

Make a field displaying cargo type names.

Parameters

  cargoes | Array of CargoID (may contain INVALID_CARGO).
  length | Number of cargoes in cargoes.
  left_align | ALign texts to the left (else to the right).

Definition at line 1667 of file industry_gui.cpp.

References CFT_CARGO_LABEL, INVALID_CARGO, MAX_CARGOES, and type.

Referenced by CargoesRow::MakeCargoLabel().

void CargoesField::MakeEmpty | ( | CargoesFieldType | type | ) |
| inline

Make one of the empty fields (CFT_EMPTY or CFT_SMALL_EMPTY).

Parameters

  type | Type of empty field.

Definition at line 1569 of file industry_gui.cpp.

References type.

Referenced by IndustryCargoesWindow::ComputeCargoDisplay(), and IndustryCargoesWindow::ComputeIndustryDisplay().

void CargoesField::MakeHeader | ( | StringID | textid | ) |
| inline

Make a header above an industry column.

Parameters

  textid | Text to display.

Definition at line 1680 of file industry_gui.cpp.

References CFT_HEADER, and type.

Referenced by IndustryCargoesWindow::ComputeCargoDisplay(), and IndustryCargoesWindow::ComputeIndustryDisplay().

void CargoesField::MakeIndustry | ( | IndustryType | ind_type | ) |
| inline

Make an industry type field.

Parameters

  ind_type | Industry type (NUM_INDUSTRYTYPES means 'houses').

Note
  other_accepted and other_produced should be filled later.

Definition at line 1579 of file industry_gui.cpp.

References CFT_INDUSTRY, ind_type, INVALID_CARGO, MemSetT(), and type.

## Field Documentation

const int CargoesField::CARGO_FIELD_WIDTH = HOR_CARGO_BORDER_SPACE * 2 + HOR_CARGO_WIDTH * MAX_CARGOES + HOR_CARGO_SPACE * (MAX_CARGOES - 1)
| static

Width of a CFT_CARGO field.

Definition at line 1533 of file industry_gui.cpp.

Referenced by Draw(), and GetCargoBase().

The documentation for this struct was generated from the following file:

- src/industry_gui.cpp