28#include <wx/translation.h>
56 if( aToken.IsSameAs( wxString::FromUTF8( def.m_Token ) ) )
69 return m_defs.front().m_Token;
80 col.
m_Heading = wxGetTranslation( wxString( def->m_Heading ) );
90 std::vector<GENERATED_TABLE_COLUMN> cols;
94 if( def.m_DefaultShown )
104 std::vector<GENERATED_TABLE_COLUMN> kept;
112 if( !
Find( col.m_Id ) || !seen.insert( col.m_Id ).second )
116 total += col.m_Width;
117 kept.push_back( col );
120 aColumns = std::move( kept );
144 const double mm =
pcbIUScale.IUTomm( aValue );
149 return wxString::Format( wxT(
"%.*f″" ), aPrecision + 1, mm / 25.4 );
154 return wxString::Format( wxT(
"%.*f mil" ), std::max( aPrecision - 2, 0 ), mm / 25.4 * 1000.0 );
158 return wxString::Format( wxT(
"%.*f" ), aPrecision, mm );
172const SCHEMA_TOKEN unitsTokens[] = {
178const SCHEMA_TOKEN alignTokens[] = {
185const char* tokenFor(
const SCHEMA_TOKEN ( &aMap )[
N],
int aValue )
187 for(
const SCHEMA_TOKEN& entry : aMap )
189 if( entry.value == aValue )
193 return aMap[0].token;
197bool valueFor(
const SCHEMA_TOKEN ( &aMap )[
N],
const wxString& aToken,
int& aValue )
199 for(
const SCHEMA_TOKEN& entry : aMap )
201 if( aToken.IsSameAs( wxString::FromUTF8( entry.token ) ) )
203 aValue = entry.value;
216 return tokenFor( unitsTokens, (
int) aUnits );
224 if( !valueFor( unitsTokens, aToken, v ) )
234 return tokenFor( alignTokens, (
int) aAlign );
242 if( !valueFor( alignTokens, aToken, v ) )
constexpr EDA_IU_SCALE pcbIUScale
BASE_SET & reset(size_t pos)
const char * Token(int aId) const
The file token for a known id, or a stable placeholder for one the schema does not recognize,...
GENERATED_TABLE_COLUMN DefaultColumn(int aId) const
std::vector< GENERATED_TABLE_COLUMN > Defaults() const
GENERATED_TABLE_UNITS m_defaultUnits
const GENERATED_TABLE_COLUMN_DEF * FindToken(const wxString &aToken) const
const GENERATED_TABLE_COLUMN_DEF * Find(int aId) const
GENERATED_TABLE_SCHEMA(std::vector< GENERATED_TABLE_COLUMN_DEF > aDefs, GENERATED_TABLE_UNITS aDefaultUnits, int aDefaultPrecision)
bool Validate(std::vector< GENERATED_TABLE_COLUMN > &aColumns) const
Drop a column whose id the schema does not know and a column that repeats an id already kept,...
std::vector< GENERATED_TABLE_COLUMN_DEF > m_defs
LSET is a set of PCB_LAYER_IDs.
static LSET AllNonCuMask()
Return a mask holding all layer minus CU layers.
bool GeneratedTableUnitsFromToken(const wxString &aToken, GENERATED_TABLE_UNITS &aUnits)
const char * GeneratedTableUnitsToken(GENERATED_TABLE_UNITS aUnits)
Stable file tokens, independent of enum ordering so inserting a value later cannot change what an exi...
LSET DocumentationLayers()
Layers a drill chart or drill map may live on.
wxString FormatGeneratedTableLength(int aValue, GENERATED_TABLE_UNITS aUnits, int aPrecision)
Render a length the way a generated table's cell shows it.
bool GeneratedTableAlignFromToken(const wxString &aToken, GENERATED_TABLE_ALIGN &aAlign)
const char * GeneratedTableAlignToken(GENERATED_TABLE_ALIGN aAlign)
constexpr int GENERATED_TABLE_MAX_COLUMN_WIDTH
A column can be no wider than this.
constexpr int64_t GENERATED_TABLE_MAX_TOTAL_WIDTH
A column set can be no wider than this in total, summed after each column is clamped to GENERATED_TAB...
The column a schema knows how to build, independent of whether any particular table shows it.
A column as a generated table actually carries it: what a row's cell in that column holds and how it ...
GENERATED_TABLE_ALIGN m_Align