Gitweb links:

...log 
http://git.netsurf-browser.org/libcss.git/shortlog/0e5d03c7d6ec6827d9e69c333484b7eee2ee6563
...commit 
http://git.netsurf-browser.org/libcss.git/commit/0e5d03c7d6ec6827d9e69c333484b7eee2ee6563
...tree 
http://git.netsurf-browser.org/libcss.git/tree/0e5d03c7d6ec6827d9e69c333484b7eee2ee6563

The branch, lcneves/units has been created
        at  0e5d03c7d6ec6827d9e69c333484b7eee2ee6563 (commit)

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/libcss.git/commit/?id=0e5d03c7d6ec6827d9e69c333484b7eee2ee6563
commit 0e5d03c7d6ec6827d9e69c333484b7eee2ee6563
Author: Lucas Neves <[email protected]>
Commit: Lucas Neves <[email protected]>

    WIP: Add new length units

diff --git a/include/libcss/types.h b/include/libcss/types.h
index ffaf13c..4f35737 100644
--- a/include/libcss/types.h
+++ b/include/libcss/types.h
@@ -80,26 +80,39 @@ typedef uint32_t css_color;
 
 /* CSS unit */
 typedef enum css_unit {
-       CSS_UNIT_PX                 = 0x0,
-       CSS_UNIT_EX                 = 0x1,
-       CSS_UNIT_EM                 = 0x2,
-       CSS_UNIT_IN                 = 0x3,
-       CSS_UNIT_CM                 = 0x4,
-       CSS_UNIT_MM                 = 0x5,
-       CSS_UNIT_PT                 = 0x6,
-       CSS_UNIT_PC                 = 0x7,
-
-       CSS_UNIT_PCT                = 0x8,      /* Percentage */
-
-       CSS_UNIT_DEG                = 0x9,
-       CSS_UNIT_GRAD               = 0xa,
-       CSS_UNIT_RAD                = 0xb,
-
-       CSS_UNIT_MS                 = 0xc,
-       CSS_UNIT_S                  = 0xd,
-
-       CSS_UNIT_HZ                 = 0xe,
-       CSS_UNIT_KHZ                = 0xf
+       CSS_UNIT_PX                 = 0x00,
+       CSS_UNIT_EX                 = 0x01,
+       CSS_UNIT_EM                 = 0x02,
+       CSS_UNIT_IN                 = 0x03,
+       CSS_UNIT_CM                 = 0x04,
+       CSS_UNIT_MM                 = 0x05,
+       CSS_UNIT_PT                 = 0x06,
+       CSS_UNIT_PC                 = 0x07,
+       CSS_UNIT_CAP                = 0x08,
+       CSS_UNIT_CH                 = 0x09,
+       CSS_UNIT_IC                 = 0x0a,
+       CSS_UNIT_REM                = 0x0b,
+       CSS_UNIT_LH                 = 0x0c,
+       CSS_UNIT_RLH                = 0x0d,
+       CSS_UNIT_VH                 = 0x0e,
+       CSS_UNIT_VW                 = 0x0f,
+       CSS_UNIT_VI                 = 0x10,
+       CSS_UNIT_VB                 = 0x11,
+       CSS_UNIT_VMIN               = 0x12,
+       CSS_UNIT_VMAX               = 0x13,
+       CSS_UNIT_Q                  = 0x14,
+
+       CSS_UNIT_PCT                = 0x15,     /* Percentage */
+
+       CSS_UNIT_DEG                = 0x16,
+       CSS_UNIT_GRAD               = 0x17,
+       CSS_UNIT_RAD                = 0x18,
+
+       CSS_UNIT_MS                 = 0x19,
+       CSS_UNIT_S                  = 0x1a,
+
+       CSS_UNIT_HZ                 = 0x1b,
+       CSS_UNIT_KHZ                = 0x1c
 } css_unit;
 
 /**
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h
index 656d7a5..422f141 100644
--- a/src/bytecode/bytecode.h
+++ b/src/bytecode/bytecode.h
@@ -32,6 +32,19 @@ typedef enum unit {
        UNIT_MM   = 5,
        UNIT_PT   = 6,
        UNIT_PC   = 7,
+       UNIT_CAP  = 8,
+       UNIT_CH   = 9,
+       UNIT_IC   = 10,
+       UNIT_REM  = 11,
+       UNIT_LH   = 12,
+       UNIT_RLH  = 13,
+       UNIT_VH   = 14,
+       UNIT_VW   = 15,
+       UNIT_VI   = 16,
+       UNIT_VB   = 17,
+       UNIT_VMIN = 18,
+       UNIT_VMAX = 19,
+       UNIT_Q    = 20,
 
        UNIT_PCT  = (1 << 8),
 
diff --git a/src/parse/properties/utils.c b/src/parse/properties/utils.c
index 47b06e3..76b406b 100644
--- a/src/parse/properties/utils.c
+++ b/src/parse/properties/utils.c
@@ -1007,6 +1007,10 @@ css_error css__parse_unit_keyword(const char *ptr, 
size_t len, uint32_t *unit)
        if (len == 4) {
                if (strncasecmp(ptr, "grad", 4) == 0)
                        *unit = UNIT_GRAD;
+               else if (strncasecmp(ptr, "vmin", 4) == 0)
+                       *unit = UNIT_VMIN;
+               else if (strncasecmp(ptr, "vmax", 4) == 0)
+                       *unit = UNIT_VMAX;
                else
                        return CSS_INVALID;
        } else if (len == 3) {
@@ -1016,6 +1020,12 @@ css_error css__parse_unit_keyword(const char *ptr, 
size_t len, uint32_t *unit)
                        *unit = UNIT_DEG;
                else if (strncasecmp(ptr, "rad", 3) == 0)
                        *unit = UNIT_RAD;
+               else if (strncasecmp(ptr, "cap", 3) == 0)
+                       *unit = UNIT_CAP;
+               else if (strncasecmp(ptr, "rem", 3) == 0)
+                       *unit = UNIT_REM;
+               else if (strncasecmp(ptr, "rlh", 3) == 0)
+                       *unit = UNIT_RLH;
                else
                        return CSS_INVALID;
        } else if (len == 2) {
@@ -1039,11 +1049,27 @@ css_error css__parse_unit_keyword(const char *ptr, 
size_t len, uint32_t *unit)
                        *unit = UNIT_PT;
                else if (strncasecmp(ptr, "pc", 2) == 0)
                        *unit = UNIT_PC;
+               else if (strncasecmp(ptr, "ch", 2) == 0)
+                       *unit = UNIT_CH;
+               else if (strncasecmp(ptr, "ic", 2) == 0)
+                       *unit = UNIT_IC;
+               else if (strncasecmp(ptr, "lh", 2) == 0)
+                       *unit = UNIT_LH;
+               else if (strncasecmp(ptr, "vh", 2) == 0)
+                       *unit = UNIT_VH;
+               else if (strncasecmp(ptr, "vw", 2) == 0)
+                       *unit = UNIT_VW;
+               else if (strncasecmp(ptr, "vi", 2) == 0)
+                       *unit = UNIT_VI;
+               else if (strncasecmp(ptr, "vb", 2) == 0)
+                       *unit = UNIT_VB;
                else
                        return CSS_INVALID;
        } else if (len == 1) {
                if (strncasecmp(ptr, "s", 1) == 0)
                        *unit = UNIT_S;
+               else if (strncasecmp(ptr, "q", 1) == 0)
+                       *unit = UNIT_Q;
                else
                        return CSS_INVALID;
        } else
diff --git a/src/select/properties/helpers.c b/src/select/properties/helpers.c
index 36c3cba..5893919 100644
--- a/src/select/properties/helpers.c
+++ b/src/select/properties/helpers.c
@@ -29,6 +29,19 @@ css_unit css__to_css_unit(uint32_t u)
        case UNIT_MM: return CSS_UNIT_MM;
        case UNIT_PT: return CSS_UNIT_PT;
        case UNIT_PC: return CSS_UNIT_PC;
+       case UNIT_CAP: return CSS_UNIT_CAP;
+       case UNIT_CH: return CSS_UNIT_CH;
+       case UNIT_IC: return CSS_UNIT_IC;
+       case UNIT_REM: return CSS_UNIT_REM;
+       case UNIT_LH: return CSS_UNIT_LH;
+       case UNIT_RLH: return CSS_UNIT_RLH;
+       case UNIT_VH: return CSS_UNIT_VH;
+       case UNIT_VW: return CSS_UNIT_VW;
+       case UNIT_VI: return CSS_UNIT_VI;
+       case UNIT_VB: return CSS_UNIT_VB;
+       case UNIT_VMIN: return CSS_UNIT_VMIN;
+       case UNIT_VMAX: return CSS_UNIT_VMAX;
+       case UNIT_Q: return CSS_UNIT_Q;
        case UNIT_PCT: return CSS_UNIT_PCT;
        case UNIT_DEG: return CSS_UNIT_DEG;
        case UNIT_GRAD: return CSS_UNIT_GRAD;
diff --git a/test/dump.h b/test/dump.h
index 0159b19..8d74ce6 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -574,6 +574,45 @@ static void dump_unit(css_fixed val, uint32_t unit, char 
**ptr)
        case UNIT_PC:
                *ptr += sprintf(*ptr, "pc");
                break;
+       case UNIT_CAP:
+               *ptr += sprintf(*ptr, "cap");
+               break;
+       case UNIT_CH:
+               *ptr += sprintf(*ptr, "ch");
+               break;
+       case UNIT_IC:
+               *ptr += sprintf(*ptr, "ic");
+               break;
+       case UNIT_REM:
+               *ptr += sprintf(*ptr, "rem");
+               break;
+       case UNIT_LH:
+               *ptr += sprintf(*ptr, "lh");
+               break;
+       case UNIT_RLH:
+               *ptr += sprintf(*ptr, "rlh");
+               break;
+       case UNIT_VH:
+               *ptr += sprintf(*ptr, "vh");
+               break;
+       case UNIT_VW:
+               *ptr += sprintf(*ptr, "vw");
+               break;
+       case UNIT_VI:
+               *ptr += sprintf(*ptr, "vi");
+               break;
+       case UNIT_VB:
+               *ptr += sprintf(*ptr, "vb");
+               break;
+       case UNIT_VMIN:
+               *ptr += sprintf(*ptr, "vmin");
+               break;
+       case UNIT_VMAX:
+               *ptr += sprintf(*ptr, "vmax");
+               break;
+       case UNIT_Q:
+               *ptr += sprintf(*ptr, "q");
+               break;
        case UNIT_PCT:
                *ptr += sprintf(*ptr, "%%");
                break;
diff --git a/test/dump_computed.h b/test/dump_computed.h
index c9d699d..bcddc3d 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -105,6 +105,45 @@ static size_t dump_css_unit(css_fixed val, css_unit unit, 
char *ptr, size_t len)
        case CSS_UNIT_PC:
                ret += snprintf(ptr + ret, len - ret, "pc");
                break;
+       case CSS_UNIT_CAP:
+               ret += snprintf(ptr + ret, len - ret, "cap");
+               break;
+       case CSS_UNIT_CH:
+               ret += snprintf(ptr + ret, len - ret, "ch");
+               break;
+       case CSS_UNIT_IC:
+               ret += snprintf(ptr + ret, len - ret, "ic");
+               break;
+       case CSS_UNIT_REM:
+               ret += snprintf(ptr + ret, len - ret, "rem");
+               break;
+       case CSS_UNIT_LH:
+               ret += snprintf(ptr + ret, len - ret, "lh");
+               break;
+       case CSS_UNIT_RLH:
+               ret += snprintf(ptr + ret, len - ret, "rlh");
+               break;
+       case CSS_UNIT_VH:
+               ret += snprintf(ptr + ret, len - ret, "vh");
+               break;
+       case CSS_UNIT_VW:
+               ret += snprintf(ptr + ret, len - ret, "vh");
+               break;
+       case CSS_UNIT_VI:
+               ret += snprintf(ptr + ret, len - ret, "vi");
+               break;
+       case CSS_UNIT_VB:
+               ret += snprintf(ptr + ret, len - ret, "vb");
+               break;
+       case CSS_UNIT_VMIN:
+               ret += snprintf(ptr + ret, len - ret, "vmin");
+               break;
+       case CSS_UNIT_VMAX:
+               ret += snprintf(ptr + ret, len - ret, "vmax");
+               break;
+       case CSS_UNIT_Q:
+               ret += snprintf(ptr + ret, len - ret, "q");
+               break;
        case CSS_UNIT_PCT:
                ret += snprintf(ptr + ret, len - ret, "%%");
                break;


-----------------------------------------------------------------------


-- 
Cascading Style Sheets library

_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to