css_box_length.h

Go to the documentation of this file.
00001 /*
00002 **  ClanLib SDK
00003 **  Copyright (c) 1997-2011 The ClanLib Team
00004 **
00005 **  This software is provided 'as-is', without any express or implied
00006 **  warranty.  In no event will the authors be held liable for any damages
00007 **  arising from the use of this software.
00008 **
00009 **  Permission is granted to anyone to use this software for any purpose,
00010 **  including commercial applications, and to alter it and redistribute it
00011 **  freely, subject to the following restrictions:
00012 **
00013 **  1. The origin of this software must not be misrepresented; you must not
00014 **     claim that you wrote the original software. If you use this software
00015 **     in a product, an acknowledgment in the product documentation would be
00016 **     appreciated but is not required.
00017 **  2. Altered source versions must be plainly marked as such, and must not be
00018 **     misrepresented as being the original software.
00019 **  3. This notice may not be removed or altered from any source distribution.
00020 **
00021 **  Note: Some of the libraries ClanLib may link to may have additional
00022 **  requirements or restrictions.
00023 **
00024 **  File Author(s):
00025 **
00026 **    Magnus Norddahl
00027 */
00028 
00029 #pragma once
00030 
00031 class CL_CSSBoxLength
00032 {
00033 public:
00034         enum Type
00035         {
00036                 type_mm,
00037                 type_cm,
00038                 type_in,
00039                 type_pt,
00040                 type_pc,
00041                 type_px,
00042                 type_em,
00043                 type_ex,
00044                 type_computed_px
00045         };
00046 
00047         CL_CSSBoxLength()
00048         : type(type_px), value(0.0f)
00049         {
00050         }
00051 
00052         CL_CSSBoxLength(float value, Type type)
00053         : type(type), value(value)
00054         {
00055         }
00056 
00057         CL_String to_string() const
00058         {
00059                 if (value == 0.0f)
00060                         return "0";
00061                 CL_String v = CL_StringHelp::float_to_text(value);
00062                 switch (type)
00063                 {
00064                 default:
00065                 case type_mm:
00066                         return v + "mm";
00067                 case type_cm:
00068                         return v + "cm";
00069                 case type_in:
00070                         return v + "in";
00071                 case type_pt:
00072                         return v + "pt";
00073                 case type_pc:
00074                         return v + "pc";
00075                 case type_px:
00076                         return v + "px";
00077                 case type_em:
00078                         return v + "em";
00079                 case type_ex:
00080                         return v + "ex";
00081                 case type_computed_px:
00082                         return v + "computed-px";
00083                 }
00084         }
00085 
00086         Type type;
00087         float value;
00088 };