1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #include <precomp.h> 25 #include <udm/html/htmlitem.hxx> 26 27 // NOT FULLY DECLARED SERVICES 28 29 30 namespace csi 31 { 32 namespace html 33 { 34 35 using namespace csi::xml; 36 37 template <class ELEM> 38 inline ELEM & 39 PushElem( Element & i_rMain, 40 DYN ELEM * let_dpSub, 41 DYN Item * let_dpItem ) 42 { 43 i_rMain << let_dpSub; 44 if ( let_dpItem != 0 ) 45 *let_dpSub << let_dpItem; 46 return *let_dpSub; 47 } 48 49 50 bool 51 Body::LineBreakAfterBeginTag() const 52 { 53 return true; 54 } 55 56 #ifndef COMPATIBLE_NETSCAPE_47 57 bool 58 HorizontalLine::LineBreakAfterBeginTag() const 59 { 60 return true; 61 } 62 #endif 63 64 65 Image::Image( const String & i_sSrc, 66 const String & i_sWidth, 67 const String & i_sHeight, 68 const String & i_sAlign, 69 const String & i_sBorder ) 70 : AnEmptyElement( "img" ) 71 { 72 *this << new AnAttribute(String("src"),i_sSrc) 73 << new AnAttribute(String("width"),i_sWidth) 74 << new AnAttribute(String("height"),i_sHeight) 75 << new AnAttribute(String("align"),i_sAlign) 76 << new AnAttribute(String("border"),i_sBorder); 77 } 78 79 bool 80 Paragraph::LineBreakAfterEndTag() const 81 { 82 return true; 83 } 84 85 const char * 86 Headline::sTags[6] = { "h1", "h2", "h3", "h4", "h5", "h6" }; 87 88 bool 89 Headline::LineBreakAfterEndTag() const 90 { 91 return true; 92 } 93 94 #ifndef COMPATIBLE_NETSCAPE_47 95 bool 96 LineBreak::LineBreakAfterBeginTag() const 97 { 98 return true; 99 } 100 #endif 101 102 103 bool 104 TableCell::LineBreakAfterEndTag() const 105 { 106 return true; 107 } 108 109 110 111 TableCell & 112 TableRow::AddCell( DYN Item * let_dpItem ) 113 { 114 return PushElem( *this, new TableCell, let_dpItem ); 115 } 116 117 bool 118 TableRow::LineBreakAfterBeginTag() const 119 { 120 return true; 121 } 122 123 124 Table::Table( const String & i_sBorder, 125 const String & i_sWidth, 126 const String & i_sCellPadding, 127 const String & i_sCellSpacing ) 128 : csi::xml::AnElement("table") 129 { 130 if ( i_sBorder.length() > 0 ) 131 *this << new AnAttribute(String("border"),i_sBorder); 132 if ( i_sBorder.length() > 0 ) 133 *this << new AnAttribute(String("width"),i_sWidth); 134 if ( i_sBorder.length() > 0 ) 135 *this << new AnAttribute(String("cellpadding"),i_sCellPadding); 136 if ( i_sBorder.length() > 0 ) 137 *this << new AnAttribute(String("cellspacing"),i_sCellSpacing); 138 } 139 140 TableRow & 141 Table::AddRow() 142 { 143 TableRow * ret = new TableRow; 144 *this << ret; 145 return *ret; 146 } 147 148 bool 149 Table::FinishEmptyTag_XmlStyle() const 150 { 151 return false; 152 } 153 154 bool 155 Table::LineBreakAfterBeginTag() const 156 { 157 return true; 158 } 159 160 161 162 bool 163 DefListTerm::LineBreakAfterEndTag() const 164 { 165 return true; 166 } 167 168 bool 169 DefListDefinition::LineBreakAfterEndTag() const 170 { 171 return true; 172 } 173 174 175 176 177 178 DefListTerm & 179 DefList::AddTerm( DYN csi::xml::Item* let_dpItem ) 180 { 181 return PushElem( *this, new DefListTerm, let_dpItem ); 182 } 183 184 DefListDefinition & 185 DefList::AddDefinition( DYN csi::xml::Item* let_dpItem ) 186 { 187 return PushElem( *this, new DefListDefinition, let_dpItem ); 188 } 189 190 bool 191 DefList::LineBreakAfterBeginTag() const 192 { 193 return true; 194 } 195 196 bool 197 DefList::FinishEmptyTag_XmlStyle() const 198 { 199 return false; 200 } 201 202 bool 203 ListItem::LineBreakAfterEndTag() const 204 { 205 return true; 206 } 207 208 209 210 211 ListItem & 212 NumeratedList::AddItem( DYN csi::xml::Item* let_dpItem ) 213 { 214 return PushElem( *this, new ListItem, let_dpItem ); 215 } 216 217 bool 218 NumeratedList::LineBreakAfterBeginTag() const 219 { 220 return true; 221 } 222 223 224 ListItem & 225 SimpleList::AddItem( DYN csi::xml::Item* let_dpItem ) 226 { 227 return PushElem( *this, new ListItem, let_dpItem ); 228 } 229 230 bool 231 SimpleList::LineBreakAfterBeginTag() const 232 { 233 return true; 234 } 235 236 237 238 } // namespace html 239 } // namespace csi 240