| 1140 | //----------------------------------------------------------------------------- |
| 1141 | |
| 1142 | void GuiEditCtrl::justifySelection( Justification j ) |
| 1143 | { |
| 1144 | S32 minX, maxX; |
| 1145 | S32 minY, maxY; |
| 1146 | S32 extentX, extentY; |
| 1147 | |
| 1148 | if (mSelectedControls.size() < 2) |
| 1149 | return; |
| 1150 | |
| 1151 | Vector<GuiControl *>::iterator i = mSelectedControls.begin(); |
| 1152 | minX = (*i)->getLeft(); |
| 1153 | maxX = minX + (*i)->getWidth(); |
| 1154 | minY = (*i)->getTop(); |
| 1155 | maxY = minY + (*i)->getHeight(); |
| 1156 | extentX = (*i)->getWidth(); |
| 1157 | extentY = (*i)->getHeight(); |
| 1158 | i++; |
| 1159 | for(;i != mSelectedControls.end(); i++) |
| 1160 | { |
| 1161 | minX = getMin(minX, (*i)->getLeft()); |
| 1162 | maxX = getMax(maxX, (*i)->getLeft() + (*i)->getWidth()); |
| 1163 | minY = getMin(minY, (*i)->getTop()); |
| 1164 | maxY = getMax(maxY, (*i)->getTop() + (*i)->getHeight()); |
| 1165 | extentX += (*i)->getWidth(); |
| 1166 | extentY += (*i)->getHeight(); |
| 1167 | } |
| 1168 | S32 deltaX = maxX - minX; |
| 1169 | S32 deltaY = maxY - minY; |
| 1170 | switch(j) |
| 1171 | { |
| 1172 | case JUSTIFY_LEFT: |
| 1173 | for(i = mSelectedControls.begin(); i != mSelectedControls.end(); i++) |
| 1174 | if( !( *i )->isLocked() ) |
| 1175 | (*i)->setLeft( minX ); |
| 1176 | break; |
| 1177 | case JUSTIFY_TOP: |
| 1178 | for(i = mSelectedControls.begin(); i != mSelectedControls.end(); i++) |
| 1179 | if( !( *i )->isLocked() ) |
| 1180 | (*i)->setTop( minY ); |
| 1181 | break; |
| 1182 | case JUSTIFY_RIGHT: |
| 1183 | for(i = mSelectedControls.begin(); i != mSelectedControls.end(); i++) |
| 1184 | if( !( *i )->isLocked() ) |
| 1185 | (*i)->setLeft( maxX - (*i)->getWidth() + 1 ); |
| 1186 | break; |
| 1187 | case JUSTIFY_BOTTOM: |
| 1188 | for(i = mSelectedControls.begin(); i != mSelectedControls.end(); i++) |
| 1189 | if( !( *i )->isLocked() ) |
| 1190 | (*i)->setTop( maxY - (*i)->getHeight() + 1 ); |
| 1191 | break; |
| 1192 | case JUSTIFY_CENTER_VERTICAL: |
| 1193 | for(i = mSelectedControls.begin(); i != mSelectedControls.end(); i++) |
| 1194 | if( !( *i )->isLocked() ) |
| 1195 | (*i)->setLeft( minX + ((deltaX - (*i)->getWidth()) >> 1 )); |
| 1196 | break; |
| 1197 | case JUSTIFY_CENTER_HORIZONTAL: |
| 1198 | for(i = mSelectedControls.begin(); i != mSelectedControls.end(); i++) |
| 1199 | if( !( *i )->isLocked() ) |