gdk4 3.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # Ruby/GDK4
2
+
3
+ Ruby/GDK4 is a Ruby binding of GDK 4.
4
+ https://developer.gnome.org/gdk4/3.90/
5
+
6
+ ## Requirements
7
+
8
+ * Ruby/GLib2, Ruby/ATK, Ruby/Pango and Ruby/GdkPixbuf2 in
9
+ [Ruby-GNOME2](https://ruby-gnome2.osdn.jp/)
10
+ * [rcairo](https://github.com/rcairo/rcairo)
11
+ * [GTK+](https://www.gtk.org/) 3.93 or later
12
+
13
+ ## Test
14
+
15
+ With jhbuild environment:
16
+
17
+ ```bash
18
+ #!/bin/bash
19
+ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
20
+
21
+ export GI_TYPELIB_PATH="/home/$USER/jhbuild/install/lib/girepository-1.0"
22
+ export LD_LIBRARY_PATH="/home/$USER/jhbuild/install/lib"
23
+
24
+ if [ $# -eq 0 ]
25
+ then
26
+ $DIR/gdk4/test/run-test.rb
27
+ else
28
+ $DIR/gdk4/test/run-test.rb -t $1
29
+ fi
30
+ ```
31
+
32
+ Run with:
33
+
34
+ ```
35
+ runtest.sh
36
+ # or
37
+ runtest.sh TestGdkRectangle
38
+ ```
39
+
40
+ ## Gtk/Gdk Roadmap
41
+
42
+ * https://wiki.gnome.org/Projects/GTK+/Roadmap/GTK4
43
+ * https://wiki.gnome.org/Projects/GTK+/gdk4
44
+
45
+ ## Install
46
+
47
+ gem install gdk4
48
+
49
+ ## License
50
+
51
+ Copyright (c) 2002-2018 Ruby-GNOME2 Project Team
52
+
53
+ This program is free software. You can distribute/modify this program
54
+ under the terms of the GNU LESSER GENERAL PUBLIC LICENSE Version 2.1.
55
+
56
+ ## Project Website
57
+
58
+ https://ruby-gnome2.osdn.jp/
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ # -*- ruby -*-
2
+ #
3
+ # Copyright (C) 2011-2018 Ruby-GNOME2 Project Team
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ $LOAD_PATH.unshift("./../glib2/lib")
20
+ require "gnome2/rake/package-task"
21
+
22
+ package_name = File.basename(__dir__)
23
+ spec = Gem::Specification.load("#{package_name}.gemspec")
24
+
25
+ GNOME2::Rake::PackageTask.define(spec, __dir__) do |package|
26
+ end
@@ -0,0 +1,44 @@
1
+ # Copyright (C) 2017-2019 Ruby-GNOME Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ require "pkg-config"
18
+ require "native-package-installer"
19
+
20
+ if File.exist?(File.join(__dir__, "..", "vendor"))
21
+ task :default => "nothing"
22
+ else
23
+ task :default => "dependency:check"
24
+ end
25
+
26
+ task :nothing do
27
+ end
28
+
29
+ namespace :dependency do
30
+ desc "Check dependency"
31
+ task :check do
32
+ package_id = "gdk-4.0"
33
+ unless PKGConfig.check_version?(package_id)
34
+ unless NativePackageInstaller.install(:altlinux => "libgtk+4-devel",
35
+ :debian => "libgtk-4-dev",
36
+ :redhat => "pkgconfig(#{package_id})",
37
+ :homebrew => "gtk+4",
38
+ :macports => "gtk4",
39
+ :msys2 => "gtk4")
40
+ exit(false)
41
+ end
42
+ end
43
+ end
44
+ end
data/gdk4.gemspec ADDED
@@ -0,0 +1,47 @@
1
+ # -*- ruby -*-
2
+ #
3
+ # Copyright (C) 2018 Ruby-GNOME Project Team
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ require_relative "../glib2/version"
20
+
21
+ Gem::Specification.new do |s|
22
+ s.name = "gdk4"
23
+ s.summary = "Ruby/GDK4 is a Ruby binding of GDK-4.x."
24
+ s.description = "Ruby/GDK4 is a Ruby binding of GDK-4.x."
25
+ s.author = "The Ruby-GNOME Project Team"
26
+ s.email = "ruby-gnome2-devel-en@lists.sourceforge.net"
27
+ s.homepage = "https://ruby-gnome2.osdn.jp/"
28
+ s.licenses = ["LGPL-2.1+"]
29
+ s.version = ruby_glib2_version
30
+ s.extensions = ["dependency-check/Rakefile"]
31
+ s.require_paths = ["lib"]
32
+ s.files = [
33
+ "COPYING.LIB",
34
+ "README.md",
35
+ "Rakefile",
36
+ "#{s.name}.gemspec",
37
+ "dependency-check/Rakefile",
38
+ ]
39
+ s.files += Dir.glob("lib/**/*.rb")
40
+ s.files += Dir.glob("test/**/*")
41
+
42
+ s.add_runtime_dependency("pango", "= #{s.version}")
43
+ s.add_runtime_dependency("gdk_pixbuf2", "= #{s.version}")
44
+ s.add_runtime_dependency("cairo-gobject", "= #{s.version}")
45
+
46
+ s.metadata["msys2_mingw_dependencies"] = "gtk4"
47
+ end
data/lib/gdk4.rb ADDED
@@ -0,0 +1,43 @@
1
+ # Copyright (C) 2013-2018 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ require "gobject-introspection"
18
+ require "cairo-gobject"
19
+ require "atk"
20
+ require "pango"
21
+ require "gdk_pixbuf2"
22
+
23
+ require "gdk4/loader"
24
+ require "gdk4/x11-loader"
25
+
26
+ module Gdk
27
+ LOG_DOMAIN = "Gdk"
28
+ GLib::Log.set_log_domain(LOG_DOMAIN)
29
+
30
+ class Error < StandardError
31
+ end
32
+
33
+ loader = Loader.new(self)
34
+ loader.load
35
+ x11_loader = X11Loader.new(self)
36
+ x11_loader.load
37
+
38
+ class << self
39
+ def cairo_available?
40
+ true
41
+ end
42
+ end
43
+ end
data/lib/gdk4/cairo.rb ADDED
@@ -0,0 +1,71 @@
1
+ # Copyright (C) 2014-2018 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Cairo
18
+ class Context
19
+ alias_method :set_source_rgba_raw, :set_source_rgba
20
+ def set_source_rgba(rgba, g=nil, b=nil, a=nil)
21
+ case rgba
22
+ when Gdk::RGBA
23
+ set_source_gdk_rgba(rgba)
24
+ when Array
25
+ set_source_rgba_raw(rgba)
26
+ else
27
+ r = rgba
28
+ set_source_rgba_raw([r, g, b, a || 1.0])
29
+ end
30
+ end
31
+
32
+ def source_rgba=(rgba)
33
+ set_source_rgba(rgba)
34
+ rgba
35
+ end
36
+
37
+ alias_method :set_source_pixbuf_raw, :set_source_pixbuf
38
+ def set_source_pixbuf(pixbuf, pixbuf_x=0, pixbuf_y=0)
39
+ set_source_pixbuf_raw(pixbuf, pixbuf_x, pixbuf_y)
40
+ end
41
+ end
42
+
43
+ class Surface
44
+ alias_method :to_pixbuf_raw, :to_pixbuf
45
+ def to_pixbuf(options={})
46
+ src_x = options[:src_x] || 0
47
+ src_y = options[:src_y] || 0
48
+ w = options[:width]
49
+ h = options[:height]
50
+ if w.nil? and respond_to?(:width)
51
+ w = width
52
+ end
53
+ if h.nil? and respond_to?(:height)
54
+ h = height
55
+ end
56
+ to_pixbuf_raw(src_x, src_y, w, h)
57
+ end
58
+
59
+ extend GLib::Deprecatable
60
+
61
+ define_deprecated_method_by_hash_args(:to_pixbuf,
62
+ "src_x, src_y, width, height",
63
+ ":src_x => 0, " +
64
+ ":src_y => 0, " +
65
+ ":width => width, " +
66
+ ":height => height",
67
+ 0) do |surface, src_x, src_y, w, h|
68
+ [{:src_x => src_x, :src_y => src_y, :width => w, :height => h}]
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,80 @@
1
+ # Copyright (C) 2013-2018 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gdk
18
+ class Loader < GObjectIntrospection::Loader
19
+ def load
20
+ self.version = "4.0"
21
+ super("Gdk")
22
+ end
23
+
24
+ private
25
+ def pre_load(repository, namespace)
26
+ define_version(repository, namespace)
27
+ end
28
+
29
+ def define_version(repository, namespace)
30
+ major, minor, micro = repository.get_version(namespace).split(".")
31
+ version_module = Module.new do
32
+ const_set("MAJOR", Integer(major))
33
+ const_set("MINOR", Integer(minor))
34
+ micro = Integer(micro) unless micro.nil?
35
+ const_set("MICRO", micro)
36
+ end
37
+ @base_module.const_set("Version", version_module)
38
+ end
39
+
40
+ def post_load(repository, namespace)
41
+ require_libraries
42
+ end
43
+
44
+ def require_libraries
45
+ require "gdk4/cairo"
46
+ require "gdk4/rectangle"
47
+ require "gdk4/rgba"
48
+ require "gdk4/version"
49
+ end
50
+
51
+ def load_function_info(info)
52
+ name = info.name
53
+ case name
54
+ when /\Apixbuf_/
55
+ target_class = nil
56
+ case $POSTMATCH
57
+ when "get_from_surface"
58
+ target_class = Cairo::Surface
59
+ end
60
+ if target_class
61
+ define_method(info, target_class, "to_pixbuf")
62
+ else
63
+ super
64
+ end
65
+ when /\Acairo_/
66
+ name = $POSTMATCH
67
+ case name
68
+ when "set_source_rgba"
69
+ define_method(info, Cairo::Context, "set_source_gdk_rgba")
70
+ when "rectangle"
71
+ define_method(info, Cairo::Context, "gdk_rectangle")
72
+ else
73
+ define_method(info, Cairo::Context, name)
74
+ end
75
+ else
76
+ super
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,56 @@
1
+ # Copyright (C) 2014-2015 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gdk
18
+ class Rectangle
19
+ alias_method :initialize_raw, :initialize
20
+ def initialize(x, y, width, height)
21
+ initialize_raw
22
+ self.x = x
23
+ self.y = y
24
+ self.width = width
25
+ self.height = height
26
+ end
27
+
28
+ alias_method :intersect_raw, :intersect
29
+ def intersect(other)
30
+ intersected, dest = intersect_raw(other)
31
+ if intersected
32
+ dest
33
+ else
34
+ nil
35
+ end
36
+ end
37
+
38
+ def inspect
39
+ super.gsub(/>\z/) do
40
+ " x=#{x.inspect} y=#{y.inspect} " +
41
+ "width=#{width.inspect} height=#{height.inspect}>"
42
+ end
43
+ end
44
+
45
+ def to_a
46
+ [x, y, width, height]
47
+ end
48
+
49
+ unless instance_method(:==).owner == self
50
+ def ==(other)
51
+ other.is_a?(self.class) and
52
+ self.to_a == other.to_a
53
+ end
54
+ end
55
+ end
56
+ end
data/lib/gdk4/rgba.rb ADDED
@@ -0,0 +1,53 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gdk
18
+ class RGBA
19
+ class << self
20
+ def parse(spec)
21
+ rgba = new
22
+ unless rgba.parse(spec)
23
+ available_formats = [
24
+ "COLOR_NAME",
25
+ "\#RGB",
26
+ "\#RRGGBB",
27
+ "\#RRRGGGBBB",
28
+ "\#RRRRGGGGBBBB",
29
+ "rgb(R, G, B)",
30
+ "rgba(R, G, B, A)",
31
+ ]
32
+ message = "invalid RGBA format: #{spec.inspect} "
33
+ message << "(available formats: #{available_formats.join(', ')})"
34
+ raise ArgumentError, message
35
+ end
36
+ rgba
37
+ end
38
+ end
39
+
40
+ alias_method :initialize_raw, :initialize
41
+ def initialize(red=nil, green=nil, blue=nil, alpha=nil)
42
+ initialize_raw
43
+ self.red = red if red
44
+ self.green = green if green
45
+ self.blue = blue if blue
46
+ self.alpha = alpha || 1.0
47
+ end
48
+
49
+ def to_a
50
+ [red, green, blue, alpha]
51
+ end
52
+ end
53
+ end