Skip to content

Commit

Permalink
Memory Mapped Device Layer
Browse files Browse the repository at this point in the history
Implemented MemMapDev layer, added User Manual and Programmers
Reference.
  • Loading branch information
makarcz committed Aug 10, 2016
1 parent 0d47565 commit 20d12b5
Show file tree
Hide file tree
Showing 17 changed files with 3,835 additions and 1,120 deletions.
464 changes: 464 additions & 0 deletions GraphDisp.cpp

Large diffs are not rendered by default.

72 changes: 72 additions & 0 deletions GraphDisp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#ifndef GRAPHDISP_H
#define GRAPHDISP_H

/*
* Rudimentary emulation of generic raster graphics RGB display device.
*/

#include <thread>
#include <SDL.h>

using namespace std;

namespace MKBasic {

const int GRAPHDISP_MAXW = 640; // "real" display width or maximum virtual width
const int GRAPHDISP_MAXH = 400; // "real" display width or maximum virtual height

class GraphDisp {

public:

bool mContLoop = true;
bool mMainLoopActive = false;

GraphDisp();
GraphDisp(int width, int height);
~GraphDisp();
void Start(GraphDisp *pgd);
void Stop();
void SetPixel(int x, int y);
void ErasePixel(int x, int y);
void DrawLine(int x1, int y1, int x2, int y2);
void EraseLine(int x1, int y1, int x2, int y2);
void SetBgColor(int r, int g, int b);
void SetFgColor(int r, int g, int b);
void Update();
void ReadEvents();
void ClearScreen();
//void MainLoop();
bool IsMainLoopActive();

private:

int mWidth = 320; // virtual display width
int mHeight = 200; // virtual display height
int mPixelSizeX = 2; // virtual pixel width
int mPixelSizeY = 2; // virtual pixel height
int mWinPosX = 0; // SDL window position coordinate X
int mWinPosY = 0; // SDL window position coordinate Y
int mBgRgbR = 0; // bg color, RGB red intensity
int mBgRgbG = 0; // bg color, RGB green intensity
int mBgRgbB = 0; // bg color, RGB blue intensity
int mFgRgbR = 0xFF; // fg color, RGB red intensity
int mFgRgbG = 0xFF; // fg color, RGB green intensity
int mFgRgbB = 0xFF; // fg color, RGB blue intensity
SDL_Window *mpWindow = NULL;
SDL_Surface *mpSurface = NULL;
SDL_Renderer *mpRenderer = NULL;
thread mMainLoopThread;

void Initialize();
void UpdateSurface();
void Clear();
void GetDesktopResolution(int& horizontal, int& vertical);
void DrawLine(int x1, int y1, int x2, int y2, bool draworerase);
void RenderPixel(int x, int y, bool set);

}; // class GraphDisp

} // namespace MKBasic

#endif
Loading

0 comments on commit 20d12b5

Please sign in to comment.