Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * This file is part of LibCSS
  3.  * Licensed under the MIT License,
  4.  *                http://www.opensource.org/licenses/mit-license.php
  5.  * Copyright 2009 John-Mark Bell <jmb@netsurf-browser.org>
  6.  */
  7.  
  8. #include "select/dispatch.h"
  9. #include "select/properties/properties.h"
  10.  
  11. /**
  12.  * Dispatch table for properties, indexed by opcode
  13.  */
  14. #define PROPERTY_FUNCS(pname)                           \
  15.         css__cascade_##pname,                           \
  16.         css__set_##pname##_from_hint,                   \
  17.         css__initial_##pname,                           \
  18.         css__compose_##pname
  19.  
  20. struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
  21.         {
  22.                 PROPERTY_FUNCS(azimuth),
  23.                 1,
  24.                 GROUP_AURAL
  25.         },
  26.         {
  27.                 PROPERTY_FUNCS(background_attachment),
  28.                 0,
  29.                 GROUP_NORMAL
  30.         },
  31.         {
  32.                 PROPERTY_FUNCS(background_color),
  33.                 0,
  34.                 GROUP_NORMAL
  35.         },
  36.         {
  37.                 PROPERTY_FUNCS(background_image),
  38.                 0,
  39.                 GROUP_NORMAL
  40.         },
  41.         {
  42.                 PROPERTY_FUNCS(background_position),
  43.                 0,
  44.                 GROUP_NORMAL
  45.         },
  46.         {
  47.                 PROPERTY_FUNCS(background_repeat),
  48.                 0,
  49.                 GROUP_NORMAL
  50.         },
  51.         {
  52.                 PROPERTY_FUNCS(border_collapse),
  53.                 1,
  54.                 GROUP_NORMAL
  55.         },
  56.         {
  57.                 PROPERTY_FUNCS(border_spacing),
  58.                 1,
  59.                 GROUP_UNCOMMON
  60.         },
  61.         {
  62.                 PROPERTY_FUNCS(border_top_color),
  63.                 0,
  64.                 GROUP_NORMAL
  65.         },
  66.         {
  67.                 PROPERTY_FUNCS(border_right_color),
  68.                 0,
  69.                 GROUP_NORMAL
  70.         },
  71.         {
  72.                 PROPERTY_FUNCS(border_bottom_color),
  73.                 0,
  74.                 GROUP_NORMAL
  75.         },
  76.         {
  77.                 PROPERTY_FUNCS(border_left_color),
  78.                 0,
  79.                 GROUP_NORMAL
  80.         },
  81.         {
  82.                 PROPERTY_FUNCS(border_top_style),
  83.                 0,
  84.                 GROUP_NORMAL
  85.         },
  86.         {
  87.                 PROPERTY_FUNCS(border_right_style),
  88.                 0,
  89.                 GROUP_NORMAL
  90.         },
  91.         {
  92.                 PROPERTY_FUNCS(border_bottom_style),
  93.                 0,
  94.                 GROUP_NORMAL
  95.         },
  96.         {
  97.                 PROPERTY_FUNCS(border_left_style),
  98.                 0,
  99.                 GROUP_NORMAL
  100.         },
  101.         {
  102.                 PROPERTY_FUNCS(border_top_width),
  103.                 0,
  104.                 GROUP_NORMAL
  105.         },
  106.         {
  107.                 PROPERTY_FUNCS(border_right_width),
  108.                 0,
  109.                 GROUP_NORMAL
  110.         },
  111.         {
  112.                 PROPERTY_FUNCS(border_bottom_width),
  113.                 0,
  114.                 GROUP_NORMAL
  115.         },
  116.         {
  117.                 PROPERTY_FUNCS(border_left_width),
  118.                 0,
  119.                 GROUP_NORMAL
  120.         },
  121.         {
  122.                 PROPERTY_FUNCS(bottom),
  123.                 0,
  124.                 GROUP_NORMAL
  125.         },
  126.         {
  127.                 PROPERTY_FUNCS(caption_side),
  128.                 1,
  129.                 GROUP_NORMAL
  130.         },
  131.         {
  132.                 PROPERTY_FUNCS(clear),
  133.                 0,
  134.                 GROUP_NORMAL
  135.         },
  136.         {
  137.                 PROPERTY_FUNCS(clip),
  138.                 0,
  139.                 GROUP_UNCOMMON
  140.         },
  141.         {
  142.                 PROPERTY_FUNCS(color),
  143.                 1,
  144.                 GROUP_NORMAL
  145.         },
  146.         {
  147.                 PROPERTY_FUNCS(content),
  148.                 0,
  149.                 GROUP_UNCOMMON
  150.         },
  151.         {
  152.                 PROPERTY_FUNCS(counter_increment),
  153.                 0,
  154.                 GROUP_UNCOMMON
  155.         },
  156.         {
  157.                 PROPERTY_FUNCS(counter_reset),
  158.                 0,
  159.                 GROUP_UNCOMMON
  160.         },
  161.         {
  162.                 PROPERTY_FUNCS(cue_after),
  163.                 0,
  164.                 GROUP_AURAL
  165.         },
  166.         {
  167.                 PROPERTY_FUNCS(cue_before),
  168.                 0,
  169.                 GROUP_AURAL
  170.         },
  171.         {
  172.                 PROPERTY_FUNCS(cursor),
  173.                 1,
  174.                 GROUP_UNCOMMON
  175.         },
  176.         {
  177.                 PROPERTY_FUNCS(direction),
  178.                 1,
  179.                 GROUP_NORMAL
  180.         },
  181.         {
  182.                 PROPERTY_FUNCS(display),
  183.                 0,
  184.                 GROUP_NORMAL
  185.         },
  186.         {
  187.                 PROPERTY_FUNCS(elevation),
  188.                 1,
  189.                 GROUP_AURAL
  190.         },
  191.         {
  192.                 PROPERTY_FUNCS(empty_cells),
  193.                 1,
  194.                 GROUP_NORMAL
  195.         },
  196.         {
  197.                 PROPERTY_FUNCS(float),
  198.                 0,
  199.                 GROUP_NORMAL
  200.         },
  201.         {
  202.                 PROPERTY_FUNCS(font_family),
  203.                 1,
  204.                 GROUP_NORMAL
  205.         },
  206.         {
  207.                 PROPERTY_FUNCS(font_size),
  208.                 1,
  209.                 GROUP_NORMAL
  210.         },
  211.         {
  212.                 PROPERTY_FUNCS(font_style),
  213.                 1,
  214.                 GROUP_NORMAL
  215.         },
  216.         {
  217.                 PROPERTY_FUNCS(font_variant),
  218.                 1,
  219.                 GROUP_NORMAL
  220.         },
  221.         {
  222.                 PROPERTY_FUNCS(font_weight),
  223.                 1,
  224.                 GROUP_NORMAL
  225.         },
  226.         {
  227.                 PROPERTY_FUNCS(height),
  228.                 0,
  229.                 GROUP_NORMAL
  230.         },
  231.         {
  232.                 PROPERTY_FUNCS(left),
  233.                 0,
  234.                 GROUP_NORMAL
  235.         },
  236.         {
  237.                 PROPERTY_FUNCS(letter_spacing),
  238.                 1,
  239.                 GROUP_UNCOMMON
  240.         },
  241.         {
  242.                 PROPERTY_FUNCS(line_height),
  243.                 1,
  244.                 GROUP_NORMAL
  245.         },
  246.         {
  247.                 PROPERTY_FUNCS(list_style_image),
  248.                 1,
  249.                 GROUP_NORMAL
  250.         },
  251.         {
  252.                 PROPERTY_FUNCS(list_style_position),
  253.                 1,
  254.                 GROUP_NORMAL
  255.         },
  256.         {
  257.                 PROPERTY_FUNCS(list_style_type),
  258.                 1,
  259.                 GROUP_NORMAL
  260.         },
  261.         {
  262.                 PROPERTY_FUNCS(margin_top),
  263.                 0,
  264.                 GROUP_NORMAL
  265.         },
  266.         {
  267.                 PROPERTY_FUNCS(margin_right),
  268.                 0,
  269.                 GROUP_NORMAL
  270.         },
  271.         {
  272.                 PROPERTY_FUNCS(margin_bottom),
  273.                 0,
  274.                 GROUP_NORMAL
  275.         },
  276.         {
  277.                 PROPERTY_FUNCS(margin_left),
  278.                 0,
  279.                 GROUP_NORMAL
  280.         },
  281.         {
  282.                 PROPERTY_FUNCS(max_height),
  283.                 0,
  284.                 GROUP_NORMAL
  285.         },
  286.         {
  287.                 PROPERTY_FUNCS(max_width),
  288.                 0,
  289.                 GROUP_NORMAL
  290.         },
  291.         {
  292.                 PROPERTY_FUNCS(min_height),
  293.                 0,
  294.                 GROUP_NORMAL
  295.         },
  296.         {
  297.                 PROPERTY_FUNCS(min_width),
  298.                 0,
  299.                 GROUP_NORMAL
  300.         },
  301.         {
  302.                 PROPERTY_FUNCS(orphans),
  303.                 1,
  304.                 GROUP_PAGE
  305.         },
  306.         {
  307.                 PROPERTY_FUNCS(outline_color),
  308.                 0,
  309.                 GROUP_UNCOMMON
  310.         },
  311.         {
  312.                 PROPERTY_FUNCS(outline_style),
  313.                 0,
  314.                 GROUP_NORMAL
  315.         },
  316.         {
  317.                 PROPERTY_FUNCS(outline_width),
  318.                 0,
  319.                 GROUP_UNCOMMON
  320.         },
  321.         {
  322.                 PROPERTY_FUNCS(overflow),
  323.                 0,
  324.                 GROUP_NORMAL
  325.         },
  326.         {
  327.                 PROPERTY_FUNCS(padding_top),
  328.                 0,
  329.                 GROUP_NORMAL
  330.         },
  331.         {
  332.                 PROPERTY_FUNCS(padding_right),
  333.                 0,
  334.                 GROUP_NORMAL
  335.         },
  336.         {
  337.                 PROPERTY_FUNCS(padding_bottom),
  338.                 0,
  339.                 GROUP_NORMAL
  340.         },
  341.         {
  342.                 PROPERTY_FUNCS(padding_left),
  343.                 0,
  344.                 GROUP_NORMAL
  345.         },
  346.         {
  347.                 PROPERTY_FUNCS(page_break_after),
  348.                 0,
  349.                 GROUP_PAGE
  350.         },
  351.         {
  352.                 PROPERTY_FUNCS(page_break_before),
  353.                 0,
  354.                 GROUP_PAGE
  355.         },
  356.         {
  357.                 PROPERTY_FUNCS(page_break_inside),
  358.                 1,
  359.                 GROUP_PAGE
  360.         },
  361.         {
  362.                 PROPERTY_FUNCS(pause_after),
  363.                 0,
  364.                 GROUP_AURAL
  365.         },
  366.         {
  367.                 PROPERTY_FUNCS(pause_before),
  368.                 0,
  369.                 GROUP_AURAL
  370.         },
  371.         {
  372.                 PROPERTY_FUNCS(pitch_range),
  373.                 1,
  374.                 GROUP_AURAL
  375.         },
  376.         {
  377.                 PROPERTY_FUNCS(pitch),
  378.                 1,
  379.                 GROUP_AURAL
  380.         },
  381.         {
  382.                 PROPERTY_FUNCS(play_during),
  383.                 0,
  384.                 GROUP_AURAL
  385.         },
  386.         {
  387.                 PROPERTY_FUNCS(position),
  388.                 0,
  389.                 GROUP_NORMAL
  390.         },
  391.         {
  392.                 PROPERTY_FUNCS(quotes),
  393.                 1,
  394.                 GROUP_NORMAL
  395.         },
  396.         {
  397.                 PROPERTY_FUNCS(richness),
  398.                 1,
  399.                 GROUP_AURAL
  400.         },
  401.         {
  402.                 PROPERTY_FUNCS(right),
  403.                 0,
  404.                 GROUP_NORMAL
  405.         },
  406.         {
  407.                 PROPERTY_FUNCS(speak_header),
  408.                 1,
  409.                 GROUP_AURAL
  410.         },
  411.         {
  412.                 PROPERTY_FUNCS(speak_numeral),
  413.                 1,
  414.                 GROUP_AURAL
  415.         },
  416.         {
  417.                 PROPERTY_FUNCS(speak_punctuation),
  418.                 1,
  419.                 GROUP_AURAL
  420.         },
  421.         {
  422.                 PROPERTY_FUNCS(speak),
  423.                 1,
  424.                 GROUP_AURAL
  425.         },
  426.         {
  427.                 PROPERTY_FUNCS(speech_rate),
  428.                 1,
  429.                 GROUP_AURAL
  430.         },
  431.         {
  432.                 PROPERTY_FUNCS(stress),
  433.                 1,
  434.                 GROUP_AURAL
  435.         },
  436.         {
  437.                 PROPERTY_FUNCS(table_layout),
  438.                 0,
  439.                 GROUP_NORMAL
  440.         },
  441.         {
  442.                 PROPERTY_FUNCS(text_align),
  443.                 1,
  444.                 GROUP_NORMAL
  445.         },
  446.         {
  447.                 PROPERTY_FUNCS(text_decoration),
  448.                 0,
  449.                 GROUP_NORMAL
  450.         },
  451.         {
  452.                 PROPERTY_FUNCS(text_indent),
  453.                 1,
  454.                 GROUP_NORMAL
  455.         },
  456.         {
  457.                 PROPERTY_FUNCS(text_transform),
  458.                 1,
  459.                 GROUP_NORMAL
  460.         },
  461.         {
  462.                 PROPERTY_FUNCS(top),
  463.                 0,
  464.                 GROUP_NORMAL
  465.         },
  466.         {
  467.                 PROPERTY_FUNCS(unicode_bidi),
  468.                 0,
  469.                 GROUP_NORMAL
  470.         },
  471.         {
  472.                 PROPERTY_FUNCS(vertical_align),
  473.                 0,
  474.                 GROUP_NORMAL
  475.         },
  476.         {
  477.                 PROPERTY_FUNCS(visibility),
  478.                 1,
  479.                 GROUP_NORMAL
  480.         },
  481.         {
  482.                 PROPERTY_FUNCS(voice_family),
  483.                 1,
  484.                 GROUP_AURAL
  485.         },
  486.         {
  487.                 PROPERTY_FUNCS(volume),
  488.                 1,
  489.                 GROUP_AURAL
  490.         },
  491.         {
  492.                 PROPERTY_FUNCS(white_space),
  493.                 1,
  494.                 GROUP_NORMAL
  495.         },
  496.         {
  497.                 PROPERTY_FUNCS(widows),
  498.                 1,
  499.                 GROUP_PAGE
  500.         },
  501.         {
  502.                 PROPERTY_FUNCS(width),
  503.                 0,
  504.                 GROUP_NORMAL
  505.         },
  506.         {
  507.                 PROPERTY_FUNCS(word_spacing),
  508.                 1,
  509.                 GROUP_UNCOMMON
  510.         },
  511.         {
  512.                 PROPERTY_FUNCS(z_index),
  513.                 0,
  514.                 GROUP_NORMAL
  515.         },
  516.         {
  517.                 PROPERTY_FUNCS(opacity),
  518.                 0,
  519.                 GROUP_NORMAL
  520.         },
  521.         {
  522.                 PROPERTY_FUNCS(break_after),
  523.                 0,
  524.                 GROUP_NORMAL
  525.         },
  526.         {
  527.                 PROPERTY_FUNCS(break_before),
  528.                 0,
  529.                 GROUP_NORMAL
  530.         },
  531.         {
  532.                 PROPERTY_FUNCS(break_inside),
  533.                 0,
  534.                 GROUP_NORMAL
  535.         },
  536.         {
  537.                 PROPERTY_FUNCS(column_count),
  538.                 0,
  539.                 GROUP_NORMAL
  540.         },
  541.         {
  542.                 PROPERTY_FUNCS(column_fill),
  543.                 0,
  544.                 GROUP_NORMAL
  545.         },
  546.         {
  547.                 PROPERTY_FUNCS(column_gap),
  548.                 0,
  549.                 GROUP_NORMAL
  550.         },
  551.         {
  552.                 PROPERTY_FUNCS(column_rule_color),
  553.                 0,
  554.                 GROUP_NORMAL
  555.         },
  556.         {
  557.                 PROPERTY_FUNCS(column_rule_style),
  558.                 0,
  559.                 GROUP_NORMAL
  560.         },
  561.         {
  562.                 PROPERTY_FUNCS(column_rule_width),
  563.                 0,
  564.                 GROUP_NORMAL
  565.         },
  566.         {
  567.                 PROPERTY_FUNCS(column_span),
  568.                 0,
  569.                 GROUP_NORMAL
  570.         },
  571.         {
  572.                 PROPERTY_FUNCS(column_width),
  573.                 0,
  574.                 GROUP_NORMAL
  575.         }
  576. };
  577.