sugarcube 0.13.7 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -0
- data/lib/sugarcube/nsdata.rb +1 -1
- data/lib/sugarcube/symbol.rb +25 -0
- data/lib/sugarcube/uicolor.rb +15 -0
- data/lib/sugarcube/uiimage.rb +23 -0
- data/lib/sugarcube/version.rb +1 -1
- data/sugarcube.gemspec +1 -1
- metadata +3 -2
data/README.md
CHANGED
@@ -475,6 +475,10 @@ image.tileable
|
|
475
475
|
image.tileable(insets)
|
476
476
|
image.stretchable
|
477
477
|
image.stretchable(insets)
|
478
|
+
|
479
|
+
# Apply a mask to an image. The mask should be a grayscale image. White areas
|
480
|
+
# will be made transparent, and black opaque.
|
481
|
+
image.masked(mask_image)
|
478
482
|
```
|
479
483
|
|
480
484
|
UIAlertView
|
data/lib/sugarcube/nsdata.rb
CHANGED
data/lib/sugarcube/symbol.rb
CHANGED
@@ -64,6 +64,9 @@ class Symbol
|
|
64
64
|
|
65
65
|
attr_accessor :ca_timingfunctions
|
66
66
|
|
67
|
+
attr_accessor :cg_linecapstyles
|
68
|
+
attr_accessor :cg_linejoinstyles
|
69
|
+
|
67
70
|
attr_accessor :gesture_recognizer_states
|
68
71
|
end
|
69
72
|
|
@@ -415,6 +418,18 @@ class Symbol
|
|
415
418
|
default: KCAMediaTimingFunctionDefault,
|
416
419
|
}
|
417
420
|
|
421
|
+
@cg_linecapstyles = {
|
422
|
+
butt: KCGLineCapButt,
|
423
|
+
round: KCGLineCapRound,
|
424
|
+
square: KCGLineCapSquare,
|
425
|
+
}
|
426
|
+
|
427
|
+
@cg_linejoinstyles = {
|
428
|
+
miter: KCGLineJoinMiter,
|
429
|
+
round: KCGLineJoinRound,
|
430
|
+
bevel: KCGLineJoinBevel,
|
431
|
+
}
|
432
|
+
|
418
433
|
@gesture_recognizer_states = {
|
419
434
|
possible: UIGestureRecognizerStatePossible,
|
420
435
|
began: UIGestureRecognizerStateBegan,
|
@@ -583,6 +598,16 @@ class Symbol
|
|
583
598
|
end
|
584
599
|
alias catiming catimingfunction
|
585
600
|
|
601
|
+
def cglinecap
|
602
|
+
look_in(Symbol.cg_linecapstyles)
|
603
|
+
end
|
604
|
+
alias cglinecapstyle cglinecap
|
605
|
+
|
606
|
+
def cglinejoin
|
607
|
+
look_in(Symbol.cg_linejoinstyles)
|
608
|
+
end
|
609
|
+
alias cglinejoinstyle cglinejoin
|
610
|
+
|
586
611
|
def uigesturerecognizerstate
|
587
612
|
look_in(Symbol.gesture_recognizer_states)
|
588
613
|
end
|
data/lib/sugarcube/uicolor.rb
CHANGED
@@ -21,7 +21,22 @@ class UIColor
|
|
21
21
|
_sugarcube_colors && _sugarcube_colors[:alpha]
|
22
22
|
end
|
23
23
|
|
24
|
+
# returns the closest css name
|
25
|
+
def css_name
|
26
|
+
found = Symbol.css_colors.map { |key, val| [key, _sugarcube_color_compare(self, val.uicolor)] }.inject{|c1,c2| c1[1] < c2[1] ? c1 : c2 }
|
27
|
+
threshold = 0.03
|
28
|
+
if found[1] > 0.03
|
29
|
+
nil
|
30
|
+
else
|
31
|
+
found[0]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
24
35
|
private
|
36
|
+
def _sugarcube_color_compare(c1, c2)
|
37
|
+
return (c1.red - c2.red).abs + (c1.green - c2.green).abs + (c1.blue - c2.blue).abs
|
38
|
+
end
|
39
|
+
|
25
40
|
def _sugarcube_colors
|
26
41
|
@color ||= begin
|
27
42
|
red = Pointer.new(:float)
|
data/lib/sugarcube/uiimage.rb
CHANGED
@@ -197,4 +197,27 @@ class UIImage
|
|
197
197
|
imageWithAlignmentRectInsets(insets)
|
198
198
|
end
|
199
199
|
|
200
|
+
##|
|
201
|
+
##| CGImageCreateWithMask
|
202
|
+
##|
|
203
|
+
## The mask image cannot have ANY transparency.
|
204
|
+
## Instead, transparent areas must be white or some value between black and white.
|
205
|
+
## The closer towards black a pixel is the less transparent it becomes.
|
206
|
+
def masked(mask_image)
|
207
|
+
mask_image = mask_image.CGImage
|
208
|
+
|
209
|
+
width = CGImageGetWidth(mask_image)
|
210
|
+
height = CGImageGetHeight(mask_image)
|
211
|
+
component_bits = CGImageGetBitsPerComponent(mask_image)
|
212
|
+
pixel_bits = CGImageGetBitsPerPixel(mask_image)
|
213
|
+
row_bytes = CGImageGetBytesPerRow(mask_image)
|
214
|
+
data_provider = CGImageGetDataProvider(mask_image)
|
215
|
+
|
216
|
+
mask = CGImageMaskCreate(width, height, component_bits,
|
217
|
+
pixel_bits, row_bytes, data_provider,nil, false)
|
218
|
+
|
219
|
+
masked = CGImageCreateWithMask(self.CGImage, mask)
|
220
|
+
UIImage.imageWithCGImage(masked)
|
221
|
+
end
|
222
|
+
|
200
223
|
end
|
data/lib/sugarcube/version.rb
CHANGED
data/sugarcube.gemspec
CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |gem|
|
|
5
5
|
gem.name = 'sugarcube'
|
6
6
|
gem.version = SugarCube::Version
|
7
7
|
|
8
|
-
gem.authors = ['Colin T.A. Gray', 'Thom Parkin', 'Katsuyoshi Ito', 'Fusionbox']
|
8
|
+
gem.authors = ['Colin T.A. Gray', 'Thom Parkin', 'Katsuyoshi Ito', 'Michael Erasmus', 'Fusionbox']
|
9
9
|
gem.email = ['colinta@gmail.com']
|
10
10
|
gem.summary = %{Extensions for Ruby to make Rubymotion development more enjoyable, and hopefully more rubyesque!}
|
11
11
|
gem.description = <<-DESC
|
metadata
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugarcube
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Colin T.A. Gray
|
9
9
|
- Thom Parkin
|
10
10
|
- Katsuyoshi Ito
|
11
|
+
- Michael Erasmus
|
11
12
|
- Fusionbox
|
12
13
|
autorequire:
|
13
14
|
bindir: bin
|
14
15
|
cert_chain: []
|
15
|
-
date: 2013-01-
|
16
|
+
date: 2013-01-15 00:00:00.000000000 Z
|
16
17
|
dependencies: []
|
17
18
|
description: ! '== Description
|
18
19
|
|