author | drw <drw> | 2005-04-14 18:29:44 (UTC) |
---|---|---|
committer | drw <drw> | 2005-04-14 18:29:44 (UTC) |
commit | 7a3b813cc3bfbb2f7c31f347c35405851e82aecf (patch) (unidiff) | |
tree | b9d384b6d33e396a0219386b4bf695b092bb606d /library/lightstyle.cpp | |
parent | 5f600ec21480d1d040203407a1d2446781702230 (diff) | |
download | opie-7a3b813cc3bfbb2f7c31f347c35405851e82aecf.zip opie-7a3b813cc3bfbb2f7c31f347c35405851e82aecf.tar.gz opie-7a3b813cc3bfbb2f7c31f347c35405851e82aecf.tar.bz2 |
Fix icon sizing for light and qpe styles
-rw-r--r-- | library/lightstyle.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/library/lightstyle.cpp b/library/lightstyle.cpp index 3bd1623..c5073ca 100644 --- a/library/lightstyle.cpp +++ b/library/lightstyle.cpp | |||
@@ -1035,247 +1035,251 @@ bool LightStyle::eventFilter(QObject *object, QEvent *event) | |||
1035 | 1035 | ||
1036 | QPalette pal = singleton->hoverWidget->palette(); | 1036 | QPalette pal = singleton->hoverWidget->palette(); |
1037 | if (singleton->hoverWidget->ownPalette()) | 1037 | if (singleton->hoverWidget->ownPalette()) |
1038 | singleton->savePalette = new QPalette(pal); | 1038 | singleton->savePalette = new QPalette(pal); |
1039 | 1039 | ||
1040 | singleton->hoverWidget->setPalette(singleton->hoverPalette); | 1040 | singleton->hoverWidget->setPalette(singleton->hoverPalette); |
1041 | 1041 | ||
1042 | break; | 1042 | break; |
1043 | } | 1043 | } |
1044 | 1044 | ||
1045 | case QEvent::Leave: | 1045 | case QEvent::Leave: |
1046 | { | 1046 | { |
1047 | if (object != singleton->hoverWidget) | 1047 | if (object != singleton->hoverWidget) |
1048 | break; | 1048 | break; |
1049 | 1049 | ||
1050 | if (singleton->savePalette) { | 1050 | if (singleton->savePalette) { |
1051 | singleton->hoverWidget->setPalette(*(singleton->savePalette)); | 1051 | singleton->hoverWidget->setPalette(*(singleton->savePalette)); |
1052 | delete singleton->savePalette; | 1052 | delete singleton->savePalette; |
1053 | singleton->savePalette = 0; | 1053 | singleton->savePalette = 0; |
1054 | } else | 1054 | } else |
1055 | singleton->hoverWidget->unsetPalette(); | 1055 | singleton->hoverWidget->unsetPalette(); |
1056 | 1056 | ||
1057 | singleton->hoverWidget = 0; | 1057 | singleton->hoverWidget = 0; |
1058 | 1058 | ||
1059 | break; | 1059 | break; |
1060 | } | 1060 | } |
1061 | 1061 | ||
1062 | default: | 1062 | default: |
1063 | { | 1063 | { |
1064 | ; | 1064 | ; |
1065 | } | 1065 | } |
1066 | } | 1066 | } |
1067 | 1067 | ||
1068 | return QWindowsStyle::eventFilter(object, event); | 1068 | return QWindowsStyle::eventFilter(object, event); |
1069 | } | 1069 | } |
1070 | 1070 | ||
1071 | 1071 | ||
1072 | static const int motifItemFrame = 1;// menu item frame width | 1072 | static const int motifItemFrame = 1;// menu item frame width |
1073 | static const int motifSepHeight = 2;// separator item height | 1073 | static const int motifSepHeight = 2;// separator item height |
1074 | static const int motifItemHMargin = 1;// menu item hor text margin | 1074 | static const int motifItemHMargin = 1;// menu item hor text margin |
1075 | static const int motifItemVMargin = 2;// menu item ver text margin | 1075 | static const int motifItemVMargin = 2;// menu item ver text margin |
1076 | static const int motifArrowHMargin = 0;// arrow horizontal margin | 1076 | static const int motifArrowHMargin = 0;// arrow horizontal margin |
1077 | static const int motifTabSpacing = 12;// space between text and tab | 1077 | static const int motifTabSpacing = 12;// space between text and tab |
1078 | static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark | 1078 | static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark |
1079 | static const int windowsRightBorder= 8; // right border on windows | 1079 | static const int windowsRightBorder= 8; // right border on windows |
1080 | static const int windowsCheckMarkWidth = 2; // checkmarks width on windows | 1080 | static const int windowsCheckMarkWidth = 2; // checkmarks width on windows |
1081 | 1081 | ||
1082 | /*! \reimp | 1082 | /*! \reimp |
1083 | */ | 1083 | */ |
1084 | int LightStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) | 1084 | int LightStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) |
1085 | { | 1085 | { |
1086 | #ifndef QT_NO_MENUDATA | 1086 | #ifndef QT_NO_MENUDATA |
1087 | int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm | 1087 | int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm |
1088 | 1088 | ||
1089 | if ( mi->isSeparator() ) | 1089 | if ( mi->isSeparator() ) |
1090 | return 10; // arbitrary | 1090 | return 10; // arbitrary |
1091 | else if ( mi->pixmap() ) | 1091 | else if ( mi->pixmap() ) |
1092 | w += mi->pixmap()->width();// pixmap only | 1092 | w += mi->pixmap()->width();// pixmap only |
1093 | 1093 | ||
1094 | if ( !mi->text().isNull() ) { | 1094 | if ( !mi->text().isNull() ) { |
1095 | if ( mi->text().find('\t') >= 0 )// string contains tab | 1095 | if ( mi->text().find('\t') >= 0 )// string contains tab |
1096 | w += motifTabSpacing; | 1096 | w += motifTabSpacing; |
1097 | } | 1097 | } |
1098 | 1098 | ||
1099 | if ( maxpmw ) { // we have iconsets | 1099 | if ( maxpmw ) { // we have iconsets |
1100 | w += maxpmw; | 1100 | w += maxpmw; |
1101 | w += 6; // add a little extra border around the iconset | 1101 | w += 6; // add a little extra border around the iconset |
1102 | } | 1102 | } |
1103 | 1103 | ||
1104 | if ( checkable && maxpmw < windowsCheckMarkWidth ) { | 1104 | if ( checkable && maxpmw < windowsCheckMarkWidth ) { |
1105 | w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks | 1105 | w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks |
1106 | } | 1106 | } |
1107 | 1107 | ||
1108 | if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) | 1108 | if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) |
1109 | w += motifCheckMarkHMargin; // add space to separate the columns | 1109 | w += motifCheckMarkHMargin; // add space to separate the columns |
1110 | 1110 | ||
1111 | w += windowsRightBorder; // windows has a strange wide border on the right side | 1111 | w += windowsRightBorder; // windows has a strange wide border on the right side |
1112 | 1112 | ||
1113 | return w; | 1113 | return w; |
1114 | #endif | 1114 | #endif |
1115 | } | 1115 | } |
1116 | 1116 | ||
1117 | /*! \reimp | 1117 | /*! \reimp |
1118 | */ | 1118 | */ |
1119 | int LightStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) | 1119 | int LightStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) |
1120 | { | 1120 | { |
1121 | #ifndef QT_NO_MENUDATA | 1121 | #ifndef QT_NO_MENUDATA |
1122 | int h = 0; | 1122 | int h = 0; |
1123 | if ( mi->isSeparator() ) // separator height | 1123 | if ( mi->isSeparator() ) // separator height |
1124 | h = motifSepHeight; | 1124 | h = motifSepHeight; |
1125 | else if ( mi->pixmap() ) // pixmap height | 1125 | else if ( mi->pixmap() ) // pixmap height |
1126 | h = mi->pixmap()->height() + 2*motifItemFrame; | 1126 | h = mi->pixmap()->height() + 2*motifItemFrame; |
1127 | else // text height | 1127 | else // text height |
1128 | h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame; | 1128 | h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame; |
1129 | 1129 | ||
1130 | if ( !mi->isSeparator() && mi->iconSet() != 0 ) { | 1130 | if ( !mi->isSeparator() && mi->iconSet() != 0 ) { |
1131 | h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame ); | 1131 | h = QMAX( h, mi->iconSet()->pixmap().height() + 2*motifItemFrame ); |
1132 | } | 1132 | } |
1133 | if ( mi->custom() ) | 1133 | if ( mi->custom() ) |
1134 | h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; | 1134 | h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; |
1135 | return h; | 1135 | return h; |
1136 | #endif | 1136 | #endif |
1137 | } | 1137 | } |
1138 | 1138 | ||
1139 | void LightStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, | 1139 | void LightStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, |
1140 | const QPalette& pal, | 1140 | const QPalette& pal, |
1141 | bool act, bool enabled, int x, int y, int w, int h) | 1141 | bool act, bool enabled, int x, int y, int w, int h) |
1142 | { | 1142 | { |
1143 | #ifndef QT_NO_MENUDATA | 1143 | #ifndef QT_NO_MENUDATA |
1144 | const QColorGroup & g = pal.active(); | 1144 | const QColorGroup & g = pal.active(); |
1145 | bool dis = !enabled; | 1145 | bool dis = !enabled; |
1146 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); | 1146 | QColorGroup itemg = dis ? pal.disabled() : pal.active(); |
1147 | 1147 | ||
1148 | if ( checkable ) | 1148 | if ( checkable ) |
1149 | maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks | 1149 | maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks |
1150 | 1150 | ||
1151 | int checkcol = maxpmw; | 1151 | int checkcol = maxpmw; |
1152 | 1152 | ||
1153 | if ( mi && mi->isSeparator() ) { // draw separator | 1153 | if ( mi && mi->isSeparator() ) { // draw separator |
1154 | p->setPen( g.dark() ); | 1154 | p->setPen( g.dark() ); |
1155 | p->drawLine( x, y, x+w, y ); | 1155 | p->drawLine( x, y, x+w, y ); |
1156 | p->setPen( g.light() ); | 1156 | p->setPen( g.light() ); |
1157 | p->drawLine( x, y+1, x+w, y+1 ); | 1157 | p->drawLine( x, y+1, x+w, y+1 ); |
1158 | return; | 1158 | return; |
1159 | } | 1159 | } |
1160 | 1160 | ||
1161 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : | 1161 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : |
1162 | g.brush( QColorGroup::Button ); | 1162 | g.brush( QColorGroup::Button ); |
1163 | p->fillRect( x, y, w, h, fill); | 1163 | p->fillRect( x, y, w, h, fill); |
1164 | 1164 | ||
1165 | if ( !mi ) | 1165 | if ( !mi ) |
1166 | return; | 1166 | return; |
1167 | 1167 | ||
1168 | if ( mi->isChecked() ) { | 1168 | if ( mi->isChecked() ) { |
1169 | if ( act && !dis ) { | 1169 | if ( act && !dis ) { |
1170 | qDrawShadePanel( p, x, y, checkcol, h, | 1170 | qDrawShadePanel( p, x, y, checkcol, h, |
1171 | g, TRUE, 1, &g.brush( QColorGroup::Button ) ); | 1171 | g, TRUE, 1, &g.brush( QColorGroup::Button ) ); |
1172 | } else { | 1172 | } else { |
1173 | qDrawShadePanel( p, x, y, checkcol, h, | 1173 | qDrawShadePanel( p, x, y, checkcol, h, |
1174 | g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); | 1174 | g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); |
1175 | } | 1175 | } |
1176 | } else if ( !act ) { | 1176 | } else if ( !act ) { |
1177 | p->fillRect(x, y, checkcol , h, | 1177 | p->fillRect(x, y, checkcol , h, |
1178 | g.brush( QColorGroup::Button )); | 1178 | g.brush( QColorGroup::Button )); |
1179 | } | 1179 | } |
1180 | 1180 | ||
1181 | if ( mi->iconSet() ) { // draw iconset | 1181 | if ( mi->iconSet() ) { // draw iconset |
1182 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; | 1182 | QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; |
1183 | if (act && !dis ) | 1183 | if (act && !dis ) |
1184 | mode = QIconSet::Active; | 1184 | mode = QIconSet::Active; |
1185 | QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode ); | 1185 | QPixmap pixmap; |
1186 | if ( mode == QIconSet::Disabled ) | ||
1187 | pixmap = mi->iconSet()->pixmap( QIconSet::Automatic, mode ); | ||
1188 | else | ||
1189 | pixmap = mi->iconSet()->pixmap(); | ||
1186 | int pixw = pixmap.width(); | 1190 | int pixw = pixmap.width(); |
1187 | int pixh = pixmap.height(); | 1191 | int pixh = pixmap.height(); |
1188 | if ( act && !dis ) { | 1192 | if ( act && !dis ) { |
1189 | if ( !mi->isChecked() ) | 1193 | if ( !mi->isChecked() ) |
1190 | qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); | 1194 | qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); |
1191 | } | 1195 | } |
1192 | QRect cr( x, y, checkcol, h ); | 1196 | QRect cr( x, y, checkcol, h ); |
1193 | QRect pmr( 0, 0, pixw, pixh ); | 1197 | QRect pmr( 0, 0, pixw, pixh ); |
1194 | pmr.moveCenter( cr.center() ); | 1198 | pmr.moveCenter( cr.center() ); |
1195 | p->setPen( itemg.text() ); | 1199 | p->setPen( itemg.text() ); |
1196 | p->drawPixmap( pmr.topLeft(), pixmap ); | 1200 | p->drawPixmap( pmr.topLeft(), pixmap ); |
1197 | 1201 | ||
1198 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : | 1202 | QBrush fill = act? g.brush( QColorGroup::Highlight ) : |
1199 | g.brush( QColorGroup::Button ); | 1203 | g.brush( QColorGroup::Button ); |
1200 | p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); | 1204 | p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); |
1201 | } else if ( checkable ) {// just "checking"... | 1205 | } else if ( checkable ) {// just "checking"... |
1202 | int mw = checkcol + motifItemFrame; | 1206 | int mw = checkcol + motifItemFrame; |
1203 | int mh = h - 2*motifItemFrame; | 1207 | int mh = h - 2*motifItemFrame; |
1204 | if ( mi->isChecked() ) { | 1208 | if ( mi->isChecked() ) { |
1205 | drawCheckMark( p, x + motifItemFrame + 2, | 1209 | drawCheckMark( p, x + motifItemFrame + 2, |
1206 | y+motifItemFrame, mw, mh, itemg, act, dis ); | 1210 | y+motifItemFrame, mw, mh, itemg, act, dis ); |
1207 | } | 1211 | } |
1208 | } | 1212 | } |
1209 | 1213 | ||
1210 | p->setPen( act ? g.highlightedText() : g.buttonText() ); | 1214 | p->setPen( act ? g.highlightedText() : g.buttonText() ); |
1211 | 1215 | ||
1212 | QColor discol; | 1216 | QColor discol; |
1213 | if ( dis ) { | 1217 | if ( dis ) { |
1214 | discol = itemg.text(); | 1218 | discol = itemg.text(); |
1215 | p->setPen( discol ); | 1219 | p->setPen( discol ); |
1216 | } | 1220 | } |
1217 | 1221 | ||
1218 | int xm = motifItemFrame + checkcol + motifItemHMargin; | 1222 | int xm = motifItemFrame + checkcol + motifItemHMargin; |
1219 | 1223 | ||
1220 | if ( mi->custom() ) { | 1224 | if ( mi->custom() ) { |
1221 | int m = motifItemVMargin; | 1225 | int m = motifItemVMargin; |
1222 | p->save(); | 1226 | p->save(); |
1223 | if ( dis && !act ) { | 1227 | if ( dis && !act ) { |
1224 | p->setPen( g.light() ); | 1228 | p->setPen( g.light() ); |
1225 | mi->custom()->paint( p, itemg, act, enabled, | 1229 | mi->custom()->paint( p, itemg, act, enabled, |
1226 | x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); | 1230 | x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); |
1227 | p->setPen( discol ); | 1231 | p->setPen( discol ); |
1228 | } | 1232 | } |
1229 | mi->custom()->paint( p, itemg, act, enabled, | 1233 | mi->custom()->paint( p, itemg, act, enabled, |
1230 | x+xm, y+m, w-xm-tab+1, h-2*m ); | 1234 | x+xm, y+m, w-xm-tab+1, h-2*m ); |
1231 | p->restore(); | 1235 | p->restore(); |
1232 | } | 1236 | } |
1233 | QString s = mi->text(); | 1237 | QString s = mi->text(); |
1234 | if ( !s.isNull() ) { // draw text | 1238 | if ( !s.isNull() ) { // draw text |
1235 | int t = s.find( '\t' ); | 1239 | int t = s.find( '\t' ); |
1236 | int m = motifItemVMargin; | 1240 | int m = motifItemVMargin; |
1237 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; | 1241 | const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; |
1238 | if ( t >= 0 ) { // draw tab text | 1242 | if ( t >= 0 ) { // draw tab text |
1239 | if ( dis && !act ) { | 1243 | if ( dis && !act ) { |
1240 | p->setPen( g.light() ); | 1244 | p->setPen( g.light() ); |
1241 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, | 1245 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, |
1242 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); | 1246 | y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); |
1243 | p->setPen( discol ); | 1247 | p->setPen( discol ); |
1244 | } | 1248 | } |
1245 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, | 1249 | p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, |
1246 | y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); | 1250 | y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); |
1247 | } | 1251 | } |
1248 | if ( dis && !act ) { | 1252 | if ( dis && !act ) { |
1249 | p->setPen( g.light() ); | 1253 | p->setPen( g.light() ); |
1250 | p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t ); | 1254 | p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t ); |
1251 | p->setPen( discol ); | 1255 | p->setPen( discol ); |
1252 | } | 1256 | } |
1253 | p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); | 1257 | p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); |
1254 | } else if ( mi->pixmap() ) { // draw pixmap | 1258 | } else if ( mi->pixmap() ) { // draw pixmap |
1255 | QPixmap *pixmap = mi->pixmap(); | 1259 | QPixmap *pixmap = mi->pixmap(); |
1256 | if ( pixmap->depth() == 1 ) | 1260 | if ( pixmap->depth() == 1 ) |
1257 | p->setBackgroundMode( OpaqueMode ); | 1261 | p->setBackgroundMode( OpaqueMode ); |
1258 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); | 1262 | p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); |
1259 | if ( pixmap->depth() == 1 ) | 1263 | if ( pixmap->depth() == 1 ) |
1260 | p->setBackgroundMode( TransparentMode ); | 1264 | p->setBackgroundMode( TransparentMode ); |
1261 | } | 1265 | } |
1262 | if ( mi->popup() ) { // draw sub menu arrow | 1266 | if ( mi->popup() ) { // draw sub menu arrow |
1263 | int dim = (h-2*motifItemFrame) / 2; | 1267 | int dim = (h-2*motifItemFrame) / 2; |
1264 | if ( act ) { | 1268 | if ( act ) { |
1265 | if ( !dis ) | 1269 | if ( !dis ) |
1266 | discol = white; | 1270 | discol = white; |
1267 | QColorGroup g2( discol, g.highlight(), | 1271 | QColorGroup g2( discol, g.highlight(), |
1268 | white, white, | 1272 | white, white, |
1269 | dis ? discol : white, | 1273 | dis ? discol : white, |
1270 | discol, white ); | 1274 | discol, white ); |
1271 | drawArrow( p, RightArrow, FALSE, | 1275 | drawArrow( p, RightArrow, FALSE, |
1272 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 1276 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
1273 | dim, dim, g2, TRUE ); | 1277 | dim, dim, g2, TRUE ); |
1274 | } else { | 1278 | } else { |
1275 | drawArrow( p, RightArrow, | 1279 | drawArrow( p, RightArrow, |
1276 | FALSE, | 1280 | FALSE, |
1277 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, | 1281 | x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, |
1278 | dim, dim, g, mi->isEnabled() ); | 1282 | dim, dim, g, mi->isEnabled() ); |
1279 | } | 1283 | } |
1280 | } | 1284 | } |
1281 | #endif | 1285 | #endif |