⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 css_valueimpl.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    : 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 + -