15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_texgen_emboss 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_texgen_emboss 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNotice 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Copyright NVIDIA Corporation, 1999, 2001. 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciIP Status 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci NVIDIA Proprietary. 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciStatus 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci Discontinued. 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci NVIDIA no longer supports this extension in driver updates 265bd8deadSopenharmony_ci after November 2002. Instead, use either ARB_vertex_program & 275bd8deadSopenharmony_ci NV_vertex_program. 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ciVersion 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci NVIDIA Date: January 3, 2003 325bd8deadSopenharmony_ci $Date$ $Revision$ 335bd8deadSopenharmony_ci $Id: //sw/main/docs/OpenGL/specs/old/GL_NV_texgen_emboss.txt#2 $ 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ciNumber 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci 193 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciDependencies 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci ARB_multitexture. 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci Written based on the wording of the OpenGL 1.2 specification and the 445bd8deadSopenharmony_ci ARB_multitexture extension. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ciOverview 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci This extension provides a new texture coordinate generation mode 495bd8deadSopenharmony_ci suitable for multitexture-based embossing (or bump mapping) effects. 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci Given two texture units, this extension generates the texture 525bd8deadSopenharmony_ci coordinates of a second texture unit (an odd-numbered texture unit) 535bd8deadSopenharmony_ci as a perturbation of a first texture unit (an even-numbered texture 545bd8deadSopenharmony_ci unit one less than the second texture unit). The perturbation is 555bd8deadSopenharmony_ci based on the normal, tangent, and light vectors. The normal vector 565bd8deadSopenharmony_ci is supplied by glNormal; the light vector is supplied as a direction 575bd8deadSopenharmony_ci vector to a specified OpenGL light's position; and the tanget 585bd8deadSopenharmony_ci vector is supplied by the second texture unit's current texture 595bd8deadSopenharmony_ci coordinate. The perturbation is also scaled by program-supplied 605bd8deadSopenharmony_ci scaling constants. 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ci If both texture units are bound to the same texture representing a 635bd8deadSopenharmony_ci height field, by subtracting the difference between the resulting two 645bd8deadSopenharmony_ci filtered texels, programs can achieve a per-pixel embossing effect. 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ciIssues 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci Can you do embossing on any texture unit? 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci NO. Just odd numbered units. This meets a constraint of the 715bd8deadSopenharmony_ci proposed hardware implementation, and because embossing takes two 725bd8deadSopenharmony_ci texture units anyway, it shouldn't be a real limitation. 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci Can you just enable one coordinate of a texture unit for embossing? 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci Yes but NOT REALLY. The texture coordinate generation formula 775bd8deadSopenharmony_ci is specified such that only when ALL the coordinates are enabled 785bd8deadSopenharmony_ci and are using embossing, do you get the embossing computation. 795bd8deadSopenharmony_ci Otherwise, you get undefined values for texture coordinates enabled 805bd8deadSopenharmony_ci for texture coordinate generation and setup for embossing. 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci Does the light specified have to be enabled for embossing to work? 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci Yes, currently. But perhaps we could require implementations to 855bd8deadSopenharmony_ci enable a phantom light (the light colors would be black). 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ci Could the emboss constant just be the reciprocal of the width and 885bd8deadSopenharmony_ci height of the texture units texture if that's what the programmer 895bd8deadSopenharmony_ci will have it be most of the time? 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci NO. Too much work and there may be reasons for the programmer to 925bd8deadSopenharmony_ci control this. 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci OpenGL's base texture environment functionality isn't powerful enough 955bd8deadSopenharmony_ci to do the subtraction needed for embossing. Where would you get 965bd8deadSopenharmony_ci powerful enough texture environment functionality. 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci Another extension. Try NV_register_combiners. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci What is the interpretation of CT? 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci For the purposes of embossing, CT should be thought of as the 1035bd8deadSopenharmony_ci vertex's tangent vector. This tangent vector indicates the direction 1045bd8deadSopenharmony_ci on the "surface" where PCTs is not changing and PCTt is increasing. 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci Are the CT and PCT variables the user-supplied current texture 1075bd8deadSopenharmony_ci coordinates? 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci YES. Except when the texture unit's texture coordinate evaluator 1105bd8deadSopenharmony_ci is enabled, then CT and PCT use the respective evaluated texture 1115bd8deadSopenharmony_ci coordinates. 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci This extension specification's language "Denote as CT the texture 1145bd8deadSopenharmony_ci unit's current texture coordinates" and "Denote as PCT the previous 1155bd8deadSopenharmony_ci texture unit's current texture coordinates" refers to the "current 1165bd8deadSopenharmony_ci texture coordinates" OpenGL state which is the state specified 1175bd8deadSopenharmony_ci via glTexCoord. Plus the exception for evaluators. 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ci To be explicit, PCT is NOT the result of texgen or the texture 1205bd8deadSopenharmony_ci matrix. Likewise, CT is NOT the result of texgen or the 1215bd8deadSopenharmony_ci texture matrix. PCT and CT are the respective texture unit's 1225bd8deadSopenharmony_ci evaluated texture coordinate if the vertex is evaluated with 1235bd8deadSopenharmony_ci texture coordinate evaluation enabled, otherwise if the vertex is 1245bd8deadSopenharmony_ci generated via vertex arrays with the respective texture coordinate 1255bd8deadSopenharmony_ci array enabled, the texture coordinate from the texture coordinate 1265bd8deadSopenharmony_ci array, otherwise the respective current texture coordinate is used. 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ciNew Procedures and Functions 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci None 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ciNew Tokens 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci Accepted by the <param> parameters of TexGend, TexGenf, and TexGeni 1355bd8deadSopenharmony_ci when <pname> parameter is TEXTURE_GEN_MODE: 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci EMBOSS_MAP_NV 0x855F 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci When the <pname> parameter of TexGendv, TexGenfv, and TexGeniv is 1405bd8deadSopenharmony_ci TEXTURE_GEN_MODE, then the array <params> may also contain 1415bd8deadSopenharmony_ci EMBOSS_MAP_NV. 1425bd8deadSopenharmony_ci 1435bd8deadSopenharmony_ci Accepted by the <pname> parameters of GetTexGendv, GetTexGenfv, 1445bd8deadSopenharmony_ci GetTexGeniv, TexGend, TexGendv, TexGenf, TexGenfv, TexGeni, and 1455bd8deadSopenharmony_ci TexGeniv: 1465bd8deadSopenharmony_ci 1475bd8deadSopenharmony_ci EMBOSS_LIGHT_NV 0x855D 1485bd8deadSopenharmony_ci EMBOSS_CONSTANT_NV 0x855E 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2 Specification (OpenGL Operation) 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci-- Section 2.10.4 "Generating Texture Coordinates" 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci Change the last sentence in the 1st paragraph to: 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci "If <pname> is TEXTURE_GEN_MODE, then either <params> points to 1575bd8deadSopenharmony_ci or <param> is an integer that is one of the symbolic constants 1585bd8deadSopenharmony_ci OBJECT_LINEAR, EYE_LINEAR, SPHERE_MAP, or EMBOSS_MAP_NV." 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci Add these paragraphs after the 4th paragraph: 1615bd8deadSopenharmony_ci 1625bd8deadSopenharmony_ci "When used with a suitable texture, suitable explicit texture 1635bd8deadSopenharmony_ci coordinates, a suitable (extended) texture environment, 1645bd8deadSopenharmony_ci suitable lighting parameters, and suitable embossing parameters, 1655bd8deadSopenharmony_ci calling TexGen with TEXTURE_GEN_MODE indicating EMBOSS_MAP_NV 1665bd8deadSopenharmony_ci can simulate the lighting effect of embossing on a polygon. 1675bd8deadSopenharmony_ci The error INVALID_ENUM occurs when the active texture unit has an 1685bd8deadSopenharmony_ci even number. 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci The emboss constant and emboss light parameters for controlling 1715bd8deadSopenharmony_ci the EMBOSS_MAP_NV mode are specified by calling TexGen with pname 1725bd8deadSopenharmony_ci set to EMBOSS_CONSTANT_NV and EMBOSS_LIGHT_NV respectively. 1735bd8deadSopenharmony_ci 1745bd8deadSopenharmony_ci When pname is EMBOSS_CONSTANT_NV, param or what params points 1755bd8deadSopenharmony_ci to is a scalar value. An error INVALID_ENUM occurs if pname is 1765bd8deadSopenharmony_ci EMBOSS_CONSTANT_NV and coord is R or Q. An error INVALID_ENUM 1775bd8deadSopenharmony_ci also occurs if pname is EMBOSS_CONSTANT_NV and the active texture 1785bd8deadSopenharmony_ci unit number is even. 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci When pname is EMBOSS_LIGHT_NV, param or what params points to is 1815bd8deadSopenharmony_ci a symbolic constant of the form LIGHTi, indicating that light i 1825bd8deadSopenharmony_ci is to have the specified parameter set. An error INVALID_ENUM 1835bd8deadSopenharmony_ci occurs if pname is EMBOSS_LIGHT_NV and coord is R or Q. An error 1845bd8deadSopenharmony_ci INVALID_ENUM occurs if pname is EMBOSS_LIGHT_NV and the active 1855bd8deadSopenharmony_ci texture unit number is even. An error INVALID_ENUM occurs if 1865bd8deadSopenharmony_ci pname is EMBOSS_LIGHT_NV and the value i for LIGHTi is negative 1875bd8deadSopenharmony_ci or is greater than or equal to the value of MAX_LIGHTS. 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ci If TEXTURE_GEN_MODE indicates EMBOSS_MAP_NV, the generation function 1905bd8deadSopenharmony_ci for the coordinates S, T, R, and Q is computed as follows. 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ci Denote as L the light direction vector from the vertex's eye 1935bd8deadSopenharmony_ci position to the position of the light specified by the coordinate's 1945bd8deadSopenharmony_ci EMBOSS_LIGHT_NV state (the direction vector is computed as described 1955bd8deadSopenharmony_ci in Section 3.13.1). 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci Denote as N the current normal after transformation to eye 1985bd8deadSopenharmony_ci coordinates. 1995bd8deadSopenharmony_ci 2005bd8deadSopenharmony_ci Denote as CT the texture unit's current texture coordinates 2015bd8deadSopenharmony_ci transformed to eye coordinates by normal transformation (as 2025bd8deadSopenharmony_ci described in Section 3.10.3) and normalized. 2035bd8deadSopenharmony_ci 2045bd8deadSopenharmony_ci However, if the vertex is evaluated (as described in Section 5.1) 2055bd8deadSopenharmony_ci and the texture unit's texture coordinate map is enabled, use the 2065bd8deadSopenharmony_ci texture unit's evaluated texture coordinate to compute CT. 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ci Denote as B the cross product of N and the <s,t,r> vector of CT. 2095bd8deadSopenharmony_ci 2105bd8deadSopenharmony_ci Bx = Ny*CTr - CTt*Nz 2115bd8deadSopenharmony_ci By = Nz*CTs - CTr*Nx 2125bd8deadSopenharmony_ci Bz = Nx*CTt - CTs*Ny 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci Denote as BN the normalized version of the vector B. 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ci BNx = Bx / sqrt(Bx*Bx + By*By + Bz*Bz); 2175bd8deadSopenharmony_ci BNy = By / sqrt(Bx*Bx + By*By + Bz*Bz); 2185bd8deadSopenharmony_ci BNz = Bz / sqrt(Bx*Bx + By*By + Bz*Bz); 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci Denote as T the cross product of B and N. 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ci Tx = BNy*Nz - Ny*BNz 2235bd8deadSopenharmony_ci Ty = BNz*Nx - Nz*BNx 2245bd8deadSopenharmony_ci Tz = BNx*Ny - Nx*BNy 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ci Observe that BN and T are orthonormal. 2275bd8deadSopenharmony_ci 2285bd8deadSopenharmony_ci Denote as PCT the previous texture unit's current texture 2295bd8deadSopenharmony_ci coordinates. If the number of the texture unit for the texture 2305bd8deadSopenharmony_ci coordinates being generated is n, then the previous texture unit 2315bd8deadSopenharmony_ci is texture unit number n-1. Note that n is restricted to be odd. 2325bd8deadSopenharmony_ci 2335bd8deadSopenharmony_ci However, if the vertex is evaluated (as described in Section 5.1) 2345bd8deadSopenharmony_ci and the previous texture unit's texture coordinate map is enabled, 2355bd8deadSopenharmony_ci use the previous texture unit's evaluated texture coordinate to 2365bd8deadSopenharmony_ci compute PCT. 2375bd8deadSopenharmony_ci 2385bd8deadSopenharmony_ci Denote Ks as the S coordinate's EMBOSS_CONSTANT_NV state. Denote Kt 2395bd8deadSopenharmony_ci as the T coordinate's EMBOSS_CONSTANT_NV state. These constants 2405bd8deadSopenharmony_ci should typically be set to the reciprocal of the width and height 2415bd8deadSopenharmony_ci respectively of the texture map used for embossing. 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ci Denote E as follows: 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ci Es = PCTs + Ks * (Lx*BNx + Ly*BNy + Lz*BNz) * PCTq 2465bd8deadSopenharmony_ci Et = PCTt - Kt * (Lx*Tx + Ly*Ty + Lz*Tz) * PCTq 2475bd8deadSopenharmony_ci Er = PCTr 2485bd8deadSopenharmony_ci Eq = PCTq 2495bd8deadSopenharmony_ci 2505bd8deadSopenharmony_ci Then the value assigned to an s, t, r, and q coordinates are Es, 2515bd8deadSopenharmony_ci Et, Er, and Eq respectively. However, for this assignment to 2525bd8deadSopenharmony_ci occur, the following three conditions must be met. First, all the 2535bd8deadSopenharmony_ci texture coordinate generation modes of all the texture coordinates 2545bd8deadSopenharmony_ci (S, T, R, and Q) of the texture unit must be set to EMBOSS_MAP_NV. 2555bd8deadSopenharmony_ci Second, all the texture coordinate generation modes of the texture 2565bd8deadSopenharmony_ci unit must be enabled. Third, the EMBOSS_LIGHT_NV parameters of 2575bd8deadSopenharmony_ci coordinates S and T must be identical and the light and lighting 2585bd8deadSopenharmony_ci must be enabled. If these conditions are not met, the values of 2595bd8deadSopenharmony_ci all coordinates in the texture unit with the EMBOSS_MAP_NV mode 2605bd8deadSopenharmony_ci are undefined." 2615bd8deadSopenharmony_ci 2625bd8deadSopenharmony_ci The last paragraph's first sentence should be changed to: 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci "The state required for texture coordinate generation comprises 2655bd8deadSopenharmony_ci a five-valued integer for each coordinate indicating coordinate 2665bd8deadSopenharmony_ci generation mode, and a bit for each coordinate to indicate whether 2675bd8deadSopenharmony_ci texture coordinate generation is enabled or disabled. In addition, 2685bd8deadSopenharmony_ci four coefficients are required for the four coordinates for each 2695bd8deadSopenharmony_ci of EYE_LINEAR and OBJECT_LINEAR; also, an emboss constant and 2705bd8deadSopenharmony_ci emboss light are required for each of the four coordinates.... 2715bd8deadSopenharmony_ci The initial values for emboss constants and emboss lights are 1.0 2725bd8deadSopenharmony_ci and LIGHT0 respectively." 2735bd8deadSopenharmony_ci 2745bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2 Specification (Rasterization) 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci None 2775bd8deadSopenharmony_ci 2785bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations 2795bd8deadSopenharmony_ciand the Frame Buffer) 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ci None 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2 Specification (Special Functions) 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci None 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State Requests) 2885bd8deadSopenharmony_ci 2895bd8deadSopenharmony_ci None 2905bd8deadSopenharmony_ci 2915bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci None 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ciGLX Protocol 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci None 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ciErrors 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ci INVALID_ENUM is generated when TexGen is called with a <pname> 3025bd8deadSopenharmony_ci of TEXTURE_GEN_MODE, a <param> value or value of what <params> 3035bd8deadSopenharmony_ci points to of EMBOSS_MAP_NV, and the active texture unit is even. 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci INVALID_ENUM is generated when TexGen is called with a <pname> 3065bd8deadSopenharmony_ci of EMBOSS_CONSTANT_NV and the active texture unit is even. 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci INVALID_ENUM is generated when TexGen is called with a <pname> 3095bd8deadSopenharmony_ci of EMBOSS_LIGHT_NV and the active texture unit is even. 3105bd8deadSopenharmony_ci 3115bd8deadSopenharmony_ci INVALID_ENUM is generated when TexGen is called with a <coord> 3125bd8deadSopenharmony_ci of R or Q when <pname> indicates EMBOSS_CONSTANT_NV. 3135bd8deadSopenharmony_ci 3145bd8deadSopenharmony_ci INVALID_ENUM is generated when TexGen is called with a <coord> 3155bd8deadSopenharmony_ci of R or Q when <pname> indicates EMBOSS_LIGHT_NV. 3165bd8deadSopenharmony_ci 3175bd8deadSopenharmony_ci INVALID_ENUM is generated when TexGen is called with a <pname> 3185bd8deadSopenharmony_ci of EMBOSS_LIGHT_NV and the value of i for the parameter LIGHTi is 3195bd8deadSopenharmony_ci negative or is greater than or equal to the value of MAX_LIGHTS. 3205bd8deadSopenharmony_ci 3215bd8deadSopenharmony_ciNew State 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci(table 6.14, p204) change the entry for TEXTURE_GEN_MODE to: 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci Get Value Type Get Command Initial Value Description Sec Attribute 3265bd8deadSopenharmony_ci --------- ---- ----------- ------------- ----------- ------ --------- 3275bd8deadSopenharmony_ci TEXTURE_GEN_MODE 4xZ5 GetTexGeniv EYE_LINEAR Function used for 2.10.4 texture 3285bd8deadSopenharmony_ci texgen (for s,t,r, 3295bd8deadSopenharmony_ci and q) 3305bd8deadSopenharmony_ci EMBOSS_CONSTANT_NV 4xR GetTexGenfv 1.0 Scaling constant 2.10.4 texture 3315bd8deadSopenharmony_ci for emboss texgen 3325bd8deadSopenharmony_ci EMBOSS_LIGHT_NV 4xZ8* GetTexGeniv LIGHT0 Light used for 2.10.4 texture 3335bd8deadSopenharmony_ci embossing. 3345bd8deadSopenharmony_ci 3355bd8deadSopenharmony_ciWhen ARB_multitexture is supported, the Type column is per-texture unit. 3365bd8deadSopenharmony_ci 3375bd8deadSopenharmony_ci(the TEXTURE_GEN_MODE type changes from 4xZ3 to 4xZ5) 3385bd8deadSopenharmony_ci 3395bd8deadSopenharmony_ciNew Implementation State 3405bd8deadSopenharmony_ci 3415bd8deadSopenharmony_ci None 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ciRevision History 3445bd8deadSopenharmony_ci 3455bd8deadSopenharmony_ci 2001/02/20 - Status changed to deprecated. 3465bd8deadSopenharmony_ci 1/3/2003 changed status to "discontinued" 347