magic/wiring/wiring.h

100 lines
3.3 KiB
C
Raw Normal View History

/*
* wiring.h --
*
* Contains definitions for things that are exported by the
* wiring module.
*
* *********************************************************************
* * Copyright (C) 1985, 1990 Regents of the University of California. *
* * Permission to use, copy, modify, and distribute this *
* * software and its documentation for any purpose and without *
* * fee is hereby granted, provided that the above copyright *
* * notice appear in all copies. The University of California *
* * makes no representations about the suitability of this *
* * software for any purpose. It is provided "as is" without *
* * express or implied warranty. Export of this software outside *
* * of the United States of America may require an export license. *
* *********************************************************************
*
2020-05-25 21:46:59 +02:00
* rcsid $Header$
*/
#ifndef _MAGIC__WIRING__WIRING_H
#define _MAGIC__WIRING__WIRING_H
#include "utils/magic.h"
#include "database/database.h"
/* Table that defines the shape of contacts and the layers that they
* connect. This definition allows some layers to extend around the
* contact, to support technologies where the contact pads are different
* sizes for the different layers that the contact connects.
*/
typedef struct _Contact *ContactPtr;
typedef struct _Contact
{
TileType con_type; /* Type of material that forms core of
* contact.
*/
int con_size; /* Minimum size of this contact (size of
* minimum con_type area).
*/
TileType con_layer1; /* First of two layers that the contact
* really isn't a contact.
*/
int con_surround1; /* How much additional material of type
* con_layer1 must be painted around the
* edge of the contact.
*/
int con_extend1; /* How much additional material of type
* con_layer1 must extend beyond the
* contact in the orientation of the route.
*/
TileType con_layer2; /* Same information for second layer that
* the contact connects.
*/
int con_surround2;
int con_extend2;
ContactPtr con_next; /* Pointer to next contact record */
} Contact;
extern Contact *WireContacts; /* Points to all the contacts that are
* defined. */
/* Types defining the current state of the wiring tool */
extern TileType WireType; /* Type of material currently selected
* for wiring.
*/
extern int WireWidth; /* Thickness of material to use for wiring. */
/* Procedures for placing wires: */
extern void WirePickType(TileType type, const Point *ppoint, int width);
extern void WireAddLeg(Rect *rect, const Point *point, int direction);
extern void WireAddContact(TileType newType, int newWidth);
extern void WireShowLeg(void);
extern int WireGetWidth(void);
extern TileType WireGetType(void);
/* Legal values for the "direction" parameter to WireAddLeg: */
#define WIRE_CHOOSE 0
#define WIRE_HORIZONTAL 1
#define WIRE_VERTICAL 2
/* Procedures for reading the technology file: */
extern void WireTechInit(void);
extern bool WireTechLine(const char *sectionName, int argc, char *argv[]);
extern void WireTechFinal(void);
extern void WireTechScale(int scalen, int scaled);
/* Initialization: */
extern void WireInit(void);
#endif /* _MAGIC__WIRING__WIRING_H */