Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include "Sample.h"
- #include <stdio.h>
- #include <math.h>
- #include <Windows.h>
- #include <string>
- using namespace std;
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- Sample *latitude, *longitude, *altitude;
- int main()
- {
- FILE *fp;
- const int size = 1000;
- const int hist_columns = 250;
- double utc_time[size], latitude_l[size], longitude_l[size], hor_dilution[size], altitude_l[size], geoidal_separation[size];
- char latitude_hemisphere[size], longitude_hemisphere[size];
- int quality_indicator[size], num_of_satellites[size];
- char buff[100];
- fp = fopen("C:\\Users\\Administrator\\source\\repos\\NMEATesting\\Debug\\log.tps", "r");
- for (int i = 0; i < size; i++) {
- fscanf(fp, "$GPGGA,%lf,%lf,%c,%lf,%c,%d,%d,%lf,%lf,M,%lf,M,%s\n",
- utc_time + i, latitude_l + i, latitude_hemisphere + i,
- longitude_l + i, longitude_hemisphere + i, quality_indicator + i,
- num_of_satellites + i, hor_dilution + i, altitude_l + i,
- geoidal_separation + i, buff);
- }
- fclose(fp);
- latitude = new Sample(latitude_l, size);
- longitude = new Sample(longitude_l, size);
- altitude = new Sample(altitude_l, size);
- printf("Parameter\tMean\t\tMin\t\tMax\t\tDeviation\n");
- printf("Latitude\t%f\t%f\t%f\t%f\n",
- latitude->get_mean(), latitude->get_minimum(), latitude->get_maximum(), latitude->get_deviation());
- printf("Longitude\t%f\t%f\t%f\t%f\n",
- longitude->get_mean(), longitude->get_minimum(), longitude->get_maximum(), longitude->get_deviation());
- printf("Altitude\t%f\t%f\t%f\t%f\n",
- altitude->get_mean(), altitude->get_minimum(), altitude->get_maximum(), altitude->get_deviation());
- printf("\nParameter\tQ-0.9\t\tQ-0.95\t\tQ-0.99\t\tQ-0.999\n");
- printf("Latitude\t%f\t%f\t%f\t%f\n",
- latitude->get_quantile(0.9, hist_columns), latitude->get_quantile(0.95, hist_columns), latitude->get_quantile(0.99, hist_columns), latitude->get_quantile(0.999, hist_columns));
- printf("Longitude\t%f\t%f\t%f\t%f\n",
- longitude->get_quantile(0.9, hist_columns), longitude->get_quantile(0.95, hist_columns), longitude->get_quantile(0.99, hist_columns), longitude->get_quantile(0.999, hist_columns));
- printf("Altitude\t%f\t%f\t%f\t%f\n",
- altitude->get_quantile(0.9, hist_columns), altitude->get_quantile(0.95, hist_columns), altitude->get_quantile(0.99, hist_columns), altitude->get_quantile(0.999, hist_columns));
- MSG msg;
- int use = CW_USEDEFAULT;
- HWND wnd = CreateWindowA("BUTTON", "Graphic", WS_OVERLAPPEDWINDOW, use, use, use, use, GetDesktopWindow(), NULL, (HINSTANCE)GetModuleHandle(NULL), NULL);
- if (!wnd)
- ExitProcess(1u);
- SetClassLong(wnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_ARROW));
- SetClassLong(wnd, GCL_HBRBACKGROUND, (LONG)GetStockObject(BLACK_BRUSH));
- SetWindowLong(wnd, GWL_WNDPROC, (LONG)WndProc);
- ShowWindow(wnd, SW_SHOWDEFAULT);
- UpdateWindow(wnd);
- InvalidateRect(wnd, NULL, TRUE);
- ZeroMemory(&msg, sizeof(MSG));
- while (GetMessageA(&msg, NULL, 0U, 0U)) {
- DispatchMessageA(&msg);
- TranslateMessage(&msg);
- }
- DestroyWindow(wnd);
- return 0;
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
- PAINTSTRUCT ps;
- const wchar_t* font_name = L"Consolas";
- const wchar_t* str = L"Wew";
- wstring label;
- static HPEN border_pen = CreatePen(PS_SOLID, 1, RGB(100, 100, 255));
- static HPEN fore_pen = CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
- static HPEN sec_pen = CreatePen(PS_SOLID, 1, RGB(255, 100, 255));
- static HFONT regular_font = CreateFont(18, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, font_name);
- static HFONT h_font = CreateFont(64, 0, 0, 0, FW_NORMAL, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, font_name);
- double per_v_pix = 0, per_h_pix = 0, field_v_size = 0, field_h_size = 0, field_h_margin = 150, field_v_margin = 50, cutter = 10;
- switch (msg) {
- case WM_PAINT:
- BeginPaint(hwnd, &ps);
- SelectObject(ps.hdc, regular_font);
- SetTextColor(ps.hdc, RGB(255, 255, 255));
- SetBkColor(ps.hdc, RGB(0, 0, 0));
- SelectObject(ps.hdc, fore_pen);
- field_v_size = ps.rcPaint.bottom - 2 * field_v_margin;
- field_h_size = ps.rcPaint.right - 2 * field_h_margin;
- per_v_pix = (altitude->get_maximum() - altitude->get_minimum()) / field_v_size;
- per_h_pix = (double)altitude->get_size() / field_h_size;
- //Graphic
- SelectObject(ps.hdc, fore_pen);
- MoveToEx(ps.hdc, field_h_margin, field_v_margin + (int)((altitude->get_maximum() - altitude->get_list()[0]) / per_v_pix), NULL);
- for (int i = 0; i < latitude->get_size(); i++) {
- LineTo(ps.hdc, field_h_margin + (int)(i / per_h_pix), field_v_margin + (int)((altitude->get_maximum() - altitude->get_list()[i]) / per_v_pix));
- }
- //Mean
- SelectObject(ps.hdc, sec_pen);
- MoveToEx(ps.hdc, field_h_margin - cutter, field_v_margin + (int)((altitude->get_maximum() - altitude->get_mean()) / per_v_pix), NULL);
- LineTo(ps.hdc, field_h_margin + cutter + field_h_size, field_v_margin + (int)((altitude->get_maximum() - altitude->get_mean()) / per_v_pix));
- SetTextAlign(ps.hdc, TA_RIGHT);
- label = L"Mean = " + to_wstring(altitude->get_mean()) + L" M";
- TextOut(ps.hdc, field_h_margin + cutter + field_h_size, field_v_margin + (int)((altitude->get_maximum() - altitude->get_mean()) / per_v_pix) - 20, label.c_str(), label.size());
- SelectObject(ps.hdc, border_pen);
- //Maximum label
- MoveToEx(ps.hdc, field_h_margin - cutter, field_v_margin + (int)((altitude->get_maximum() - altitude->get_maximum()) / per_v_pix), NULL);
- LineTo(ps.hdc, field_h_margin + cutter, field_v_margin + (int)((altitude->get_maximum() - altitude->get_maximum()) / per_v_pix));
- label = to_wstring(altitude->get_maximum()) + L" M";
- TextOut(ps.hdc, field_h_margin - cutter - 5, field_v_margin + (int)((altitude->get_maximum() - altitude->get_maximum()) / per_v_pix) - 18 / 2, label.c_str(), label.size());
- //Minimum label
- label = to_wstring(altitude->get_minimum()) + L" M";
- TextOut(ps.hdc, field_h_margin - cutter - 5, field_v_margin + (int)((altitude->get_maximum() - altitude->get_minimum()) / per_v_pix) - 18 / 2, label.c_str(), label.size());
- //Axes
- MoveToEx(ps.hdc, field_h_margin, field_v_margin - cutter, NULL);
- LineTo(ps.hdc, field_h_margin, field_v_margin + cutter + field_v_size);
- MoveToEx(ps.hdc, field_h_margin - cutter, field_v_margin + field_v_size, NULL);
- LineTo(ps.hdc, field_h_margin + cutter + field_h_size, field_v_margin + field_v_size);
- EndPaint(hwnd, &ps);
- break;
- case WM_DESTROY:
- DeleteObject(fore_pen);
- PostQuitMessage(0);
- break;
- default: return DefWindowProcA(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement