//*************************************************************** // add an item int CColorListCtrl::AddItem(CStringArray *line, int pos) { int ret_index=LISTCTRL_ERROR; if (!line) return ret_index; LV_ITEM lvi; //set List-properties lvi.mask = LVIF_TEXT ; lvi.iSubItem = 0; lvi.pszText = ""; int count=GetItemCount(); int columns=line->GetSize(); if (m_columnSize!=columns) return ret_index; if (DWORD(pos)<=DWORD(count)) count=pos; lvi.iItem = count; //lvi.lParam= count; lvi.mask = LVIF_TEXT ; lvi.iSubItem = 0; //refer to no Item // insert an new line ret_index=InsertItem(&lvi); // set item text for additional columns for (int x=0; x<columns; x++) { CListCtrl::SetItemText(count,x,(char*)LPCSTR(line->GetAt(x)) ); } lvi.mask = LVIF_STATE; lvi.iSubItem = 1; lvi.stateMask = 0xFFFFFFFF ; lvi.state = 0; if (CListCtrl::SetItem(&lvi)) { CMyLParam *p=new CMyLParam(m_columnSize); //init with: DEF_BACKGROUND, def_text #ifdef TESTCOLOR // only for TEST if (ret_index<3) { p->SetBackColor(ITEM_COLOR(ret_index+BLUE),0); p->SetTextColor(ITEM_COLOR(ret_index+RED ),0); } else if (ret_index<=6) { p->SetBackColor(ITEM_COLOR(ret_index+BLUE),1); p->SetTextColor(ITEM_COLOR(ret_index+RED ),1); } else { p->SetBackColor(ITEM_COLOR((ret_index+BLUE)&0xF),2); p->SetTextColor(ITEM_COLOR((ret_index+RED )&0xF),2); } // end: only for TEST #endif CListCtrl::SetItemData( ret_index, DWORD(p) ); return ret_index; } return LISTCTRL_ERROR; }
PARAM_CFG_ARRAY& PCB_EDIT_FRAME::GetConfigurationSettings() { DISPLAY_OPTIONS* displ_opts = (DISPLAY_OPTIONS*)GetDisplayOptions(); if( m_configSettings.empty() ) { COLORS_DESIGN_SETTINGS cds; // constructor fills this with sensible colors // Units used in dialogs and toolbars m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "Units" ), (int*)&g_UserUnit, MILLIMETRES ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DisplayPolarCoords" ), &displ_opts->m_DisplayPolarCood, false ) ); // Display options and modes: m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ViaHoleDisplayMode" ), (int*) &displ_opts->m_DisplayViaMode, VIA_SPECIAL_HOLE_SHOW, VIA_HOLE_NOT_SHOW, OPT_VIA_HOLE_END - 1 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ShowNetNamesMode" ), &displ_opts->m_DisplayNetNamesMode, 3, 0, 3 ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DisplayTrackFilled" ), &displ_opts->m_DisplayPcbTrackFill, true ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "TrackDisplayClearance" ), (int*) &displ_opts->m_ShowTrackClearanceMode, SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadFill" ), &displ_opts->m_DisplayPadFill, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ViaFill" ), &displ_opts->m_DisplayViaFill, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadAffG" ), &displ_opts->m_DisplayPadIsol, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadSNum" ), &displ_opts->m_DisplayPadNum, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ModAffC" ), &displ_opts->m_DisplayModEdgeFill, FILLED ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ModAffT" ), &displ_opts->m_DisplayModTextFill, FILLED ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PcbAffT" ), &displ_opts->m_DisplayDrawItemsFill, FILLED ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PcbShowZonesMode" ), &displ_opts->m_DisplayZonesMode, 0, 0, 2 ) ); // layer colors: wxASSERT( DIM( cds.m_LayersColors ) == LAYER_ID_COUNT ); for( int i = 0; i<LAYER_ID_COUNT; ++i ) { wxString vn = wxString::Format( wxT( "ColorPCBLayer_%s" ), LSET::Name( LAYER_ID( i ) ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, vn, LOC_COLOR( i ), cds.m_LayersColors[i] ) ); } m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorTxtFrontEx" ), ITEM_COLOR( MOD_TEXT_FR_VISIBLE ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorTxtBackEx" ), ITEM_COLOR( MOD_TEXT_BK_VISIBLE ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorTxtInvisEx" ), ITEM_COLOR( MOD_TEXT_INVISIBLE ), DARKGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorAnchorEx" ), ITEM_COLOR( ANCHOR_VISIBLE ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorPadBackEx" ), ITEM_COLOR( PAD_BK_VISIBLE ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorPadFrontEx" ), ITEM_COLOR( PAD_FR_VISIBLE ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorViaThruEx" ), ITEM_COLOR( VIA_THROUGH_VISIBLE ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorViaBBlindEx" ), ITEM_COLOR( VIA_BBLIND_VISIBLE ), BROWN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorViaMicroEx" ), ITEM_COLOR( VIA_MICROVIA_VISIBLE ), CYAN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorNonPlatedEx" ), ITEM_COLOR( NON_PLATED_VISIBLE ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorRatsEx" ), ITEM_COLOR( RATSNEST_VISIBLE ), WHITE ) ); // Miscellaneous: m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "RotationAngle" ), &m_rotationAngle, 900, 1, 900 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "MaxLnkS" ), &displ_opts->m_MaxLinksShowed, 3, 0, 15 ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ShowMRa" ), &displ_opts->m_Show_Module_Ratsnest, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "TwoSegT" ), &g_TwoSegmentTrackBuild, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "SegmPcb45Only" ) , &g_Segments_45_Only, true ) ); } return m_configSettings; }
PARAM_CFG_ARRAY& PCB_EDIT_FRAME::GetConfigurationSettings() { if( !m_configSettings.empty() ) return m_configSettings; // Units used in dialogs and toolbars m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "Units" ), (int*)&g_UserUnit, MILLIMETRES ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DisplayPolarCoords" ), &DisplayOpt.DisplayPolarCood, false ) ); // Display options and modes: m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ViaHoleDisplayMode" ), (int*) &DisplayOpt.m_DisplayViaMode, VIA_SPECIAL_HOLE_SHOW, VIA_HOLE_NOT_SHOW, OPT_VIA_HOLE_END - 1 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ShowNetNamesMode" ), &DisplayOpt.DisplayNetNamesMode, 3, 0, 3 ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DisplayTrackFilled" ), &DisplayOpt.DisplayPcbTrackFill, true ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "TrackDisplayClearance" ), (int*) &DisplayOpt.ShowTrackClearanceMode, SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadFill" ), &DisplayOpt.DisplayPadFill, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ViaFill" ), &DisplayOpt.DisplayViaFill, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadAffG" ), &DisplayOpt.DisplayPadIsol, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadSNum" ), &DisplayOpt.DisplayPadNum, true ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ModAffC" ), &DisplayOpt.DisplayModEdge, FILLED, 0, 2 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ModAffT" ), &DisplayOpt.DisplayModText, FILLED, 0, 2 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PcbAffT" ), &DisplayOpt.DisplayDrawItems, FILLED, 0, 2 ) ); // Colors: m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay0" ), LOC_COLOR( 0 ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay1" ), LOC_COLOR( 1 ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay2" ), LOC_COLOR( 2 ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay3" ), LOC_COLOR( 3 ), 5 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay4" ), LOC_COLOR( 4 ), 4 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay5" ), LOC_COLOR( 5 ), 5 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay6" ), LOC_COLOR( 6 ), 6 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay7" ), LOC_COLOR( 7 ), 5 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay8" ), LOC_COLOR( 8 ), 7 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLay9" ), LOC_COLOR( 9 ), 1 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayA" ), LOC_COLOR( 10 ), 2 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayB" ), LOC_COLOR( 11 ), 3 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayC" ), LOC_COLOR( 12 ), 12 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayD" ), LOC_COLOR( 13 ), 13 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayE" ), LOC_COLOR( 14 ), 14 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayF" ), LOC_COLOR( 15 ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayG" ), LOC_COLOR( 16 ), 1 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayH" ), LOC_COLOR( 17 ), 5 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayI" ), LOC_COLOR( 18 ), 11 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayJ" ), LOC_COLOR( 19 ), 4 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayK" ), LOC_COLOR( 20 ), 5 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayL" ), LOC_COLOR( 21 ), 3 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayM" ), LOC_COLOR( 22 ), 6 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayN" ), LOC_COLOR( 23 ), 5 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayO" ), LOC_COLOR( 24 ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayP" ), LOC_COLOR( 25 ), 1 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayQ" ), LOC_COLOR( 26 ), 2 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayR" ), LOC_COLOR( 27 ), 14 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayS" ), LOC_COLOR( 28 ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayT" ), LOC_COLOR( 29 ), 13 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayU" ), LOC_COLOR( 30 ), 14 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColLayV" ), LOC_COLOR( 31 ), 7 ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CTxtMoC" ), ITEM_COLOR( MOD_TEXT_FR_VISIBLE ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CTxtMoS" ), ITEM_COLOR( MOD_TEXT_BK_VISIBLE ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CTxtVis" ), ITEM_COLOR( MOD_TEXT_INVISIBLE ), DARKGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CAncreM" ), ITEM_COLOR( ANCHOR_VISIBLE ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoPadCu" ), ITEM_COLOR( PAD_BK_VISIBLE ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoPadCm" ), ITEM_COLOR( PAD_FR_VISIBLE ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoViaTh" ), ITEM_COLOR( VIA_THROUGH_VISIBLE ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoViaBu" ), ITEM_COLOR( VIA_BBLIND_VISIBLE ), BROWN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoViaMi" ), ITEM_COLOR( VIA_MICROVIA_VISIBLE ), CYAN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoRatsN" ), ITEM_COLOR( RATSNEST_VISIBLE ), WHITE ) ); // Miscellaneous: m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "RotationAngle" ), &g_RotationAngle, 900, 450, 900 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "MaxLnkS" ), &g_MaxLinksShowed, 3, 0, 15 ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ShowMRa" ), &g_Show_Module_Ratsnest, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "TwoSegT" ), &g_TwoSegmentTrackBuild, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "SegmPcb45Only" ), &Segments_45_Only, true ) ); return m_configSettings; }
PARAM_CFG_ARRAY& PCB_EDIT_FRAME::GetConfigurationSettings() { if( !m_configSettings.empty() ) return m_configSettings; // Units used in dialogs and toolbars m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "Units" ), (int*)&g_UserUnit, MILLIMETRES ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DisplayPolarCoords" ), &DisplayOpt.DisplayPolarCood, false ) ); // Display options and modes: m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ViaHoleDisplayMode" ), (int*) &DisplayOpt.m_DisplayViaMode, VIA_SPECIAL_HOLE_SHOW, VIA_HOLE_NOT_SHOW, OPT_VIA_HOLE_END - 1 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ShowNetNamesMode" ), &DisplayOpt.DisplayNetNamesMode, 3, 0, 3 ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DisplayTrackFilled" ), &DisplayOpt.DisplayPcbTrackFill, true ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "TrackDisplayClearance" ), (int*) &DisplayOpt.ShowTrackClearanceMode, SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadFill" ), &DisplayOpt.DisplayPadFill, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ViaFill" ), &DisplayOpt.DisplayViaFill, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadAffG" ), &DisplayOpt.DisplayPadIsol, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PadSNum" ), &DisplayOpt.DisplayPadNum, true ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ModAffC" ), &DisplayOpt.DisplayModEdge, FILLED, 0, 2 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "ModAffT" ), &DisplayOpt.DisplayModText, FILLED, 0, 2 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PcbAffT" ), &DisplayOpt.DisplayDrawItems, FILLED, 0, 2 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PcbShowZonesMode" ), &DisplayOpt.DisplayZonesMode, 0, 0, 2 ) ); // Colors: m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer0Ex" ), LOC_COLOR( 0 ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer1Ex" ), LOC_COLOR( 1 ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer2Ex" ), LOC_COLOR( 2 ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer3Ex" ), LOC_COLOR( 3 ), MAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer4Ex" ), LOC_COLOR( 4 ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer5Ex" ), LOC_COLOR( 5 ), MAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer6Ex" ), LOC_COLOR( 6 ), BROWN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer7Ex" ), LOC_COLOR( 7 ), MAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer8Ex" ), LOC_COLOR( 8 ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer9Ex" ), LOC_COLOR( 9 ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer10Ex" ), LOC_COLOR( 10 ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer11Ex" ), LOC_COLOR( 11 ), CYAN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer12Ex" ), LOC_COLOR( 12 ), LIGHTRED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer13Ex" ), LOC_COLOR( 13 ), LIGHTMAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer14Ex" ), LOC_COLOR( 14 ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer15Ex" ), LOC_COLOR( 15 ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer16Ex" ), LOC_COLOR( 16 ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer17Ex" ), LOC_COLOR( 17 ), MAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer18Ex" ), LOC_COLOR( 18 ), LIGHTCYAN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer19Ex" ), LOC_COLOR( 19 ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer20Ex" ), LOC_COLOR( 20 ), MAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer21Ex" ), LOC_COLOR( 21 ), CYAN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer22Ex" ), LOC_COLOR( 22 ), BROWN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer23Ex" ), LOC_COLOR( 23 ), MAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer24Ex" ), LOC_COLOR( 24 ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer25Ex" ), LOC_COLOR( 25 ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer26Ex" ), LOC_COLOR( 26 ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer27Ex" ), LOC_COLOR( 27 ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer28Ex" ), LOC_COLOR( 28 ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer29Ex" ), LOC_COLOR( 29 ), LIGHTMAGENTA ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer30Ex" ), LOC_COLOR( 30 ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorLayer31Ex" ), LOC_COLOR( 31 ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorTxtFrontEx" ), ITEM_COLOR( MOD_TEXT_FR_VISIBLE ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorTxtBackEx" ), ITEM_COLOR( MOD_TEXT_BK_VISIBLE ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorTxtInvisEx" ), ITEM_COLOR( MOD_TEXT_INVISIBLE ), DARKGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorAnchorEx" ), ITEM_COLOR( ANCHOR_VISIBLE ), BLUE ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorPadBackEx" ), ITEM_COLOR( PAD_BK_VISIBLE ), GREEN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorPadFrontEx" ), ITEM_COLOR( PAD_FR_VISIBLE ), RED ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorViaThruEx" ), ITEM_COLOR( VIA_THROUGH_VISIBLE ), LIGHTGRAY ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorViaBBlindEx" ), ITEM_COLOR( VIA_BBLIND_VISIBLE ), BROWN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorViaMicroEx" ), ITEM_COLOR( VIA_MICROVIA_VISIBLE ), CYAN ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorNonPlatedEx" ), ITEM_COLOR( NON_PLATED_VISIBLE ), YELLOW ) ); m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "ColorRatsEx" ), ITEM_COLOR( RATSNEST_VISIBLE ), WHITE ) ); // Miscellaneous: m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "RotationAngle" ), &m_rotationAngle, 900, 1, 900 ) ); m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "MaxLnkS" ), &g_MaxLinksShowed, 3, 0, 15 ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "ShowMRa" ), &g_Show_Module_Ratsnest, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "TwoSegT" ), &g_TwoSegmentTrackBuild, true ) ); m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "SegmPcb45Only" ) , &g_Segments_45_Only, true ) ); return m_configSettings; }
void PaneDisplay::SetContent( PaneContents c ) { CString str = "?"; // fill this in float val = 0; // fill this in const Song *pSong = GAMESTATE->m_pCurSong; const Steps *pSteps = GAMESTATE->m_pCurSteps[m_PlayerNumber]; const Course *pCourse = GAMESTATE->m_pCurCourse; const Trail *pTrail = GAMESTATE->m_pCurTrail[m_PlayerNumber]; const Profile *pProfile = PROFILEMAN->GetProfile( m_PlayerNumber ); bool bIsEdit = pSteps && pSteps->GetDifficulty() == DIFFICULTY_EDIT; if( (g_Contents[c].req&NEED_NOTES) && !pSteps ) goto done; if( (g_Contents[c].req&NEED_COURSE) && !pTrail ) goto done; if( (g_Contents[c].req&NEED_PROFILE) && !pProfile ) { str = "N/A"; goto done; } { RadarValues rv; if( g_Contents[c].req&NEED_NOTES ) rv = pSteps->GetRadarValues(); else if( g_Contents[c].req&NEED_COURSE ) rv = pTrail->GetRadarValues(); switch( c ) { case COURSE_NUM_STEPS: case SONG_NUM_STEPS: val = rv[RADAR_NUM_TAPS_AND_HOLDS]; break; case COURSE_JUMPS: case SONG_JUMPS: val = rv[RADAR_NUM_JUMPS]; break; case COURSE_HOLDS: case SONG_HOLDS: val = rv[RADAR_NUM_HOLDS]; break; case COURSE_MINES: case SONG_MINES: val = rv[RADAR_NUM_MINES]; break; case COURSE_HANDS: case SONG_HANDS: val = rv[RADAR_NUM_HANDS]; break; case SONG_DIFFICULTY_RADAR_STREAM: val = rv[RADAR_STREAM]; break; case SONG_DIFFICULTY_RADAR_VOLTAGE: val = rv[RADAR_VOLTAGE]; break; case SONG_DIFFICULTY_RADAR_AIR: val = rv[RADAR_AIR]; break; case SONG_DIFFICULTY_RADAR_FREEZE: val = rv[RADAR_FREEZE]; break; case SONG_DIFFICULTY_RADAR_CHAOS: val = rv[RADAR_CHAOS]; break; case SONG_PROFILE_HIGH_SCORE: val = 100.0f * PROFILEMAN->GetProfile(m_PlayerNumber)->GetStepsHighScoreList(pSong,pSteps).GetTopScore().fPercentDP; break; case SONG_PROFILE_NUM_PLAYS: val = (float) PROFILEMAN->GetProfile(m_PlayerNumber)->GetStepsNumTimesPlayed(pSong,pSteps); break; case SONG_MACHINE_HIGH_NAME: /* set val for color */ case SONG_MACHINE_HIGH_SCORE: CHECKPOINT; if( bIsEdit ) goto done; // no machine scores for edits val = 100.0f * PROFILEMAN->GetMachineProfile()->GetStepsHighScoreList(pSong,pSteps).GetTopScore().fPercentDP; break; case SONG_MACHINE_RANK: { const vector<Song*> best = SONGMAN->GetBestSongs( PROFILE_SLOT_MACHINE ); val = (float) FindIndex( best.begin(), best.end(), pSong ); val += 1; break; } case SONG_PROFILE_RANK: { const vector<Song*> best = SONGMAN->GetBestSongs( PlayerMemCard(m_PlayerNumber) ); val = (float) FindIndex( best.begin(), best.end(), pSong ); val += 1; break; } case COURSE_MACHINE_HIGH_NAME: /* set val for color */ case COURSE_MACHINE_HIGH_SCORE: val = 100.0f * PROFILEMAN->GetMachineProfile()->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().fPercentDP; break; case COURSE_MACHINE_NUM_PLAYS: val = (float) PROFILEMAN->GetMachineProfile()->GetCourseNumTimesPlayed( pCourse ); break; case COURSE_MACHINE_RANK: { const vector<Course*> best = SONGMAN->GetBestCourses( PROFILE_SLOT_MACHINE ); val = (float) FindIndex( best.begin(), best.end(), pCourse ); val += 1; } break; case COURSE_PROFILE_HIGH_SCORE: val = 100.0f * PROFILEMAN->GetProfile(m_PlayerNumber)->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().fPercentDP; break; case COURSE_PROFILE_NUM_PLAYS: val = (float) PROFILEMAN->GetProfile(m_PlayerNumber)->GetCourseNumTimesPlayed( pCourse ); break; case COURSE_PROFILE_RANK: const vector<Course*> best = SONGMAN->GetBestCourses( PlayerMemCard(m_PlayerNumber) ); val = (float) FindIndex( best.begin(), best.end(), pCourse ); val += 1; break; }; if( val == RADAR_VAL_UNKNOWN ) goto done; /* Scale, round, clamp, etc. for floats: */ switch( c ) { case SONG_DIFFICULTY_RADAR_STREAM: case SONG_DIFFICULTY_RADAR_VOLTAGE: case SONG_DIFFICULTY_RADAR_AIR: case SONG_DIFFICULTY_RADAR_FREEZE: case SONG_DIFFICULTY_RADAR_CHAOS: val = roundf( SCALE( val, 0, 1, 0, 10 ) ); val = clamp( val, 0, 10 ); str = ssprintf( "%.0f", val ); break; } switch( c ) { case SONG_MACHINE_HIGH_NAME: str = PROFILEMAN->GetMachineProfile()->GetStepsHighScoreList(pSong,pSteps).GetTopScore().sName; break; case COURSE_MACHINE_HIGH_NAME: str = PROFILEMAN->GetMachineProfile()->GetCourseHighScoreList(pCourse,pTrail).GetTopScore().sName; break; case SONG_MACHINE_HIGH_SCORE: case COURSE_MACHINE_HIGH_SCORE: case SONG_PROFILE_HIGH_SCORE: case COURSE_PROFILE_HIGH_SCORE: str = ssprintf( "%.2f%%", val ); break; case SONG_NUM_STEPS: case SONG_JUMPS: case SONG_HOLDS: case SONG_MINES: case SONG_HANDS: case COURSE_NUM_STEPS: case COURSE_JUMPS: case COURSE_HOLDS: case COURSE_MINES: case COURSE_HANDS: case SONG_MACHINE_NUM_PLAYS: case COURSE_MACHINE_NUM_PLAYS: case SONG_PROFILE_NUM_PLAYS: case COURSE_PROFILE_NUM_PLAYS: case SONG_MACHINE_RANK: case COURSE_MACHINE_RANK: case SONG_PROFILE_RANK: case COURSE_PROFILE_RANK: str = ssprintf( "%.0f", val ); } } done: m_textContents[c].SetText( str ); const int num = NUM_ITEM_COLORS( g_Contents[c].name ); for( int p = 0; p < num; ++p ) { const CString metric = ITEM_COLOR(g_Contents[c].name, p); CStringArray spec; split( metric, ";", spec ); if( spec.size() < 2 ) RageException::Throw( "Metric '%s' malformed", metric.c_str() ); const float n = strtof( spec[0], NULL ); if( val >= n ) continue; spec.erase( spec.begin(), spec.begin()+1 ); m_textContents[c].Command( join(";", spec) ); break; } }