📄 css_valueimpl.cpp
字号:
: CSSValueImpl(){}CSSValueListImpl::~CSSValueListImpl(){ CSSValueImpl *val = m_values.first(); while( val ) { val->deref(); val = m_values.next(); }}unsigned short CSSValueListImpl::valueType() const{ return CSSValue::CSS_VALUE_LIST;}void CSSValueListImpl::append(CSSValueImpl *val){ m_values.append(val); val->ref();}DOM::DOMString CSSValueListImpl::cssText() const{ // ### return DOM::DOMString();}// -------------------------------------------------------------------------------------CSSPrimitiveValueImpl::CSSPrimitiveValueImpl() : CSSValueImpl(){ m_type = 0;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(int ident) : CSSValueImpl(){ m_value.ident = ident; m_type = CSSPrimitiveValue::CSS_IDENT;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(float num, CSSPrimitiveValue::UnitTypes type){ m_value.num = num; m_type = type;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(const DOMString &str, CSSPrimitiveValue::UnitTypes type){ m_value.string = str.implementation(); m_value.string->ref(); m_type = type;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(const Counter &c){ m_value.counter = new Counter(c); m_type = CSSPrimitiveValue::CSS_COUNTER;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(const Rect &r){ m_value.rect = new Rect(r); m_type = CSSPrimitiveValue::CSS_RECT;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(const RGBColor &rgb){ m_value.rgbcolor = new RGBColor(rgb); m_type = CSSPrimitiveValue::CSS_RGBCOLOR;}CSSPrimitiveValueImpl::CSSPrimitiveValueImpl(const MGColor &color){ m_value.rgbcolor = new RGBColor(color); m_type = CSSPrimitiveValue::CSS_RGBCOLOR;}CSSPrimitiveValueImpl::~CSSPrimitiveValueImpl(){ cleanup();}void CSSPrimitiveValueImpl::cleanup(){ if(m_type == CSSPrimitiveValue::CSS_RGBCOLOR) delete m_value.rgbcolor; else if(m_type < CSSPrimitiveValue::CSS_STRING || m_type == CSSPrimitiveValue::CSS_IDENT) { } else if(m_type < CSSPrimitiveValue::CSS_COUNTER) if(m_value.string) m_value.string->deref(); else if(m_type == CSSPrimitiveValue::CSS_COUNTER) delete m_value.counter; else if(m_type == CSSPrimitiveValue::CSS_RECT) delete m_value.rect; m_type = 0;} unsigned short CSSPrimitiveValueImpl::primitiveType() const{ return m_type;}void CSSPrimitiveValueImpl::setFloatValue( unsigned short unitType, float floatValue ){ cleanup(); // ### check if property supports this type if(m_type > CSSPrimitiveValue::CSS_DIMENSION) throw CSSException(CSSException::SYNTAX_ERR); //if(m_type > CSSPrimitiveValue::CSS_DIMENSION) throw DOMException(DOMException::INVALID_ACCESS_ERR); m_value.num = floatValue; m_type = unitType;}float CSSPrimitiveValueImpl::getFloatValue( unsigned short unitType ){ // ### add unit conversion if(m_type != unitType) throw CSSException(CSSException::SYNTAX_ERR); return m_value.num;}void CSSPrimitiveValueImpl::setStringValue( unsigned short stringType, const DOMString &stringValue ){ cleanup(); //if(m_type < CSSPrimitiveValue::CSS_STRING) throw DOMException(DOMException::INVALID_ACCESS_ERR); //if(m_type > CSSPrimitiveValue::CSS_ATTR) throw DOMException(DOMException::INVALID_ACCESS_ERR); if(m_type < CSSPrimitiveValue::CSS_STRING) throw CSSException(CSSException::SYNTAX_ERR); if(m_type > CSSPrimitiveValue::CSS_ATTR) throw CSSException(CSSException::SYNTAX_ERR); if(stringType != CSSPrimitiveValue::CSS_IDENT) { m_value.string = stringValue.implementation(); m_value.string->ref(); m_type = stringType; } // ### parse ident}DOMStringImpl *CSSPrimitiveValueImpl::getStringValue( ){ if(m_type < CSSPrimitiveValue::CSS_STRING) return 0; if(m_type > CSSPrimitiveValue::CSS_ATTR) return 0; if(m_type == CSSPrimitiveValue::CSS_IDENT) { // ### return 0; } return m_value.string;}Counter *CSSPrimitiveValueImpl::getCounterValue( ){ if(m_type != CSSPrimitiveValue::CSS_COUNTER) return 0; return m_value.counter;}Rect *CSSPrimitiveValueImpl::getRectValue( ){ if(m_type != CSSPrimitiveValue::CSS_RECT) return 0; return m_value.rect;}RGBColor *CSSPrimitiveValueImpl::getRGBColorValue( ){ if(m_type != CSSPrimitiveValue::CSS_RGBCOLOR) return 0; return m_value.rgbcolor;}unsigned short CSSPrimitiveValueImpl::valueType() const{ return CSSValue::CSS_PRIMITIVE_VALUE;}bool CSSPrimitiveValueImpl::parseString( const DOMString &/*string*/ ){ // ### return false;}int CSSPrimitiveValueImpl::getIdent(){ if(m_type != CSSPrimitiveValue::CSS_IDENT) return 0; return m_value.ident;}DOM::DOMString CSSPrimitiveValueImpl::cssText() const{ DOMString text; switch ( m_type ) { case CSSPrimitiveValue::CSS_UNKNOWN: break; case CSSPrimitiveValue::CSS_NUMBER: text = DOMString(QString::number( (int)m_value.num )); break; case CSSPrimitiveValue::CSS_PERCENTAGE: text = DOMString(QString::number( m_value.num ) + "%"); break; case CSSPrimitiveValue::CSS_EMS: text = DOMString(QString::number( m_value.num ) + "em"); break; case CSSPrimitiveValue::CSS_EXS: text = DOMString(QString::number( m_value.num ) + "ex"); break; case CSSPrimitiveValue::CSS_PX: text = DOMString(QString::number( m_value.num ) + "px"); break; case CSSPrimitiveValue::CSS_CM: text = DOMString(QString::number( m_value.num ) + "cm"); break; case CSSPrimitiveValue::CSS_MM: text = DOMString(QString::number( m_value.num ) + "mm"); break; case CSSPrimitiveValue::CSS_IN: text = DOMString(QString::number( m_value.num ) + "in"); break; case CSSPrimitiveValue::CSS_PT: text = DOMString(QString::number( m_value.num ) + "pt"); break; case CSSPrimitiveValue::CSS_PC: text = DOMString(QString::number( m_value.num ) + "pc"); break; case CSSPrimitiveValue::CSS_DEG: text = DOMString(QString::number( m_value.num ) + "deg"); break; case CSSPrimitiveValue::CSS_RAD: text = DOMString(QString::number( m_value.num ) + "rad"); break; case CSSPrimitiveValue::CSS_GRAD: text = DOMString(QString::number( m_value.num ) + "grad"); break; case CSSPrimitiveValue::CSS_MS: text = DOMString(QString::number( m_value.num ) + "ms"); break; case CSSPrimitiveValue::CSS_S: text = DOMString(QString::number( m_value.num ) + "s"); break; case CSSPrimitiveValue::CSS_HZ: text = DOMString(QString::number( m_value.num ) + "hz"); break; case CSSPrimitiveValue::CSS_KHZ: text = DOMString(QString::number( m_value.num ) + "khz"); break; case CSSPrimitiveValue::CSS_DIMENSION: break; case CSSPrimitiveValue::CSS_STRING: case CSSPrimitiveValue::CSS_URI: text = DOMString( m_value.string ); break; case CSSPrimitiveValue::CSS_IDENT: case CSSPrimitiveValue::CSS_ATTR: case CSSPrimitiveValue::CSS_COUNTER: case CSSPrimitiveValue::CSS_RECT: break; case CSSPrimitiveValue::CSS_RGBCOLOR: MGColor c = m_value.rgbcolor->color(); text = "#" + QString::number( c.red(), 16 ) + QString::number( c.red(), 16 ) + QString::number( c.red(), 16 ); break; } return text;}// -----------------------------------------------------------------CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, const DOMString &baseurl, StyleBaseImpl *style) : CSSPrimitiveValueImpl(url, CSSPrimitiveValue::CSS_URI){ khtml::MGDocLoader *docLoader = 0; StyleBaseImpl *root = style; while (root->parent()) root = root->parent(); if (root->isCSSStyleSheet()) docLoader = static_cast<CSSStyleSheetImpl*>(root)->docLoader(); unsigned char u[256]; uncharURL((DOM::DOMString&)url,(DOM::DOMString&)baseurl,u);#if 0 //DEBUG_BY_XHTANG fprintf(stderr,"CSSImage u:%s\n",u);#endif if (docLoader) m_image = docLoader->requestImage (this, (unsigned char*)u); /* else m_image = khtml::Cache::requestImage(url, baseurl);*/}CSSImageValueImpl::CSSImageValueImpl() : CSSPrimitiveValueImpl(CSS_VAL_NONE){ m_image = 0;}CSSImageValueImpl::~CSSImageValueImpl(){ if(m_image) m_image->deref();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -