<?xml version="1.0" encoding="UTF-8"?>
<!--

 This file is part of GtkSourceView

 Author: Gustavo Giráldez <gustavo.giraldez@gmx.net>
 Copyright (C) 2003 Gustavo Giráldez <gustavo.giraldez@gmx.net>
 Copyright (C) 2006 Jeff Walden <jwalden@mit.edu>

 GtkSourceView is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.

 GtkSourceView is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public License
 along with this library; if not, see <http://www.gnu.org/licenses/>.
 ________________________________________________________________________
 Mise à jour pour GtkSourceView-4  
 Auteur : Dominique Mabboux-Stromberg
 Copyleft (🄯) 2020 Dominique Mabboux-Stromberg <mabboux@wanadoo.fr>

-->
<language id="povray" name="POV-Ray" version="2.0" _section="Other">
  <metadata>
    <property name="mimetypes">text/x-povray</property>
    <property name="globs">*.pov</property>
    <property name="line-comment-start">//</property>
    <property name="block-comment-start">/*</property>
    <property name="block-comment-end">*/</property>
  </metadata>

  <styles>
    <style id="comment"           name="Comment"                   map-to="def:comment"/>
    <style id="escaped-character" name="Escaped Character"         map-to="def:special-char"/>   
    <style id="string"            name="String"                    map-to="def:string"/>
    <style id="function"          name="Function"                  map-to="def:preprocessor"/>
    <style id="preprocessor"      name="Preprocessor"              map-to="def:preprocessor"/>
    <style id="keyword"           name="Keyword"                   map-to="def:keyword"/>
    <style id="number"            name="Number"                    map-to="def:decimal"/>
    <style id="others"            name="Others 3"/>

  </styles>

  <definitions>
 
    <define-regex id="escaped-character" extended="true">
      \\(               # leading backslash
      [\\\"\'nrbtf] |   # escaped character
      [0-9]{1,3}    |   # latin encoded char
      u[0-9]{1,4}       # unicode char
      )
    </define-regex>

    <context id="string" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
      <start>"</start>
      <end>"</end>
      <include>
        <context id="escaped-character" style-ref="escaped-character">
          <match>\%{escaped-character}</match>
        </context>
      </include>
    </context>

    
    <context id="punctuator" style-ref="others">
<match extended="true">
[{}().,;]
</match>
</context>


<context id="operator" style-ref="function">
<match extended="true">
[-+!*/&lt;&gt;=&amp;|?:]
</match>
</context>

<context id="array-operator" style-ref="function">
<match extended="true">
(\[|\])
</match>
</context>


    
        <context id="numeric" style-ref="number">
      <match extended="true">
[\+-]?[0-9]+(\.[0-9])?([Ee][\+-]?[0-9]+)?
      </match>
       </context>
    
    	<context id="built-in-constant" style-ref="string">
		<keyword>false</keyword>
		<keyword>no</keyword>
		<keyword>off</keyword>
		<keyword>on</keyword>
		<keyword>pi</keyword>
		<keyword>true</keyword>
		<keyword>yes</keyword>
	</context>

	<context id="built-in-variable" style-ref="keyword">
		<keyword>clock</keyword>
		<keyword>clock_delta</keyword>
		<keyword>clock_on</keyword>
		<keyword>final_clock</keyword>
		<keyword>final_frame</keyword>
		<keyword>frame_number</keyword>
		<keyword>initial_clock</keyword>
		<keyword>initial_frame</keyword>
		<keyword>image_height</keyword>
		<keyword>image_width</keyword>
		<keyword>input_file_name</keyword>
		<keyword>version</keyword>
	</context>

	<context id="built-in-vector" style-ref="keyword">
		<keyword>t</keyword>
		<keyword>u</keyword>
		<keyword>v</keyword>
		<keyword>x</keyword>
		<keyword>y</keyword>
		<keyword>z</keyword>
	</context>

	<context id="color-identifier" style-ref="keyword">
		<keyword>blue</keyword>
		<keyword>filter</keyword>
		<keyword>gray</keyword>
		<keyword>green</keyword>
		<keyword>red</keyword>
		<keyword>rgb</keyword>
		<keyword>rgbf</keyword>
		<keyword>rgbft</keyword>
		<keyword>rgbt</keyword>
		<keyword>srgb</keyword>
		<keyword>sRGB</keyword>
		<keyword>SRGB</keyword>
		<keyword>srgbf</keyword>
		<keyword>srgbft</keyword>
		<keyword>srgbt</keyword>
		<keyword>transmit</keyword>
	</context>

	<context id="float-function" style-ref="function">
		<keyword>abs</keyword>
		<keyword>acos</keyword>
		<keyword>acosh</keyword>
		<keyword>asc</keyword>
		<keyword>asin</keyword>
		<keyword>asinh</keyword>
		<keyword>atan</keyword>
		<keyword>atan2</keyword>
		<keyword>atand</keyword>
		<keyword>atanh</keyword>
		<keyword>bitwise_and</keyword>
		<keyword>bitwise_or</keyword>
		<keyword>bitwise_xor</keyword>
		<keyword>ceil</keyword>
		<keyword>cos</keyword>
		<keyword>cosh</keyword>
		<keyword>defined</keyword>
		<keyword>degrees</keyword>
		<keyword>dimension_size</keyword>
		<keyword>dimensions</keyword>
		<keyword>div</keyword>
		<keyword>exp</keyword>
		<keyword>file_exists</keyword>
		<keyword>floor</keyword>
		<keyword>inside</keyword>
		<keyword>int</keyword>
		<keyword>ln</keyword>
		<keyword>log</keyword>
		<keyword>max</keyword>
		<keyword>min</keyword>
		<keyword>mod</keyword>
		<keyword>pow</keyword>
		<keyword>radians</keyword>
		<keyword>rand</keyword>
		<keyword>seed</keyword>
		<keyword>select</keyword>
		<keyword>sin</keyword>
		<keyword>sinh</keyword>
		<keyword>sqr</keyword>
		<keyword>sqrt</keyword>
		<keyword>strcmp</keyword>
		<keyword>strlen</keyword>
		<keyword>tan</keyword>
		<keyword>tanh</keyword>
		<keyword>val</keyword>
		<keyword>vdot</keyword>
		<keyword>vlength</keyword>
	</context>

	<context id="vector-function" style-ref="function">
		<keyword>max_extent</keyword>
		<keyword>min_extent</keyword>
		<keyword>trace</keyword>
		<keyword>vaxis_rotate</keyword>
		<keyword>vcross</keyword>
		<keyword>vnormalize</keyword>
		<keyword>vrotate</keyword>
		<keyword>vturbulence</keyword>
	</context>

	<context id="string-function" style-ref="function">
		<keyword>chr</keyword>
		<keyword>concat</keyword>
		<keyword>datetime</keyword>
		<keyword>str</keyword>
		<keyword>strlwr</keyword>
		<keyword>strupr</keyword>
		<keyword>substr</keyword>
		<keyword>vstr</keyword>
	</context>

	<context id="pattern" style-ref="keyword">
		<keyword>agate</keyword>
		<keyword>aoi</keyword>
		<keyword>average</keyword>
		<keyword>boxed</keyword>
		<keyword>bozo</keyword>
		<keyword>brick</keyword>
		<keyword>bumps</keyword>
		<keyword>cells</keyword>
		<keyword>checker</keyword>
		<keyword>crackle</keyword>
		<keyword>cubic</keyword>
		<keyword>cylindrical</keyword>
		<keyword>density_file</keyword>
		<keyword>dents</keyword>
		<keyword>facets</keyword>
		<keyword>gradient</keyword>
		<keyword>granite</keyword>
		<keyword>hexagon</keyword>
		<keyword>image_pattern</keyword>
		<keyword>julia</keyword>
		<keyword>leopard</keyword>
		<keyword>magnet</keyword>
		<keyword>mandel</keyword>
		<keyword>marble</keyword>
		<keyword>onion</keyword>
		<keyword>pavement</keyword>
		<keyword>pigment_pattern</keyword>
		<keyword>planar</keyword>
		<keyword>quilted</keyword>
		<keyword>radial</keyword>
		<keyword>ripples</keyword>
		<keyword>slope</keyword>
		<keyword>spherical</keyword>
		<keyword>spiral1</keyword>
		<keyword>spiral2</keyword>
		<keyword>spotted</keyword>
		<keyword>square</keyword>
		<keyword>tile2</keyword>
		<keyword>tiling</keyword>
		<keyword>tiles</keyword>
		<keyword>triangular</keyword>
		<keyword>waves</keyword>
		<keyword>wood</keyword>
		<keyword>wrinkles</keyword>
	</context>

	<context id="object" style-ref="keyword">
		<keyword>background</keyword>
		<keyword>bicubic_patch</keyword>
		<keyword>blob</keyword>
		<keyword>box</keyword>
		<keyword>camera</keyword>
		<keyword>cone</keyword>
		<keyword>cubic</keyword>
		<keyword>cylinder</keyword>
		<keyword>difference</keyword>
		<keyword>disc</keyword>
		<keyword>fog</keyword>
		<keyword>height_field</keyword>
		<keyword>intersection</keyword>
		<keyword>isosurface</keyword>
		<keyword>julia_fractal</keyword>
		<keyword>lathe</keyword>
		<keyword>light_group</keyword>
		<keyword>light_source</keyword>
		<keyword>merge</keyword>
		<keyword>mesh</keyword>
		<keyword>mesh2</keyword>
		<keyword>object</keyword>
		<keyword>ovus</keyword>
		<keyword>parametric</keyword>
		<keyword>plane</keyword>
		<keyword>poly</keyword>
		<keyword>polygon</keyword>
		<keyword>polynomial</keyword>
		<keyword>prism</keyword>
		<keyword>quadric</keyword>
		<keyword>quartic</keyword>
		<keyword>rainbow</keyword>
		<keyword>sky_sphere</keyword>
		<keyword>smooth_triangle</keyword>
		<keyword>sphere</keyword>
		<keyword>sphere_sweep</keyword>
		<keyword>spline</keyword>
		<keyword>superellipsoid</keyword>
		<keyword>sor</keyword>
		<keyword>text</keyword>
		<keyword>torus</keyword>
		<keyword>triangle</keyword>
		<keyword>union</keyword>
	</context>

	<context id="filetype" style-ref="keyword">
		<keyword>df3</keyword>
		<keyword>exr</keyword>
		<keyword>gif</keyword>
		<keyword>hdr</keyword>
		<keyword>iff</keyword>
		<keyword>jpeg</keyword>
		<keyword>pgm</keyword>
		<keyword>png</keyword>
		<keyword>ppm</keyword>
		<keyword>sys</keyword>
		<keyword>tga</keyword>
		<keyword>tiff</keyword>
	</context>
    
    	<context id="spline-identifier" style-ref="keyword">
		<keyword>b_spline</keyword>
		<keyword>bezier_spline</keyword>
		<keyword>conic_sweep</keyword>
		<keyword>cubic_spline</keyword>
		<keyword>linear_spline</keyword>
		<keyword>linear_sweep</keyword>
		<keyword>natural_spline</keyword>
		<keyword>quadratic_spline</keyword>
	</context>

	<context id="encoding" style-ref="keyword">
		<keyword>ascii</keyword>
		<keyword>utf8</keyword>
		<keyword>uint8</keyword>
		<keyword>uint16be</keyword>
		<keyword>uint16le</keyword>
		<keyword>sint8</keyword>
		<keyword>sint16be</keyword>
		<keyword>sint16le</keyword>
		<keyword>sint32be</keyword>
		<keyword>sint32le</keyword>
	</context>
    
    	<context id="camera-type" style-ref="keyword">
		<keyword>fisheye</keyword>
		<keyword>mesh_camera</keyword>
		<keyword>omnimax</keyword>
		<keyword>orthographic</keyword>
		<keyword>panoramic</keyword>
		<keyword>perspective</keyword>
		<keyword>ultra_wide_angle</keyword>
		<!-- cylinder and spherical keywords defined elsewhere -->
	</context>
    
	<context id="modifier" style-ref="keyword">
		<keyword>adaptive</keyword>
		<keyword>agate_turb</keyword>
		<keyword>bounded_by</keyword>
		<keyword>brick_size</keyword>
		<keyword>bump_map</keyword>
		<keyword>bump_size</keyword>
		<keyword>circular</keyword>
		<keyword>clipped_by</keyword>
		<keyword>cubic</keyword>
		<keyword>color</keyword>
		<keyword>color_map</keyword>
		<keyword>colour</keyword>
		<keyword>colour_map</keyword>
		<keyword>control0</keyword>
		<keyword>control1</keyword>
		<keyword>cubic_wave</keyword>
		<keyword>density</keyword>
		<keyword>density_map</keyword>
		<keyword>double_illuminate</keyword>
		<keyword>fade_color</keyword>
		<keyword>fade_colour</keyword>
		<keyword>fade_distance</keyword>
		<keyword>fade_power</keyword>
		<keyword>frequency</keyword>
		<keyword>global_lights</keyword>
		<keyword>hollow</keyword>
		<keyword>image_map</keyword>
		<keyword>interior</keyword>
		<keyword>interior_texture</keyword>
		<keyword>interpolate</keyword>
		<keyword>inverse</keyword>
		<keyword>jitter</keyword>
		<keyword>lambda</keyword>
		<keyword>map_type</keyword>
		<keyword>material</keyword>
		<keyword>material_map</keyword>
		<keyword>matrix</keyword>
		<keyword>media</keyword>
		<keyword>media_attenuation</keyword>
		<keyword>media_interaction</keyword>
		<keyword>mm_per_unit</keyword>
		<keyword>mortar</keyword>
		<keyword>no_bump_scale</keyword>
		<keyword>no_image</keyword>
		<keyword>no_radiosity</keyword>
		<keyword>no_reflection</keyword>
		<keyword>no_shadow</keyword>
		<keyword>noise_generator</keyword>
		<keyword>normal</keyword>
		<keyword>normal_map</keyword>
		<keyword>octaves</keyword>
		<keyword>omega</keyword>
		<keyword>once</keyword>
		<keyword>orient</keyword>
		<keyword>parallel</keyword>
		<keyword>phase</keyword>
		<keyword>photons</keyword>
		<keyword>pigment</keyword>
		<keyword>pigment_map</keyword>
		<keyword>poly_wave</keyword>
		<keyword>projected_through</keyword>
		<keyword>quick_color</keyword>
		<keyword>quick_colour</keyword>
		<keyword>ramp_wave</keyword>
		<keyword>rotate</keyword>
		<keyword>scale</keyword>
		<keyword>scallop_wave</keyword>
		<keyword>shadowless</keyword>
		<keyword>sine_wave</keyword>
		<keyword>slope_map</keyword>
		<keyword>subsurface</keyword>
		<keyword>texture</keyword>
		<keyword>texture_map</keyword>
		<keyword>transform</keyword>
		<keyword>translate</keyword>
		<keyword>triangle_wave</keyword>
		<keyword>turbulence</keyword>
		<keyword>translucency</keyword>
		<keyword>use_color</keyword>
		<keyword>use_colour</keyword>
		<keyword>use_index</keyword>
		<keyword>uv_mapping</keyword>
		<keyword>warp</keyword>
	</context>    
    
<context id="keyword" style-ref="keyword">
		<keyword>aa_level</keyword>
		<keyword>aa_threshold</keyword>
		<keyword>absorption</keyword>
		<keyword>accuracy</keyword>
		<keyword>adc_bailout</keyword>
		<keyword>all</keyword>
		<keyword>all_intersections</keyword>
		<keyword>alpha</keyword>
		<keyword>altitude</keyword>
		<keyword>always_sample</keyword>
		<keyword>ambient</keyword>
		<keyword>ambient_light</keyword>
		<keyword>angle</keyword>
		<keyword>aperture</keyword>
		<keyword>arc_angle</keyword>
		<keyword>area_light</keyword>
		<keyword>area_illumination</keyword>
		<keyword>array</keyword>
		<keyword>assumed_gamma</keyword>
		<keyword>autostop</keyword>
		<keyword>black_hole</keyword>
		<keyword>blur_samples</keyword>
		<keyword>bokeh</keyword>
		<keyword>brightness</keyword>
		<keyword>brilliance</keyword>
		<keyword>caustics</keyword>
		<keyword>charset</keyword>
		<keyword>collect</keyword>
		<keyword>component</keyword>
		<keyword>composite</keyword>
		<keyword>confidence</keyword>
		<keyword>conserve_energy</keyword>
		<keyword>contained_by</keyword>
		<keyword>coords</keyword>
		<keyword>count</keyword>
		<keyword>crand</keyword>
		<keyword>cube</keyword>
		<keyword>cutaway_textures</keyword>
		<keyword>diffuse</keyword>
		<keyword>direction</keyword>
		<keyword>dispersion</keyword>
		<keyword>dispersion_samples</keyword>
		<keyword>dist_exp</keyword>
		<keyword>distance</keyword>
		<keyword>eccentricity</keyword>
		<keyword>emission</keyword>
		<keyword>error_bound</keyword>
		<keyword>evaluate</keyword>
		<keyword>expand_thresholds</keyword>
		<keyword>exponent</keyword>
		<keyword>exterior</keyword>
		<keyword>extinction</keyword>
		<keyword>face_indices</keyword>
		<keyword>falloff</keyword>
		<keyword>falloff_angle</keyword>
		<keyword>file_gamma</keyword>
		<keyword>finish</keyword>
		<keyword>flatness</keyword>
		<keyword>flip</keyword>
		<keyword>focal_point</keyword>
		<keyword>fog_alt</keyword>
		<keyword>fog_offset</keyword>
		<keyword>fog_type</keyword>
		<keyword>form</keyword>
		<keyword>fresnel</keyword>
		<keyword>function</keyword>
		<keyword>gamma</keyword>
		<keyword>gather</keyword>
		<keyword>global_settings</keyword>
		<keyword>gray_threshold</keyword>
		<keyword>hf_gray_16</keyword>
		<keyword>hierarchy</keyword>
		<keyword>hypercomplex</keyword>
		<keyword>importance</keyword>
		<keyword>inside_vector</keyword>
		<keyword>internal</keyword>
		<keyword>intervals</keyword>
		<keyword>ior</keyword>
		<keyword>irid</keyword>
		<keyword>irid_wavelength</keyword>
		<keyword>load_file</keyword>
		<keyword>location</keyword>
		<keyword>look_at</keyword>
		<keyword>looks_like</keyword>
		<keyword>low_error_factor</keyword>
		<keyword>major_radius</keyword>
		<keyword>max_extent</keyword>
		<keyword>max_gradient</keyword>
		<keyword>max_intersections</keyword>
		<keyword>max_iteration</keyword>
		<keyword>max_sample</keyword>
		<keyword>max_trace</keyword>
		<keyword>max_trace_level</keyword>
		<keyword>maximum_reuse</keyword>
		<keyword>metallic</keyword>
		<keyword>method</keyword>
		<keyword>metric</keyword>
		<keyword>minimum_reuse</keyword>
		<keyword>nearest_count</keyword>
		<keyword>normal_indices</keyword>
		<keyword>normal_vectors</keyword>
		<keyword>now</keyword>
		<keyword>number_of_waves</keyword>
		<keyword>offset</keyword>
		<keyword>open</keyword>
		<keyword>orientation</keyword>
		<keyword>pass_through</keyword>
		<keyword>pattern</keyword>
		<keyword>phong</keyword>
		<keyword>phong_size</keyword>
		<keyword>point_at</keyword>
		<keyword>pot</keyword>
		<keyword>precision</keyword>
		<keyword>precompute</keyword>
		<keyword>pretrace_end</keyword>
		<keyword>pretrace_start</keyword>
		<keyword>prod</keyword>
		<keyword>pwr</keyword>
		<keyword>quaternion</keyword>
		<keyword>radiosity</keyword>
		<keyword>radius</keyword>
		<keyword>ratio</keyword>
		<keyword>reciprocal</keyword>
		<keyword>recursion_limit</keyword>
		<keyword>reflection</keyword>
		<keyword>reflection_exponent</keyword>
		<keyword>refraction</keyword>
		<keyword>repeat</keyword>
		<keyword>right</keyword>
		<keyword>roughness</keyword>
		<keyword>samples</keyword>
		<keyword>save_file</keyword>
		<keyword>scattering</keyword>
		<keyword>size</keyword>
		<keyword>sky</keyword>
		<keyword>slice</keyword>
		<keyword>smooth</keyword>
		<keyword>solid</keyword>
		<keyword>spacing</keyword>
		<keyword>specular</keyword>
		<keyword>split_union</keyword>
		<keyword>spotlight</keyword>
		<keyword>strength</keyword>
		<keyword>sturm</keyword>
		<keyword>sum</keyword>
		<keyword>target</keyword>
		<keyword>texture_list</keyword>
		<keyword>thickness</keyword>
		<keyword>threshold</keyword>
		<keyword>tightness</keyword>
		<keyword>tolerance</keyword>
		<keyword>toroidal</keyword>
		<keyword>ttf</keyword>
		<keyword>turb_depth</keyword>
		<keyword>type</keyword>
		<keyword>u_steps</keyword>
		<keyword>up</keyword>
		<keyword>use_alpha</keyword>
		<keyword>uv_indices</keyword>
		<keyword>uv_vectors</keyword>
		<keyword>v_steps</keyword>
		<keyword>variance</keyword>
		<keyword>vertex_vectors</keyword>
		<keyword>water_level</keyword>
		<keyword>width</keyword>
	</context>
	
<context id="language-directive" style-ref="preprocessor">
		<keyword>append</keyword>
		<keyword>break</keyword>
		<keyword>case</keyword>
		<keyword>debug</keyword>
		<keyword>declare</keyword>
		<keyword>default</keyword>
		<keyword>deprecated</keyword>
		<keyword>else</keyword>
		<keyword>elseif</keyword>
		<keyword>end</keyword>
		<keyword>error</keyword>
		<keyword>fclose</keyword>
		<keyword>fopen</keyword>
		<keyword>for</keyword>
		<keyword>if</keyword>
		<keyword>ifdef</keyword>
		<keyword>ifndef</keyword>
		<keyword>include</keyword>
		<keyword>local</keyword>
		<keyword>macro</keyword>
		<keyword>range</keyword>
		<keyword>read</keyword>
		<keyword>render</keyword>
		<keyword>statistics</keyword>
		<keyword>switch</keyword>
		<keyword>undef</keyword>
		<keyword>version</keyword>
		<keyword>warning</keyword>
		<keyword>while</keyword>
		<keyword>write</keyword>
	</context>	

    <context id="povray" class="no-spell-check">
      <include>



        <context ref="def:c-like-comment" style-ref="comment"/>
        <context ref="def:c-like-comment-multiline" style-ref="comment"/>
        <context ref="def:c-like-close-comment-outside-comment"/>
        <context ref="string"/>
        <context ref="built-in-constant"/>
	<context ref="built-in-variable"/>
	<context ref="built-in-vector"/>
	<context ref="color-identifier"/>
	<context ref="float-function"/>
	<context ref="vector-function"/>
	<context ref="string-function"/>
	<context ref="pattern"/>
	<context ref="object"/>
	<context ref="filetype"/>
        <context ref="spline-identifier"/>
        <context ref="encoding"/>
	<context ref="camera-type"/>
        <context ref="modifier"/>
	<context ref="keyword"/>
        <context ref="language-directive"/>
       
        <context ref="punctuator"/>




        <context ref="operator"/>

        <context ref="array-operator"/>
        <context ref="numeric"/>
      </include>
    </context>

  </definitions>
</language>
