libgimpbase/Makefile.am libgimpbase/gimpchecks.[ch] added

2004-09-03  Sven Neumann  <sven@gimp.org>

	* libgimpbase/Makefile.am
	* libgimpbase/gimpchecks.[ch] added gimp_checks_get_shades().

	* app/base/temp-buf.c
	* app/display/gimpdisplayshell-render.c
	* libgimpwidgets/gimppreviewarea.c: use the new function instead
	of replicating these numbers in three different places.
This commit is contained in:
Sven Neumann 2004-09-03 00:06:21 +00:00 committed by Sven Neumann
parent dfa47f2736
commit 4fbc8764b4
13 changed files with 114 additions and 71 deletions

View File

@ -1,3 +1,13 @@
2004-09-03 Sven Neumann <sven@gimp.org>
* libgimpbase/Makefile.am
* libgimpbase/gimpchecks.[ch] added gimp_checks_get_shades().
* app/base/temp-buf.c
* app/display/gimpdisplayshell-render.c
* libgimpwidgets/gimppreviewarea.c: use the new function instead
of replicating these numbers in three different places.
2004-09-03 DindinX <david@dindinx.org>
* plug-ins/gimpressionist/*.c: made the code much more readable by

View File

@ -244,8 +244,8 @@ temp_buf_new_check (gint width,
guchar *data;
guchar check_shift = 0;
guchar check_mod = 0;
guchar fg_color = 0;
guchar bg_color = 0;
guchar check_light = 0;
guchar check_dark = 0;
gint x, y;
g_return_val_if_fail (width > 0 && height > 0, NULL);
@ -266,40 +266,15 @@ temp_buf_new_check (gint width,
break;
}
switch (check_type)
{
case GIMP_CHECK_TYPE_LIGHT_CHECKS:
fg_color = 204;
bg_color = 255;
break;
case GIMP_CHECK_TYPE_GRAY_CHECKS:
fg_color = 102;
bg_color = 153;
break;
case GIMP_CHECK_TYPE_DARK_CHECKS:
fg_color = 0;
bg_color = 51;
break;
case GIMP_CHECK_TYPE_WHITE_ONLY:
fg_color = 255;
bg_color = 255;
break;
case GIMP_CHECK_TYPE_GRAY_ONLY:
fg_color = 127;
bg_color = 127;
break;
case GIMP_CHECK_TYPE_BLACK_ONLY:
fg_color = 0;
bg_color = 0;
}
gimp_checks_get_shades (check_type, &check_light, &check_dark);
newbuf = temp_buf_new (width, height, 3, 0, 0, NULL);
data = temp_buf_data (newbuf);
for (y = 0; y < height; y++)
{
guchar dark = y >> check_shift;
guchar color = (dark & 0x1) ? bg_color : fg_color;
guchar check_dark = y >> check_shift;
guchar color = (check_dark & 0x1) ? check_light : check_dark;
for (x = 0; x < width; x++)
{
@ -309,8 +284,8 @@ temp_buf_new_check (gint width,
if (((x + 1) & check_mod) == 0)
{
dark += 1;
color = (dark & 0x1) ? bg_color : fg_color;
check_dark += 1;
color = (check_dark & 0x1) ? check_light : check_dark;
}
}
}

View File

@ -23,6 +23,7 @@
#include <gtk/gtk.h>
#include "libgimpbase/gimpbase.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "display-types.h"
@ -88,16 +89,6 @@ static guint tile_shift = 0;
static guint check_mod = 0;
static guint check_shift = 0;
static const guchar check_combos[6][2] =
{
{ 204, 255 }, /* LIGHT_CHECKS */
{ 153, 102 }, /* GRAY_CHECKS */
{ 0, 51 }, /* DARK_CHECKS */
{ 255, 255 }, /* WHITE_ONLY */
{ 127, 127 }, /* GRAY_ONLY */
{ 0, 0 } /* BLACK_ONLY */
};
void
render_init (Gimp *gimp)
@ -180,6 +171,7 @@ render_setup_notify (gpointer config,
{
GimpCheckType check_type;
GimpCheckSize check_size;
guchar light, dark;
gint i, j;
g_object_get (config,
@ -206,16 +198,17 @@ render_setup_notify (gpointer config,
if (! render_blend_white)
render_blend_white = g_new (guchar, 65536);
gimp_checks_get_shades (check_type, &light, &dark);
for (i = 0; i < 256; i++)
for (j = 0; j < 256; j++)
{
render_blend_dark_check [(i << 8) + j] = (guchar)
((j * i + check_combos[check_type][0] * (255 - i)) / 255);
render_blend_light_check [(i << 8) + j] = (guchar)
((j * i + check_combos[check_type][1] * (255 - i)) / 255);
render_blend_white [(i << 8) + j] = (guchar)
((j * i + 255 * (255 - i)) / 255);
render_blend_dark_check [(i << 8) + j] =
(guchar) ((j * i + dark * (255 - i)) / 255);
render_blend_light_check [(i << 8) + j] =
(guchar) ((j * i + light * (255 - i)) / 255);
render_blend_white [(i << 8) + j] =
(guchar) ((j * i + 255 * (255 - i)) / 255);
}
switch (check_size)

View File

@ -1,3 +1,10 @@
2004-09-03 Sven Neumann <sven@gimp.org>
* libgimpbase/libgimpbase-docs.sgml
* libgimpbase/libgimpbase-sections.txt
* libgimpbase/tmpl/gimpchecks.sgml
* libgimpwidgets/tmpl/gimppreviewarea.sgml: updated.
2004-09-02 Sven Neumann <sven@gimp.org>
* libgimpbase/libgimpbase-sections.txt

View File

@ -17,6 +17,7 @@
<xi:include href="xml/gimpbasetypes.xml" />
<xi:include href="xml/gimpversion.xml" />
<xi:include href="xml/gimplimits.xml" />
<xi:include href="xml/gimpchecks.xml" />
<xi:include href="xml/gimpdatafiles.xml" />
<xi:include href="xml/gimpenv.xml" />
<xi:include href="xml/gimpmemsize.xml" />

View File

@ -27,6 +27,11 @@ GIMP_TYPE_IMAGE_TYPE
gimp_image_type_get_type
</SECTION>
<SECTION>
<FILE>gimpchecks</FILE>
gimp_checks_get_shades
</SECTION>
<SECTION>
<FILE>gimpenv</FILE>
gimp_directory

View File

@ -0,0 +1,28 @@
<!-- ##### SECTION Title ##### -->
gimpchecks
<!-- ##### SECTION Short_Description ##### -->
<!-- ##### SECTION Long_Description ##### -->
<para>
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### FUNCTION gimp_checks_get_shades ##### -->
<para>
</para>
@type:
@light:
@dark:

View File

@ -20,6 +20,16 @@ GimpPreviewArea
</para>
<!-- ##### ARG GimpPreviewArea:check-size ##### -->
<para>
</para>
<!-- ##### ARG GimpPreviewArea:check-type ##### -->
<para>
</para>
<!-- ##### FUNCTION gimp_preview_area_new ##### -->
<para>

View File

@ -76,6 +76,8 @@ libgimpbase_sources = \
\
gimpbase-private.c \
gimpbase-private.h \
gimpchecks.c \
gimpchecks.h \
gimpdatafiles.c \
gimpdatafiles.h \
gimpenv.c \
@ -111,6 +113,7 @@ libgimpbaseinclude_HEADERS = \
gimplimits.h \
gimpversion.h \
\
gimpchecks.h \
gimpdatafiles.h \
gimpenv.h \
gimpmemsize.h \

View File

@ -2,6 +2,7 @@ EXPORTS
_gp_params_destroy
gimp_any_to_utf8
gimp_base_init
gimp_checks_get_shades
gimp_check_size_get_type
gimp_check_type_get_type
gimp_data_directory

View File

@ -23,6 +23,7 @@
#include <libgimpbase/gimpbasetypes.h>
#include <libgimpbase/gimpchecks.h>
#include <libgimpbase/gimpdatafiles.h>
#include <libgimpbase/gimpenv.h>
#include <libgimpbase/gimplimits.h>

29
libgimpbase/gimpchecks.h Normal file
View File

@ -0,0 +1,29 @@
/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP_CHECKS_H__
#define __GIMP_CHECKS_H__
void gimp_checks_get_shades (GimpCheckType type,
guchar *light,
guchar *dark);
#endif /* __GIMP_CHECKS_H__ */

View File

@ -262,26 +262,6 @@ gimp_preview_area_get_check_size (GimpPreviewArea *area)
return (1 << (2 + area->check_size));
}
static void
gimp_preview_area_get_check_colors (GimpPreviewArea *area,
guchar *light,
guchar *dark)
{
GimpCheckType type = CLAMP (area->check_type, 0, 5);
const guchar check_colors[6][2] =
{
{ 204, 255 }, /* LIGHT_CHECKS */
{ 153, 102 }, /* GRAY_CHECKS */
{ 0, 51 }, /* DARK_CHECKS */
{ 255, 255 }, /* WHITE_ONLY */
{ 127, 127 }, /* GRAY_ONLY */
{ 0, 0 } /* BLACK_ONLY */
};
*light = check_colors[type][0];
*dark = check_colors[type][1];
}
/**
@ -391,8 +371,8 @@ gimp_preview_area_draw (GimpPreviewArea *area,
area->buf = g_new (guchar, area->rowstride * area->height);
}
size = gimp_preview_area_get_check_size (area);
gimp_preview_area_get_check_colors (area, &light, &dark);
size = 1 << (2 + area->check_size);
gimp_checks_get_shades (area->check_type, &light, &dark);
#define CHECK_COLOR(area, row, col) \
(((((area)->offset_y + (row)) & size) ^ \