Newer
Older
UbixOS / lib / objgfx / vWindow.cpp
@Charlie Root Charlie Root on 23 Jan 2018 1 KB Sync
extern "C" {
  #include <stdio.h>
}

#include "vWindow.h"

vWindow::vWindow(void) {
  realWindow = new ogSurface();
  titleFont = new ogBitFont();
  return;
} // vWindow::vWindow

bool
vWindow::vCreate(void) {
  if (realWindow->ogCreate(800,600,OG_PIXFMT_24BPP) == false) return false;
  if (ogAlias(*realWindow,                                       // window
              0, 0,                                              // [x1, y1]
              realWindow->ogGetMaxX(), realWindow->ogGetMaxY())  // [x2, y2]
      == false) return false;
  return true;
} // vWindow::vCreate

//void vWindow::vSDECommand(uint32_t command);

extern "C" {
void vSDECmd(uint32_t command, void *realWindow);
asm(
  ".globl vSDECmd\n"
  "vSDECmd:\n"
  "movl $40,%eax\n"
  "int $0x81\n"
  "ret\n"
  );
}


void vWindow::vSDECommand(uint32_t command) {
printf("REAL WINDOW: 0x%X\n", realWindow);
  asm(
      "pushl %%ebx\n"
      "pushl %%ecx\n"
      "int %0\n"
      "add $0x8, %%esp\n"
     :
     : "i" (0x81),"a" (40),"b" (command),"c" (realWindow)
     );
//vSDECmd(command, realWindow);
  return;
} // vWindow::vSDECommand

vWindow::~vWindow() {
  delete realWindow;
  delete titleFont;
  return;
} // vWindow::~vWindow

/*
ogSurface -> vWidget  -> vWindow
   |            \------> vButton
   |
   |
   -- ogDisplay_UbixOS -> SDE
*/