2017-01-02 21:07:43 -05:00
|
|
|
// Copyright (c) Charles J. Cliffe
|
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
|
2015-01-02 21:32:24 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "wx/glcanvas.h"
|
|
|
|
#include "wx/timer.h"
|
|
|
|
|
|
|
|
#include "MouseTracker.h"
|
2015-01-02 22:44:09 -05:00
|
|
|
#include <string>
|
2017-01-28 08:57:27 -05:00
|
|
|
#include <vector>
|
2015-01-02 21:32:24 -05:00
|
|
|
|
|
|
|
class InteractiveCanvas: public wxGLCanvas {
|
|
|
|
public:
|
2018-03-10 02:34:39 -05:00
|
|
|
InteractiveCanvas(wxWindow *parent, const wxGLAttributes& dispAttrs);
|
2021-04-04 22:20:33 -04:00
|
|
|
~InteractiveCanvas() override;
|
2015-01-02 21:32:24 -05:00
|
|
|
|
2015-01-04 17:11:20 -05:00
|
|
|
long long getFrequencyAt(float x);
|
2015-12-11 19:57:40 -05:00
|
|
|
long long getFrequencyAt(float x, long long iqCenterFreq, long long iqBandwidth);
|
|
|
|
|
2017-01-21 05:26:51 -05:00
|
|
|
virtual void setView(long long center_freq_in, long long bandwidth_in);
|
2015-10-25 00:07:01 -04:00
|
|
|
virtual void disableView();
|
2021-04-04 22:20:33 -04:00
|
|
|
bool getViewState() const;
|
2015-01-02 21:32:24 -05:00
|
|
|
|
2015-01-04 17:11:20 -05:00
|
|
|
void setCenterFrequency(long long center_freq_in);
|
2021-04-04 22:20:33 -04:00
|
|
|
long long getCenterFrequency() const;
|
2015-01-02 21:32:24 -05:00
|
|
|
|
2017-01-21 05:26:51 -05:00
|
|
|
void setBandwidth(long long bandwidth_in);
|
2021-04-04 22:20:33 -04:00
|
|
|
long long getBandwidth() const;
|
2015-01-02 21:32:24 -05:00
|
|
|
|
2015-03-28 03:51:22 -04:00
|
|
|
MouseTracker *getMouseTracker();
|
2016-08-16 17:55:40 -04:00
|
|
|
bool isMouseInView();
|
|
|
|
bool isMouseDown();
|
|
|
|
|
2021-04-04 22:20:33 -04:00
|
|
|
bool isAltDown() const;
|
|
|
|
bool isCtrlDown() const;
|
|
|
|
bool isShiftDown() const;
|
2015-04-22 22:54:48 -04:00
|
|
|
|
2015-01-02 21:32:24 -05:00
|
|
|
protected:
|
|
|
|
void OnKeyDown(wxKeyEvent& event);
|
|
|
|
void OnKeyUp(wxKeyEvent& event);
|
|
|
|
|
2015-01-03 17:07:39 -05:00
|
|
|
void OnMouseMoved(wxMouseEvent& event);
|
|
|
|
void OnMouseWheelMoved(wxMouseEvent& event);
|
|
|
|
void OnMouseDown(wxMouseEvent& event);
|
|
|
|
void OnMouseReleased(wxMouseEvent& event);
|
|
|
|
void OnMouseRightDown(wxMouseEvent& event);
|
|
|
|
void OnMouseRightReleased(wxMouseEvent& event);
|
|
|
|
void OnMouseEnterWindow(wxMouseEvent& event);
|
|
|
|
void OnMouseLeftWindow(wxMouseEvent& event);
|
2015-01-02 21:32:24 -05:00
|
|
|
|
2015-01-02 22:44:09 -05:00
|
|
|
void setStatusText(std::string statusText);
|
|
|
|
void setStatusText(std::string statusText, int value);
|
|
|
|
|
2015-01-02 21:32:24 -05:00
|
|
|
wxWindow *parent;
|
2015-01-03 17:07:39 -05:00
|
|
|
MouseTracker mouseTracker;
|
2015-01-02 21:32:24 -05:00
|
|
|
|
|
|
|
bool shiftDown;
|
|
|
|
bool altDown;
|
|
|
|
bool ctrlDown;
|
|
|
|
|
2015-01-04 17:11:20 -05:00
|
|
|
long long centerFreq;
|
2017-01-21 05:26:51 -05:00
|
|
|
long long bandwidth;
|
|
|
|
long long lastBandwidth;
|
2015-01-02 21:32:24 -05:00
|
|
|
|
|
|
|
bool isView;
|
|
|
|
};
|
|
|
|
|