summaryrefslogtreecommitdiff
path: root/apps/plugins/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r--apps/plugins/lib/grey_core.c50
1 files changed, 21 insertions, 29 deletions
diff --git a/apps/plugins/lib/grey_core.c b/apps/plugins/lib/grey_core.c
index 1326599..143d09a 100644
--- a/apps/plugins/lib/grey_core.c
+++ b/apps/plugins/lib/grey_core.c
@@ -253,41 +253,33 @@ static void invert_gvalues(void)
unsigned x = 0;
unsigned last_x;
- if (_grey_info.flags & GREY_BUFFERED)
- {
- fill_gvalues();
- grey_update();
- }
- else /* Unbuffered - need crude reconstruction */
+ /* Step 1: Calculate a transposed table for undoing the old mapping */
+ for (i = 0; i < 256; i++)
{
- /* Step 1: Calculate a transposed table for undoing the old mapping */
- for (i = 0; i < 256; i++)
+ last_x = x;
+ x = _grey_info.gvalue[i];
+ if (x > last_x)
{
- last_x = x;
- x = _grey_info.gvalue[i];
- if (x > last_x)
- {
- rev_tab[last_x++] = (last_i + i) / 2;
- while (x > last_x)
- rev_tab[last_x++] = i;
- last_i = i;
- }
+ rev_tab[last_x++] = (last_i + i) / 2;
+ while (x > last_x)
+ rev_tab[last_x++] = i;
+ last_i = i;
}
- rev_tab[last_x++] = (last_i + 255) / 2;
- while (256 > last_x)
- rev_tab[last_x++] = 255;
+ }
+ rev_tab[last_x++] = (last_i + 255) / 2;
+ while (256 > last_x)
+ rev_tab[last_x++] = 255;
- /* Step 2: Calculate new mapping */
- fill_gvalues();
+ /* Step 2: Calculate new mapping */
+ fill_gvalues();
- /* Step 3: Transpose all pixel values */
- val = _grey_info.values;
- end = val + _GREY_MULUQ(_grey_info.width, _grey_info.height);
+ /* Step 3: Transpose all pixel values */
+ val = _grey_info.values;
+ end = val + _GREY_MULUQ(_grey_info.width, _grey_info.height);
- do
- *val = _grey_info.gvalue[rev_tab[*val]];
- while (++val < end);
- }
+ do
+ *val = _grey_info.gvalue[rev_tab[*val]];
+ while (++val < end);
}
#endif