这篇教程C++ GetScreen函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetScreen函数的典型用法代码示例。如果您正苦于以下问题:C++ GetScreen函数的具体用法?C++ GetScreen怎么用?C++ GetScreen使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetScreen函数的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: GetBoardvoid PCB_EDIT_FRAME::PrepareLayerIndicator(){ int ii, jj; EDA_COLOR_T active_layer_color, Route_Layer_TOP_color, Route_Layer_BOTTOM_color, via_color; bool change = false; bool first_call = LayerPairBitmap == NULL; static int previous_active_layer_color, previous_Route_Layer_TOP_color, previous_Route_Layer_BOTTOM_color, previous_via_color; /* get colors, and redraw bitmap button only on changes */ active_layer_color = GetBoard()->GetLayerColor(GetActiveLayer()); if( previous_active_layer_color != active_layer_color ) { previous_active_layer_color = active_layer_color; change = true; } Route_Layer_TOP_color = g_ColorsSettings.GetLayerColor( GetScreen()->m_Route_Layer_TOP ); if( previous_Route_Layer_TOP_color != Route_Layer_TOP_color ) { previous_Route_Layer_TOP_color = Route_Layer_TOP_color; change = true; } Route_Layer_BOTTOM_color = g_ColorsSettings.GetLayerColor( GetScreen()->m_Route_Layer_BOTTOM ); if( previous_Route_Layer_BOTTOM_color != Route_Layer_BOTTOM_color ) { previous_Route_Layer_BOTTOM_color = Route_Layer_BOTTOM_color; change = true; } int via_type = GetDesignSettings().m_CurrentViaType; via_color = GetBoard()->GetVisibleElementColor(VIAS_VISIBLE+via_type); if( previous_via_color != via_color ) { previous_via_color = via_color; change = true; } if( !change && (LayerPairBitmap != NULL) ) return; /* Create the bitmap and its Memory DC, if not already made */ if( LayerPairBitmap == NULL ) { LayerPairBitmap = new wxBitmap( 24, 24 ); } /* Draw the icon, with colors according to the active layer and layer * pairs for via command (change layer) */ wxMemoryDC iconDC; iconDC.SelectObject( *LayerPairBitmap ); wxPen pen; int buttonColor = -1; for( ii = 0; ii < BM_LAYERICON_SIZE; ii++ ) { for( jj = 0; jj < BM_LAYERICON_SIZE; jj++ ) { if( s_BitmapLayerIcon[ii][jj] != buttonColor ) { switch( s_BitmapLayerIcon[ii][jj] ) { default: case 0: pen.SetColour( MakeColour( active_layer_color ) ); break; case 1: pen.SetColour( MakeColour( Route_Layer_TOP_color) ); break; case 2: pen.SetColour( MakeColour( Route_Layer_BOTTOM_color ) ); break; case 3: pen.SetColour( MakeColour( via_color ) ); break; } buttonColor = s_BitmapLayerIcon[ii][jj]; iconDC.SetPen( pen ); } iconDC.DrawPoint( jj, ii ); } } /* Deselect the Tool Bitmap from DC, * in order to delete the MemoryDC safely without deleting the bitmap *///.........这里部分代码省略.........
开发者ID:PatMart,项目名称:kicad-source-mirror,代码行数:101,
示例2: GetScreenwxPoint EDA_DRAW_FRAME::GetNearestGridPosition( const wxPoint& aPosition, wxRealPoint* aGridSize ) const{ BASE_SCREEN* screen = GetScreen(); // virtual call return screen->getNearestGridPosition( aPosition, GetGridOrigin(), aGridSize );}
开发者ID:KiCad,项目名称:kicad-source-mirror,代码行数:5,
示例3: GetScreenvoid EDA_DRAW_FRAME::AdjustScrollBars( const wxPoint& aCenterPositionIU ){ BASE_SCREEN* screen = GetScreen(); if( !screen || !m_canvas ) return; double scale = screen->GetScalingFactor(); wxLogTrace( traceScrollSettings, wxT( "Center Position = ( %d, %d ), scale = %.10g" ), aCenterPositionIU.x, aCenterPositionIU.y, scale ); // Calculate the portion of the drawing that can be displayed in the // client area at the current zoom level. // visible viewport in device units ~ pixels wxSize clientSizeDU = m_canvas->GetClientSize(); // Size of the client window in IU DSIZE clientSizeIU( clientSizeDU.x / scale, clientSizeDU.y / scale ); // Full drawing or "page" rectangle in internal units DBOX pageRectIU( wxPoint( 0, 0 ), wxSize( GetPageSizeIU().x, GetPageSizeIU().y ) ); // Account for scrollbars wxSize scrollbarSizeDU = m_canvas->GetSize() - m_canvas->GetClientSize(); wxSize scrollbarSizeIU = scrollbarSizeDU * (1 / scale); wxPoint centerAdjustedIU = aCenterPositionIU + scrollbarSizeIU / 2; // The upper left corner of the client rectangle in internal units. double xIU = centerAdjustedIU.x - clientSizeIU.x / 2.0; double yIU = centerAdjustedIU.y - clientSizeIU.y / 2.0; // If drawn around the center, adjust the client rectangle accordingly. if( screen->m_Center ) { // half page offset. xIU += pageRectIU.GetWidth() / 2.0; yIU += pageRectIU.GetHeight() / 2.0; } DBOX clientRectIU( wxPoint( xIU, yIU ), wxSize( clientSizeIU.x, clientSizeIU.y ) ); wxPoint centerPositionIU; // put "int" limits on the clientRect if( clientRectIU.GetLeft() < VIRT_MIN ) clientRectIU.MoveLeftTo( VIRT_MIN ); if( clientRectIU.GetTop() < VIRT_MIN ) clientRectIU.MoveTopTo( VIRT_MIN ); if( clientRectIU.GetRight() > VIRT_MAX ) clientRectIU.MoveRightTo( VIRT_MAX ); if( clientRectIU.GetBottom() > VIRT_MAX ) clientRectIU.MoveBottomTo( VIRT_MAX ); centerPositionIU.x = KiROUND( clientRectIU.GetX() + clientRectIU.GetWidth() / 2 ); centerPositionIU.y = KiROUND( clientRectIU.GetY() + clientRectIU.GetHeight() / 2 ); if( screen->m_Center ) { centerPositionIU.x -= KiROUND( pageRectIU.GetWidth() / 2.0 ); centerPositionIU.y -= KiROUND( pageRectIU.GetHeight() / 2.0 ); } DSIZE virtualSizeIU; if( pageRectIU.GetLeft() < clientRectIU.GetLeft() && pageRectIU.GetRight() > clientRectIU.GetRight() ) { virtualSizeIU.x = pageRectIU.GetSize().x; } else { double pageCenterX = pageRectIU.GetX() + ( pageRectIU.GetWidth() / 2 ); double clientCenterX = clientRectIU.GetX() + ( clientRectIU.GetWidth() / 2 ); if( clientRectIU.GetWidth() > pageRectIU.GetWidth() ) { if( pageCenterX > clientCenterX ) virtualSizeIU.x = ( pageCenterX - clientRectIU.GetLeft() ) * 2; else if( pageCenterX < clientCenterX ) virtualSizeIU.x = ( clientRectIU.GetRight() - pageCenterX ) * 2; else virtualSizeIU.x = clientRectIU.GetWidth(); } else { if( pageCenterX > clientCenterX ) virtualSizeIU.x = pageRectIU.GetWidth() + ( (pageRectIU.GetLeft() - clientRectIU.GetLeft() ) * 2 ); else if( pageCenterX < clientCenterX ) virtualSizeIU.x = pageRectIU.GetWidth() + ( (clientRectIU.GetRight() - pageRectIU.GetRight() ) * 2 ); else virtualSizeIU.x = pageRectIU.GetWidth(); } } if( pageRectIU.GetTop() < clientRectIU.GetTop() && pageRectIU.GetBottom() > clientRectIU.GetBottom() ) { virtualSizeIU.y = pageRectIU.GetSize().y; } else {//.........这里部分代码省略.........
开发者ID:cpavlina,项目名称:kicad,代码行数:101,
示例4: GetCurItem//.........这里部分代码省略......... shape = S_CIRCLE; if( GetToolId() == ID_MODEDIT_ARC_TOOL ) shape = S_ARC; SetCurItem( Begin_Edge_Module( (EDGE_MODULE*) NULL, DC, shape ) ); } else if( item->IsNew() ) { if( ( (EDGE_MODULE*) item )->GetShape() == S_CIRCLE ) { End_Edge_Module( (EDGE_MODULE*) item ); SetCurItem( NULL ); m_canvas->Refresh(); } else if( ( (EDGE_MODULE*) item )->GetShape() == S_ARC ) { End_Edge_Module( (EDGE_MODULE*) item ); SetCurItem( NULL ); m_canvas->Refresh(); } else if( ( (EDGE_MODULE*) item )->GetShape() == S_SEGMENT ) { SetCurItem( Begin_Edge_Module( (EDGE_MODULE*) item, DC, S_SEGMENT ) ); } else { wxMessageBox( wxT( "ProcessCommand error: unknown shape" ) ); } } break; case ID_MODEDIT_DELETE_TOOL: if( ! no_item_edited ) // Item in edit, cannot delete it break; item = ModeditLocateAndDisplay(); if( item && item->Type() != PCB_MODULE_T ) // Cannot delete the module itself { SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT ); RemoveStruct( item ); SetCurItem( NULL ); } break; case ID_MODEDIT_ANCHOR_TOOL: { MODULE* module = GetBoard()->m_Modules; if( module == NULL // No module loaded || (module->GetFlags() != 0) ) break; SaveCopyInUndoList( module, UR_MODEDIT ); // set the new relative internal local coordinates of footprint items wxPoint moveVector = module->GetPosition() - GetCrossHairPosition(); module->MoveAnchorPosition( moveVector ); // Usually, we do not need to change twice the anchor position, // so deselect the active tool SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); SetCurItem( NULL ); m_canvas->Refresh(); } break; case ID_MODEDIT_PLACE_GRID_COORD: m_canvas->DrawGridAxis( DC, GR_XOR, GetBoard()->GetGridOrigin() ); SetGridOrigin( GetCrossHairPosition() ); m_canvas->DrawGridAxis( DC, GR_COPY, GetBoard()->GetGridOrigin() ); GetScreen()->SetModify(); break; case ID_MODEDIT_TEXT_TOOL: if( GetBoard()->m_Modules == NULL ) break; SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT ); CreateTextModule( GetBoard()->m_Modules, DC ); break; case ID_MODEDIT_PAD_TOOL: if( GetBoard()->m_Modules ) { SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT ); AddPad( GetBoard()->m_Modules, true ); } break; default: DisplayError( this, wxT( "FOOTPRINT_EDIT_FRAME::ProcessCommand error" ) ); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); } m_canvas->CrossHairOn( DC );}
开发者ID:asutp,项目名称:kicad-source-mirror,代码行数:101,
示例5: StrPrintfbool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl ){ // implement the pseudo code from KIWAY_PLAYER.h: SCH_SCREENS screenList; // This is for python: if( aFileSet.size() != 1 ) { UTF8 msg = StrPrintf( "Eeschema:%s() takes only a single filename", __func__ ); DisplayError( this, msg ); return false; } wxString fullFileName( aFileSet[0] ); // We insist on caller sending us an absolute path, if it does not, we say it's a bug. wxASSERT_MSG( wxFileName( fullFileName ).IsAbsolute(), wxT( "bug in single_top.cpp or project manager." ) ); if( !LockFile( fullFileName ) ) { wxString msg = wxString::Format( _( "Schematic file '%s' is already open." ), GetChars( fullFileName ) ); DisplayError( this, msg ); return false; } // save any currently open and modified project files. for( SCH_SCREEN* screen = screenList.GetFirst(); screen; screen = screenList.GetNext() ) { if( screen->IsModify() ) { int response = YesNoCancelDialog( this, _( "The current schematic has been modified. Do you wish to save the changes?" ), wxEmptyString, _( "Save and Load" ), _( "Load Without Saving" ) ); if( response == wxID_CANCEL ) { return false; } else if( response == wxID_YES ) { wxCommandEvent dummy; OnSaveProject( dummy ); } else { // response == wxID_NO, fall thru } break; } } wxFileName pro = fullFileName; pro.SetExt( ProjectFileExtension ); bool is_new = !wxFileName::IsFileReadable( fullFileName ); // If its a non-existent schematic and caller thinks it exists if( is_new && !( aCtl & KICTL_CREATE ) ) { // notify user that fullFileName does not exist, ask if user wants to create it. wxString ask = wxString::Format( _( "Schematic '%s' does not exist. Do you wish to create it?" ), GetChars( fullFileName ) ); if( !IsOK( this, ask ) ) return false; } // unload current project file before loading new { delete g_RootSheet; g_RootSheet = NULL; CreateScreens(); } GetScreen()->SetFileName( fullFileName ); g_RootSheet->SetFileName( fullFileName ); g_RootSheet->SetName( "root" ); SetStatusText( wxEmptyString ); ClearMsgPanel(); wxString msg = wxString::Format( _( "Ready/nProject dir: '%s'/n" ), GetChars( wxPathOnly( Prj().GetProjectFullName() ) ) ); SetStatusText( msg ); // PROJECT::SetProjectFullName() is an impactful function. It should only be // called under carefully considered circumstances. // The calling code should know not to ask me here to change projects unless//.........这里部分代码省略.........
开发者ID:grtwall,项目名称:kicad-source-mirror,代码行数:101,
示例6: GetScreenbool SCH_EDIT_FRAME::SaveEEFile( SCH_SCREEN* aScreen, bool aSaveUnderNewName, bool aCreateBackupFile ){ wxString msg; wxFileName schematicFileName; bool success; if( aScreen == NULL ) aScreen = GetScreen(); // If no name exists in the window yet - save as new. if( aScreen->GetFileName().IsEmpty() ) aSaveUnderNewName = true; // Construct the name of the file to be saved schematicFileName = Prj().AbsolutePath( aScreen->GetFileName() ); if( aSaveUnderNewName ) { wxFileDialog dlg( this, _( "Schematic Files" ), wxPathOnly( Prj().GetProjectFullName() ), schematicFileName.GetFullName(), SchematicFileWildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); if( dlg.ShowModal() == wxID_CANCEL ) return false; schematicFileName = dlg.GetPath(); if( schematicFileName.GetExt() != SchematicFileExtension ) schematicFileName.SetExt( SchematicFileExtension ); } if( !IsWritable( schematicFileName ) ) return false; // Create backup if requested if( aCreateBackupFile && schematicFileName.FileExists() ) { wxFileName backupFileName = schematicFileName; // Rename the old file to a '.bak' one: backupFileName.SetExt( SchematicBackupFileExtension ); if( backupFileName.FileExists() ) wxRemoveFile( backupFileName.GetFullPath() ); if( !wxRenameFile( schematicFileName.GetFullPath(), backupFileName.GetFullPath() ) ) { msg.Printf( _( "Could not save backup of file '%s'" ), GetChars( schematicFileName.GetFullPath() ) ); DisplayError( this, msg ); } } // Save wxLogTrace( traceAutoSave, wxT( "Saving file <" ) + schematicFileName.GetFullPath() + wxT( ">" ) ); FILE* f = wxFopen( schematicFileName.GetFullPath(), wxT( "wt" ) ); if( !f ) { msg.Printf( _( "Failed to create file '%s'" ), GetChars( schematicFileName.GetFullPath() ) ); DisplayError( this, msg ); return false; } success = aScreen->Save( f ); if( success ) { // Delete auto save file. wxFileName autoSaveFileName = schematicFileName; autoSaveFileName.SetName( AUTOSAVE_PREFIX_FILENAME + schematicFileName.GetName() ); if( autoSaveFileName.FileExists() ) { wxLogTrace( traceAutoSave, wxT( "Removing auto save file <" ) + autoSaveFileName.GetFullPath() + wxT( ">" ) ); wxRemoveFile( autoSaveFileName.GetFullPath() ); } // Update the screen and frame info. if( aSaveUnderNewName ) aScreen->SetFileName( schematicFileName.GetFullPath() ); aScreen->ClrSave(); aScreen->ClrModify(); msg.Printf( _( "File %s saved" ), GetChars( aScreen->GetFileName() ) ); SetStatusText( msg, 0 ); } else { DisplayError( this, _( "File write operation failed." ) ); } fclose( f );//.........这里部分代码省略.........
开发者ID:grtwall,项目名称:kicad-source-mirror,代码行数:101,
示例7: plugin_typebool PCB_EDIT_FRAME::AppendBoardFile( const wxString& aFullFileName, int aCtl ){ IO_MGR::PCB_FILE_T pluginType = plugin_type( aFullFileName, aCtl ); PLUGIN::RELEASER pi( IO_MGR::PluginFind( pluginType ) ); // keep trace of existing items, in order to know what are the new items // (for undo command for instance) // Tracks are inserted, not append, so mark existing tracks to know what are // the new tracks for( TRACK* track = GetBoard()->m_Track; track; track = track->Next() ) track->SetFlags( FLAG0 ); // Other items are append to the item list, so keep trace to the // last existing item is enough MODULE* module = GetBoard()->m_Modules.GetLast(); BOARD_ITEM* drawing = GetBoard()->m_Drawings.GetLast(); int zonescount = GetBoard()->GetAreaCount(); // Keep also the count of copper layers, because we can happen boards // with different copper layers counts, // and the enabled layers int initialCopperLayerCount = GetBoard()->GetCopperLayerCount(); LSET initialEnabledLayers = GetBoard()->GetEnabledLayers(); try { PROPERTIES props; char xbuf[30]; char ybuf[30]; // EAGLE_PLUGIN can use this info to center the BOARD, but it does not yet. sprintf( xbuf, "%d", GetPageSizeIU().x ); sprintf( ybuf, "%d", GetPageSizeIU().y ); props["page_width"] = xbuf; props["page_height"] = ybuf; GetDesignSettings().m_NetClasses.Clear(); pi->Load( aFullFileName, GetBoard(), &props ); } catch( const IO_ERROR& ioe ) { for( TRACK* track = GetBoard()->m_Track; track; track = track->Next() ) track->ClearFlags( FLAG0 ); wxString msg = wxString::Format( _( "Error loading board./n%s" ), GetChars( ioe.errorText ) ); DisplayError( this, msg ); return false; } // Now prepare a block move command to place the new items, and // prepare the undo command. BLOCK_SELECTOR& blockmove = GetScreen()->m_BlockLocate; HandleBlockBegin( NULL, BLOCK_PRESELECT_MOVE, wxPoint( 0, 0) ); PICKED_ITEMS_LIST& blockitemsList = blockmove.GetItems(); PICKED_ITEMS_LIST undoListPicker; ITEM_PICKER picker( NULL, UR_NEW ); EDA_RECT bbox; // the new items bounding box, for block move bool bboxInit = true; // true until the bounding box is initialized for( TRACK* track = GetBoard()->m_Track; track; track = track->Next() ) { if( track->GetFlags() & FLAG0 ) { track->ClearFlags( FLAG0 ); continue; } track->SetFlags( IS_MOVED ); picker.SetItem( track ); undoListPicker.PushItem( picker ); blockitemsList.PushItem( picker ); if( bboxInit ) bbox = track->GetBoundingBox(); else bbox.Merge( track->GetBoundingBox() ); bboxInit = false; } if( module ) module = module->Next(); else module = GetBoard()->m_Modules; for( ; module; module = module->Next() ) { module->SetFlags( IS_MOVED ); picker.SetItem( module ); undoListPicker.PushItem( picker ); blockitemsList.PushItem( picker ); if( bboxInit )//.........这里部分代码省略.........
开发者ID:RyuKojiro,项目名称:kicad-source-mirror,代码行数:101,
示例8: Kiwaybool FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD( MODULE* aModule ){ MODULE* newModule; PCB_EDIT_FRAME* frame = (PCB_EDIT_FRAME*) Kiway().Player( FRAME_PCB, false ); if( frame == NULL ) // happens if no board editor opened return false; if( aModule == NULL ) { if( ! frame->GetBoard() || ! frame->GetBoard()->m_Modules ) return false; aModule = SelectFootprint( frame->GetBoard() ); } if( aModule == NULL ) return false; SetCurItem( NULL ); Clear_Pcb( false ); GetBoard()->m_Status_Pcb = 0; newModule = new MODULE( *aModule ); newModule->SetParent( GetBoard() ); newModule->SetLink( aModule->GetTimeStamp() ); aModule = newModule; GetBoard()->Add( newModule ); newModule->ClearFlags(); // Clear references to net info, because the footprint editor // does know any thing about nets handled by the current edited board. // Morever the main board can change or the net info relative to this main board // can change while editing this footprint in the footprint editor for( D_PAD* pad = newModule->Pads(); pad; pad = pad->Next() ) pad->SetNetCode( NETINFO_LIST::UNCONNECTED ); SetCrossHairPosition( wxPoint( 0, 0 ) ); PlaceModule( newModule, NULL ); newModule->SetPosition( wxPoint( 0, 0 ) ); // cursor in GAL may not be initialized at the moment // Put it on FRONT layer, // because this is the default in ModEdit, and in libs if( newModule->GetLayer() != F_Cu ) newModule->Flip( newModule->GetPosition() ); // Put it in orientation 0, // because this is the default orientation in ModEdit, and in libs Rotate_Module( NULL, newModule, 0, false ); GetScreen()->ClrModify(); Zoom_Automatique( false ); if( IsGalCanvasActive() ) updateView(); return true;}
开发者ID:antogg,项目名称:kicad-source-mirror,代码行数:61,
示例9: fichierint WinEDA_GerberFrame::Read_D_Code_File( const wxString & D_Code_FullFileName)/******************************************************************************//* Routine de Lecture d'un fichier de D Codes. Accepte format standard ou ALSPCB un ';' demarre un commentaire. Format Standard: tool, Horiz, Vert, drill, vitesse, acc. ,Type ; [DCODE (commentaire)]ex: 1, 12, 12, 0, 0, 0, 3 ; D10 Format: Ver , Hor , Type , Tool [,Drill]ex: 0.012, 0.012, L , D10 Classe les caract en buf_tmp sous forme de tableau de structures D_CODE. Retourne: < 0 si erreur: -1 = Fichier non trouve -2 = Erreur lecture fichier 0 si pas de nom de fichier (inits seules) 1 si OK*/{int current_Dcode, ii, dcode_scale;char* ptcar;int dimH, dimV, drill, type_outil, dummy;float fdimH, fdimV, fdrill;char c_type_outil[256];char Line[1024];wxString msg;D_CODE * pt_Dcode;FILE * dest;int layer = GetScreen()->m_Active_Layer;D_CODE ** ListeDCode; if ( g_GERBER_Descr_List[layer] == NULL ) { g_GERBER_Descr_List[layer] = new GERBER_Descr(layer); } /* Mise a jour de l'echelle gerber : */ dcode_scale = 10; /* ici unit dcode = mil, unit interne = 0.1 mil -> 1 unite dcode = 10 unit PCB */ current_Dcode = 0; if ( D_Code_FullFileName == "") return 0; dest = fopen(D_Code_FullFileName.GetData(),"rt"); if (dest == 0) { msg = _("File ") + D_Code_FullFileName + _(" not found"); DisplayError(this, msg, 10); return -1; } g_GERBER_Descr_List[layer]->InitToolTable(); ListeDCode = g_GERBER_Descr_List[layer]->m_Aperture_List; while( fgets(Line,255,dest) != NULL) { if (*Line == ';') continue; /* Commentaire */ if (strlen(Line) < 10 ) continue ; /* Probablemant ligne vide */ pt_Dcode = NULL; current_Dcode = 0; /* Determination du type de fichier D_Code */ ptcar = Line ; ii = 0 ; while( *ptcar ) if (*(ptcar++) == ',') ii++ ; if (ii >= 6 ) /* valeurs en mils */ { sscanf(Line,"%d,%d,%d,%d,%d,%d,%d",&ii, &dimH, &dimV, &drill, &dummy,&dummy, &type_outil); dimH = (int)( (dimH * dcode_scale) + 0.5) ; dimV = (int)( (dimV * dcode_scale) + 0.5) ; drill = (int)( (drill * dcode_scale) + 0.5); if ( ii > 99 ) ii = 99; if ( ii < 1 ) ii = 1; current_Dcode = D_CODE_Translate[ii-1]; } else /* valeurs en inches a convertir en mils */ { fdrill = 0 ; current_Dcode = 0 ; fdrill = 0 ; sscanf(Line,"%f,%f,%1s",&fdimV, &fdimH, c_type_outil); ptcar = Line ; while( *ptcar ) { if (*ptcar == 'D') { sscanf(ptcar+1,"%d,%f", ¤t_Dcode,&fdrill); break ; } else ptcar++ ; } dimH = (int)( (fdimH * dcode_scale * 1000) + 0.5); dimV = (int)( (fdimV * dcode_scale * 1000) + 0.5); drill = (int)( (fdrill * dcode_scale * 1000) + 0.5); type_outil = -1 ;//.........这里部分代码省略.........
开发者ID:BackupTheBerlios,项目名称:kicad-svn,代码行数:101,
示例10: pickervoid PCB_EDIT_FRAME::AutoPlaceModule( MODULE* Module, int place_mode, wxDC* DC ){ MODULE* currModule = NULL; wxPoint PosOK; wxPoint memopos; int error; LAYER_ID lay_tmp_TOP, lay_tmp_BOTTOM; // Undo: init list PICKED_ITEMS_LIST newList; newList.m_Status = UR_CHANGED; ITEM_PICKER picker( NULL, UR_CHANGED ); if( GetBoard()->m_Modules == NULL ) return; m_canvas->SetAbortRequest( false ); switch( place_mode ) { case PLACE_1_MODULE: currModule = Module; if( currModule == NULL ) return; currModule->SetIsPlaced( false ); currModule->SetNeedsPlaced( false ); break; case PLACE_OUT_OF_BOARD: break; case PLACE_ALL: if( !IsOK( this, _( "Footprints NOT LOCKED will be moved" ) ) ) return; break; case PLACE_INCREMENTAL: if( !IsOK( this, _( "Footprints NOT PLACED will be moved" ) ) ) return; break; } memopos = CurrPosition; lay_tmp_BOTTOM = g_Route_Layer_BOTTOM; lay_tmp_TOP = g_Route_Layer_TOP; RoutingMatrix.m_GridRouting = (int) GetScreen()->GetGridSize().x; // Ensure Board.m_GridRouting has a reasonable value: if( RoutingMatrix.m_GridRouting < Millimeter2iu( 0.25 ) ) RoutingMatrix.m_GridRouting = Millimeter2iu( 0.25 ); // Compute module parameters used in auto place if( genPlacementRoutingMatrix( GetBoard(), m_messagePanel ) == 0 ) return; int moduleCount = 0; Module = GetBoard()->m_Modules; for( ; Module != NULL; Module = Module->Next() ) { Module->SetNeedsPlaced( false ); switch( place_mode ) { case PLACE_1_MODULE: if( currModule == Module ) { // Module will be placed, add to undo. picker.SetItem( currModule ); newList.PushItem( picker ); Module->SetNeedsPlaced( true ); } break; case PLACE_OUT_OF_BOARD: Module->SetIsPlaced( false ); if( Module->IsLocked() ) break; if( !RoutingMatrix.m_BrdBox.Contains( Module->GetPosition() ) ) { // Module will be placed, add to undo. picker.SetItem( Module ); newList.PushItem( picker ); Module->SetNeedsPlaced( true ); } break;//.........这里部分代码省略.........
开发者ID:PatMart,项目名称:kicad-source-mirror,代码行数:101,
示例11: dcvoid WinEDA_GerberFrame::OnSelectOptionToolbar(wxCommandEvent& event)/*****************************************************************/{int id = event.GetId();wxClientDC dc(DrawPanel); DrawPanel->PrepareGraphicContext(&dc); switch ( id ) { case ID_TB_OPTIONS_SHOW_GRID: m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SELECT_UNIT_MM: UnitMetric = MILLIMETRE; Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_UNIT_INCH: UnitMetric = INCHES; Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SHOW_POLAR_COORD: Affiche_Message(wxEmptyString); DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState(id); Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_CURSOR: GetScreen()->Trace_Curseur(DrawPanel, &dc); g_CursorShape = m_OptionsToolBar->GetToolState(id); GetScreen()->Trace_Curseur(DrawPanel, &dc); break; case ID_TB_OPTIONS_SHOW_PADS_SKETCH: if ( m_OptionsToolBar->GetToolState(id) ) { m_DisplayPadFill = FALSE; DisplayOpt.DisplayPadFill = FALSE; } else { m_DisplayPadFill = TRUE; DisplayOpt.DisplayPadFill = TRUE; } DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH: if( m_OptionsToolBar->GetToolState(id) ) { m_DisplayPcbTrackFill = FALSE; DisplayOpt.DisplayPcbTrackFill = FALSE; } else { m_DisplayPcbTrackFill = TRUE; DisplayOpt.DisplayPcbTrackFill = TRUE; } DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SHOW_DCODES: DisplayOpt.DisplayPadNum = m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; default: DisplayError(this, wxT("WinEDA_PcbFrame::OnSelectOptionToolbar error")); break; } SetToolbars();}
开发者ID:BackupTheBerlios,项目名称:kicad-svn,代码行数:77,
示例12: SCH_BASE_FRAMELIB_EDIT_FRAME::LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : SCH_BASE_FRAME( aKiway, aParent, FRAME_SCH_LIB_EDITOR, _( "Library Editor" ), wxDefaultPosition, wxDefaultSize, KICAD_DEFAULT_DRAWFRAME_STYLE, LIB_EDIT_FRAME_NAME ){ m_showAxis = true; // true to draw axis SetShowDeMorgan( false ); m_drawSpecificConvert = true; m_drawSpecificUnit = false; m_hotkeysDescrList = g_Libedit_Hokeys_Descr; m_editPinsPerPartOrConvert = false; m_repeatPinStep = DEFAULT_REPEAT_OFFSET_PIN; m_my_part = NULL; m_tempCopyComponent = NULL; // Delayed initialization if( m_textSize == -1 ) m_textSize = GetDefaultTextSize(); // Initialize grid id to the default value 50 mils: m_LastGridSizeId = ID_POPUP_GRID_LEVEL_50 - ID_POPUP_GRID_LEVEL_1000; wxIcon icon; icon.CopyFromBitmap( KiBitmap( libedit_icon_xpm ) ); SetIcon( icon ); LoadSettings( config() ); SetScreen( new SCH_SCREEN( aKiway ) ); GetScreen()->m_Center = true; GetScreen()->SetMaxUndoItems( m_UndoRedoCountMax ); SetCrossHairPosition( wxPoint( 0, 0 ) ); // Ensure m_LastGridSizeId is an offset inside the allowed schematic range if( m_LastGridSizeId < ID_POPUP_GRID_LEVEL_50 - ID_POPUP_GRID_LEVEL_1000 ) m_LastGridSizeId = ID_POPUP_GRID_LEVEL_50 - ID_POPUP_GRID_LEVEL_1000; if( m_LastGridSizeId > ID_POPUP_GRID_LEVEL_1 - ID_POPUP_GRID_LEVEL_1000 ) m_LastGridSizeId = ID_POPUP_GRID_LEVEL_1 - ID_POPUP_GRID_LEVEL_1000; SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId ); if( m_canvas ) m_canvas->SetEnableBlockCommands( true ); ReCreateMenuBar(); ReCreateHToolbar(); ReCreateVToolbar(); // Ensure the current alias name is valid if a part is loaded // Sometimes it is not valid. This is the case // when a part value (the part lib name), or the alias list was modified // during a previous session and the modifications not saved in lib. // Reopen libedit in a new session gives a non valid m_aliasName // because the curr part is reloaded from the library (and this is the unmodified part) // and the old alias name (from the previous edition) can be invalid LIB_PART* part = GetCurPart(); if( part == NULL ) m_aliasName.Empty(); else if( m_aliasName != part->GetName() ) { LIB_ALIAS* alias = part->GetAlias( m_aliasName ); if( !alias ) m_aliasName = part->GetName(); } CreateOptionToolbar(); DisplayLibInfos(); DisplayCmpDoc(); UpdateAliasSelectList(); UpdatePartSelectList(); m_auimgr.SetManagedWindow( this ); EDA_PANEINFO horiz; horiz.HorizontalToolbarPane(); EDA_PANEINFO vert; vert.VerticalToolbarPane(); EDA_PANEINFO mesg; mesg.MessageToolbarPane(); m_auimgr.AddPane( m_mainToolBar, wxAuiPaneInfo( horiz ).Name( wxT( "m_mainToolBar" ) ).Top().Row( 0 ) ); m_auimgr.AddPane( m_drawToolBar, wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right() ); m_auimgr.AddPane( m_optionsToolBar, wxAuiPaneInfo( vert ).Name( wxT( "m_optionsToolBar" ) ).Left() ); m_auimgr.AddPane( m_canvas, wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() );//.........这里部分代码省略.........
开发者ID:blairbonnett-mirrors,项目名称:kicad,代码行数:101,
示例13: BlockCommandbool EDA_DRAW_FRAME::HandleBlockBegin( wxDC* aDC, EDA_KEY aKey, const wxPoint& aPosition, int aExplicitCommand ){ BLOCK_SELECTOR* block = &GetScreen()->m_BlockLocate; if( ( block->GetCommand() != BLOCK_IDLE ) || ( block->GetState() != STATE_NO_BLOCK ) ) return false; if( aExplicitCommand == 0 ) block->SetCommand( (BLOCK_COMMAND_T) BlockCommand( aKey ) ); else block->SetCommand( (BLOCK_COMMAND_T) aExplicitCommand ); if( block->GetCommand() == 0 ) return false; switch( block->GetCommand() ) { case BLOCK_IDLE: break; case BLOCK_MOVE: // Move case BLOCK_DRAG: // Drag (block defined) case BLOCK_DRAG_ITEM: // Drag from a drag item command case BLOCK_DUPLICATE: // Duplicate case BLOCK_DUPLICATE_AND_INCREMENT: // Duplicate and increment relevant references case BLOCK_DELETE: // Delete case BLOCK_COPY: // Copy case BLOCK_ROTATE: // Rotate 90 deg case BLOCK_FLIP: // Flip case BLOCK_ZOOM: // Window Zoom case BLOCK_MIRROR_X: case BLOCK_MIRROR_Y: // mirror case BLOCK_PRESELECT_MOVE: // Move with preselection list block->InitData( m_canvas, aPosition ); break; case BLOCK_PASTE: block->InitData( m_canvas, aPosition ); block->SetLastCursorPosition( wxPoint( 0, 0 ) ); InitBlockPasteInfos(); if( block->GetCount() == 0 ) // No data to paste { DisplayError( this, wxT( "No block to paste" ), 20 ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_IDLE ); m_canvas->SetMouseCaptureCallback( NULL ); block->SetState( STATE_NO_BLOCK ); block->SetMessageBlock( this ); return true; } if( !m_canvas->IsMouseCaptured() ) { block->ClearItemsList(); DisplayError( this, wxT( "EDA_DRAW_FRAME::HandleBlockBegin() Err: m_mouseCaptureCallback NULL" ) ); block->SetState( STATE_NO_BLOCK ); block->SetMessageBlock( this ); return true; } block->SetState( STATE_BLOCK_MOVE ); m_canvas->CallMouseCapture( aDC, aPosition, false ); break; default: { wxString msg; msg << wxT( "EDA_DRAW_FRAME::HandleBlockBegin() error: Unknown command " ) << block->GetCommand(); DisplayError( this, msg ); } break; } block->SetMessageBlock( this ); return true;}
开发者ID:cpavlina,项目名称:kicad,代码行数:79,
示例14: GetCurPartvoid LIB_EDIT_FRAME::OnUpdateRedo( wxUpdateUIEvent& event ){ event.Enable( GetCurPart() && GetScreen() && GetScreen()->GetRedoCommandCount() != 0 && !IsEditingDrawItem() );}
开发者ID:blairbonnett-mirrors,项目名称:kicad,代码行数:5,
示例15: wxGetMousePosition//.........这里部分代码省略......... } break; case ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM: if( m_drawItem == NULL ) break; m_canvas->CrossHairOff( &dc ); if( m_drawItem->Type() == LIB_FIELD_T ) { EditField( (LIB_FIELD*) m_drawItem ); } m_canvas->MoveCursorToCrossHair(); m_canvas->CrossHairOn( &dc ); break; case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINSIZE_ITEM: case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNAMESIZE_ITEM: case ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNUMSIZE_ITEM: { if( !m_drawItem || m_drawItem->Type() != LIB_PIN_T ) break; LIB_PART* part = GetCurPart(); SaveCopyInUndoList( part ); GlobalSetPins( (LIB_PIN*) m_drawItem, id ); m_canvas->MoveCursorToCrossHair(); m_canvas->Refresh(); } break; case ID_POPUP_ZOOM_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_ZOOM ); HandleBlockEnd( &dc ); break; case ID_POPUP_DELETE_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_DELETE ); m_canvas->MoveCursorToCrossHair(); HandleBlockEnd( &dc ); break; case ID_POPUP_COPY_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_COPY ); m_canvas->MoveCursorToCrossHair(); HandleBlockEnd( &dc ); break; case ID_POPUP_SELECT_ITEMS_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_SELECT_ITEMS_ONLY ); m_canvas->MoveCursorToCrossHair(); HandleBlockEnd( &dc ); break; case ID_POPUP_MIRROR_Y_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_MIRROR_Y ); m_canvas->MoveCursorToCrossHair(); HandleBlockPlace( &dc ); break; case ID_POPUP_MIRROR_X_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_MIRROR_X ); m_canvas->MoveCursorToCrossHair(); HandleBlockPlace( &dc ); break; case ID_POPUP_ROTATE_BLOCK: m_canvas->SetAutoPanRequest( false ); GetScreen()->m_BlockLocate.SetCommand( BLOCK_ROTATE ); m_canvas->MoveCursorToCrossHair(); HandleBlockPlace( &dc ); break; case ID_POPUP_PLACE_BLOCK: m_canvas->SetAutoPanRequest( false ); m_canvas->MoveCursorToCrossHair(); HandleBlockPlace( &dc ); break; default: DisplayError( this, wxT( "LIB_EDIT_FRAME::Process_Special_Functions error" ) ); break; } m_canvas->SetIgnoreMouseEvents( false ); if( GetToolId() == ID_NO_TOOL_SELECTED ) m_lastDrawItem = NULL;}
开发者ID:blairbonnett-mirrors,项目名称:kicad,代码行数:101,
示例16: switchbool EDA_DRAW_FRAME::GeneralControlKeyMovement( int aHotKey, wxPoint *aPos, bool aSnapToGrid ){ bool key_handled = false; // If requested snap the current position to the grid if( aSnapToGrid ) *aPos = GetNearestGridPosition( *aPos ); switch( aHotKey ) { // All these keys have almost the same treatment case GR_KB_CTRL | WXK_NUMPAD8: case GR_KB_CTRL | WXK_UP: case GR_KB_CTRL | WXK_NUMPAD2: case GR_KB_CTRL | WXK_DOWN: case GR_KB_CTRL | WXK_NUMPAD4: case GR_KB_CTRL | WXK_LEFT: case GR_KB_CTRL | WXK_NUMPAD6: case GR_KB_CTRL | WXK_RIGHT: case WXK_NUMPAD8: case WXK_UP: case WXK_NUMPAD2: case WXK_DOWN: case WXK_NUMPAD4: case WXK_LEFT: case WXK_NUMPAD6: case WXK_RIGHT: key_handled = true; { /* Here's a tricky part: when doing cursor key movement, the * 'previous' point should be taken from memory, *not* from the * freshly computed position in the event. Otherwise you can't do * sub-pixel movement. The m_movingCursorWithKeyboard oneshot 'eats' * the automatic motion event generated by cursor warping */ wxRealPoint gridSize = GetScreen()->GetGridSize(); *aPos = GetCrossHairPosition(); // Bonus: ^key moves faster (x10) switch( aHotKey ) { case GR_KB_CTRL|WXK_NUMPAD8: case GR_KB_CTRL|WXK_UP: aPos->y -= KiROUND( 10 * gridSize.y ); break; case GR_KB_CTRL|WXK_NUMPAD2: case GR_KB_CTRL|WXK_DOWN: aPos->y += KiROUND( 10 * gridSize.y ); break; case GR_KB_CTRL|WXK_NUMPAD4: case GR_KB_CTRL|WXK_LEFT: aPos->x -= KiROUND( 10 * gridSize.x ); break; case GR_KB_CTRL|WXK_NUMPAD6: case GR_KB_CTRL|WXK_RIGHT: aPos->x += KiROUND( 10 * gridSize.x ); break; case WXK_NUMPAD8: case WXK_UP: aPos->y -= KiROUND( gridSize.y ); break; case WXK_NUMPAD2: case WXK_DOWN: aPos->y += KiROUND( gridSize.y ); break; case WXK_NUMPAD4: case WXK_LEFT: aPos->x -= KiROUND( gridSize.x ); break; case WXK_NUMPAD6: case WXK_RIGHT: aPos->x += KiROUND( gridSize.x ); break; default: /* Can't happen since we entered the statement */ break; } m_canvas->MoveCursor( *aPos ); m_movingCursorWithKeyboard = true; } break; default: break; } return key_handled;}
开发者ID:cpavlina,项目名称:kicad,代码行数:96,
示例17: GetCurItemBOARD_ITEM* FOOTPRINT_EDIT_FRAME::ModeditLocateAndDisplay( int aHotKeyCode ){ BOARD_ITEM* item = GetCurItem(); if( GetBoard()->m_Modules == NULL ) return NULL; GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide(); // Assign to scanList the proper item types desired based on tool type // or hotkey that is in play. const KICAD_T* scanList = NULL; if( aHotKeyCode ) { // @todo: add switch here and add calls to PcbGeneralLocateAndDisplay( // int aHotKeyCode ) when searching is needed from a hotkey handler } else { scanList = GENERAL_COLLECTOR::ModulesAndTheirItems; } m_Collector->Collect( GetBoard(), scanList, GetScreen()->RefPos( true ), guide ); /* Remove redundancies: when an item is found, we can remove the module from list */ if( m_Collector->GetCount() > 1 ) { for( int ii = 0; ii < m_Collector->GetCount(); ii++ ) { item = (*m_Collector)[ii]; if( item->Type() != PCB_MODULE_T ) continue; m_Collector->Remove( ii ); ii--; } } if( m_Collector->GetCount() <= 1 ) { item = (*m_Collector)[0]; SetCurItem( item ); } else // we can't figure out which item user wants, do popup menu so user can choose { wxMenu itemMenu; /* Give a title to the selection menu. This is also a cancel menu item **/ wxMenuItem* item_title = new wxMenuItem( &itemMenu, -1, _( "Selection Clarification" ) );#ifdef __WINDOWS__ wxFont bold_font( *wxNORMAL_FONT ); bold_font.SetWeight( wxFONTWEIGHT_BOLD ); bold_font.SetStyle( wxFONTSTYLE_ITALIC ); item_title->SetFont( bold_font );#endif itemMenu.Append( item_title ); itemMenu.AppendSeparator(); int limit = std::min( MAX_ITEMS_IN_PICKER, m_Collector->GetCount() ); for( int ii = 0; ii<limit; ++ii ) { item = (*m_Collector)[ii]; wxString text = item->GetSelectMenuText(); BITMAP_DEF xpm = item->GetMenuImage(); AddMenuItem( &itemMenu, ID_POPUP_PCB_ITEM_SELECTION_START + ii, text, KiBitmap( xpm ) ); } // this menu's handler is void // PCB_BASE_FRAME::ProcessItemSelection() // and it calls SetCurItem() which in turn calls DisplayInfo() on the // item. m_canvas->SetAbortRequest( true ); // changed in false if an item PopupMenu( &itemMenu ); // m_AbortRequest = false if an item is selected m_canvas->MoveCursorToCrossHair(); m_canvas->SetIgnoreMouseEvents( false ); // The function ProcessItemSelection() has set the current item, return it. item = GetCurItem(); } if( item ) { SetMsgPanel( item ); } return item;}
开发者ID:james-sakalaukus,项目名称:kicad,代码行数:99,
注:本文中的GetScreen函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetScreenHeight函数代码示例 C++ GetScene函数代码示例 |