# window（ウィンドウ）

以下は `window` の一般的な機能の例です：

```javascript
await eagle.window.show();			// プラグインウィンドウを表示する
await eagle.window.hide();			// プラグインウィンドウを隠す

await eagle.window.minimize();			// ウィンドウを最小化する
await eagle.window.restore();			// 最小化を元に戻す

await eagle.window.maximize();			// ウィンドウを最大化する
await eagle.window.unmaximize();		// 最大化を元に戻す

await eagle.window.setFullScreen(true);		// フルスクリーンに設定する
await eagle.window.setFullScreen(false);	// フルスクリーンを終了する
```

***

#### メソッド <a href="#z1a5y" id="z1a5y"></a>

## show() <a href="#kaydt" id="kaydt"></a>

ウィンドウを表示し、フォーカスします。

* 戻り値 `Promise<>`

```javascript
await eagle.window.show();
```

***

## showInactive() <a href="#reqm4" id="reqm4"></a>

ウィンドウを表示しますが、フォーカスしません。

* 戻り値 `Promise<>`

```javascript
await eagle.window.showInactive();
```

***

## hide() <a href="#mklts" id="mklts"></a>

プラグインウィンドウを非表示にします。

* 戻り値 `Promise<>`

```javascript
await eagle.window.hide();
```

***

## focus() <a href="#lskqe" id="lskqe"></a>

プラグインウィンドウにフォーカスします。

* 戻り値 `Promise<>`

```javascript
await eagle.window.focus();
```

***

## minimize() <a href="#de7df" id="de7df"></a>

プラグインウィンドウを最小化します。

* 戻り値 `Promise<>`

```javascript
await eagle.window.minimize();
```

***

## isMinimized() <a href="#v47e2" id="v47e2"></a>

ウィンドウが最小化されているかどうかを判断します。

* 戻り値 `Promise<minimized: boolean>`
  * `minimized` boolean - ウィンドウが最小化されているかどうか

```javascript
let isMinimized = await eagle.window.isMinimized();
```

***

## restore() <a href="#yvcxf" id="yvcxf"></a>

プラグインウィンドウを最小化状態から元の状態に戻します。

* 戻り値 `Promise<>`

```javascript
await eagle.window.restore();
```

***

## maximize() <a href="#a53af" id="a53af"></a>

プラグインウィンドウを最大化します。ウィンドウがまだ表示されていない場合、このメソッドはそれを表示します（ただし、フォーカスはしません）。

* 戻り値 `Promise<>`

```javascript
await eagle.window.maximize();
```

***

## unmaximize() <a href="#tg6me" id="tg6me"></a>

プラグインウィンドウの最大化を解除します

* 戻り値 `Promise<>`

```javascript
await eagle.window.unmaximize();
```

***

## isMaximized() <a href="#zxdhs" id="zxdhs"></a>

ウィンドウが最大化されているかどうかを判断します

* 戻り値 `Promise<maximized: boolean>`
  * `maximized` boolean - ウィンドウが最大化されているかどうか

```javascript
let isMaximized = await eagle.window.isMaximized();
```

***

## setFullScreen(flag) <a href="#leibk" id="leibk"></a>

ウィンドウが全画面モードにするかどうかを設定します。

* `flag` boolean - 全画面にするかどうか
* 返り値 `Promise<>`

```javascript
await eagle.window.setFullScreen(true);		// 全画面に入る
await eagle.window.setFullScreen(false);	// 全画面から退出
```

***

## isFullScreen() <a href="#irx5v" id="irx5v"></a>

ウィンドウが全画面かどうかを判断します。

* 返り値 `Promise<fullscreen: boolean>`
  * `fullscreen` boolean - ウィンドウが全画面かどうか

```javascript
let isMaximized = await eagle.window.isMaximized();
```

***

## setAspectRatio(aspectRatio) <a href="#plpcl" id="plpcl"></a>

ウィンドウのアスペクト比を保持します。

* `aspectRatio` Float - 保持するアスペクト比（幅 / 高さ）
* 返り値 `Promise<>`

```javascript
await eagle.window.setAspectRatio(16/9);		// ウィンドウのアスペクト比を 16:9 に制限
```

***

## setBackgroundColor(backgroundColor) <a href="#no73b" id="no73b"></a>

ウィンドウの背景色を設定します。

* `backgroundColor` String - このパラメーターは、希望する背景色のHEXコードを表します。 Promise<>を返します。
* 返り値 `Promise<>`

```javascript
await eagle.window.setBackgroundColor("#FFFFFF");
```

{% hint style="info" %}
注1：この属性は、manifest.json で直接設定できます。

注2：この設定は主に、HTML / CSS のコンテンツがまだ読み込まれていない状態で、ウィンドウのデフォルトの背景色を設定するために使用されます。適切な設定で、ウィンドウ表示がフラッシュする状況を防ぐことができます。
{% endhint %}

***

## setSize(width, height) <a href="#mq0dz" id="mq0dz"></a>

ウィンドウのサイズを設定します。

* `width` Integer - ウィンドウの幅
* `height` - Integer - ウィンドウの高さ
* 返り値 `Promise<>`

```javascript
await eagle.window.setSize(720, 480);
```

{% hint style="info" %}
注：この属性は、manifest.json で直接設定できます。
{% endhint %}

## getSize() <a href="#mq0dz" id="mq0dz"></a>

ウィンドウのサイズを取得します。

* 返り値 `Promise<Integer[]>`

```javascript
await eagle.window.getSize();
```

## setBounds(**bounds**)

ウィンドウのサイズを調整し、指定された境界に移動します。提供されていない属性は、現在の値がデフォルトとなります。

```javascript
await eagle.window.setBounds({ x: 440, y: 225, width: 800, height: 600 })
```

## getBounds()

ウィンドウの境界を取得します。

* 返り値 `Promise<Rectangle[]>` - ウィンドウ境界のオブジェクト

```javascript
await eagle.window.getBounds()
```

## setResizable(resizable) <a href="#e56j2" id="e56j2"></a>

ウィンドウのサイズを調整できるかどうかを設定します。

* `resizable` boolean - サイズを調整できるかどうか
* 返り値 `Promise<>`

```javascript
await eagle.window.setResizable(true);
await eagle.window.setResizable(false);
```

{% hint style="info" %}
注：この属性は、manifest.json で直接設定できます。
{% endhint %}

***

## isResizable() <a href="#pyh5l" id="pyh5l"></a>

ウィンドウのサイズを調整できるかどうかを判断します。

* 返り値 `Promise<resizable: boolean>`
  * `resizable` boolean

```javascript
let isResizable = await eagle.window.isResizable();
```

***

## setAlwaysOnTop(flag) <a href="#p5shn" id="p5shn"></a>

ウィンドウが常に他のウィンドウの前に表示されるかどうかを設定します。

* `flag` boolean
* 返り値 `Promise<>`

```javascript
await eagle.window.setAlwaysOnTop(true);
await eagle.window.setAlwaysOnTop(false);
```

***

## isAlwaysOnTop() <a href="#quly3" id="quly3"></a>

ウィンドウが常に他のウィンドウの前に表示されるかどうかを判断します。

* 返り値 `Promise<alwaysOnTop: boolean>`
  * `alwaysOnTop` boolean

```javascript
let isAlwaysOnTop = await eagle.window.isAlwaysOnTop();
```

***

## setPosition(x, y) <a href="#erkhe" id="erkhe"></a>

ウィンドウを x と y に移動します。

* `x` Integer
* `y` Integer
* 返り値 `Promise<>`

```javascript
await eagle.window.setPosition(100, 200);
```

***

## getPosition() <a href="#ua19x" id="ua19x"></a>

プラグインウィンドウの座標 x と y を取得します。

* 返り値 `Promise<position: Integer[]>`
  * `position` Integer\[]
    * x - position\[0]
    * y - position\[1]

```javascript
let position = await eagle.window.getPosition();	// [100, 200]
```

***

## setOpacity(opacity) <a href="#dlzuz" id="dlzuz"></a>

ウィンドウの不透明度を設定します。範囲外の値は、\[0, 1]の範囲に制限されます。

* `opacity` number - 0.0（完全に透明）と1.0（完全に不透明）の間
* 返り値 `Promise<>`

```javascript
await eagle.window.setOpacity(0.5);
```

***

## getOpacity() <a href="#fes0x" id="fes0x"></a>

ウィンドウの透明度を取得します。0.0（完全に透明）から1.0（完全に不透明）の間。

* 返り値 `Promise<opacity: number>`
  * `opacity` number

```javascript
let opacity = await eagle.window.getOpacity();
```

***

## flashFrame(flag) <a href="#vxzv7" id="vxzv7"></a>

ウィンドウのフレームの点滅を開始または停止して、ユーザーの注意を引きます。

* `flag` boolean - 点滅するかどうか
* 返り値 `Promise<>`

```javascript
await eagle.window.flashFrame(true);
await eagle.window.flashFrame(false);
```

***

## setIgnoreMouseEvents(ignore) <a href="#yvfx8" id="yvfx8"></a>

ウィンドウ内のすべてのマウスイベントを無視します。このウィンドウで発生するすべてのマウスイベントは、このウィンドウの下のウィンドウに渡されますが、このウィンドウがフォーカスを持っている場合、キーボードイベントは引き続き受け取ります。

* `ignore` boolean - マウスイベントを無視するかどうか
* 返り値 `Promise<>`

```javascript
await eagle.window.setIgnoreMouseEvents(true);
await eagle.window.setIgnoreMouseEvents(false);
```

{% hint style="info" %}
setAlwaysOnTop() 機能と組み合わせると、画面の最前面に表示され、マウスクリックが透過する特別なウィンドウを作成できます。
{% endhint %}

## capturePage(rect) <a href="#yvfx9" id="yvfx9"></a>

指定された `rect` エリア内のページのスナップショットをキャプチャします。`rect` を省略すると、表示されているページ全体をキャプチャします。

* `rect` オブジェクト - 任意、スクリーンショット範囲
  * `x` 数値
  * `y` 数値
  * `width` 数値
  * `height` 数値
* 返り値 `Promise<[NativeImage](https://www.electronjs.org/docs/latest/api/native-image)>`

```javascript
const image = await eagle.window.capturePage();
const base64 = image.toDataURL("image/jpeg");

const image2 = await eagle.window.capturePage({ x: 0, y: 0, width: 100, height: 50 });
const buffer = image2.toPNG();
```

## setReferer(url) <a href="#id-4a6f" id="id-4a6f"></a>

関数は現在のリファラーURLを設定するために使用されます。リファラーが設定されると、その後のリクエストはこのリファラーを使用します。

* `url` string - リファラーのURL
* 返り値 `void`

```javascript
eagle.window.setReferer("https://jp.eagle.cool");
```
