[geany/geany-plugins] d7e345: addons: re-factored function 'get_color_value_at_current_doc_position()' (thanks to b4n).
LarsDW223
git-noreply at xxxxx
Tue Jan 16 20:00:18 UTC 2018
Branch: refs/heads/master
Author: LarsDW223 <lars_paulsen at web.de>
Committer: LarsDW223 <lars_paulsen at web.de>
Date: Tue, 16 Jan 2018 20:00:18 UTC
Commit: d7e345e1556e5ee4116ced8fccebc1405a5bc24f
https://github.com/geany/geany-plugins/commit/d7e345e1556e5ee4116ced8fccebc1405a5bc24f
Log Message:
-----------
addons: re-factored function 'get_color_value_at_current_doc_position()' (thanks to b4n).
Modified Paths:
--------------
addons/src/ao_colortip.c
Modified: addons/src/ao_colortip.c
68 lines changed, 28 insertions(+), 40 deletions(-)
===================================================================
@@ -140,46 +140,34 @@ static gint contains_color_value(gchar *string, gint position, gint maxdist)
static gint get_color_value_at_current_doc_position(void)
{
- gchar *subtext;
- gint start, end, pos, max, color = -1;
- GeanyDocument *doc = document_get_current();
-
- g_return_val_if_fail(doc != NULL, FALSE);
-
- /* Is position valid? */
- pos = sci_get_current_position(doc->editor->sci);
- if (pos < 0)
- {
- return color;
- }
- max = SSM(doc->editor->sci, SCI_GETTEXTLENGTH, 0, 0);
-
- /* Calculate range */
- start = pos;
- if (start >= 7)
- {
- start -= 7;
- }
- else
- {
- start = 0;
- }
- end = pos + 7;
- if (end > max)
- {
- end = max;
- }
-
- /* Get text in range and examine it */
- subtext = sci_get_contents_range(doc->editor->sci, start, end);
- if (subtext != NULL)
- {
- pos = pos - start;
- color = contains_color_value(subtext, pos, 1);
- g_free(subtext);
- }
-
- return color;
+ gint color = -1;
+ GeanyDocument *doc = document_get_current();
+ gchar *word = editor_get_word_at_pos(doc->editor, -1, "0123456789abcdefABCDEF");
+
+ if (word)
+ {
+ switch (strlen (word))
+ {
+ case 3:
+ color = ((g_ascii_xdigit_value(word[0]) * 0x11) << 16 |
+ (g_ascii_xdigit_value(word[1]) * 0x11) << 8 |
+ (g_ascii_xdigit_value(word[2]) * 0x11) << 0);
+ break;
+ case 6:
+ color = (g_ascii_xdigit_value(word[0]) << 20 |
+ g_ascii_xdigit_value(word[1]) << 16 |
+ g_ascii_xdigit_value(word[2]) << 12 |
+ g_ascii_xdigit_value(word[3]) << 8 |
+ g_ascii_xdigit_value(word[4]) << 4 |
+ g_ascii_xdigit_value(word[5]) << 0);
+ break;
+ default:
+ /* invalid color or other format */
+ break;
+ }
+ }
+
+ return color;
}
static gboolean on_editor_button_press_event(GtkWidget *widget, GdkEventButton *event,
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list