Skip to content

Commit

Permalink
refactor: make templateImage a property on nativeImage (#18124)
Browse files Browse the repository at this point in the history
* refactor: make templateImage a property on nativeImage

* Update docs/api/native-image.md

Co-Authored-By: codebytere <codebytere@github.com>

* fix nativeImage prototype deprecation

* update for new property name

* Update docs/api/native-image.md

Co-Authored-By: codebytere <codebytere@github.com>
  • Loading branch information
codebytere authored and John Kleinschmidt committed May 7, 2019
1 parent cfb6e84 commit 02710ef
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 6 deletions.
6 changes: 4 additions & 2 deletions atom/common/api/atom_api_native_image.cc
Expand Up @@ -638,8 +638,10 @@ void NativeImage::BuildPrototype(v8::Isolate* isolate,
.SetMethod("toDataURL", &NativeImage::ToDataURL)
.SetMethod("isEmpty", &NativeImage::IsEmpty)
.SetMethod("getSize", &NativeImage::GetSize)
.SetMethod("setTemplateImage", &NativeImage::SetTemplateImage)
.SetMethod("isTemplateImage", &NativeImage::IsTemplateImage)
.SetMethod("_setTemplateImage", &NativeImage::SetTemplateImage)
.SetMethod("_isTemplateImage", &NativeImage::IsTemplateImage)
.SetProperty("isMacTemplateImage", &NativeImage::IsTemplateImage,
&NativeImage::SetTemplateImage)
.SetMethod("resize", &NativeImage::Resize)
.SetMethod("crop", &NativeImage::Crop)
.SetMethod("getAspectRatio", &NativeImage::GetAspectRatio)
Expand Down
4 changes: 2 additions & 2 deletions docs/api/modernization/property-updates.md
Expand Up @@ -30,8 +30,6 @@ The Electron team is currently undergoing an initiative to convert separate gett
* `DownloadItem` class
* `savePath`
* `paused`
* `NativeImage`
* `templateImage`
* `Session` module
* `preloads`
* `SystemPreferences` module
Expand All @@ -58,3 +56,5 @@ The Electron team is currently undergoing an initiative to convert separate gett
* `applicationMenu`
* `badgeCount`
* `name`
* `NativeImage`
* `isMacTemplateImage`
13 changes: 12 additions & 1 deletion docs/api/native-image.md
Expand Up @@ -71,7 +71,6 @@ images/
└── icon@3x.png
```


```javascript
const { Tray } = require('electron')
let appIcon = new Tray('/Users/somebody/images/icon.png')
Expand Down Expand Up @@ -276,10 +275,14 @@ Returns [`Size`](structures/size.md)

Marks the image as a template image.

**[Deprecated Soon](modernization/property-updates.md)**

#### `image.isTemplateImage()`

Returns `Boolean` - Whether the image is a template image.

**[Deprecated Soon](modernization/property-updates.md)**

#### `image.crop(rect)`

* `rect` [Rectangle](structures/rectangle.md) - The area of the image to crop.
Expand Down Expand Up @@ -324,3 +327,11 @@ to explicitly add different scale factor representations to an image. This
can be called on empty images.

[buffer]: https://nodejs.org/api/buffer.html#buffer_class_buffer

## Properties

### `nativeImage.isMacTemplateImage` _macOS_

A `Boolean` property that determines whether the image is considered a [template image](https://developer.apple.com/documentation/appkit/nsimage/1520017-template).

Please note that this property only has an effect on macOS.
5 changes: 4 additions & 1 deletion lib/common/api/native-image.js
@@ -1,5 +1,8 @@
'use strict'

const { nativeImage } = process.electronBinding('native_image')
const { deprecate } = require('electron')
const { NativeImage, nativeImage } = process.electronBinding('native_image')

deprecate.fnToProperty(NativeImage.prototype, 'isMacTemplateImage', '_isTemplateImage', '_setTemplateImage')

module.exports = nativeImage
28 changes: 28 additions & 0 deletions spec/api-native-image-spec.js
Expand Up @@ -105,6 +105,34 @@ describe('nativeImage module', () => {
return matchingImage
}

describe('isMacTemplateImage property', () => {
before(function () {
if (process.platform !== 'darwin') this.skip()
})

it('returns whether the image is a template image', () => {
const image = nativeImage.createFromPath(path.join(__dirname, 'fixtures', 'assets', 'logo.png'))

expect(image.isMacTemplateImage).to.be.a('boolean')

expect(image.isTemplateImage).to.be.a('function')
expect(image.setTemplateImage).to.be.a('function')
})

it('correctly recognizes a template image', () => {
const templateImage = nativeImage.createFromPath(path.join(__dirname, 'fixtures', 'assets', 'logo_Template.png'))
expect(templateImage.isMacTemplateImage).to.be.true()
})

it('sets a template image', function () {
const image = nativeImage.createFromPath(path.join(__dirname, 'fixtures', 'assets', 'logo.png'))
expect(image.isMacTemplateImage).to.be.false()

image.isMacTemplateImage = true
expect(image.isMacTemplateImage).to.be.true()
})
})

describe('createEmpty()', () => {
it('returns an empty image', () => {
const empty = nativeImage.createEmpty()
Expand Down
Binary file added spec/fixtures/assets/logo_Template.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 02710ef

Please sign in to comment.