下面列出了怎么用org.w3c.dom.css.CSSPrimitiveValue的API类实例代码及写法,或者点击链接到github查看源代码。
private void applyCSSPropertyFont(final Object element, final Grid grid, final CSSValue value, String target) throws Exception {
if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
final CSSValueList valueList = (CSSValueList) value;
final int length = valueList.getLength();
for (int i = 0; i < length; i++) {
final CSSValue value2 = valueList.item(i);
if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
final String cssProp = CSS2FontHelper.getCSSFontPropertyName((CSSPrimitiveValue) value2);
if (cssProp.equals("font-family")) {
applyCSSPropertyFamily(element, grid, value2, target);
} else if (cssProp.equals("font-size")) {
applyCSSPropertySize(element, grid, value2, target);
} else if (cssProp.equals("font-weight") && ("bold".equals(value2.getCssText()) || "bolder".equals(value2.getCssText()))) {
applyCSSPropertyWeight(element, grid, value2, target);
} else if (cssProp.equals("font-style") && ("italic".equals(value2.getCssText()) || "oblique".equals(value2.getCssText()))) {
applyCSSPropertyStyle(element, grid, value2, target);
}
}
}
}
}
private void applyCSSPropertyFont(final Object element, final Control widget, final CSSValue value) throws Exception {
if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
final CSSValueList valueList = (CSSValueList) value;
final int length = valueList.getLength();
for (int i = 0; i < length; i++) {
final CSSValue value2 = valueList.item(i);
if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
final String cssProp = CSS2FontHelper.getCSSFontPropertyName((CSSPrimitiveValue) value2);
if (cssProp.equals("font-family")) {
applyCSSPropertyFamily(element, widget, value2);
} else if (cssProp.equals("font-size")) {
applyCSSPropertySize(element, widget, value2);
} else if (cssProp.equals("font-weight") && ("bold".equals(value2.getCssText()) || "bolder".equals(value2.getCssText()))) {
applyCSSPropertyWeight(element, widget, value2);
} else if (cssProp.equals("font-style") && ("italic".equals(value2.getCssText()) || "oblique".equals(value2.getCssText()))) {
applyCSSPropertyStyle(element, widget, value2);
}
}
}
}
}
private void applyCSSPropertyFont(final Control widget, final CSSValue value, final boolean picker) throws Exception {
if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
final CSSValueList valueList = (CSSValueList) value;
final int length = valueList.getLength();
for (int i = 0; i < length; i++) {
final CSSValue value2 = valueList.item(i);
if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
final String cssProp = CSS2FontHelper.getCSSFontPropertyName((CSSPrimitiveValue) value2);
if (cssProp.equals("font-family")) {
applyCSSPropertyFamily(widget, value2, picker);
} else if (cssProp.equals("font-size")) {
applyCSSPropertySize(widget, value2, picker);
} else if (cssProp.equals("font-weight") && ("bold".equals(value2.getCssText()) || "bolder".equals(value2.getCssText()))) {
applyCSSPropertyWeight(widget, value2, picker);
} else if (cssProp.equals("font-style") && ("italic".equals(value2.getCssText()) || "oblique".equals(value2.getCssText()))) {
applyCSSPropertyStyle(widget, value2, picker);
}
}
}
}
}
private ColorDefinition getColor( CSSValue value )
{
if ( value != null && value instanceof RGBColorValue )
{
RGBColorValue color = (RGBColorValue) value;
try
{
return goFactory.createColorDefinition( Math.round( color.getRed( )
.getFloatValue( CSSPrimitiveValue.CSS_NUMBER ) ),
Math.round( color.getGreen( )
.getFloatValue( CSSPrimitiveValue.CSS_NUMBER ) ),
Math.round( color.getBlue( )
.getFloatValue( CSSPrimitiveValue.CSS_NUMBER ) ) );
}
catch ( RuntimeException ex )
{
logger.log( Level.WARNING.intValue( ),
"invalid color: {0}" + value.toString( ) ); //$NON-NLS-1$
}
}
return null;
}
public static FloatValue toFloatValue( Object value )
{
if( value == null )
{
return null;
}
if( value instanceof Number )
{
return new FloatValue( CSSPrimitiveValue.CSS_NUMBER, ( ( Number ) value ).floatValue( ) );
}
else if( value instanceof DimensionType )
{
return toFloatValue( ( DimensionType ) value );
}
else
{
return toFloatValue( value.toString( ) );
}
}
public static FloatValue toFloatValue( DimensionType value )
{
if ( value.getValueType( ) == DimensionType.TYPE_DIMENSION )
{
Object obj = UnitMapping.get( value.getUnits( ) );
short unit;
if( obj != null )
{
unit = ( ( Short ) obj ).shortValue( );
}
else
{
unit = CSSPrimitiveValue.CSS_NUMBER;
}
return new FloatValue( unit, ( float ) value.getMeasure( ) );
}
return null;
}
/**
* Implements {@link
* ValueManager#computeValue(CSSStylableElement,String,CSSEngine,int,StyleMap,Value)}.
*/
public Value computeValue(CSSStylableElement elt, CSSEngine engine,
int idx, Value value) {
if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
if (value.getPrimitiveType() == CSSPrimitiveValue.CSS_IDENT) {
Value percentage = (Value) percentValues.get(value
.getStringValue());
if (percentage != null) {
return percentage;
}
throw createInvalidIdentifierDOMException(value
.getStringValue());
}
}
return super.computeValue(elt, engine, idx, value);
}
/**
* Implements {@link
* ValueManager#computeValue(CSSStylableElement,String,CSSEngine,int,StyleMap,Value)}.
*/
public Value computeValue(CSSStylableElement elt, CSSEngine engine,
int idx, Value value) {
if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
if (value.getPrimitiveType() == CSSPrimitiveValue.CSS_IDENT) {
Value percentage = (Value) percentValues.get(value
.getStringValue());
if (percentage != null) {
return percentage;
}
throw createInvalidIdentifierDOMException(value
.getStringValue());
}
}
return super.computeValue(elt, engine, idx, value);
}
/**
* Returns the CSS value associated with the given font-weight.
*/
protected CSSPrimitiveValue createFontWeight(float f) {
switch ((int) f) {
case 100:
return CSSValueConstants.NUMBER_100;
case 200:
return CSSValueConstants.NUMBER_200;
case 300:
return CSSValueConstants.NUMBER_300;
case 400:
return CSSValueConstants.NUMBER_400;
case 500:
return CSSValueConstants.NUMBER_500;
case 600:
return CSSValueConstants.NUMBER_600;
case 700:
return CSSValueConstants.NUMBER_700;
case 800:
return CSSValueConstants.NUMBER_800;
default: // 900
return CSSValueConstants.NUMBER_900;
}
}
/**
* Converts the current value into centimeters.
*/
protected static float toCentimeters( int type, float value )
{
switch ( type )
{
case CSSPrimitiveValue.CSS_CM :
return value;
case CSSPrimitiveValue.CSS_MM :
return ( value / 10 );
case CSSPrimitiveValue.CSS_IN :
return ( value * 2.54f );
case CSSPrimitiveValue.CSS_PT :
return ( value * 2.54f / 72 );
case CSSPrimitiveValue.CSS_PC :
return ( value * 2.54f / 6 );
default :
throw new DOMException( DOMException.INVALID_ACCESS_ERR, "" );
}
}
/**
* Converts the current value into inches.
*/
protected static float toInches( int type, float value )
{
switch ( type )
{
case CSSPrimitiveValue.CSS_CM :
return ( value / 2.54f );
case CSSPrimitiveValue.CSS_MM :
return ( value / 25.4f );
case CSSPrimitiveValue.CSS_IN :
return value;
case CSSPrimitiveValue.CSS_PT :
return ( value / 72 );
case CSSPrimitiveValue.CSS_PC :
return ( value / 6 );
default :
throw new DOMException( DOMException.INVALID_ACCESS_ERR, "" );
}
}
/**
* Converts the current value into millimeters.
*/
protected static float toMillimeters( int unit, float value )
{
switch ( unit )
{
case CSSPrimitiveValue.CSS_CM :
return ( value * 10 );
case CSSPrimitiveValue.CSS_MM :
return value;
case CSSPrimitiveValue.CSS_IN :
return ( value * 25.4f );
case CSSPrimitiveValue.CSS_PT :
return ( value * 25.4f / 72 );
case CSSPrimitiveValue.CSS_PC :
return ( value * 25.4f / 6 );
default :
throw new DOMException( DOMException.INVALID_ACCESS_ERR, "" );
}
}
/**
* Converts the current value into points.
*/
protected static float toPoints( int unit, float value )
{
switch ( unit )
{
case CSSPrimitiveValue.CSS_CM :
return ( value * 72 / 2.54f );
case CSSPrimitiveValue.CSS_MM :
return ( value * 72 / 25.4f );
case CSSPrimitiveValue.CSS_IN :
return ( value * 72 );
case CSSPrimitiveValue.CSS_PT :
return value;
case CSSPrimitiveValue.CSS_PC :
return ( value * 12 );
default :
throw new DOMException( DOMException.INVALID_ACCESS_ERR, "" );
}
}
/**
* Converts the current value into picas.
*/
protected static float toPicas( int unit, float value )
{
switch ( unit )
{
case CSSPrimitiveValue.CSS_CM :
return ( value * 6 / 2.54f );
case CSSPrimitiveValue.CSS_MM :
return ( value * 6 / 25.4f );
case CSSPrimitiveValue.CSS_IN :
return ( value * 6 );
case CSSPrimitiveValue.CSS_PT :
return ( value / 12 );
case CSSPrimitiveValue.CSS_PC :
return value;
default :
throw new DOMException( DOMException.INVALID_ACCESS_ERR, "" );
}
}
/**
* Creates a color component from a lexical unit.
*/
protected Value createColorComponent( LexicalUnit lu ) throws DOMException
{
switch ( lu.getLexicalUnitType( ) )
{
case LexicalUnit.SAC_INTEGER :
return new FloatValue( CSSPrimitiveValue.CSS_NUMBER, lu
.getIntegerValue( ) );
case LexicalUnit.SAC_REAL :
return new FloatValue( CSSPrimitiveValue.CSS_NUMBER, lu
.getFloatValue( ) );
case LexicalUnit.SAC_PERCENTAGE :
return new FloatValue( CSSPrimitiveValue.CSS_PERCENTAGE, lu
.getFloatValue( ) );
}
throw createInvalidRGBComponentUnitDOMException( lu
.getLexicalUnitType( ) );
}
public static Color getColor( CSSValue value )
{
if ( value != null && value instanceof RGBColorValue )
{
RGBColorValue color = (RGBColorValue) value;
try
{
return new Color( color.getRed( ).getFloatValue(
CSSPrimitiveValue.CSS_NUMBER ) / 255.0f, color
.getGreen( ).getFloatValue(
CSSPrimitiveValue.CSS_NUMBER ) / 255.0f, color
.getBlue( )
.getFloatValue( CSSPrimitiveValue.CSS_NUMBER ) / 255.0f );
}
catch ( RuntimeException ex )
{
logger.log( Level.WARNING, "invalid color: {0}", value ); //$NON-NLS-1$
}
}
else if ( value instanceof StringValue )
return getColor( value.toString( ) );
return null;
}
private RGB createRGB(LexicalUnit value) {
RGBColor rgbColor = new RGBColorImpl(value);
int green = ((int) rgbColor.getGreen().getFloatValue(CSSPrimitiveValue.CSS_NUMBER));
int red = ((int) rgbColor.getRed().getFloatValue(CSSPrimitiveValue.CSS_NUMBER));
int blue = ((int) rgbColor.getBlue().getFloatValue(CSSPrimitiveValue.CSS_NUMBER));
return new RGB(red, green, blue);
}
private int getSize( CSSValue value )
{
// Copied from
// org.eclipse.birt.report.engine.layout.pdf.util.PropertyUtil.getDimensionValueConsiderDpi()
if ( value != null && ( value instanceof FloatValue ) )
{
FloatValue fv = (FloatValue) value;
float v = fv.getFloatValue( );
switch ( fv.getPrimitiveType( ) )
{
case CSSPrimitiveValue.CSS_CM :
return (int) ( v * 72 / 2.54 );
case CSSPrimitiveValue.CSS_IN :
return (int) ( v * 72 );
case CSSPrimitiveValue.CSS_MM :
return (int) ( v * 7.2 / 2.54 );
case CSSPrimitiveValue.CSS_PC :
return (int) ( v * 12 );
case CSSPrimitiveValue.CSS_PX :
return (int) ( v / dpi * 72f );
case CSSPrimitiveValue.CSS_PT :
return (int) v;
case CSSPrimitiveValue.CSS_NUMBER :
return (int) ( v / 1000 );
}
}
return 0;
}
/**
* Get the border width from a style. It don't support '%'.
*
* @param style
* @param borderNum
* @return
*/
private int getBorderWidthValue( IStyle style, int borderNum )
{
if ( null == style )
{
return 0;
}
if ( IStyle.STYLE_BORDER_TOP_WIDTH != borderNum
&& IStyle.STYLE_BORDER_RIGHT_WIDTH != borderNum
&& IStyle.STYLE_BORDER_BOTTOM_WIDTH != borderNum
&& IStyle.STYLE_BORDER_LEFT_WIDTH != borderNum )
{
return 0;
}
CSSValue value = style.getProperty( borderNum );
if ( value != null && ( value instanceof FloatValue ) )
{
FloatValue fv = (FloatValue) value;
float v = fv.getFloatValue( );
switch ( fv.getPrimitiveType( ) )
{
case CSSPrimitiveValue.CSS_CM :
return (int) ( v * 72000 / 2.54 );
case CSSPrimitiveValue.CSS_IN :
return (int) ( v * 72000 );
case CSSPrimitiveValue.CSS_MM :
return (int) ( v * 7200 / 2.54 );
case CSSPrimitiveValue.CSS_PT :
return (int) ( v * 1000 );
case CSSPrimitiveValue.CSS_NUMBER :
return (int) v;
}
}
return 0;
}
/**
* Returns the dimension value in inches.
*/
public static double getDimensionValue( CSSValue value, int dpi )
{
if ( value != null && ( value instanceof FloatValue ) )
{
FloatValue fv = (FloatValue) value;
float v = fv.getFloatValue( );
switch ( fv.getPrimitiveType( ) )
{
case CSSPrimitiveValue.CSS_CM :
return ( v / 2.54 );
case CSSPrimitiveValue.CSS_IN :
return ( v );
case CSSPrimitiveValue.CSS_MM :
return ( v / 25.4 );
case CSSPrimitiveValue.CSS_PC :
return ( v * 12 * 1000 );
case CSSPrimitiveValue.CSS_PX :
return ( v / dpi );
case CSSPrimitiveValue.CSS_PT :
return ( v / 72 );
case CSSPrimitiveValue.CSS_NUMBER :
return v;
}
}
return 0;
}
public static CSSPrimitiveValue toCSSValue( short type, Object value )
{
CSSPrimitiveValue tempValue = null;
switch( type )
{
case CSSPrimitiveValue.CSS_RGBCOLOR:
tempValue = toRGBColor( value );
break;
case CSSPrimitiveValue.CSS_UNKNOWN:
// check if it's a float value
tempValue = toFloatValue( value );
break;
case CSSPrimitiveValue.CSS_STRING:
case CSSPrimitiveValue.CSS_URI:
return toStringValue( type, value );
default:
tempValue = toFloatValue( value );
}
if( tempValue != null )
{
return tempValue;
}
// convert to string value
return toStringValue( value );
}
public static FloatValue toFloatValue( String value )
{
try
{
Float fValue = new Float( value );
return new FloatValue( CSSPrimitiveValue.CSS_NUMBER, fValue.floatValue( ) );
}
catch( NumberFormatException ex )
{
}
return toFloatValue( DimensionType.parserUnit( value ) );
}
/**
* Returns the Value corresponding to the given system color.
*/
public static CSSValue getSystemColor(String ident) {
ident = ident.toLowerCase();
SystemColor sc = (SystemColor)factories.get(ident);
return new RGBColorValue
(new FloatValue(CSSPrimitiveValue.CSS_NUMBER, sc.getRed()),
new FloatValue(CSSPrimitiveValue.CSS_NUMBER, sc.getGreen()),
new FloatValue(CSSPrimitiveValue.CSS_NUMBER, sc.getBlue()));
}
public Value createValue( LexicalUnit lu, CSSEngine engine )
throws DOMException
{
switch ( lu.getLexicalUnitType( ) )
{
case LexicalUnit.SAC_INHERIT :
return CSSValueConstants.INHERIT_VALUE;
default :
return new StringValue( CSSPrimitiveValue.CSS_STRING, lu
.getStringValue( ) );
}
}
/**
* Implements {@link ValueManager#createFloatValue(short,float)}.
*/
public Value createFloatValue(short type, float floatValue)
throws DOMException {
if (type == CSSPrimitiveValue.CSS_NUMBER) {
int i = (int) floatValue;
if (floatValue == i) {
switch (i) {
case 100:
return CSSValueConstants.NUMBER_100;
case 200:
return CSSValueConstants.NUMBER_200;
case 300:
return CSSValueConstants.NUMBER_300;
case 400:
return CSSValueConstants.NUMBER_400;
case 500:
return CSSValueConstants.NUMBER_500;
case 600:
return CSSValueConstants.NUMBER_600;
case 700:
return CSSValueConstants.NUMBER_700;
case 800:
return CSSValueConstants.NUMBER_800;
case 900:
return CSSValueConstants.NUMBER_900;
}
}
}
throw createInvalidFloatValueDOMException(floatValue);
}
/**
* Implements {@link
* ValueManager#computeValue(CSSStylableElement,String,CSSEngine,int,StyleMap,Value)}.
*/
public Value computeValue( CSSStylableElement elt, CSSEngine engine,
int idx, Value value )
{
if ( value.getCssValueType( ) == CSSValue.CSS_PRIMITIVE_VALUE )
{
if ( value.getPrimitiveType( ) == CSSPrimitiveValue.CSS_IDENT )
{
return CSSValueConstants.NUMBER_0;
}
}
return super.computeValue( elt, engine, idx, value );
}
public Value createValue(LexicalUnit lu, CSSEngine engine)
throws DOMException {
switch( lu.getLexicalUnitType())
{
case LexicalUnit.SAC_INHERIT:
return CSSValueConstants.INHERIT_VALUE;
case LexicalUnit.SAC_INTEGER:
return new FloatValue( CSSPrimitiveValue.CSS_NUMBER, lu.getIntegerValue());
default:
throw createInvalidLexicalUnitDOMException(lu.getLexicalUnitType());
}
}
public Value computeValue( CSSStylableElement elt, CSSEngine engine,
int idx, Value value )
{
IStyle cs = elt.getComputedStyle( );
CSSValue borderStyle = null;
switch ( idx )
{
case IStyle.STYLE_BORDER_TOP_WIDTH :
borderStyle = cs.getProperty( IStyle.STYLE_BORDER_TOP_STYLE );
break;
case IStyle.STYLE_BORDER_BOTTOM_WIDTH :
borderStyle = cs.getProperty( IStyle.STYLE_BORDER_BOTTOM_STYLE );
break;
case IStyle.STYLE_BORDER_LEFT_WIDTH :
borderStyle = cs.getProperty( IStyle.STYLE_BORDER_LEFT_STYLE );
break;
case IStyle.STYLE_BORDER_RIGHT_WIDTH :
borderStyle = cs.getProperty( IStyle.STYLE_BORDER_RIGHT_STYLE );
break;
}
if ( borderStyle == CSSValueConstants.NONE_VALUE
|| borderStyle == CSSValueConstants.HIDDEN_VALUE )
{
return CSSValueConstants.NUMBER_0;
}
if ( value.getCssValueType( ) == CSSValue.CSS_PRIMITIVE_VALUE )
{
if ( value.getPrimitiveType( ) == CSSPrimitiveValue.CSS_IDENT )
{
String ident = value.getStringValue( );
Value cv = (Value) computedValues.get( ident );
if ( cv != null )
{
value = cv;
}
}
}
return super.computeValue( elt, engine, idx, value );
}
/**
* Implements {@link
* ValueManager#createStringValue(short,String,CSSEngine)}.
*/
public CSSPrimitiveValue createStringValue(short type, String value)
throws DOMException {
if (type != CSSPrimitiveValue.CSS_IDENT) {
throw createInvalidStringTypeDOMException(type);
}
Object v = values.get(value.toLowerCase().intern());
if (v == null) {
throw createInvalidIdentifierDOMException(value);
}
return (CSSPrimitiveValue) v;
}
/**
* Implements {@link
* ValueManager#computeValue(CSSStylableElement,String,CSSEngine,int,StyleMap,Value)}.
*/
public Value computeValue( CSSStylableElement elt, CSSEngine engine,
int idx, Value value )
{
if ( value.getCssValueType( ) == CSSValue.CSS_PRIMITIVE_VALUE )
{
switch ( value.getPrimitiveType( ) )
{
case CSSPrimitiveValue.CSS_NUMBER :
case CSSPrimitiveValue.CSS_PX :
case CSSPrimitiveValue.CSS_MM :
case CSSPrimitiveValue.CSS_CM :
case CSSPrimitiveValue.CSS_IN :
case CSSPrimitiveValue.CSS_PT :
case CSSPrimitiveValue.CSS_PC :
return value;
case CSSPrimitiveValue.CSS_EMS :
float v = value.getFloatValue( );
Value fontSize = (Value) elt.getComputedStyle( )
.getProperty( IStyle.STYLE_FONT_SIZE );
float fs = fontSize.getFloatValue( );
return new FloatValue( fontSize.getPrimitiveType( ), v * fs );
case CSSPrimitiveValue.CSS_EXS :
v = value.getFloatValue( );
fontSize = (Value) elt.getComputedStyle( )
.getProperty( IStyle.STYLE_FONT_SIZE );
fs = fontSize.getFloatValue( );
return new FloatValue( fontSize.getPrimitiveType( ), v
* fs * 0.5f );
}
}
return value;
}