| 1167 | | |
| | 1171 | |
| | 1172 | @SuppressWarnings("unchecked") |
| | 1173 | public Map<HotAttr<?>, ?> getAllStyledValues(HotPos pos) { |
| | 1174 | Map allStylesMap = new HashMap<HotAttr<?>, Object>(); |
| | 1175 | HotAttr<ImmColor> backGrAttr = CommonAttr.BACKGROUND_COLOR; |
| | 1176 | HotAttr<?> boldAttr = CommonAttr.BOLD; |
| | 1177 | HotAttr<?> fontFamilyAttr = CommonAttr.FONT_FAMILY; |
| | 1178 | HotAttr<?> fontSizeaAttr = CommonAttr.FONT_SIZE; |
| | 1179 | HotAttr<?> fgAttr = CommonAttr.FOREGROUND_COLOR; |
| | 1180 | HotAttr<?> italicAttr = CommonAttr.ITALIC; |
| | 1181 | HotAttr<?> overlinedAttr = CommonAttr.OVERLINED; |
| | 1182 | HotAttr<?> paraAlignAttr = CommonAttr.PARA_ALIGNMENT; |
| | 1183 | HotAttr<?> paraFirstLineAttr = CommonAttr.PARA_FIRST_LINE_INDENT; |
| | 1184 | HotAttr<?> paraLeftIndentAttr = CommonAttr.PARA_LEFT_INDENT; |
| | 1185 | HotAttr<?> paraLineSpacingAttr = CommonAttr.PARA_LINE_SPACING; |
| | 1186 | HotAttr<?> paraRightIndentAttr = CommonAttr.PARA_RIGHT_INDENT; |
| | 1187 | HotAttr<?> paraSpaceAboveAttr = CommonAttr.PARA_SPACE_ABOVE; |
| | 1188 | HotAttr<?> paraSpaceBelowAttr = CommonAttr.PARA_SPACE_BELOW; |
| | 1189 | HotAttr<?> strikeThroughAttr = CommonAttr.STRIKE_THROUGH; |
| | 1190 | HotAttr<?> underlinedAttr = CommonAttr.UNDERLINED; |
| | 1191 | HotAttr<?> widthExtraAttr = CommonAttr.WIDTH_EXTRA; |
| | 1192 | |
| | 1193 | |
| | 1194 | allStylesMap.put(backGrAttr, getStyleValue(backGrAttr, pos)); |
| | 1195 | allStylesMap.put(boldAttr, getStyleValue(boldAttr, pos)); |
| | 1196 | allStylesMap.put(fontFamilyAttr, getStyleValue(fontFamilyAttr, pos)); |
| | 1197 | allStylesMap.put(fontSizeaAttr, getStyleValue(fontSizeaAttr, pos)); |
| | 1198 | allStylesMap.put(fgAttr, getStyleValue(fgAttr, pos)); |
| | 1199 | allStylesMap.put(italicAttr, getStyleValue(italicAttr, pos)); |
| | 1200 | allStylesMap.put(overlinedAttr, getStyleValue(overlinedAttr, pos)); |
| | 1201 | allStylesMap.put(paraAlignAttr, getStyleValue(paraAlignAttr, pos)); |
| | 1202 | allStylesMap.put(paraFirstLineAttr, getStyleValue(paraFirstLineAttr, pos)); |
| | 1203 | allStylesMap.put(paraLeftIndentAttr, getStyleValue(paraLeftIndentAttr, pos)); |
| | 1204 | allStylesMap.put(paraLineSpacingAttr, getStyleValue(paraLineSpacingAttr, pos)); |
| | 1205 | allStylesMap.put(paraRightIndentAttr, getStyleValue(paraRightIndentAttr, pos)); |
| | 1206 | allStylesMap.put(paraSpaceAboveAttr, getStyleValue(paraSpaceAboveAttr, pos)); |
| | 1207 | allStylesMap.put(paraSpaceBelowAttr, getStyleValue(paraSpaceBelowAttr, pos)); |
| | 1208 | allStylesMap.put(strikeThroughAttr, getStyleValue(strikeThroughAttr, pos)); |
| | 1209 | allStylesMap.put(underlinedAttr, getStyleValue(underlinedAttr, pos)); |
| | 1210 | allStylesMap.put(widthExtraAttr, getStyleValue(widthExtraAttr, pos)); |
| | 1211 | |
| | 1212 | return allStylesMap; |
| | 1213 | |
| | 1214 | } |
| | 1215 | |
| | 1216 | |
| | 1217 | public ImmHotText getRun(HotPos start) { |
| | 1218 | HotPos pos = start.normalize(this); |
| | 1219 | |
| | 1220 | if (pos.isEnd(this)) { |
| | 1221 | return null; |
| | 1222 | } |
| | 1223 | |
| | 1224 | // TODO create real runs until style change or tab break; |
| | 1225 | |
| | 1226 | HotPos end = pos; |
| | 1227 | // Map<HotAttr<?>, ?> style = getAllStyledValues(pos); |
| | 1228 | |
| | 1229 | end = advance(end, 1); |
| | 1230 | // while (!end.isEnd(this) && |
| | 1231 | // getAllStyledValues(advance(end, 1)).equals(style)) { |
| | 1232 | // end = advance(end, 1); |
| | 1233 | // } |
| | 1234 | |
| | 1235 | HotInterval interval = new HotInterval(pos, end); |
| | 1236 | |
| | 1237 | // if (getPosComparator().compare(pos, end) == 0) { |
| | 1238 | // return null; |
| | 1239 | // } |
| | 1240 | |
| | 1241 | return subText(interval); |
| | 1242 | } |