Added text shape support, fixes #42
This commit is contained in:
@@ -15,7 +15,11 @@ function Controller () {
|
||||
this.add = function (mode, cat, label, fn, accelerator) {
|
||||
if (!this.menu[mode]) { this.menu[mode] = {} }
|
||||
if (!this.menu[mode][cat]) { this.menu[mode][cat] = {} }
|
||||
this.menu[mode][cat][label] = { fn: fn, accelerator: accelerator }
|
||||
this.menu[mode][cat][label] = { fn: function (_menuItem, browserWindow) {
|
||||
browserWindow.webContents.focus()
|
||||
fn.apply(this, arguments)
|
||||
},
|
||||
accelerator: accelerator }
|
||||
}
|
||||
|
||||
this.addRole = function (mode, cat, label) {
|
||||
@@ -24,6 +28,12 @@ function Controller () {
|
||||
this.menu[mode][cat][label] = { role: label }
|
||||
}
|
||||
|
||||
this.addSpacer = function (mode, cat, label, type = 'separator') {
|
||||
if (!this.menu[mode]) { this.menu[mode] = {} }
|
||||
if (!this.menu[mode][cat]) { this.menu[mode][cat] = {} }
|
||||
this.menu[mode][cat][label] = { type: type }
|
||||
}
|
||||
|
||||
this.clearCat = function (mode, cat) {
|
||||
if (this.menu[mode]) { this.menu[mode][cat] = {} }
|
||||
}
|
||||
@@ -42,6 +52,8 @@ function Controller () {
|
||||
const option = m[cat][name]
|
||||
if (option.role) {
|
||||
submenu.push({ role: option.role })
|
||||
} else if (option.type) {
|
||||
submenu.push({ type: option.type })
|
||||
} else {
|
||||
submenu.push({ label: name, accelerator: option.accelerator, click: option.fn })
|
||||
}
|
||||
@@ -52,10 +64,11 @@ function Controller () {
|
||||
}
|
||||
|
||||
this.commit = function () {
|
||||
console.log('Controller', 'Changing..')
|
||||
this.app.injectMenu(this.format())
|
||||
}
|
||||
|
||||
this.accelerator_for_key = function (key, menu) {
|
||||
this.accelerator = function (key, menu) {
|
||||
const acc = { basic: null, ctrl: null }
|
||||
for (cat in menu) {
|
||||
const options = menu[cat]
|
||||
@@ -67,6 +80,9 @@ function Controller () {
|
||||
}
|
||||
return acc
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new Controller()
|
||||
this.docs = function () {
|
||||
// TODO
|
||||
console.log(this.menu.default)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,6 +132,10 @@ function Library (ronin) {
|
||||
return { a, b, t }
|
||||
}
|
||||
|
||||
this.text = (x, y, g, s, f = 'Arial', t = 'text') => {
|
||||
return { x, y, g, s, f, t }
|
||||
}
|
||||
|
||||
this.frame = () => {
|
||||
return ronin.surface.getFrame()
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
function Ronin () {
|
||||
const defaultTheme = {
|
||||
background: '#222',
|
||||
f_high: '#000',
|
||||
f_high: '#fff',
|
||||
f_med: '#999',
|
||||
f_low: '#ccc',
|
||||
f_low: '#444',
|
||||
f_inv: '#000',
|
||||
b_high: '#000',
|
||||
b_med: '#888',
|
||||
|
||||
@@ -41,17 +41,27 @@ function Surface (ronin) {
|
||||
this.trace(shape, context)
|
||||
context.lineWidth = width
|
||||
context.strokeStyle = color
|
||||
context.stroke()
|
||||
if (shape.t === 'text') {
|
||||
context.font = `${shape.g}px ${shape.f}`
|
||||
context.strokeText(shape.s, shape.x, shape.y)
|
||||
} else {
|
||||
context.stroke()
|
||||
}
|
||||
context.closePath()
|
||||
}
|
||||
|
||||
// Fill
|
||||
|
||||
this.fill = (shape, color, context) => {
|
||||
this.fill = (shape, color, context = this.context) => {
|
||||
context.beginPath()
|
||||
this.trace(shape, context)
|
||||
context.fillStyle = color
|
||||
context.fill()
|
||||
this.trace(shape, context)
|
||||
if (shape.t === 'text') {
|
||||
context.font = `${shape.g}px ${shape.f}`
|
||||
context.fillText(shape.s, shape.x, shape.y)
|
||||
} else {
|
||||
context.fill()
|
||||
}
|
||||
context.closePath()
|
||||
}
|
||||
|
||||
@@ -64,6 +74,8 @@ function Surface (ronin) {
|
||||
this.traceLine(shape, context)
|
||||
} else if (shape.t === 'circle') {
|
||||
this.traceCircle(shape, context)
|
||||
} else if (shape.t === 'text') {
|
||||
this.traceText(shape, context)
|
||||
} else {
|
||||
console.warn('Unknown type')
|
||||
}
|
||||
@@ -86,6 +98,10 @@ function Surface (ronin) {
|
||||
context.arc(circle.x, circle.y, circle.r, 0, 2 * Math.PI)
|
||||
}
|
||||
|
||||
this.traceText = function (text, context) {
|
||||
|
||||
}
|
||||
|
||||
// IO
|
||||
|
||||
this.open = function (path, scale) {
|
||||
|
||||
Reference in New Issue
Block a user