pixbufutils 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +91 -1
- data/Rakefile +1 -1
- data/ext/pixbufutils/pixbufutils.c +60 -36
- data/ext/pixbufutils/pixbufutils.cr +13 -9
- data/ext/pixbufutils/pixbufutils.rd +1 -1
- metadata +82 -55
- checksums.yaml +0 -7
data/README.md
CHANGED
@@ -1,4 +1,94 @@
|
|
1
1
|
pixbufutils
|
2
2
|
===========
|
3
3
|
|
4
|
-
gdk-pixbuf related utils for ruby
|
4
|
+
gdk-pixbuf related utils for ruby
|
5
|
+
|
6
|
+
|
7
|
+
Methods:
|
8
|
+
--------
|
9
|
+
|
10
|
+
Methods that modify source pixbuf
|
11
|
+
* PixbufUtils.greyscale!(Gdk::Pixbuf src)
|
12
|
+
|
13
|
+
|
14
|
+
* PixbufUtils.greyscale_go!(Gdk::Pixbuf src)
|
15
|
+
|
16
|
+
|
17
|
+
* PixbufUtils.gamma!(Gdk::Pixbuf src, double level)
|
18
|
+
|
19
|
+
|
20
|
+
* PixbufUtils.soften_edges!(Gdk::Pixbuf src, Integer size)
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
Methods that return a modified copy
|
25
|
+
|
26
|
+
* PixbufUtils.remove_alpha(Gdk::Pixbuf src, Gdk::Color col)
|
27
|
+
|
28
|
+
returns new pixbuf with no alpha channel
|
29
|
+
|
30
|
+
|
31
|
+
* PixbufUtils.sharpen(Gdk::Pixbuf src, Integer radius)
|
32
|
+
|
33
|
+
returns new pixbuf
|
34
|
+
|
35
|
+
|
36
|
+
* PixbufUtils.extract_alpha(Gdk::Pixbuf src, Integer cutoff, Boolean force_2bit)
|
37
|
+
returns new pixbuf
|
38
|
+
|
39
|
+
|
40
|
+
* PixbufUtils.blur(Gdk::Pixbuf src, Integer radius)
|
41
|
+
returns new pixbuf
|
42
|
+
|
43
|
+
* PixbufUtils.rotate_90(Gdk::Pixbuf src, Boolean counter_clockwise)
|
44
|
+
|
45
|
+
|
46
|
+
* PixbufUtils.rotate_cw(Gdk::Pixbuf src)
|
47
|
+
|
48
|
+
|
49
|
+
* PixbufUtils.rotate_180(Gdk::Pixbuf src)
|
50
|
+
|
51
|
+
|
52
|
+
* PixbufUtils.rotate(Gdk::Pixbuf src, Integer angle)
|
53
|
+
|
54
|
+
|
55
|
+
* PixbufUtils.rotate_ccw(Gdk::Pixbuf src)
|
56
|
+
|
57
|
+
|
58
|
+
* PixbufUtils.gamma(Gdk::Pixbuf src, double level)
|
59
|
+
|
60
|
+
|
61
|
+
* PixbufUtils.to_tiff(Gdk::Pixbuf src, String filename)
|
62
|
+
|
63
|
+
|
64
|
+
* PixbufUtils.greyscale(Gdk::Pixbuf src)
|
65
|
+
|
66
|
+
|
67
|
+
* PixbufUtils.greyscale_go(Gdk::Pixbuf src)
|
68
|
+
|
69
|
+
|
70
|
+
* PixbufUtils.tint(Gdk::Pixbuf src, Integer r, Integer g, Integer b, Integer alpha=255)
|
71
|
+
|
72
|
+
Tint an image - alpha=0 -> no tint, alpha=255 -> pure tint
|
73
|
+
|
74
|
+
|
75
|
+
* PixbufUtils.perspect_v(Gdk::Pixbuf src, Integer top_x1, Integer top_x2, Integer bot_x1, Integer bot_x2)
|
76
|
+
|
77
|
+
|
78
|
+
* PixbufUtils.mask(Gdk::Pixbuf src, Gdk::Pixbuf mask)
|
79
|
+
|
80
|
+
|
81
|
+
* PixbufUtils.blend5050(Gdk::Pixbuf src1, Gdk::Pixbuf src2)
|
82
|
+
|
83
|
+
|
84
|
+
* PixbufUtils.mask_area(Gdk::Pixbuf mask, Integer cutoff)
|
85
|
+
|
86
|
+
|
87
|
+
* PixbufUtils.scale_max(Gdk::Pixbuf src, gulong max, Gdk::InterpType interp)
|
88
|
+
|
89
|
+
|
90
|
+
* PixbufUtils.draw_scaled(Gdk::Drawable drawable, Gdk::Pixbuf src, Integer x, Integer y, Integer width, Integer height, GdkInterpType interp)
|
91
|
+
|
92
|
+
|
93
|
+
* PixbufUtils.draw_scaled_clip(Gdk::Drawable drawable, Gdk::Pixbuf src, Integer x, Integer y, Integer width, Integer height, Gdk::Rectangle clip_area, Gdk::InterpType interp)
|
94
|
+
|
data/Rakefile
CHANGED
@@ -22,7 +22,7 @@ spec = Gem::Specification.new do |s|
|
|
22
22
|
s.name = "pixbufutils"
|
23
23
|
s.author = "Geoff Youngs"
|
24
24
|
s.email = "git@intersect-uk.co.uk"
|
25
|
-
s.version = "0.0.
|
25
|
+
s.version = "0.0.3"
|
26
26
|
s.homepage = "http://github.com/geoffyoungs/pixbufutils"
|
27
27
|
s.summary = "Additional utils for Gdk::Pixbuf"
|
28
28
|
s.add_dependency("rubber-generate", ">= 0.0.17")
|
@@ -54,7 +54,7 @@ PixbufUtils_CLASS_greyscale_go_pling(VALUE self, VALUE __v_src);
|
|
54
54
|
static VALUE
|
55
55
|
PixbufUtils_CLASS_greyscale_go(VALUE self, VALUE __v_src);
|
56
56
|
static VALUE
|
57
|
-
PixbufUtils_CLASS_tint(
|
57
|
+
PixbufUtils_CLASS_tint(int __p_argc, VALUE *__p_argv, VALUE self);
|
58
58
|
static VALUE
|
59
59
|
PixbufUtils_CLASS_perspect_v(VALUE self, VALUE __v_src, VALUE __v_top_x1, VALUE __v_top_x2, VALUE __v_bot_x1, VALUE __v_bot_x2);
|
60
60
|
static VALUE
|
@@ -1089,12 +1089,13 @@ static GdkPixbuf *pixbuf_greyscale_go(GdkPixbuf *src, GdkPixbuf *dest)
|
|
1089
1089
|
return dest;
|
1090
1090
|
}
|
1091
1091
|
|
1092
|
-
static inline char pu_clamp(int x
|
1092
|
+
static inline unsigned char pu_clamp(int x)
|
1093
1093
|
{
|
1094
|
-
|
1094
|
+
unsigned char i = (x > 255) ? 255 : (x < 0 ? 0 : x);
|
1095
|
+
return i;
|
1095
1096
|
}
|
1096
1097
|
|
1097
|
-
static GdkPixbuf *pixbuf_tint(GdkPixbuf *src, GdkPixbuf *dest, int r, int g, int b)
|
1098
|
+
static GdkPixbuf *pixbuf_tint(GdkPixbuf *src, GdkPixbuf *dest, int r, int g, int b, int alpha)
|
1098
1099
|
{
|
1099
1100
|
int s_has_alpha, d_has_alpha;
|
1100
1101
|
int s_width, s_height, s_rowstride;
|
@@ -1130,10 +1131,13 @@ static GdkPixbuf *pixbuf_tint(GdkPixbuf *src, GdkPixbuf *dest, int r, int g, int
|
|
1130
1131
|
|
1131
1132
|
for (j = 0; j < s_width; j++) {
|
1132
1133
|
grey = GO_RGB_TO_GREY(sp[0], sp[1], sp[2]);
|
1133
|
-
|
1134
|
-
dp[0] = pu_clamp(grey + r
|
1135
|
-
|
1136
|
-
|
1134
|
+
|
1135
|
+
dp[0] = pu_clamp(pu_clamp(((int)grey + r) * alpha / 255) + pu_clamp((int)sp[0] * (255 - alpha) / 255)); /* red */
|
1136
|
+
|
1137
|
+
//fprintf(stderr, "alpha=%i, r=%i, grey=%i -> %i + %i = %i\n", alpha, r, grey, pu_clamp(((int)grey + r) * alpha / 255), pu_clamp((int)sp[0] * (255 - alpha) / 255), dp[0]); /* red */
|
1138
|
+
|
1139
|
+
dp[1] = pu_clamp(pu_clamp((grey + g) * alpha / 255) + pu_clamp((int)sp[1] * (255 - alpha) / 255)); /* green */
|
1140
|
+
dp[2] = pu_clamp(pu_clamp((grey + b) * alpha / 255) + pu_clamp((int)sp[2] * (255 - alpha) / 255)); /* blue */
|
1137
1141
|
|
1138
1142
|
if (s_has_alpha)
|
1139
1143
|
{
|
@@ -1405,7 +1409,7 @@ PixbufUtils_CLASS_remove_alpha(VALUE self, VALUE __v_src, VALUE __v_col)
|
|
1405
1409
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1406
1410
|
__orig_col = col = RVAL2BOXED(__v_col, GDK_TYPE_COLOR);
|
1407
1411
|
|
1408
|
-
#line
|
1412
|
+
#line 1364 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1409
1413
|
|
1410
1414
|
do {
|
1411
1415
|
GdkPixbuf * dest ;
|
@@ -1437,7 +1441,7 @@ PixbufUtils_CLASS_sharpen(VALUE self, VALUE __v_src, VALUE __v_radius)
|
|
1437
1441
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1438
1442
|
__orig_radius = radius = NUM2INT(__v_radius);
|
1439
1443
|
|
1440
|
-
#line
|
1444
|
+
#line 1385 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1441
1445
|
IGNORE(self);
|
1442
1446
|
do { __p_retval = unref_pixbuf((pixbuf_sharpen(src, radius))); goto out; } while(0);
|
1443
1447
|
out:
|
@@ -1473,7 +1477,7 @@ PixbufUtils_CLASS_extract_alpha(int __p_argc, VALUE *__p_argv, VALUE self)
|
|
1473
1477
|
force_2bit = FALSE;
|
1474
1478
|
|
1475
1479
|
|
1476
|
-
#line
|
1480
|
+
#line 1389 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1477
1481
|
IGNORE(self);
|
1478
1482
|
do { __p_retval = unref_pixbuf((pixbuf_extract_alpha(src, cutoff, force_2bit))); goto out; } while(0);
|
1479
1483
|
out:
|
@@ -1490,7 +1494,7 @@ PixbufUtils_CLASS_blur(VALUE self, VALUE __v_src, VALUE __v_radius)
|
|
1490
1494
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1491
1495
|
__orig_radius = radius = NUM2INT(__v_radius);
|
1492
1496
|
|
1493
|
-
#line
|
1497
|
+
#line 1393 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1494
1498
|
IGNORE(self);
|
1495
1499
|
do { __p_retval = unref_pixbuf((pixbuf_blur(gdk_pixbuf_copy(src), radius))); goto out; } while(0);
|
1496
1500
|
out:
|
@@ -1507,7 +1511,7 @@ PixbufUtils_CLASS_rotate_90(VALUE self, VALUE __v_src, VALUE __v_counter_clockwi
|
|
1507
1511
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1508
1512
|
__orig_counter_clockwise = counter_clockwise = RTEST(__v_counter_clockwise);
|
1509
1513
|
|
1510
|
-
#line
|
1514
|
+
#line 1397 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1511
1515
|
IGNORE(self);
|
1512
1516
|
do { __p_retval = unref_pixbuf((pixbuf_rotate(src, counter_clockwise ? ANGLE_270 : ANGLE_90))); goto out; } while(0);
|
1513
1517
|
out:
|
@@ -1522,7 +1526,7 @@ PixbufUtils_CLASS_rotate_cw(VALUE self, VALUE __v_src)
|
|
1522
1526
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1523
1527
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1524
1528
|
|
1525
|
-
#line
|
1529
|
+
#line 1401 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1526
1530
|
IGNORE(self);
|
1527
1531
|
do { __p_retval = unref_pixbuf((pixbuf_rotate(src, ANGLE_90))); goto out; } while(0);
|
1528
1532
|
out:
|
@@ -1537,7 +1541,7 @@ PixbufUtils_CLASS_rotate_180(VALUE self, VALUE __v_src)
|
|
1537
1541
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1538
1542
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1539
1543
|
|
1540
|
-
#line
|
1544
|
+
#line 1405 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1541
1545
|
IGNORE(self);
|
1542
1546
|
do { __p_retval = unref_pixbuf((pixbuf_rotate(src, ANGLE_180))); goto out; } while(0);
|
1543
1547
|
out:
|
@@ -1554,7 +1558,7 @@ PixbufUtils_CLASS_rotate(VALUE self, VALUE __v_src, VALUE __v_angle)
|
|
1554
1558
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1555
1559
|
__orig_angle = angle = NUM2INT(__v_angle);
|
1556
1560
|
|
1557
|
-
#line
|
1561
|
+
#line 1409 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1558
1562
|
IGNORE(self);
|
1559
1563
|
g_assert(angle == 0 || angle == 90 || angle == 180 || angle == 270);
|
1560
1564
|
do { __p_retval = unref_pixbuf((pixbuf_rotate(src, (rotate_angle_t)angle))); goto out; } while(0);
|
@@ -1570,7 +1574,7 @@ PixbufUtils_CLASS_rotate_ccw(VALUE self, VALUE __v_src)
|
|
1570
1574
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1571
1575
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1572
1576
|
|
1573
|
-
#line
|
1577
|
+
#line 1414 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1574
1578
|
IGNORE(self);
|
1575
1579
|
do { __p_retval = unref_pixbuf((pixbuf_rotate(src, ANGLE_270))); goto out; } while(0);
|
1576
1580
|
out:
|
@@ -1587,7 +1591,7 @@ PixbufUtils_CLASS_gamma_pling(VALUE self, VALUE __v_src, VALUE __v_level)
|
|
1587
1591
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1588
1592
|
__orig_level = level = NUM2DBL(__v_level);
|
1589
1593
|
|
1590
|
-
#line
|
1594
|
+
#line 1418 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1591
1595
|
IGNORE(self);
|
1592
1596
|
do { __p_retval = GOBJ2RVAL(pixbuf_gamma(src, src, level)); goto out; } while(0);
|
1593
1597
|
out:
|
@@ -1604,7 +1608,7 @@ PixbufUtils_CLASS_soften_edges_pling(VALUE self, VALUE __v_src, VALUE __v_size)
|
|
1604
1608
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1605
1609
|
__orig_size = size = NUM2INT(__v_size);
|
1606
1610
|
|
1607
|
-
#line
|
1611
|
+
#line 1422 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1608
1612
|
IGNORE(self);
|
1609
1613
|
do { __p_retval = GOBJ2RVAL(pixbuf_soften_edges(src, size)); goto out; } while(0);
|
1610
1614
|
out:
|
@@ -1621,7 +1625,7 @@ PixbufUtils_CLASS_gamma(VALUE self, VALUE __v_src, VALUE __v_level)
|
|
1621
1625
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1622
1626
|
__orig_level = level = NUM2DBL(__v_level);
|
1623
1627
|
|
1624
|
-
#line
|
1628
|
+
#line 1426 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1625
1629
|
IGNORE(self);
|
1626
1630
|
do { __p_retval = unref_pixbuf((pixbuf_gamma(src, gdk_pixbuf_copy(src), level))); goto out; } while(0);
|
1627
1631
|
out:
|
@@ -1636,7 +1640,7 @@ PixbufUtils_CLASS_greyscale_pling(VALUE self, VALUE __v_src)
|
|
1636
1640
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1637
1641
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1638
1642
|
|
1639
|
-
#line
|
1643
|
+
#line 1430 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1640
1644
|
IGNORE(self);
|
1641
1645
|
do { __p_retval = GOBJ2RVAL(pixbuf_greyscale(src, src)); goto out; } while(0);
|
1642
1646
|
out:
|
@@ -1653,7 +1657,7 @@ PixbufUtils_CLASS_to_tiff(VALUE self, VALUE __v_src, VALUE __v_filename)
|
|
1653
1657
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1654
1658
|
__orig_filename = filename = ( NIL_P(__v_filename) ? NULL : StringValuePtr(__v_filename) );
|
1655
1659
|
|
1656
|
-
#line
|
1660
|
+
#line 1434 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1657
1661
|
IGNORE(self);
|
1658
1662
|
do { __p_retval = ((pixbuf_save_tiff(src, filename)) ? Qtrue : Qfalse); goto out; } while(0);
|
1659
1663
|
out:
|
@@ -1668,7 +1672,7 @@ PixbufUtils_CLASS_greyscale(VALUE self, VALUE __v_src)
|
|
1668
1672
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1669
1673
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1670
1674
|
|
1671
|
-
#line
|
1675
|
+
#line 1438 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1672
1676
|
IGNORE(self);
|
1673
1677
|
do { __p_retval = unref_pixbuf((pixbuf_greyscale(src, gdk_pixbuf_copy(src)))); goto out; } while(0);
|
1674
1678
|
out:
|
@@ -1683,7 +1687,7 @@ PixbufUtils_CLASS_greyscale_go_pling(VALUE self, VALUE __v_src)
|
|
1683
1687
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1684
1688
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1685
1689
|
|
1686
|
-
#line
|
1690
|
+
#line 1442 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1687
1691
|
IGNORE(self);
|
1688
1692
|
do { __p_retval = GOBJ2RVAL(pixbuf_greyscale_go(src, src)); goto out; } while(0);
|
1689
1693
|
out:
|
@@ -1698,7 +1702,7 @@ PixbufUtils_CLASS_greyscale_go(VALUE self, VALUE __v_src)
|
|
1698
1702
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1699
1703
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1700
1704
|
|
1701
|
-
#line
|
1705
|
+
#line 1446 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1702
1706
|
IGNORE(self);
|
1703
1707
|
do { __p_retval = unref_pixbuf((pixbuf_greyscale_go(src, gdk_pixbuf_copy(src)))); goto out; } while(0);
|
1704
1708
|
out:
|
@@ -1707,21 +1711,41 @@ out:
|
|
1707
1711
|
}
|
1708
1712
|
|
1709
1713
|
static VALUE
|
1710
|
-
PixbufUtils_CLASS_tint(
|
1714
|
+
PixbufUtils_CLASS_tint(int __p_argc, VALUE *__p_argv, VALUE self)
|
1711
1715
|
{
|
1712
1716
|
VALUE __p_retval = Qnil;
|
1717
|
+
VALUE __v_src = Qnil;
|
1713
1718
|
GdkPixbuf * src; GdkPixbuf * __orig_src;
|
1719
|
+
VALUE __v_r = Qnil;
|
1714
1720
|
int r; int __orig_r;
|
1721
|
+
VALUE __v_g = Qnil;
|
1715
1722
|
int g; int __orig_g;
|
1723
|
+
VALUE __v_b = Qnil;
|
1716
1724
|
int b; int __orig_b;
|
1725
|
+
VALUE __v_alpha = Qnil;
|
1726
|
+
int alpha; int __orig_alpha;
|
1727
|
+
|
1728
|
+
/* Scan arguments */
|
1729
|
+
rb_scan_args(__p_argc, __p_argv, "41",&__v_src, &__v_r, &__v_g, &__v_b, &__v_alpha);
|
1730
|
+
|
1731
|
+
/* Set defaults */
|
1717
1732
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1733
|
+
|
1718
1734
|
__orig_r = r = NUM2INT(__v_r);
|
1735
|
+
|
1719
1736
|
__orig_g = g = NUM2INT(__v_g);
|
1737
|
+
|
1720
1738
|
__orig_b = b = NUM2INT(__v_b);
|
1721
1739
|
|
1722
|
-
|
1740
|
+
if (__p_argc > 4)
|
1741
|
+
__orig_alpha = alpha = NUM2INT(__v_alpha);
|
1742
|
+
else
|
1743
|
+
alpha = 255;
|
1744
|
+
|
1745
|
+
|
1746
|
+
#line 1450 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1723
1747
|
IGNORE(self);
|
1724
|
-
do { __p_retval = unref_pixbuf((pixbuf_tint(src, gdk_pixbuf_copy(src), r, g, b))); goto out; } while(0);
|
1748
|
+
do { __p_retval = unref_pixbuf((pixbuf_tint(src, gdk_pixbuf_copy(src), r, g, b, alpha))); goto out; } while(0);
|
1725
1749
|
out:
|
1726
1750
|
;
|
1727
1751
|
return __p_retval;
|
@@ -1742,7 +1766,7 @@ PixbufUtils_CLASS_perspect_v(VALUE self, VALUE __v_src, VALUE __v_top_x1, VALUE
|
|
1742
1766
|
__orig_bot_x1 = bot_x1 = NUM2INT(__v_bot_x1);
|
1743
1767
|
__orig_bot_x2 = bot_x2 = NUM2INT(__v_bot_x2);
|
1744
1768
|
|
1745
|
-
#line
|
1769
|
+
#line 1454 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1746
1770
|
IGNORE(self);
|
1747
1771
|
do { __p_retval = unref_pixbuf((pixbuf_perspect_v(src, top_x1, top_x2, bot_x1, bot_x2))); goto out; } while(0);
|
1748
1772
|
out:
|
@@ -1759,7 +1783,7 @@ PixbufUtils_CLASS_mask(VALUE self, VALUE __v_src, VALUE __v_mask)
|
|
1759
1783
|
__orig_src = src = GDK_PIXBUF(RVAL2GOBJ(__v_src));
|
1760
1784
|
__orig_mask = mask = GDK_PIXBUF(RVAL2GOBJ(__v_mask));
|
1761
1785
|
|
1762
|
-
#line
|
1786
|
+
#line 1458 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1763
1787
|
IGNORE(self);
|
1764
1788
|
do { __p_retval = unref_pixbuf((pixbuf_mask(src, mask))); goto out; } while(0);
|
1765
1789
|
out:
|
@@ -1777,7 +1801,7 @@ PixbufUtils_CLASS_blend5050(VALUE self, VALUE __v_src1, VALUE __v_src2)
|
|
1777
1801
|
__orig_src1 = src1 = GDK_PIXBUF(RVAL2GOBJ(__v_src1));
|
1778
1802
|
__orig_src2 = src2 = GDK_PIXBUF(RVAL2GOBJ(__v_src2));
|
1779
1803
|
|
1780
|
-
#line
|
1804
|
+
#line 1462 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1781
1805
|
IGNORE(self);
|
1782
1806
|
do { __p_retval = unref_pixbuf((pixbuf_blend5050(src1, src2))); goto out; } while(0);
|
1783
1807
|
out:
|
@@ -1807,7 +1831,7 @@ PixbufUtils_CLASS_mask_area(int __p_argc, VALUE *__p_argv, VALUE self)
|
|
1807
1831
|
cutoff = 127;
|
1808
1832
|
|
1809
1833
|
|
1810
|
-
#line
|
1834
|
+
#line 1466 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1811
1835
|
IGNORE(self);
|
1812
1836
|
do { __p_retval = pixbuf_mask_area(mask, cutoff); goto out; } while(0);
|
1813
1837
|
out:
|
@@ -1840,7 +1864,7 @@ PixbufUtils_CLASS_scale_max(int __p_argc, VALUE *__p_argv, VALUE self)
|
|
1840
1864
|
interp = GDK_INTERP_BILINEAR;
|
1841
1865
|
|
1842
1866
|
|
1843
|
-
#line
|
1867
|
+
#line 1470 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1844
1868
|
|
1845
1869
|
do {
|
1846
1870
|
gulong width, height, largest;
|
@@ -1902,7 +1926,7 @@ PixbufUtils_CLASS_draw_scaled(int __p_argc, VALUE *__p_argv, VALUE self)
|
|
1902
1926
|
interp = GDK_INTERP_BILINEAR;
|
1903
1927
|
|
1904
1928
|
|
1905
|
-
#line
|
1929
|
+
#line 1488 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1906
1930
|
|
1907
1931
|
do {
|
1908
1932
|
GdkPixbuf * tmp ;
|
@@ -1970,7 +1994,7 @@ PixbufUtils_CLASS_draw_scaled_clip(int __p_argc, VALUE *__p_argv, VALUE self)
|
|
1970
1994
|
interp = GDK_INTERP_BILINEAR;
|
1971
1995
|
|
1972
1996
|
|
1973
|
-
#line
|
1997
|
+
#line 1524 "/home/geoff/Projects/pixbufutils/ext/pixbufutils/pixbufutils.cr"
|
1974
1998
|
|
1975
1999
|
do {
|
1976
2000
|
GdkPixbuf * tmp ;
|
@@ -2020,7 +2044,7 @@ Init_pixbufutils(void)
|
|
2020
2044
|
rb_define_singleton_method(mPixbufUtils, "greyscale", PixbufUtils_CLASS_greyscale, 1);
|
2021
2045
|
rb_define_singleton_method(mPixbufUtils, "greyscale_go!", PixbufUtils_CLASS_greyscale_go_pling, 1);
|
2022
2046
|
rb_define_singleton_method(mPixbufUtils, "greyscale_go", PixbufUtils_CLASS_greyscale_go, 1);
|
2023
|
-
rb_define_singleton_method(mPixbufUtils, "tint", PixbufUtils_CLASS_tint,
|
2047
|
+
rb_define_singleton_method(mPixbufUtils, "tint", PixbufUtils_CLASS_tint, -1);
|
2024
2048
|
rb_define_singleton_method(mPixbufUtils, "perspect_v", PixbufUtils_CLASS_perspect_v, 5);
|
2025
2049
|
rb_define_singleton_method(mPixbufUtils, "mask", PixbufUtils_CLASS_mask, 2);
|
2026
2050
|
rb_define_singleton_method(mPixbufUtils, "blend5050", PixbufUtils_CLASS_blend5050, 2);
|
@@ -1036,12 +1036,13 @@ static GdkPixbuf *pixbuf_greyscale_go(GdkPixbuf *src, GdkPixbuf *dest)
|
|
1036
1036
|
return dest;
|
1037
1037
|
}
|
1038
1038
|
|
1039
|
-
static inline char pu_clamp(int x
|
1039
|
+
static inline unsigned char pu_clamp(int x)
|
1040
1040
|
{
|
1041
|
-
|
1041
|
+
unsigned char i = (x > 255) ? 255 : (x < 0 ? 0 : x);
|
1042
|
+
return i;
|
1042
1043
|
}
|
1043
1044
|
|
1044
|
-
static GdkPixbuf *pixbuf_tint(GdkPixbuf *src, GdkPixbuf *dest, int r, int g, int b)
|
1045
|
+
static GdkPixbuf *pixbuf_tint(GdkPixbuf *src, GdkPixbuf *dest, int r, int g, int b, int alpha)
|
1045
1046
|
{
|
1046
1047
|
int s_has_alpha, d_has_alpha;
|
1047
1048
|
int s_width, s_height, s_rowstride;
|
@@ -1077,10 +1078,13 @@ static GdkPixbuf *pixbuf_tint(GdkPixbuf *src, GdkPixbuf *dest, int r, int g, int
|
|
1077
1078
|
|
1078
1079
|
for (j = 0; j < s_width; j++) {
|
1079
1080
|
grey = GO_RGB_TO_GREY(sp[0], sp[1], sp[2]);
|
1080
|
-
|
1081
|
-
dp[0] = pu_clamp(grey + r
|
1082
|
-
|
1083
|
-
|
1081
|
+
|
1082
|
+
dp[0] = pu_clamp(pu_clamp(((int)grey + r) * alpha / 255) + pu_clamp((int)sp[0] * (255 - alpha) / 255)); /* red */
|
1083
|
+
|
1084
|
+
//fprintf(stderr, "alpha=%i, r=%i, grey=%i -> %i + %i = %i\n", alpha, r, grey, pu_clamp(((int)grey + r) * alpha / 255), pu_clamp((int)sp[0] * (255 - alpha) / 255), dp[0]); /* red */
|
1085
|
+
|
1086
|
+
dp[1] = pu_clamp(pu_clamp((grey + g) * alpha / 255) + pu_clamp((int)sp[1] * (255 - alpha) / 255)); /* green */
|
1087
|
+
dp[2] = pu_clamp(pu_clamp((grey + b) * alpha / 255) + pu_clamp((int)sp[2] * (255 - alpha) / 255)); /* blue */
|
1084
1088
|
|
1085
1089
|
if (s_has_alpha)
|
1086
1090
|
{
|
@@ -1443,9 +1447,9 @@ module PixbufUtils
|
|
1443
1447
|
IGNORE(self);
|
1444
1448
|
return pixbuf_greyscale_go(src, gdk_pixbuf_copy(src));
|
1445
1449
|
end
|
1446
|
-
def unref_pixbuf:self.tint(GdkPixbuf *src, int r, int g, int b)
|
1450
|
+
def unref_pixbuf:self.tint(GdkPixbuf *src, int r, int g, int b, int alpha=255)
|
1447
1451
|
IGNORE(self);
|
1448
|
-
return pixbuf_tint(src, gdk_pixbuf_copy(src), r, g, b);
|
1452
|
+
return pixbuf_tint(src, gdk_pixbuf_copy(src), r, g, b, alpha);
|
1449
1453
|
end
|
1450
1454
|
def unref_pixbuf:self.perspect_v(GdkPixbuf *src, int top_x1, int top_x2, int bot_x1, int bot_x2)
|
1451
1455
|
IGNORE(self);
|
@@ -50,7 +50,7 @@
|
|
50
50
|
--- PixbufUtils.greyscale_go(GdkPixbuf* src)
|
51
51
|
|
52
52
|
|
53
|
-
--- PixbufUtils.tint(GdkPixbuf* src, Integer r, Integer g, Integer b)
|
53
|
+
--- PixbufUtils.tint(GdkPixbuf* src, Integer r, Integer g, Integer b, Integer alpha)
|
54
54
|
|
55
55
|
|
56
56
|
--- PixbufUtils.perspect_v(GdkPixbuf* src, Integer top_x1, Integer top_x2, Integer bot_x1, Integer bot_x2)
|
metadata
CHANGED
@@ -1,65 +1,81 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: pixbufutils
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Geoff Youngs
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
|
18
|
+
date: 2013-08-14 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
14
21
|
name: rubber-generate
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.17
|
20
|
-
type: :runtime
|
21
22
|
prerelease: false
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 61
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 0
|
32
|
+
- 17
|
26
33
|
version: 0.0.17
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: glib2
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.1.6
|
34
34
|
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: glib2
|
35
38
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
- !ruby/object:Gem::Version
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 31
|
45
|
+
segments:
|
46
|
+
- 1
|
47
|
+
- 1
|
48
|
+
- 6
|
47
49
|
version: 1.1.6
|
48
50
|
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: gdk_pixbuf2
|
49
54
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 31
|
61
|
+
segments:
|
62
|
+
- 1
|
63
|
+
- 1
|
64
|
+
- 6
|
54
65
|
version: 1.1.6
|
66
|
+
type: :runtime
|
67
|
+
version_requirements: *id003
|
55
68
|
description: |
|
56
69
|
Misc functions for alpha channel extraction, gamma, tinting, masking, blur etc.
|
70
|
+
|
57
71
|
email: git@intersect-uk.co.uk
|
58
72
|
executables: []
|
59
|
-
|
73
|
+
|
74
|
+
extensions:
|
60
75
|
- ext/pixbufutils/extconf.rb
|
61
76
|
extra_rdoc_files: []
|
62
|
-
|
77
|
+
|
78
|
+
files:
|
63
79
|
- ext/pixbufutils/pixbufutils.c
|
64
80
|
- ext/pixbufutils/pixbufutils.cr
|
65
81
|
- ext/pixbufutils/pixbufutils.rd
|
@@ -69,25 +85,36 @@ files:
|
|
69
85
|
- ext/pixbufutils/extconf.rb
|
70
86
|
homepage: http://github.com/geoffyoungs/pixbufutils
|
71
87
|
licenses: []
|
72
|
-
|
88
|
+
|
73
89
|
post_install_message:
|
74
90
|
rdoc_options: []
|
75
|
-
|
91
|
+
|
92
|
+
require_paths:
|
76
93
|
- lib
|
77
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
hash: 3
|
109
|
+
segments:
|
110
|
+
- 0
|
111
|
+
version: "0"
|
87
112
|
requirements: []
|
113
|
+
|
88
114
|
rubyforge_project:
|
89
|
-
rubygems_version:
|
115
|
+
rubygems_version: 1.8.15
|
90
116
|
signing_key:
|
91
|
-
specification_version:
|
117
|
+
specification_version: 3
|
92
118
|
summary: Additional utils for Gdk::Pixbuf
|
93
119
|
test_files: []
|
120
|
+
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: cf5ffcd50ee23580a40150ae57074706865a792e
|
4
|
-
data.tar.gz: a856f0dd549e1b91d017a2e8117ab29b03adb1d9
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: db960d74b9cd12d827f5a317a6de628a4ec0b0763b40c16513478249b0bf5ed8044d22bb5b641b0a216a6924df3a45bbf233cf3fa20281174c16fa79ad279623
|
7
|
-
data.tar.gz: 0fd96ecc683c7a48c9d21dac79d82ddaa3c3d14b69f239f345946bca255771f3fdf8f5bc644ae69760254d0b852198c17a91d3702e73f2ad1588ffb972a75d35
|