mirror of
https://github.com/rubickCenter/rubick
synced 2025-06-20 19:22:43 +08:00
ref: 优化取色和截屏
This commit is contained in:
parent
d824f503e6
commit
7783d9520d
@ -3,6 +3,7 @@ import {exec, spawn} from "child_process";
|
|||||||
import robot from "robotjs";
|
import robot from "robotjs";
|
||||||
import Api from "./api";
|
import Api from "./api";
|
||||||
import ioHook from 'iohook';
|
import ioHook from 'iohook';
|
||||||
|
import {throttle} from './utils';
|
||||||
|
|
||||||
const browsers = require("../browsers")();
|
const browsers = require("../browsers")();
|
||||||
const {picker, separator, superPanel} = browsers;
|
const {picker, separator, superPanel} = browsers;
|
||||||
@ -72,6 +73,20 @@ class Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(mainWindow) {
|
init(mainWindow) {
|
||||||
|
this.fn = throttle(({x, y}, picker) => {
|
||||||
|
const img = robot.screen.capture(parseInt(x) - 5, parseInt(y) - 5, 9, 9);
|
||||||
|
|
||||||
|
const colors = {}
|
||||||
|
|
||||||
|
for(let i = 0; i< 9; i++) {
|
||||||
|
colors[i] = {};
|
||||||
|
for (let j = 0; j < 9; j++) {
|
||||||
|
colors[i][j] = img.colorAt(j, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
picker.getWindow().webContents.send("updatePicker", colors);
|
||||||
|
}, 100);
|
||||||
|
|
||||||
this.colorPicker();
|
this.colorPicker();
|
||||||
this.initPlugin();
|
this.initPlugin();
|
||||||
this.lockScreen();
|
this.lockScreen();
|
||||||
@ -123,27 +138,12 @@ class Listener {
|
|||||||
this.closePicker();
|
this.closePicker();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
ioHook.on('mousemove', e => {
|
ioHook.on('mousemove', e => {
|
||||||
let x = e.x
|
let x = e.x
|
||||||
let y = e.y
|
let y = e.y
|
||||||
if (!picker.getWindow()) return;
|
if (!picker.getWindow()) return;
|
||||||
let color = "#" + robot.getPixelColor(parseInt(x), parseInt(y));
|
|
||||||
picker.getWindow().setPosition(parseInt(x) + 10, parseInt(y) + 10);
|
picker.getWindow().setPosition(parseInt(x) + 10, parseInt(y) + 10);
|
||||||
|
this.fn(e, picker);
|
||||||
|
|
||||||
const img = robot.screen.capture(parseInt(x) - 5, parseInt(y) - 5, 9, 9);
|
|
||||||
|
|
||||||
const colors = {}
|
|
||||||
|
|
||||||
for(let i = 0; i< 9; i++) {
|
|
||||||
colors[i] = {};
|
|
||||||
for (let j = 0; j < 9; j++) {
|
|
||||||
colors[i][j] = img.colorAt(j, i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
picker.getWindow().webContents.send("updatePicker", colors);
|
|
||||||
})
|
})
|
||||||
|
|
||||||
ioHook.on('mouseup', e => {
|
ioHook.on('mouseup', e => {
|
||||||
|
@ -19,3 +19,37 @@ export function getData(path, defaultValue) {
|
|||||||
return defaultValue || undefined;
|
return defaultValue || undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function throttle (func, wait, options) {
|
||||||
|
let context, args, result;
|
||||||
|
let timeout = null;
|
||||||
|
let previous = 0;
|
||||||
|
if (!options) options = {};
|
||||||
|
let later = function() {
|
||||||
|
previous = options.leading === false ? 0 : Date.now();
|
||||||
|
timeout = null;
|
||||||
|
result = func.apply(context, args);
|
||||||
|
if (!timeout) context = args = null;
|
||||||
|
};
|
||||||
|
return function() {
|
||||||
|
let now = Date.now();
|
||||||
|
if (!previous && options.leading === false) previous = now;
|
||||||
|
// 计算剩余时间
|
||||||
|
let remaining = wait - (now - previous);
|
||||||
|
context = this;
|
||||||
|
args = arguments;
|
||||||
|
if (remaining <= 0 || remaining > wait) {
|
||||||
|
if (timeout) {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = null;
|
||||||
|
}
|
||||||
|
previous = now;
|
||||||
|
result = func.apply(context, args);
|
||||||
|
if (!timeout) context = args = null;
|
||||||
|
} else if (!timeout && options.trailing !== false) {
|
||||||
|
timeout = setTimeout(later, remaining);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user