@rian8337/osu-strain-graph-generator 2.0.0-alpha.2 → 2.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rian8337/osu-strain-graph-generator",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-alpha.6",
4
4
  "description": "A module for generating strain graph of an osu!standard beatmap.",
5
5
  "keywords": [
6
6
  "osu",
@@ -23,20 +23,20 @@
23
23
  "scripts": {
24
24
  "build": "rollup -c ../../rollup.config.js",
25
25
  "lint": "eslint --ext ts",
26
- "prepare": "npm run build",
26
+ "prepublishOnly": "npm run build",
27
27
  "test": "echo \"No tests for this module\""
28
28
  },
29
29
  "bugs": {
30
30
  "url": "https://github.com/Rian8337/osu-droid-module/issues"
31
31
  },
32
32
  "dependencies": {
33
- "@rian8337/osu-base": "^2.0.0-alpha.0",
34
- "@rian8337/osu-difficulty-calculator": "^2.0.0-alpha.2",
35
- "@rian8337/osu-rebalance-difficulty-calculator": "^2.0.0-alpha.2",
33
+ "@rian8337/osu-base": "^2.0.0-alpha.6",
34
+ "@rian8337/osu-difficulty-calculator": "^2.0.0-alpha.6",
35
+ "@rian8337/osu-rebalance-difficulty-calculator": "^2.0.0-alpha.6",
36
36
  "canvas": "^2.9.0"
37
37
  },
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
- "gitHead": "89a6ff4e787b4ee614f0e5472f4fb9ba0a3411f0"
41
+ "gitHead": "1500caca0de5b36cd9f1a746be5f3f76b343a3ab"
42
42
  }
package/dist/Chart.js DELETED
@@ -1,283 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Chart = void 0;
4
- const canvas_1 = require("canvas");
5
- /**
6
- * Utility to draw a graph with only node-canvas.
7
- *
8
- * Used for creating strain graph of beatmaps.
9
- */
10
- class Chart {
11
- /**
12
- * @param values Initializer options for the graph.
13
- */
14
- constructor(values) {
15
- this.padding = 10;
16
- this.tickSize = 10;
17
- this.axisColor = "#555";
18
- this.font = "12pt Calibri";
19
- this.axisLabelFont = "bold 11pt Calibri";
20
- this.fontHeight = 12;
21
- this.baseLabelOffset = 15;
22
- this.graphWidth = values.graphWidth;
23
- this.graphHeight = values.graphHeight;
24
- this.canvas = (0, canvas_1.createCanvas)(this.graphWidth, this.graphHeight);
25
- this.context = this.canvas.getContext("2d");
26
- this.minX = values.minX;
27
- this.minY = values.minY;
28
- this.maxX = values.maxX;
29
- this.maxY = values.maxY;
30
- this.unitsPerTickX = values.unitsPerTickX;
31
- this.unitsPerTickY = values.unitsPerTickY;
32
- this.background = values.background;
33
- this.xLabel = values.xLabel;
34
- this.yLabel = values.yLabel;
35
- this.xValueType = values.xValueType;
36
- this.yValueType = values.yValueType;
37
- this.pointRadius = Math.max(0, values.pointRadius ?? 1);
38
- // Relationships
39
- this.rangeX = this.maxX - this.minX;
40
- this.rangeY = this.maxY - this.minY;
41
- this.numXTicks = Math.round(this.rangeX / this.unitsPerTickX);
42
- this.numYTicks = Math.round(this.rangeY / this.unitsPerTickY);
43
- this.x = this.getLongestValueWidth() + this.padding * 2;
44
- this.y = this.padding * 2;
45
- this.width = this.canvas.width - this.x - this.padding * 2;
46
- this.height =
47
- this.canvas.height - this.y - this.padding - this.fontHeight;
48
- this.scaleX =
49
- (this.width - (this.xLabel ? this.baseLabelOffset : 0)) /
50
- this.rangeX;
51
- this.scaleY =
52
- (this.height - (this.yLabel ? this.baseLabelOffset : 0)) /
53
- this.rangeY;
54
- // Draw background and X and Y axis tick marks
55
- this.setBackground();
56
- this.drawXAxis(true);
57
- this.drawYAxis(true);
58
- }
59
- /**
60
- * Draws a line graph with specified data, color, and line width.
61
- *
62
- * @param data The data to make the graph.
63
- * @param color The color of the line.
64
- * @param width The width of the line.
65
- */
66
- drawLine(data, color, width) {
67
- const c = this.context;
68
- c.save();
69
- this.transformContext();
70
- c.lineWidth = width;
71
- c.strokeStyle = c.fillStyle = color;
72
- c.beginPath();
73
- c.moveTo(data[0].x * this.scaleX, data[0].y * this.scaleY);
74
- for (let n = 0; n < data.length; ++n) {
75
- const point = data[n];
76
- // Data segment
77
- c.lineTo(point.x * this.scaleX, point.y * this.scaleY);
78
- c.stroke();
79
- c.closePath();
80
- if (this.pointRadius) {
81
- c.beginPath();
82
- c.arc(point.x * this.scaleX, point.y * this.scaleY, this.pointRadius, 0, 2 * Math.PI, false);
83
- c.fill();
84
- c.closePath();
85
- }
86
- // Position for next segment
87
- c.beginPath();
88
- c.moveTo(point.x * this.scaleX, point.y * this.scaleY);
89
- }
90
- c.restore();
91
- }
92
- /**
93
- * Draws an area graph with specified data and color.
94
- *
95
- * @param data The data to make the graph.
96
- * @param color The color of the area.
97
- */
98
- drawArea(data, color) {
99
- const c = this.context;
100
- c.save();
101
- this.transformContext();
102
- c.strokeStyle = c.fillStyle = color;
103
- c.beginPath();
104
- data.forEach((d) => c.lineTo(d.x * this.scaleX, d.y * this.scaleY));
105
- c.stroke();
106
- c.lineTo(data.at(-1).x * this.scaleX, 0);
107
- c.lineTo(0, 0);
108
- c.fill();
109
- c.restore();
110
- // Redraw axes since it gets
111
- // overlapped by chart area
112
- if (color !== this.axisColor) {
113
- this.drawXAxis();
114
- this.drawYAxis();
115
- }
116
- }
117
- /**
118
- * Returns a Buffer that represents the graph.
119
- */
120
- getBuffer() {
121
- return this.canvas.toBuffer();
122
- }
123
- /**
124
- * Draws the X axis of the graph.
125
- *
126
- * @param drawLabel Whether or not to draw the axis label.
127
- */
128
- drawXAxis(drawLabel) {
129
- const c = this.context;
130
- const labelOffset = this.xLabel ? this.baseLabelOffset : 0;
131
- const yLabelOffset = this.yLabel ? this.baseLabelOffset : 0;
132
- c.save();
133
- if (this.xLabel && drawLabel) {
134
- c.textAlign = "center";
135
- c.font = this.axisLabelFont;
136
- c.fillText(this.xLabel, this.x + this.width / 2, this.y + this.height + labelOffset);
137
- c.restore();
138
- }
139
- c.beginPath();
140
- c.moveTo(this.x + yLabelOffset, this.y + this.height - labelOffset);
141
- c.lineTo(this.x + this.width, this.y + this.height - labelOffset);
142
- c.strokeStyle = this.axisColor;
143
- c.lineWidth = 2;
144
- c.stroke();
145
- // Draw tick marks
146
- for (let n = 0; n < this.numXTicks; ++n) {
147
- c.beginPath();
148
- c.moveTo(((n + 1) * (this.width - yLabelOffset)) / this.numXTicks +
149
- this.x +
150
- yLabelOffset, this.y + this.height - labelOffset);
151
- c.lineTo(((n + 1) * (this.width - yLabelOffset)) / this.numXTicks +
152
- this.x +
153
- yLabelOffset, this.y + this.height - labelOffset - this.tickSize);
154
- c.stroke();
155
- }
156
- // Draw labels
157
- c.font = this.font;
158
- c.fillStyle = "black";
159
- c.textAlign = "center";
160
- c.textBaseline = "middle";
161
- for (let n = 0; n < this.numXTicks; ++n) {
162
- const label = Math.round(((n + 1) * this.maxX) / this.numXTicks);
163
- let stringLabel = label.toString();
164
- switch (this.xValueType) {
165
- case "time":
166
- stringLabel = this.timeString(label);
167
- break;
168
- }
169
- c.save();
170
- c.translate(((n + 1) * (this.width - yLabelOffset)) / this.numXTicks +
171
- this.x +
172
- yLabelOffset, this.y + this.height + this.padding - labelOffset);
173
- c.fillText(stringLabel, 0, 0);
174
- c.restore();
175
- }
176
- c.restore();
177
- }
178
- /**
179
- * Draws the Y axis of the graph.
180
- *
181
- * @param drawLabel Whether or not to draw the axis label.
182
- */
183
- drawYAxis(drawLabel) {
184
- const c = this.context;
185
- const labelOffset = this.yLabel ? this.baseLabelOffset : 0;
186
- const xLabelOffset = this.xLabel ? this.baseLabelOffset : 0;
187
- c.save();
188
- if (this.yLabel && drawLabel) {
189
- c.textAlign = "center";
190
- c.font = this.axisLabelFont;
191
- c.translate(0, this.graphHeight);
192
- c.rotate(-Math.PI / 2);
193
- c.fillText(this.yLabel, this.y + xLabelOffset + this.height / 2, this.x - labelOffset * 2.5);
194
- c.restore();
195
- }
196
- c.beginPath();
197
- c.moveTo(this.x + labelOffset, this.y);
198
- c.lineTo(this.x + labelOffset, this.y + this.height - xLabelOffset);
199
- c.strokeStyle = this.axisColor;
200
- c.lineWidth = 2;
201
- c.stroke();
202
- c.restore();
203
- // Draw tick marks
204
- for (let n = 0; n < this.numYTicks; ++n) {
205
- c.beginPath();
206
- c.moveTo(this.x + labelOffset, (n * (this.height - xLabelOffset)) / this.numYTicks + this.y);
207
- c.lineTo(this.x + labelOffset + this.tickSize, (n * (this.height - xLabelOffset)) / this.numYTicks + this.y);
208
- c.stroke();
209
- }
210
- // Draw values
211
- c.font = this.font;
212
- c.fillStyle = "black";
213
- c.textAlign = "right";
214
- c.textBaseline = "middle";
215
- for (let n = 0; n < this.numYTicks; ++n) {
216
- const value = Math.round(this.maxY - (n * this.maxY) / this.numYTicks);
217
- c.save();
218
- c.translate(this.x + labelOffset - this.padding, (n * (this.height - xLabelOffset)) / this.numYTicks + this.y);
219
- c.fillText(value.toString(), 0, 0);
220
- c.restore();
221
- }
222
- c.restore();
223
- }
224
- /**
225
- * Transforms the context and move it to the center of the graph.
226
- */
227
- transformContext() {
228
- const c = this.context;
229
- // Move context to point (0, 0) in graph
230
- c.translate(this.x + (this.yLabel ? this.baseLabelOffset : 0), this.y + this.height - (this.xLabel ? this.baseLabelOffset : 0));
231
- // Invert the Y scale so that it
232
- // increments as we go upwards
233
- c.scale(1, -1);
234
- }
235
- /**
236
- * Gets the longest width from each label text in Y axis.
237
- */
238
- getLongestValueWidth() {
239
- this.context.font = this.font;
240
- let longestValueWidth = 0;
241
- for (let n = 0; n < this.numYTicks; ++n) {
242
- const value = this.maxY - n * this.unitsPerTickY;
243
- let stringValue = value.toString();
244
- switch (this.yValueType) {
245
- case "time":
246
- stringValue = this.timeString(value);
247
- break;
248
- }
249
- longestValueWidth = Math.max(longestValueWidth, this.context.measureText(stringValue).width);
250
- }
251
- return longestValueWidth;
252
- }
253
- /**
254
- * Sets the background of the graph.
255
- */
256
- setBackground() {
257
- if (!this.background) {
258
- this.context.globalAlpha = 0.7;
259
- this.context.fillStyle = "#ffffff";
260
- this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);
261
- this.context.fillStyle = "#000000";
262
- return;
263
- }
264
- this.context.globalAlpha = 1;
265
- this.context.drawImage(this.background, 0, 0, this.canvas.width, this.canvas.height);
266
- this.context.globalAlpha = 0.8;
267
- this.context.fillStyle = "#bbbbbb";
268
- this.context.fillRect(0, 0, 900, 250);
269
- this.context.globalAlpha = 1;
270
- this.context.fillStyle = "#000000";
271
- }
272
- /**
273
- * Time string parsing function for axis labels.
274
- */
275
- timeString(second) {
276
- return new Date(1000 * Math.ceil(second))
277
- .toISOString()
278
- .substr(11, 8)
279
- .replace(/^[0:]+/, "");
280
- }
281
- }
282
- exports.Chart = Chart;
283
- //# sourceMappingURL=Chart.js.map
package/dist/Chart.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chart.js","sourceRoot":"","sources":["../src/Chart.ts"],"names":[],"mappings":"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"}