From b2989778ba481f4eae86a6bf7042702b50d31bd2 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Fri, 25 Jun 2021 13:25:41 -0700 Subject: [PATCH] Stub out more Maki classes/methods --- .../webamp-modern-2/src/skin/AnimatedLayer.ts | 8 +++++++ packages/webamp-modern-2/src/skin/Button.ts | 5 ++++- packages/webamp-modern-2/src/skin/Layer.ts | 9 ++++++++ packages/webamp-modern-2/src/skin/MakiMap.ts | 5 +++++ packages/webamp-modern-2/src/skin/Slider.ts | 13 +++++++++-- .../webamp-modern-2/src/skin/SystemObject.ts | 22 +++++++++++++++++++ packages/webamp-modern-2/src/skin/Text.ts | 8 ++++++- packages/webamp-modern-2/src/skin/Timer.ts | 19 ++++++++++++++++ packages/webamp-modern-2/src/skin/Vis.ts | 12 ++++++++++ packages/webamp-modern-2/src/skin/resolver.ts | 18 +++++++++++++++ 10 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 packages/webamp-modern-2/src/skin/AnimatedLayer.ts create mode 100644 packages/webamp-modern-2/src/skin/MakiMap.ts create mode 100644 packages/webamp-modern-2/src/skin/Timer.ts create mode 100644 packages/webamp-modern-2/src/skin/Vis.ts diff --git a/packages/webamp-modern-2/src/skin/AnimatedLayer.ts b/packages/webamp-modern-2/src/skin/AnimatedLayer.ts new file mode 100644 index 00000000..6664f288 --- /dev/null +++ b/packages/webamp-modern-2/src/skin/AnimatedLayer.ts @@ -0,0 +1,8 @@ +import Layer from "./Layer"; + +export default class AnimatedLayer extends Layer { + getlength(): number { + return 10; + } + gotoframe(framenum: number) {} +} diff --git a/packages/webamp-modern-2/src/skin/Button.ts b/packages/webamp-modern-2/src/skin/Button.ts index 47ba52cf..34bb1b6b 100644 --- a/packages/webamp-modern-2/src/skin/Button.ts +++ b/packages/webamp-modern-2/src/skin/Button.ts @@ -19,6 +19,10 @@ export default class Button extends GuiObj { return true; } + getactivated(): boolean { + return true; + } + getDebugDom(): HTMLDivElement { const div = super.getDebugDom(); div.setAttribute("data-obj-name", "Button"); @@ -42,7 +46,6 @@ export default class Button extends GuiObj { extern Button.onRightClick(); extern Button.setActivated(Boolean onoff); extern Button.setActivatedNoCallback(Boolean onoff); - extern Boolean Button.getActivated(); extern Button.leftClick(); extern Button.rightClick();e */ diff --git a/packages/webamp-modern-2/src/skin/Layer.ts b/packages/webamp-modern-2/src/skin/Layer.ts index 2c6a024f..547249fd 100644 --- a/packages/webamp-modern-2/src/skin/Layer.ts +++ b/packages/webamp-modern-2/src/skin/Layer.ts @@ -20,6 +20,15 @@ export default class Layer extends GuiObj { return true; } + /** + * Set the alphablending value of the object. + * Value ranges from 0 (fully transparent) to + * 255 (fully opaque). + * + * @param alpha The alpha value. + **/ + setalpha(alpha: number) {} + getDebugDom(): HTMLDivElement { const div = super.getDebugDom(); div.setAttribute("data-obj-name", "Layer"); diff --git a/packages/webamp-modern-2/src/skin/MakiMap.ts b/packages/webamp-modern-2/src/skin/MakiMap.ts new file mode 100644 index 00000000..bd3a9e86 --- /dev/null +++ b/packages/webamp-modern-2/src/skin/MakiMap.ts @@ -0,0 +1,5 @@ +import BaseObject from "./BaseObject"; + +export default class MakiMap extends BaseObject { + loadmap(bitmapId: string) {} +} diff --git a/packages/webamp-modern-2/src/skin/Slider.ts b/packages/webamp-modern-2/src/skin/Slider.ts index b3988c4b..f0ee2f68 100644 --- a/packages/webamp-modern-2/src/skin/Slider.ts +++ b/packages/webamp-modern-2/src/skin/Slider.ts @@ -1,4 +1,5 @@ import GuiObj from "./GuiObj"; +import { VM } from "./VM"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Cslider.2F.3E_.26_.3CWasabi:HSlider.2F.3E_.26_.3CWasabi:VSlider.2F.3E export default class Slider extends GuiObj { @@ -13,12 +14,20 @@ export default class Slider extends GuiObj { return true; } + // extern Int Slider.getPosition(); + getposition(): number { + return 0; + } + + // extern Slider.onPostedPosition(int newpos); + onsetposition(newPos: number) { + VM.dispatch(this, "onsetposition", [{ type: "INT", value: newPos }]); + } + /* extern Slider.onSetPosition(int newpos); - extern Slider.onPostedPosition(int newpos); extern Slider.onSetFinalPosition(int pos); extern Slider.setPosition(int pos); - extern Int Slider.getPosition(); extern Slider.lock(); // locks descendant core collbacks extern Slider.unlock(); // unloads the */ diff --git a/packages/webamp-modern-2/src/skin/SystemObject.ts b/packages/webamp-modern-2/src/skin/SystemObject.ts index b55b9ff1..b8d15524 100644 --- a/packages/webamp-modern-2/src/skin/SystemObject.ts +++ b/packages/webamp-modern-2/src/skin/SystemObject.ts @@ -153,6 +153,28 @@ export default class SystemObject extends BaseObject { getviewportheight() { return window.document.documentElement.clientHeight; } + + /** + * Get the value of an equalizer band. The bands + * are numbered from 0 (60Hz) to 9 (16kHz). The return + * value range is from -127 to +127. + * + * @ret The value of the band. + * @param band The eq band number you want to get. + */ + geteqband(band: number) { + return 100; + } + + /** + * Get the equalizer state. 0 for off, 1 for on. + * Remember to compare return value to true and false. + * + * @ret The EQ's state. + */ + geteq(): number { + return 1; + } } function dumpScriptDebug(script: ParsedMaki) { diff --git a/packages/webamp-modern-2/src/skin/Text.ts b/packages/webamp-modern-2/src/skin/Text.ts index eda7631a..6400ca9c 100644 --- a/packages/webamp-modern-2/src/skin/Text.ts +++ b/packages/webamp-modern-2/src/skin/Text.ts @@ -87,12 +87,19 @@ offsety - (int) Extra pixels to be added to or subtracted from the calculated x return "Niente da Caprie (3"; case "songinfo": return "112kbps stereo 44."; + case "componentbucket": + return "componentbucket"; default: throw new Error(`Unknown text display name: "${this._display}".`); } return this._display ?? this._text; } + // extern Text.setText(String txt); // changes the display/text="something" param + settext(txt: string) { + this._text = txt; + } + getDebugDom(): HTMLDivElement { const div = super.getDebugDom(); div.innerText = this.getText(); @@ -115,7 +122,6 @@ offsety - (int) Extra pixels to be added to or subtracted from the calculated x /* -extern Text.setText(String txt); // changes the display/text="something" param extern Text.setAlternateText(String txt); // overrides the display/text parameter with a custom string, set "" to cancel extern String Text.getText(); extern int Text.getTextWidth(); diff --git a/packages/webamp-modern-2/src/skin/Timer.ts b/packages/webamp-modern-2/src/skin/Timer.ts new file mode 100644 index 00000000..66750982 --- /dev/null +++ b/packages/webamp-modern-2/src/skin/Timer.ts @@ -0,0 +1,19 @@ +import BaseObject from "./BaseObject"; + +export default class Timer extends BaseObject { + setdelay(millisec: number) {} + stop() { + //TODO + } + start() { + //TODO + } + + /* + extern Timer.onTimer(); +extern Timer.setDelay(int millisec); +extern Int Timer.getDelay(); +extern Timer.isRunning(); +extern Int Timer.getSkipped(); +*/ +} diff --git a/packages/webamp-modern-2/src/skin/Vis.ts b/packages/webamp-modern-2/src/skin/Vis.ts new file mode 100644 index 00000000..9d4dc2de --- /dev/null +++ b/packages/webamp-modern-2/src/skin/Vis.ts @@ -0,0 +1,12 @@ +import GuiObj from "./GuiObj"; + +export default class Vis extends GuiObj { + setmode(mode: number) { + // TODO + } + /*extern Vis.onFrame(); +extern Vis.setRealtime(Boolean onoff); +extern Boolean Vis.getRealtime(); +extern Int Vis.getMode(); +extern Vis.nextMode();*/ +} diff --git a/packages/webamp-modern-2/src/skin/resolver.ts b/packages/webamp-modern-2/src/skin/resolver.ts index c9cd032e..284d9bff 100644 --- a/packages/webamp-modern-2/src/skin/resolver.ts +++ b/packages/webamp-modern-2/src/skin/resolver.ts @@ -4,15 +4,33 @@ import SystemObject from "./SystemObject"; import Container from "./Container"; import Layout from "./Layout"; import Layer from "./Layer"; +import AnimatedLayer from "./AnimatedLayer"; import PopupMenu from "./PopupMenu"; import ToggleButton from "./ToggleButton"; import Status from "./Status"; import Text from "./Text"; +import Group from "./Group"; +import MakiMap from "./MakiMap"; +import Timer from "./Timer"; +import Slider from "./Slider"; +import Vis from "./Vis"; // TODO: We could write a test using the data in object.ts which confirms that // this is complete. export function classResolver(guid: string): any { switch (guid) { + case "ce4f97be4e1977b098d45699276cc933": + return Vis; + case "62b65e3f408d375e8176ea8d771bb94a": + return Slider; + case "6b64cd274c4b5a26a7e6598c3a49f60c": + return AnimatedLayer; + case "5d0c5bb64b1f7de1168d0fa741199459": + return Timer; + case "3860366542a7461b3fd875aa73bf6766": + return MakiMap; + case "45be95e5419120725fbb5c93fd17f1f9": + return Group; case "d6f50f6449b793fa66baf193983eaeef": return SystemObject; case "e90dc47b4ae7840d0b042cb0fcf775d2":