void mouseFunc(int event, int x, int y, int, void *data) { TrainDataGUI *gui = (TrainDataGUI* ) data; if(event == cv::EVENT_LBUTTONDOWN && ! gui->drag){ gui->lastPoint = cv::Point(x,y); gui->drag = true; gui->render(); }else if(event == cv::EVENT_LBUTTONUP){ if(gui->drag){ cv::Rect curRect(gui->lastPoint * gui->downsample, cv::Point(x,y) * gui->downsample); if(gui->sample_pos) { gui->posSample.push_back(curRect); } else { gui->negSample.push_back(curRect); } gui->drag = false; } gui->render(); }else if(event == cv::EVENT_MOUSEMOVE){ if(gui->drag) { gui->paintRect = cv::Rect(gui->lastPoint, cv::Point(x, y)); gui->render(); } } }
void iwDiplomacy::Msg_PaintBefore() { // Farben, die zu den 3 Bündnisstates gesetzt werden (0-kein Bündnis, 1-in Arbeit, 2-Bündnis abgeschlossen) const std::array<unsigned, 3> PACT_COLORS = {COLOR_RED, COLOR_YELLOW, COLOR_GREEN}; IngameWindow::Msg_PaintBefore(); // Die farbigen Zeilen malen DrawPoint curPos = GetDrawPos() + DrawPoint(LINE_DISTANCE_TO_MARGINS, FIRST_LINE_Y); Rect curRect(curPos, Extent(GetSize().x - 2 * LINE_DISTANCE_TO_MARGINS, CELL_HEIGHT)); for(unsigned i = 0; i < gwv.GetWorld().GetNumPlayers(); ++i) { // Rechtecke in Spielerfarbe malen mit entsprechender Transparenz DrawRectangle(curRect, SetAlpha(gwv.GetWorld().GetPlayer(i).color, 0x40)); curRect.move(DrawPoint(0, CELL_HEIGHT + SPACE_HEIGHT)); // Farben der Bündnis-Buttons setzen, je nachdem wie der Status ist // Existiert der Button auch? auto* button = GetCtrl<ctrlImageButton>(300 + i); // Bündnisvertrag if(button) // Farbe je nach Bündnisstatus setzen button->SetModulationColor(PACT_COLORS[gwv.GetPlayer().GetPactState(TREATY_OF_ALLIANCE, i)]); // Nicht-Angriffspakt button = GetCtrl<ctrlImageButton>(400 + i); if(button) // Farbe je nach Bündnisstatus setzen button->SetModulationColor(PACT_COLORS[gwv.GetPlayer().GetPactState(NON_AGGRESSION_PACT, i)]); // Ggf. Ping aktualisieren if(auto* pingfield = GetCtrl<ctrlTextDeepening>(200 + i)) pingfield->SetText(helpers::toString(gwv.GetWorld().GetPlayer(i).ping)); // Verbleibende Zeit der Bündnisse in den Text-Ctrls anzeigen if(GetCtrl<ctrlText>(500 + i)) { for(unsigned z = 0; z < 2; ++z) { unsigned duration = gwv.GetPlayer().GetRemainingPactTime(PactType(z), i); // Überhaupt ein Bündnis abgeschlossen und Bündnis nicht für die Ewigkeit? if(duration > 0 && duration != 0xFFFFFFFF) // Dann entsprechende Zeit setzen GetCtrl<ctrlText>(500 + z * 100 + i)->SetText(GAMECLIENT.FormatGFTime(duration)); else // Ansonsten leer GetCtrl<ctrlText>(500 + z * 100 + i)->SetText(""); } } } }