aboutsummaryrefslogtreecommitdiff
path: root/generic/Attrs.c
diff options
context:
space:
mode:
authorlecoanet2002-03-15 13:31:34 +0000
committerlecoanet2002-03-15 13:31:34 +0000
commit8974bed91f8ec9e26552da4040448c65d8963383 (patch)
treed5ecdf8f49c59d5dad6e2e4b553536484b067da1 /generic/Attrs.c
parent34cd26bc9077fac0c9240895a27ddd3b8df2dbf8 (diff)
downloadtkzinc-8974bed91f8ec9e26552da4040448c65d8963383.zip
tkzinc-8974bed91f8ec9e26552da4040448c65d8963383.tar.gz
tkzinc-8974bed91f8ec9e26552da4040448c65d8963383.tar.bz2
tkzinc-8974bed91f8ec9e26552da4040448c65d8963383.tar.xz
Ajout du code pour les attributs relief. Avant les conversions
�taient faites par Tk. Maintenant puisque l'on a �tendu les possibilit�s on le fait en interne.
Diffstat (limited to 'generic/Attrs.c')
-rw-r--r--generic/Attrs.c115
1 files changed, 115 insertions, 0 deletions
diff --git a/generic/Attrs.c b/generic/Attrs.c
index 45d7dc8..c3e48ad 100644
--- a/generic/Attrs.c
+++ b/generic/Attrs.c
@@ -31,6 +31,7 @@
#include "Item.h"
#include "List.h"
#include "Geo.h"
+#include "WidgetInfo.h"
#include <memory.h>
#include <malloc.h>
@@ -124,6 +125,120 @@ CharToDim(char dim)
}
/*
+ ****************************************************************
+ *
+ * Code for reliefs.
+ *
+ ****************************************************************
+ */
+#define RELIEF_FLAT_SPEC "flat"
+#define RELIEF_RAISED_SPEC "raised"
+#define RELIEF_SUNKEN_SPEC "sunken"
+#define RELIEF_GROOVE_SPEC "groove"
+#define RELIEF_RIDGE_SPEC "ridge"
+#define RELIEF_ROUND_RAISED_SPEC "roundraised"
+#define RELIEF_ROUND_SUNKEN_SPEC "roundsunken"
+#define RELIEF_ROUND_GROOVE_SPEC "roundgroove"
+#define RELIEF_ROUND_RIDGE_SPEC "roundridge"
+#define RELIEF_SUNKEN_RULE_SPEC "sunkenrule"
+#define RELIEF_RAISED_RULE_SPEC "raisedrule"
+
+int
+ZnGetRelief(WidgetInfo *wi,
+ char *name,
+ ReliefStyle *relief)
+{
+ size_t length;
+
+ length = strlen(name);
+ if (strncasecmp(name, RELIEF_FLAT_SPEC, length) == 0) {
+ *relief = RELIEF_FLAT;
+ }
+ else if (strncasecmp(name, RELIEF_SUNKEN_SPEC, length) == 0) {
+ *relief = RELIEF_SUNKEN;
+ }
+ else if ((strncasecmp(name, RELIEF_RAISED_SPEC, length) == 0) && (length >= 2)) {
+ *relief = RELIEF_RAISED;
+ }
+ else if ((strncasecmp(name, RELIEF_RIDGE_SPEC, length) == 0) && (length >= 2)) {
+ *relief = RELIEF_RIDGE;
+ }
+ else if (strncasecmp(name, RELIEF_GROOVE_SPEC, length) == 0) {
+ *relief = RELIEF_GROOVE;
+ }
+ else if ((strncasecmp(name, RELIEF_ROUND_SUNKEN_SPEC, length) == 0) && (length >= 6)) {
+ *relief = RELIEF_ROUND_SUNKEN;
+ }
+ else if ((strncasecmp(name, RELIEF_ROUND_RAISED_SPEC, length) == 0) && (length >= 7)) {
+ *relief = RELIEF_ROUND_RAISED;
+ }
+ else if ((strncasecmp(name, RELIEF_ROUND_RIDGE_SPEC, length) == 0) && (length >= 7)) {
+ *relief = RELIEF_ROUND_RIDGE;
+ }
+ else if ((strncasecmp(name, RELIEF_ROUND_GROOVE_SPEC, length) == 0) && (length >= 6)) {
+ *relief = RELIEF_ROUND_GROOVE;
+ }
+ else if ((strncasecmp(name, RELIEF_SUNKEN_RULE_SPEC, length) == 0) && (length >= 7)) {
+ *relief = RELIEF_SUNKEN_RULE;
+ }
+ else if ((strncasecmp(name, RELIEF_RAISED_RULE_SPEC, length) == 0) && (length >= 7)) {
+ *relief = RELIEF_RAISED_RULE;
+ }
+ else {
+ Tcl_AppendResult(wi->interp, "bad relief type \"", name, "\": must be ",
+ RELIEF_FLAT_SPEC, ", ",
+ RELIEF_RAISED_SPEC, ", ",
+ RELIEF_SUNKEN_SPEC, ", ",
+ RELIEF_GROOVE_SPEC, ", ",
+ RELIEF_RIDGE_SPEC, ", ",
+ RELIEF_ROUND_RAISED_SPEC, ", ",
+ RELIEF_ROUND_SUNKEN_SPEC, ", ",
+ RELIEF_ROUND_GROOVE_SPEC, ", ",
+ RELIEF_ROUND_RIDGE_SPEC, ", ",
+ RELIEF_SUNKEN_RULE_SPEC, ", ",
+ RELIEF_RAISED_RULE_SPEC,
+ NULL);
+ return ZN_ERROR;
+ }
+ if (!wi->render) {
+ *relief = *relief & ~(RELIEF_ROUND|RELIEF_RULE);
+ }
+
+ return ZN_OK;
+}
+
+char *
+ZnNameOfRelief(ReliefStyle relief)
+{
+ switch (relief) {
+ case RELIEF_FLAT:
+ return RELIEF_FLAT_SPEC;
+ case RELIEF_SUNKEN:
+ return RELIEF_SUNKEN_SPEC;
+ case RELIEF_RAISED:
+ return RELIEF_RAISED_SPEC;
+ case RELIEF_GROOVE:
+ return RELIEF_GROOVE_SPEC;
+ case RELIEF_RIDGE:
+ return RELIEF_RIDGE_SPEC;
+ case RELIEF_ROUND_SUNKEN:
+ return RELIEF_ROUND_SUNKEN_SPEC;
+ case RELIEF_ROUND_RAISED:
+ return RELIEF_ROUND_RAISED_SPEC;
+ case RELIEF_ROUND_GROOVE:
+ return RELIEF_ROUND_GROOVE_SPEC;
+ case RELIEF_ROUND_RIDGE:
+ return RELIEF_ROUND_RIDGE_SPEC;
+ case RELIEF_SUNKEN_RULE:
+ return RELIEF_SUNKEN_RULE_SPEC;
+ case RELIEF_RAISED_RULE:
+ return RELIEF_RAISED_RULE_SPEC;
+ default:
+ return "unknown relief";
+ }
+}
+
+/*
* The new format is as follow. Parameters between [] are
* optional and take default values when omitted. The spaces can appear
* between blocks but not inside.