node-mac-recorder 1.10.0 → 1.11.0
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/index.js +21 -77
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -139,21 +139,19 @@ class MacRecorder extends EventEmitter {
|
|
|
139
139
|
// WindowId varsa captureArea'yı otomatik ayarla
|
|
140
140
|
if (this.options.windowId && !this.options.captureArea) {
|
|
141
141
|
try {
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (
|
|
149
|
-
|
|
150
|
-
console.log(`Overlay coords: (${selectedWindow.overlayX}, ${selectedWindow.overlayY}) ${selectedWindow.overlayWidth}x${selectedWindow.overlayHeight}`);
|
|
151
|
-
|
|
152
|
-
const displays = await this.getDisplays();
|
|
153
|
-
const targetWindow = selectedWindow;
|
|
154
|
-
|
|
155
|
-
// Display ID'yi bul
|
|
142
|
+
const windows = await this.getWindows();
|
|
143
|
+
const displays = await this.getDisplays();
|
|
144
|
+
const targetWindow = windows.find(
|
|
145
|
+
(w) => w.id === this.options.windowId
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
if (targetWindow) {
|
|
149
|
+
// Pencere hangi display'de olduğunu bul
|
|
156
150
|
let targetDisplayId = null;
|
|
151
|
+
let adjustedX = targetWindow.x;
|
|
152
|
+
let adjustedY = targetWindow.y;
|
|
153
|
+
|
|
154
|
+
// Pencere hangi display'de?
|
|
157
155
|
for (let i = 0; i < displays.length; i++) {
|
|
158
156
|
const display = displays[i];
|
|
159
157
|
const displayWidth = parseInt(display.resolution.split("x")[0]);
|
|
@@ -161,73 +159,19 @@ class MacRecorder extends EventEmitter {
|
|
|
161
159
|
|
|
162
160
|
// Pencere bu display sınırları içinde mi?
|
|
163
161
|
if (
|
|
164
|
-
targetWindow.
|
|
165
|
-
targetWindow.
|
|
166
|
-
targetWindow.
|
|
167
|
-
targetWindow.
|
|
162
|
+
targetWindow.x >= display.x &&
|
|
163
|
+
targetWindow.x < display.x + displayWidth &&
|
|
164
|
+
targetWindow.y >= display.y &&
|
|
165
|
+
targetWindow.y < display.y + displayHeight
|
|
168
166
|
) {
|
|
169
|
-
targetDisplayId = display.id;
|
|
167
|
+
targetDisplayId = display.id; // Use actual display ID, not array index
|
|
168
|
+
// Koordinatları display'e göre normalize et
|
|
169
|
+
adjustedX = targetWindow.x - display.x;
|
|
170
|
+
// Y koordinat düzeltmesi - window selector overlay ile sync için
|
|
171
|
+
adjustedY = Math.max(0, targetWindow.y - display.y - 22);
|
|
170
172
|
break;
|
|
171
173
|
}
|
|
172
174
|
}
|
|
173
|
-
|
|
174
|
-
// Display ID'yi ayarla
|
|
175
|
-
if (targetDisplayId !== null) {
|
|
176
|
-
this.options.displayId = targetDisplayId;
|
|
177
|
-
const targetDisplay = displays.find(d => d.id === targetDisplayId);
|
|
178
|
-
this.recordingDisplayInfo = {
|
|
179
|
-
displayId: targetDisplayId,
|
|
180
|
-
x: targetDisplay.x,
|
|
181
|
-
y: targetDisplay.y,
|
|
182
|
-
width: parseInt(targetDisplay.resolution.split("x")[0]),
|
|
183
|
-
height: parseInt(targetDisplay.resolution.split("x")[1]),
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Overlay koordinatlarını direkt kullan - display offset'ini çıkar
|
|
188
|
-
const targetDisplay = displays.find(d => d.id === targetDisplayId);
|
|
189
|
-
this.options.captureArea = {
|
|
190
|
-
x: targetWindow.overlayX - (targetDisplay ? targetDisplay.x : 0),
|
|
191
|
-
y: targetWindow.overlayY - (targetDisplay ? targetDisplay.y : 0),
|
|
192
|
-
width: targetWindow.overlayWidth,
|
|
193
|
-
height: targetWindow.overlayHeight,
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
console.log(`🎬 Recording area: x=${this.options.captureArea.x}, y=${this.options.captureArea.y}, w=${this.options.captureArea.width}, h=${this.options.captureArea.height}`);
|
|
197
|
-
} else {
|
|
198
|
-
// Fallback: Eski yöntem
|
|
199
|
-
const windows = await this.getWindows();
|
|
200
|
-
const displays = await this.getDisplays();
|
|
201
|
-
const targetWindow = windows.find(
|
|
202
|
-
(w) => w.id === this.options.windowId
|
|
203
|
-
);
|
|
204
|
-
|
|
205
|
-
if (targetWindow) {
|
|
206
|
-
// Pencere hangi display'de olduğunu bul
|
|
207
|
-
let targetDisplayId = null;
|
|
208
|
-
let adjustedX = targetWindow.x;
|
|
209
|
-
let adjustedY = targetWindow.y;
|
|
210
|
-
|
|
211
|
-
// Pencere hangi display'de?
|
|
212
|
-
for (let i = 0; i < displays.length; i++) {
|
|
213
|
-
const display = displays[i];
|
|
214
|
-
const displayWidth = parseInt(display.resolution.split("x")[0]);
|
|
215
|
-
const displayHeight = parseInt(display.resolution.split("x")[1]);
|
|
216
|
-
|
|
217
|
-
// Pencere bu display sınırları içinde mi?
|
|
218
|
-
if (
|
|
219
|
-
targetWindow.x >= display.x &&
|
|
220
|
-
targetWindow.x < display.x + displayWidth &&
|
|
221
|
-
targetWindow.y >= display.y &&
|
|
222
|
-
targetWindow.y < display.y + displayHeight
|
|
223
|
-
) {
|
|
224
|
-
targetDisplayId = display.id; // Use actual display ID, not array index
|
|
225
|
-
// Koordinatları display'e göre normalize et
|
|
226
|
-
adjustedX = targetWindow.x - display.x;
|
|
227
|
-
adjustedY = targetWindow.y - display.y;
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
175
|
|
|
232
176
|
// Eğer display bulunamadıysa ana display kullan
|
|
233
177
|
if (targetDisplayId === null) {
|