@Miki, почему я не могу использовать свои кнопки попеременно? Как это исправить? Я имею в виду, что я хочу использовать их одновременно.
РЕДАКТИРОВАТЬ: я сам это исправил. Нет необходимости в помощи. :)
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
Mat3b canvas;
string buttonText("Nacisnij guzik!");
string buttonText2("Nacisnij guzik NR2!");
string winName = "PokerGui";
int a = 0;//mozna pozniej usunac, potrzebne tylko czy button reaguje jak nalezy
Rect button, button2;
void callBackFunc(int event, int x, int y, int flags, void* userdata)
{
if (event == EVENT_LBUTTONDOWN)
{
if (button.contains(Point(x, y)))//ponizej to co ma sie wykonac po nacisnieciu klawisza
{
a = a + 7;
cout << "Nacisnales guzik!\n" << endl;
printf("liczba = %i\n", a);
rectangle(canvas(button), button, Scalar(0, 0, 255), 2);
}
else if (button2.contains(Point(x, y)))//ponizej to co ma sie wykonac po nacisnieciu klawisza
{
//a = a + 7;
cout << "Nacisnales guzik NR2!\n" << endl;
//printf("liczba = %i\n", a);
rectangle(canvas(button2), button, Scalar(0, 0, 255), 2);
}
}
//if (event == EVENT_LBUTTONUP)
//{
//rectangle(canvas, button, Scalar(200, 200, 200), 2);
//}
imshow(winName, canvas);
waitKey(1);
}
void callBackFunc2(int event, int x, int y, int flags, void* userdata)
{
if (event == EVENT_LBUTTONDOWN)
{
if (button2.contains(Point(x, y)))//ponizej to co ma sie wykonac po nacisnieciu klawisza
{
//a = a + 7;
cout << "Nacisnales guzik NR2!\n" << endl;
//printf("liczba = %i\n", a);
rectangle(canvas(button2), button, Scalar(0, 0, 255), 2);
}
}
//if (event == EVENT_LBUTTONUP)
//{
//rectangle(canvas, button, Scalar(200, 200, 200), 2);
//}
imshow(winName, canvas);
waitKey(1);
}
int main()
{
// An image
Mat3b img(300, 300, Vec3b(0, 255, 0));
// Your button
button = Rect(0, 0, img.cols, 50);
button2 = Rect(0, 60, img.cols, 50);
// The canvas
canvas = Mat3b(img.rows + button.height, img.cols, Vec3b(0, 0, 0));
// Draw the button
canvas(button) = Vec3b(200, 200, 200);
canvas(button2) = Vec3b(200, 200, 200);
putText(canvas(button), buttonText, Point(button.width*0.35, button.height*0.7), FONT_HERSHEY_PLAIN, 1, Scalar(0, 0, 0));
putText(canvas(button2), buttonText2, Point(button.width*0.25, button.height*0.7), FONT_HERSHEY_PLAIN, 1, Scalar(0, 0, 0));
// Draw the image
//img.copyTo(canvas(Rect(0, button.height, img.cols, img.rows)));
// Setup callback function
namedWindow(winName);
setMouseCallback(winName, callBackFunc);
//setMouseCallback(winName, callBackFunc2);
imshow(winName, canvas);
waitKey();
return 0;
}
Обычно я помещал документацию для интерфейса (параметры, возвращаемое значение, , что функция делает) в интерфейсном файле (.h) и документации для реализации (, как , функция делает) в файле реализации (.c, .cpp.m).
я пишу обзор класса незадолго до его объявления, таким образом, у читателя есть непосредственная основная информация.
инструментом, который я использую, является Doxygen.
у меня определенно была бы некоторая документация в самих заголовочных файлах. Это значительно улучшает отладку, чтобы иметь информацию рядом с кодом, а не в отдельных документах. Как показывает опыт, я зарегистрировал бы API (возвращаемые значения, аргумент, изменения состояния, и т.д.) рядом с кодом и высокоуровневыми обзорами архитектуры в отдельных документах (для высказывания более широкого мнения того, как все соединено; трудно поместить это вместе с кодом, так как это обычно ссылки несколько классов сразу).
Doxygen прекрасен на основе моего опыта.
Я полагаю, что Doxygen является наиболее распространенной платформой для генерации документации, и насколько я знаю, он более или менее может покрыть JavaDoc-нотацию (не ограниченный, конечно). Я использовал doxygen для C с результатами OK, я действительно думаю, что это более подходит для C++ все же. Вы могли бы хотеть изучить robodoc также, хотя я думаю, что Бритва Оккама скажет Вам скорее идти для Doxygen.
Относительно то, сколько документации, я никогда не был вентилятором документации сам, но нравится ли мне это или нет, имея больше документации всегда, бьет наличие никакой документации. Я поместил документацию API в заголовочный файл, и документация реализации в реализации (выдерживает рассуждать, не так ли?).:) Тем путем IDE имеют шанс взять его и показать его во время автозавершения (Eclipse делает это для JavaDocs, например, возможно, также для doxygen?), который не должен быть недооценен. JavaDoc имеет эту дополнительную причуду, что он использует первое предложение (т.е. до первой точки) как краткое описание, не знайте, делает ли Doxygen это, хотя, но если так, он должен быть учтен при записи документации.
Наличие большого количества документации рискует устареть, однако, сохранение документации близко к коду даст людям шанс усовершенствовать его, таким образом, необходимо будет определенно сохранить его в источнике/заголовочных файлах. О чем нельзя забыть, хотя производство документации. Да, некоторые люди будут использовать документацию непосредственно (через IDE или просто чтение заголовочного файла), но некоторые люди предпочитают другие пути, таким образом, необходимо, вероятно, считать помещение Вашего (регулярно обновляемым) документацией API онлайн, все хороший и доступный для просмотра, а также возможно создание файлов человека, если Вы нацелены *, отклоняют - базирующиеся разработчики.
Это составляет мои два цента.
Поместите достаточно в код, что он может одинокий. Почти каждый проект, которым я был в том, где документация была отдельной, это стало устаревшим или не было сделано, частично что, если это - отдельный документ, это становится отдельной задачей, частично поскольку управление не допускало его как задачу в составлении бюджета. При документировании встроенный, поскольку часть потока работает намного лучше, по моему опыту.
Запись документация в форме, которую распознает большинство редакторов, является блоком; для C++ это, кажется,/*, а не//. Тем путем можно свернуть его и просто видеть объявления.
Возможно, Вы интересовались бы gtk-документ . Это может быть "немного неудобно установить и использовать", но можно получить хорошую документацию API от исходного кода, будучи похож на это: