Starting on screen impl

This commit is contained in:
Michal Moskal 2017-07-05 13:06:58 +01:00
parent 7671a75dbc
commit 02d8cf7056
7 changed files with 105 additions and 2 deletions

16
libs/core/dal.d.ts vendored
View File

@ -344,6 +344,22 @@ declare const enum DAL {
DISPLAY_ERASE_LINE = 0x05,
DISPLAY_FILL_REGION = 0x06,
DISPLAY_FRAME = 0x07,
DRAW_OPT_NORMAL = (0x0000),
DRAW_OPT_CLEAR_WHOLE_SCREEN = (0x0001),
DRAW_OPT_CLEAR_EXCEPT_STATUS_SCREEN = (0x0002),
DRAW_OPT_CLEAR_PIXELS = (0x0004),
DRAW_OPT_CLEAR = (0x0004),
DRAW_OPT_INVERT = (0x0004),
DRAW_OPT_LOGICAL_COPY = (0x0000),
DRAW_OPT_LOGICAL_AND = (0x0008),
DRAW_OPT_LOGICAL_OR = (0x0010),
DRAW_OPT_LOGICAL_XOR = (0x0018),
DRAW_OPT_FILL_SHAPE = (0x0020),
DRAW_OPT_CLEAR_SCREEN_MODES = (0x0003),
DRAW_OPT_LOGICAL_OPERATIONS = (0x0018),
DRAW_OPT_POLYGON_POLYLINE = (0x0400),
DRAW_OPT_CLEAR_LINE = (0x0800),
DRAW_OPT_CLEAR_EOL = (0x1000),
CS_TIMER_1 = 0,
CS_TIMER_2 = 1,
CS_TIMER_3 = 2,

12
libs/core/enums.d.ts vendored
View File

@ -34,4 +34,16 @@
OrangePulse = 9, // LED_ORANGE_PULSE
}
/**
* Drawing modes
*/
declare enum Draw {
Normal = (0x0000), // DRAW_OPT_NORMAL
Clear = (0x0004), // DRAW_OPT_CLEAR_PIXELS
Xor = (0x0018), // DRAW_OPT_LOGICAL_XOR
Fill = (0x0020), // DRAW_OPT_FILL_SHAPE
}
// Auto-generated. Do not edit. Really.

View File

@ -8,6 +8,8 @@
"pxtcore.h",
"linux.cpp",
"buttons.cpp",
"screen.cpp",
"screen.ts",
"shims.d.ts",
"enums.d.ts",
"dal.d.ts",
@ -17,10 +19,10 @@
"test.ts"
],
"npmDependencies": {
"ev3api-bin": "1.0.0"
"ev3api-bin": "1.0.0"
},
"public": true,
"dependencies": {
"base": "file:../base"
}
}
}

39
libs/core/screen.cpp Normal file
View File

@ -0,0 +1,39 @@
#include "pxt.h"
#include "ev3.h"
/**
* Drawing modes
*/
enum class Draw {
Normal = DRAW_OPT_NORMAL, // set pixels to black, no fill
Clear = DRAW_OPT_CLEAR_PIXELS,
Xor = DRAW_OPT_LOGICAL_XOR,
Fill = DRAW_OPT_FILL_SHAPE,
};
#define XX(v) ((uint32_t)(v)&0xffff)
#define YY(v) ((uint32_t)(v) >> 16)
// We only support up to 4 arguments for C++ functions - need to pack them on the TS side
namespace screen {
//%
void _drawLine(uint32_t p0, uint32_t p1, Draw mode) {
LineOutEx(XX(p0), YY(p0), XX(p1), YY(p1), (uint32_t)mode);
}
//%
void _drawRect(uint32_t p0, uint32_t p1, Draw mode) {
RectOutEx(XX(p0), YY(p0), XX(p1), YY(p1), (uint32_t)mode);
}
//%
void _drawEllipse(uint32_t p0, uint32_t p1, Draw mode) {
EllipseOutEx(XX(p0), YY(p0), XX(p1), YY(p1), (uint32_t)mode);
}
/** Draw text. */
//%
void drawText(int x, int y, String text, Draw mode) {
LcdText((int)mode & (int)Draw::Clear ? 0 : 1, x, y, text->data);
}
}

11
libs/core/screen.ts Normal file
View File

@ -0,0 +1,11 @@
namespace screen {
//% shim=screen::_drawLine
function _drawLine(p0: uint32, p1: uint32, mode: Draw): void {}
//% shim=screen::_drawRect
function _drawRect(p0: uint32, p1: uint32, mode: Draw): void {}
//% shim=screen::_drawEllipse
function _drawEllipse(p0: uint32, p1: uint32, mode: Draw): void {}
}

14
libs/core/shims.d.ts vendored
View File

@ -38,6 +38,14 @@ declare namespace input {
//% block="button exit" weight=95 fixedInstance shim=pxt::getButton(5)
const buttonExit: Button;
}
declare namespace control {
/**
* Determine the version of system software currently running.
*/
//% shim=control::deviceFirmwareVersion
function deviceFirmwareVersion(): string;
}
declare namespace output {
/**
@ -95,5 +103,11 @@ declare interface Button {
//% button.fieldOptions.columns=3 shim=ButtonMethods::wasPressed
wasPressed(): boolean;
}
declare namespace screen {
/** Draw text. */
//% shim=screen::drawText
function drawText(x: int32, y: int32, text: string, mode: Draw): void;
}
// Auto-generated. Do not edit. Really.

9
libs/core/tsconfig.json Normal file
View File

@ -0,0 +1,9 @@
{
"compilerOptions": {
"target": "es5",
"noImplicitAny": true,
"outDir": "built",
"rootDir": "."
},
"exclude": ["pxt_modules/**/*test.ts"]
}