Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
artemnovichkov committed Mar 23, 2018
2 parents 135b221 + d7b264a commit 57ae840
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 20 deletions.
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,34 @@ Use color names from Color Palette or default `UIColor(red:green:blue:alpha:)` i
#### Use custom color initializer
Use `UIColor(r:g:b:a:)` initializer.

#### Use layer extension for shadows
Use this function for shadow parameters. Don't forget to add this extension to your project.

```swift
import UIKit

extension CALayer {

func makeShadow(color: UIColor,
x: CGFloat = 0,
y: CGFloat = 0,
blur: CGFloat = 0,
spread: CGFloat = 0) {
shadowColor = color.cgColor
shadowOpacity = 1
shadowOffset = CGSize(width: x, height: y)
shadowRadius = blur / 2
if spread == 0 {
shadowPath = nil
}
else {
let rect = bounds.insetBy(dx: -spread, dy: -spread)
shadowPath = UIBezierPath(rect: rect).cgPath
}
}
}
```

## How to Install

Download and unzip [the latest release](https://github.com/artemnovichkov/zepcode/releases/).
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "zepcode",
"version": "0.5.3",
"version": "0.5.4",
"description": "Generates Swift snippets from colors, fonts and layers.",
"lint-staged": {
"src/**/*.{js,json}": [
Expand Down Expand Up @@ -67,6 +67,12 @@
"type": "switch",
"id": "use_custom_color_initializer",
"default": false
},
{
"name": "Use layer extension for shadows",
"type": "switch",
"id": "use_layer_shadow_extension",
"default": false
}
]
}
Expand Down
14 changes: 1 addition & 13 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,7 @@ function layer(context, layerParams) {

if (layerParams.shadows.length) {
const shadow = layerParams.shadows[0];
const { color } = shadow;

if (color !== undefined) {
const shadowColor = zepcodeInstance.cgColorString(shadow.color);
string += `view.layer.shadowColor = ${shadowColor}\n`;
}
string += `view.layer.shadowOffset = `;
if (shadow.offsetX && shadow.offsetY) {
string += `CGSize(width: ${shadow.offsetX}, height: ${shadow.offsetY})\n`;
} else {
string += `.zero\n`;
}
string += `view.layer.shadowRadius = ${layerParams.borderRadius}`;
string += zepcodeInstance.shadow(shadow);
}

let result = {};
Expand Down
15 changes: 15 additions & 0 deletions src/templates/custom-shadow.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const customShadowTemplate = (shadow, colorString) => `view.layer.makeShadow(color: ${colorString}${
shadow.offsetX ? `,
x: ${shadow.offsetX}` : ``
}${
shadow.offsetY ? `,
y: ${shadow.offsetY}` : ``
}${
shadow.blurRadius ? `,
blur: ${shadow.blurRadius}` : ``
}${
shadow.spread ? `,
spread: ${shadow.spread}` : ``
})`;

export default customShadowTemplate;
17 changes: 17 additions & 0 deletions src/templates/shadow.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import customColorTemplate from './custom-color';
import colorTemplate from './color';

const shadowTemplate = (shadow, colorString) => `view.layer.shadowColor = ${colorString}
view.layer.shadowOpacity = 1
view.layer.shadowOffset = ${
shadow.offsetX || shadow.offsetY
? `CGSize(width: ${shadow.offsetX}, height: ${shadow.offsetY})`
: `.zero`}
view.layer.shadowRadius = ${shadow.blurRadius} / 2
${
shadow.spread > 0
? `let rect = view.bounds.insetBy(dx: ${-shadow.spread}, dy: ${-shadow.spread})
view.layer.shadowPath = UIBezierPath(rect: rect).cgPath`
: `view.layer.shadowPath = nil`}`;

export default shadowTemplate;
25 changes: 20 additions & 5 deletions src/zepcode.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import linearGradientTemplate from './templates/linear-gradient';
import radialGradientTemplate from './templates/radial-gradient';
import fontExtensionTemplate from './templates/font-extension';
import headerTemplate from './templates/header';
import shadowTemplate from './templates/shadow';
import customShadowTemplate from './templates/custom-shadow';

const zepcode = (() => {
let instance;
Expand All @@ -18,24 +20,28 @@ const zepcode = (() => {
useCustomColorInitializer: privateContext.getOption(
'use_custom_color_initializer'
),
useLayerShadowExtension: privateContext.getOption(
'use_layer_shadow_extension'
),
},
project: privateContext.project,
};
}

me.cgColorString = color => {
me.colorString = (color, postfix) => {
const styleguideColor = me.project.findColorEqual(color);
const cgColorPostfix = '.cgColor';

if (me.options.useColorNames && styleguideColor) {
return `UIColor.${styleguideColor.name}${cgColorPostfix}`;
return `UIColor.${styleguideColor.name}${postfix}`;
}
if (me.options.useCustomColorInitializer) {
return customColorTemplate(color) + cgColorPostfix;
return customColorTemplate(color) + postfix;
}
return colorTemplate(color) + cgColorPostfix;
return colorTemplate(color) + postfix;
};

me.cgColorString = color => me.colorString(color, `.cgColor`);

me.colorStopsString = gradient => {
const { colorStops } = gradient;
return colorStops
Expand Down Expand Up @@ -81,6 +87,15 @@ const zepcode = (() => {
};
};

me.shadow = shadow => {
if (me.options.useLayerShadowExtension) {
const colorString = me.colorString(shadow.color, ``);
return customShadowTemplate(shadow, colorString);
}
const colorString = me.cgColorString(shadow.color);
return shadowTemplate(shadow, colorString);
};

return me;
}

Expand Down

0 comments on commit 57ae840

Please sign in to comment.