From 6e27a3e4696ede3eab720f25d169e8f6ed00bd0b Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 8 Nov 2014 08:53:02 -0500 Subject: render: Move color module to sly/render directory. * sly/color.scm: Delete. * sly/render/color.scm: New file. * Makefile.am (SOURCES): Add new file. Delete old one. * sly/font.scm: Use (sly render color) module. * sly/render/camera.scm: Likewise. * sly/render/mesh.scm: Likewise. * sly/render/shader.scm: Likewise. * sly/render/sprite.scm: Likewise. * sly/render/texture.scm: Likewise. * sly/render/vertex-array.scm: Likewise. * sly/transition.scm: Likewise. * examples/font.scm: Likewise. * examples/simple.scm: Likewise. * examples/tilemap.scm: Likewise. * examples/transition.scm: Likewise. --- Makefile.am | 2 +- examples/font.scm | 2 +- examples/simple.scm | 2 +- examples/tilemap.scm | 2 +- examples/transition.scm | 2 +- sly/color.scm | 171 -------------------------------------------- sly/font.scm | 2 +- sly/render/camera.scm | 2 +- sly/render/color.scm | 171 ++++++++++++++++++++++++++++++++++++++++++++ sly/render/mesh.scm | 2 +- sly/render/shader.scm | 2 +- sly/render/sprite.scm | 2 +- sly/render/texture.scm | 2 +- sly/render/vertex-array.scm | 2 +- sly/transition.scm | 2 +- 15 files changed, 184 insertions(+), 184 deletions(-) delete mode 100644 sly/color.scm create mode 100644 sly/render/color.scm diff --git a/Makefile.am b/Makefile.am index 24ebbb9..7a03e2a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,7 +25,6 @@ SOURCES = \ sly/agenda.scm \ sly/animation.scm \ sly/audio.scm \ - sly/color.scm \ sly/config.scm \ sly/coroutine.scm \ sly/event.scm \ @@ -46,6 +45,7 @@ SOURCES = \ sly/transition.scm \ sly/window.scm \ sly/render/utils.scm \ + sly/render/color.scm \ sly/render/camera.scm \ sly/render/framebuffer.scm \ sly/render/mesh.scm \ diff --git a/examples/font.scm b/examples/font.scm index d011899..8ce7976 100644 --- a/examples/font.scm +++ b/examples/font.scm @@ -17,7 +17,7 @@ (use-modules (sly agenda) (sly fps) - (sly color) + (sly render color) (sly font) (sly game) (sly input mouse) diff --git a/examples/simple.scm b/examples/simple.scm index cef0edb..0fd4503 100644 --- a/examples/simple.scm +++ b/examples/simple.scm @@ -23,7 +23,7 @@ (sly math transform) (sly vector) (sly window) - (sly color)) + (sly render color)) (load "common.scm") diff --git a/examples/tilemap.scm b/examples/tilemap.scm index 3c0d6f0..8aabdf9 100644 --- a/examples/tilemap.scm +++ b/examples/tilemap.scm @@ -28,7 +28,7 @@ (sly render scene) (sly signal) (sly camera) - (sly color) + (sly render color) (sly transition) (sly utils) (sly input keyboard)) diff --git a/examples/transition.scm b/examples/transition.scm index 1e18e0e..9370f00 100644 --- a/examples/transition.scm +++ b/examples/transition.scm @@ -19,7 +19,7 @@ (sly render sprite) (sly vector) (sly window) - (sly color) + (sly render color) (sly signal) (sly render texture) (sly transition)) diff --git a/sly/color.scm b/sly/color.scm deleted file mode 100644 index 2611b31..0000000 --- a/sly/color.scm +++ /dev/null @@ -1,171 +0,0 @@ -;;; Sly -;;; Copyright (C) 2013, 2014 David Thompson -;;; -;;; This program is free software: you can redistribute it and/or -;;; modify it under the terms of the GNU General Public License as -;;; published by the Free Software Foundation, either version 3 of the -;;; License, or (at your option) any later version. -;;; -;;; This program is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;;; General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with this program. If not, see -;;; . - -;;; Commentary: -;; -;; Color. -;; -;;; Code: - -(define-module (sly color) - #:use-module (ice-9 match) - #:use-module (gl) - #:use-module (srfi srfi-9) - #:use-module (srfi srfi-1) - #:use-module (sly math) - #:export ( - make-color - color? - color-r color-g color-b color-a - rgba rgb - color* color+ color- color-inverse color-lerp - white black red green blue yellow magenta cyan transparent - tango-light-butter tango-butter tango-dark-butter - tango-light-orange tango-orange tango-dark-orange - tango-light-chocolate tango-chocolate tango-dark-chocolate - tango-light-chameleon tango-chameleon tango-dark-chameleon - tango-light-sky-blue tango-sky-blue tango-dark-sky-blue - tango-light-plum tango-plum tango-dark-plum - tango-light-scarlet-red tango-scarlet-red tango-dark-scarlet-red - tango-aluminium-1 tango-aluminium-2 tango-aluminium-3 - tango-aluminium-4 tango-aluminium-5 tango-aluminium-6)) - -(define-record-type - (%make-color r g b a) - color? - (r color-r) - (g color-g) - (b color-b) - (a color-a)) - -(define (make-color r g b a) - "Return a newly allocated color with the given RGBA channel values. -Each channel is clamped to the range [0, 1]." - (%make-color (clamp 0 1 r) - (clamp 0 1 g) - (clamp 0 1 b) - (clamp 0 1 a))) - -(define (color-component color-code offset) - "Return the value of an 8-bit color channel in the range [0,1] for -the integer COLOR-CODE, given an OFFSET in bits." - (let ((mask (ash #xff offset))) - (/ (ash (logand mask color-code) - (- offset)) - 255.0))) - -(define (rgba color-code) - "Translate an RGBA format string COLOR-CODE into a color object. -For example: #xffffffff will return a color with RGBA values 1, 1, 1, -1." - (%make-color (color-component color-code 24) - (color-component color-code 16) - (color-component color-code 8) - (color-component color-code 0))) - -(define (rgb color-code) - "Translate an RGB format string COLOR-CODE into a color object. -For example: #xffffff will return a color with RGBA values 1, 1, 1, -1." - (%make-color (color-component color-code 16) - (color-component color-code 8) - (color-component color-code 0) - 1)) - -(define color* - (match-lambda* - ((($ r1 g1 b1 a1) ($ r2 g2 b2 a2)) - (make-color (* r1 r2) - (* g1 g2) - (* b1 b2) - (* a1 a2))) - ((($ r g b a) (? number? k)) - (make-color (* r k) - (* g k) - (* b k) - (* a k))))) - -(define color+ - (match-lambda* - ((($ r1 g1 b1 a1) ($ r2 g2 b2 a2)) - (make-color (+ r1 r2) - (+ g1 g2) - (+ b1 b2) - (+ a1 a2))))) - -(define color- - (match-lambda* - ((($ r1 g1 b1 a1) ($ r2 g2 b2 a2)) - (make-color (- r1 r2) - (- g1 g2) - (- b1 b2) - (- a1 a2))))) - -(define color-inverse - (match-lambda - (($ r g b a) - (make-color (- 1 r) - (- 1 g) - (- 1 b) - a)))) ; Do not alter alpha channel. - -(define color-lerp (make-lerp color+ color*)) - -;;; -;;; Pre-defined Colors -;;; - -;; Basic -(define white (rgb #xffffff)) -(define black (rgb #x000000)) -(define red (rgb #xff0000)) -(define green (rgb #x00ff00)) -(define blue (rgb #x0000ff)) -(define yellow (rgb #xffff00)) -(define magenta (rgb #xff00ff)) -(define cyan (rgb #x00ffff)) -(define transparent (make-color 0 0 0 0)) - -;; Tango color pallete -;; http://tango.freedesktop.org -(define tango-light-butter (rgb #xfce94f)) -(define tango-butter (rgb #xedd400)) -(define tango-dark-butter (rgb #xc4a000)) -(define tango-light-orange (rgb #xfcaf3e)) -(define tango-orange (rgb #xf57900)) -(define tango-dark-orange (rgb #xce5c00)) -(define tango-light-chocolate (rgb #xe9b96e)) -(define tango-chocolate (rgb #xc17d11)) -(define tango-dark-chocolate (rgb #x8f5902)) -(define tango-light-chameleon (rgb #x8ae234)) -(define tango-chameleon (rgb #x73d216)) -(define tango-dark-chameleon (rgb #x4e9a06)) -(define tango-light-sky-blue (rgb #x729fcf)) -(define tango-sky-blue (rgb #x3465a4)) -(define tango-dark-sky-blue (rgb #x204a87)) -(define tango-light-plum (rgb #xad7fa8)) -(define tango-plum (rgb #x75507b)) -(define tango-dark-plum (rgb #x5c3566)) -(define tango-light-scarlet-red (rgb #xef2929)) -(define tango-scarlet-red (rgb #xcc0000)) -(define tango-dark-scarlet-red (rgb #xa40000)) -(define tango-aluminium-1 (rgb #xeeeeec)) -(define tango-aluminium-2 (rgb #xd3d7cf)) -(define tango-aluminium-3 (rgb #xbabdb6)) -(define tango-aluminium-4 (rgb #x888a85)) -(define tango-aluminium-5 (rgb #x555753)) -(define tango-aluminium-6 (rgb #x2e3436)) diff --git a/sly/font.scm b/sly/font.scm index 79fc16f..2a9fcf4 100644 --- a/sly/font.scm +++ b/sly/font.scm @@ -31,7 +31,7 @@ #:use-module ((sdl ttf) #:prefix SDL:) #:use-module (gl) #:use-module (sly wrappers gl) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly config) #:use-module (sly render mesh) #:use-module (sly render shader) diff --git a/sly/render/camera.scm b/sly/render/camera.scm index f7f0294..3ec7089 100644 --- a/sly/render/camera.scm +++ b/sly/render/camera.scm @@ -29,7 +29,7 @@ #:use-module (gl enums) #:use-module (sly wrappers gl) #:use-module (sly utils) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly math rect) #:use-module (sly math transform) #:export (make-viewport viewport? diff --git a/sly/render/color.scm b/sly/render/color.scm new file mode 100644 index 0000000..6497339 --- /dev/null +++ b/sly/render/color.scm @@ -0,0 +1,171 @@ +;;; Sly +;;; Copyright (C) 2013, 2014 David Thompson +;;; +;;; This program is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see +;;; . + +;;; Commentary: +;; +;; Color. +;; +;;; Code: + +(define-module (sly render color) + #:use-module (ice-9 match) + #:use-module (gl) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-1) + #:use-module (sly math) + #:export ( + make-color + color? + color-r color-g color-b color-a + rgba rgb + color* color+ color- color-inverse color-lerp + white black red green blue yellow magenta cyan transparent + tango-light-butter tango-butter tango-dark-butter + tango-light-orange tango-orange tango-dark-orange + tango-light-chocolate tango-chocolate tango-dark-chocolate + tango-light-chameleon tango-chameleon tango-dark-chameleon + tango-light-sky-blue tango-sky-blue tango-dark-sky-blue + tango-light-plum tango-plum tango-dark-plum + tango-light-scarlet-red tango-scarlet-red tango-dark-scarlet-red + tango-aluminium-1 tango-aluminium-2 tango-aluminium-3 + tango-aluminium-4 tango-aluminium-5 tango-aluminium-6)) + +(define-record-type + (%make-color r g b a) + color? + (r color-r) + (g color-g) + (b color-b) + (a color-a)) + +(define (make-color r g b a) + "Return a newly allocated color with the given RGBA channel values. +Each channel is clamped to the range [0, 1]." + (%make-color (clamp 0 1 r) + (clamp 0 1 g) + (clamp 0 1 b) + (clamp 0 1 a))) + +(define (color-component color-code offset) + "Return the value of an 8-bit color channel in the range [0,1] for +the integer COLOR-CODE, given an OFFSET in bits." + (let ((mask (ash #xff offset))) + (/ (ash (logand mask color-code) + (- offset)) + 255.0))) + +(define (rgba color-code) + "Translate an RGBA format string COLOR-CODE into a color object. +For example: #xffffffff will return a color with RGBA values 1, 1, 1, +1." + (%make-color (color-component color-code 24) + (color-component color-code 16) + (color-component color-code 8) + (color-component color-code 0))) + +(define (rgb color-code) + "Translate an RGB format string COLOR-CODE into a color object. +For example: #xffffff will return a color with RGBA values 1, 1, 1, +1." + (%make-color (color-component color-code 16) + (color-component color-code 8) + (color-component color-code 0) + 1)) + +(define color* + (match-lambda* + ((($ r1 g1 b1 a1) ($ r2 g2 b2 a2)) + (make-color (* r1 r2) + (* g1 g2) + (* b1 b2) + (* a1 a2))) + ((($ r g b a) (? number? k)) + (make-color (* r k) + (* g k) + (* b k) + (* a k))))) + +(define color+ + (match-lambda* + ((($ r1 g1 b1 a1) ($ r2 g2 b2 a2)) + (make-color (+ r1 r2) + (+ g1 g2) + (+ b1 b2) + (+ a1 a2))))) + +(define color- + (match-lambda* + ((($ r1 g1 b1 a1) ($ r2 g2 b2 a2)) + (make-color (- r1 r2) + (- g1 g2) + (- b1 b2) + (- a1 a2))))) + +(define color-inverse + (match-lambda + (($ r g b a) + (make-color (- 1 r) + (- 1 g) + (- 1 b) + a)))) ; Do not alter alpha channel. + +(define color-lerp (make-lerp color+ color*)) + +;;; +;;; Pre-defined Colors +;;; + +;; Basic +(define white (rgb #xffffff)) +(define black (rgb #x000000)) +(define red (rgb #xff0000)) +(define green (rgb #x00ff00)) +(define blue (rgb #x0000ff)) +(define yellow (rgb #xffff00)) +(define magenta (rgb #xff00ff)) +(define cyan (rgb #x00ffff)) +(define transparent (make-color 0 0 0 0)) + +;; Tango color pallete +;; http://tango.freedesktop.org +(define tango-light-butter (rgb #xfce94f)) +(define tango-butter (rgb #xedd400)) +(define tango-dark-butter (rgb #xc4a000)) +(define tango-light-orange (rgb #xfcaf3e)) +(define tango-orange (rgb #xf57900)) +(define tango-dark-orange (rgb #xce5c00)) +(define tango-light-chocolate (rgb #xe9b96e)) +(define tango-chocolate (rgb #xc17d11)) +(define tango-dark-chocolate (rgb #x8f5902)) +(define tango-light-chameleon (rgb #x8ae234)) +(define tango-chameleon (rgb #x73d216)) +(define tango-dark-chameleon (rgb #x4e9a06)) +(define tango-light-sky-blue (rgb #x729fcf)) +(define tango-sky-blue (rgb #x3465a4)) +(define tango-dark-sky-blue (rgb #x204a87)) +(define tango-light-plum (rgb #xad7fa8)) +(define tango-plum (rgb #x75507b)) +(define tango-dark-plum (rgb #x5c3566)) +(define tango-light-scarlet-red (rgb #xef2929)) +(define tango-scarlet-red (rgb #xcc0000)) +(define tango-dark-scarlet-red (rgb #xa40000)) +(define tango-aluminium-1 (rgb #xeeeeec)) +(define tango-aluminium-2 (rgb #xd3d7cf)) +(define tango-aluminium-3 (rgb #xbabdb6)) +(define tango-aluminium-4 (rgb #x888a85)) +(define tango-aluminium-5 (rgb #x555753)) +(define tango-aluminium-6 (rgb #x2e3436)) diff --git a/sly/render/mesh.scm b/sly/render/mesh.scm index a7ed468..2aca38f 100644 --- a/sly/render/mesh.scm +++ b/sly/render/mesh.scm @@ -29,7 +29,7 @@ #:use-module (gl) #:use-module (gl low-level) #:use-module (sly wrappers gl) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly render shader) #:use-module (sly render texture) #:use-module (sly math vector) diff --git a/sly/render/shader.scm b/sly/render/shader.scm index 93c5217..cf89427 100644 --- a/sly/render/shader.scm +++ b/sly/render/shader.scm @@ -28,7 +28,7 @@ #:use-module (sly utils) #:use-module (sly math transform) #:use-module (sly math vector) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly config) #:use-module (sly wrappers gl) #:export (make-shader diff --git a/sly/render/sprite.scm b/sly/render/sprite.scm index a152b89..950a81b 100644 --- a/sly/render/sprite.scm +++ b/sly/render/sprite.scm @@ -28,7 +28,7 @@ #:use-module (gl) #:use-module (gl contrib packed-struct) #:use-module ((sdl sdl) #:prefix SDL:) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly config) #:use-module (sly agenda) #:use-module (sly utils) diff --git a/sly/render/texture.scm b/sly/render/texture.scm index fbb97bb..e1a8ac5 100644 --- a/sly/render/texture.scm +++ b/sly/render/texture.scm @@ -28,7 +28,7 @@ #:use-module (gl) #:use-module (gl low-level) #:use-module (gl contrib packed-struct) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly utils) #:use-module (sly math vector) #:use-module (sly wrappers gl) diff --git a/sly/render/vertex-array.scm b/sly/render/vertex-array.scm index 3c385ae..45fcdd7 100644 --- a/sly/render/vertex-array.scm +++ b/sly/render/vertex-array.scm @@ -32,7 +32,7 @@ #:use-module (gl low-level) #:use-module (sly wrappers gl) #:use-module (sly math vector) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly render shader) #:export (make-vertex-array vertex-array? diff --git a/sly/transition.scm b/sly/transition.scm index 53ac4c4..ab2129a 100644 --- a/sly/transition.scm +++ b/sly/transition.scm @@ -24,7 +24,7 @@ (define-module (sly transition) #:use-module (ice-9 match) #:use-module (sly agenda) - #:use-module (sly color) + #:use-module (sly render color) #:use-module (sly coroutine) #:use-module (sly math) #:use-module (sly math quaternion) -- cgit v1.2.3