- while(current && current_prev && current_next)
- {
- current->x = current_prev->x * prev_scale +
- current_next->x * next_scale;
- current->y = current_prev->y * prev_scale +
- current_next->y * next_scale;
- current = NEXT;
- current_prev = current_prev->next;
- current_next = current_next->next;
+ HistogramPoint *current = first;
+ while( current_prev || current_next ) {
+ if( !current ) {
+ current = new HistogramPoint;
+ append(current);
+ }
+ if( !current_next ) {
+ current->copy_from(current_prev);
+ current_prev = current_prev->next;
+ }
+ else if( !current_prev ) {
+ current->copy_from(current_next);
+ current_next = current_next->next;
+ }
+ else {
+ current->x = current_prev->x * prev_scale +
+ current_next->x * next_scale;
+ current->y = current_prev->y * prev_scale +
+ current_next->y * next_scale;
+ current->gradient = current_prev->gradient * prev_scale +
+ current_next->gradient * next_scale;
+ current->xoffset_left = current_prev->xoffset_left * prev_scale +
+ current_next->xoffset_left * next_scale;
+ current->xoffset_right = current_prev->xoffset_right * prev_scale +
+ current_next->xoffset_right * next_scale;
+ current_prev = current_prev->next;
+ current_next = current_next->next;
+ }
+ current = current->next;