예제 #1
0
int tab_page_index(PAGE *page)
{
  if (page_compare(page, &A3) == 0) return(A3_INDEX) ;
  else
    if (page_compare(page, &A4) == 0) return(A4_INDEX) ;
    else
      if (page_compare(page, &USletter) == 0) return(USLETTER_INDEX) ;
      else
        if (page_compare(page, &USlegal) == 0) return(USLEGAL_INDEX) ;
        else
          if (page_compare(page, &USexecutive) == 0) return(USEXECUTIVE_INDEX) ;
          else return(SPECIAL_INDEX) ;
}
예제 #2
0
void setup_pagename(PAGE *page)
{
  if (page_compare(page, &A3) == 0) strcpy(page->nom, A3.nom) ;
  else
    if (page_compare(page, &A4) == 0) strcpy(page->nom, A4.nom) ;
    else
      if (page_compare(page, &USletter) == 0) strcpy(page->nom, USletter.nom) ;
      else
        if (page_compare(page, &USlegal) == 0) strcpy(page->nom, USlegal.nom) ;
        else
          if (page_compare(page, &USexecutive) == 0) strcpy(page->nom, USexecutive.nom) ;
          else strcpy(page->nom, Special.nom) ;
}
float* measure_wraps_test(Stats_Log *log, Buffer_Set *buffers, int test_repitions, void *scratch,
                   int scratch_size, Record_Statistics *stats_out, float font_height, float max_width){
    Sample_Machine machine;
    machine = begin_machine(test_repitions, &scratch, &scratch_size);
    
    float *wrap_ys, *wrap_ys2;    
    wrap_ys = (float*)malloc(sizeof(float)*buffers->buffer.line_count);
    wrap_ys2 = (float*)malloc(sizeof(float)*buffers->buffer.line_count);
    
    for (int i = 0; i < test_repitions; ++i){
        start(&machine);
        buffer_measure_wrap_y(&buffers->buffer, wrap_ys, font_height, max_width);
        machine.samples[i].buffer = stop(&machine);

        start(&machine);
        buffer_measure_wrap_y(&buffers->gap_buffer, wrap_ys2, font_height, max_width);
        machine.samples[i].gap_buffer = stop(&machine);
        if (i == 0)
            page_compare((char*)wrap_ys, (char*)wrap_ys2, sizeof(float)*buffers->buffer.line_count);
    
        start(&machine);
        buffer_measure_wrap_y(&buffers->multi_gap_buffer, wrap_ys2, font_height, max_width);
        machine.samples[i].multi_gap_buffer = stop(&machine);
        if (i == 0)
            page_compare((char*)wrap_ys, (char*)wrap_ys2, sizeof(float)*buffers->buffer.line_count);
    
        start(&machine);
        buffer_measure_wrap_y(&buffers->rope_buffer, wrap_ys2, font_height, max_width);
        machine.samples[i].rope_buffer = stop(&machine);
        if (i == 0)
            page_compare((char*)wrap_ys, (char*)wrap_ys2, sizeof(float)*buffers->buffer.line_count);
    }
    
    free(wrap_ys2);

    end_machine(&machine, stats_out, __FUNCTION__);
    
    log_sample_set(log, litstr("measure-wrap-ys"), stats_out, machine.samples, machine.count);
    
    return wrap_ys;
}
void stream_check_test(Buffer_Set *buffers, void *scratch, int scratch_size){
    int i, page_size, size;
    
    size = buffer_size(&buffers->buffer);
    {
        int size2;
        size2 = buffer_size(&buffers->gap_buffer);
        hard_assert_4tech(size == size2);
        size2 = buffer_size(&buffers->multi_gap_buffer);
        hard_assert_4tech(size == size2);
        size2 = buffer_size(&buffers->rope_buffer);
        hard_assert_4tech(size == size2);
    }

    page_size = 1 << 10;

    char *page_1 = (char*)scratch;
    char *page_2 = page_1 + page_size;
    scratch_size -= page_size*2;
    hard_assert_4tech(scratch_size > 0);
    
    for (i = 0; i < size; i += page_size){
        int end = i + page_size;
        if (end > size) end = size;
        
        buffer_stringify(&buffers->buffer, i, end, page_1);
        
        buffer_stringify(&buffers->gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_stringify(&buffers->multi_gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_stringify(&buffers->rope_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
    }

    for (i = size-1; i > 0; i -= page_size){
        int end = i - page_size;
        if (end < 0) end = 0;
        
        buffer_backify(&buffers->buffer, i, end, page_1);
        
        buffer_backify(&buffers->gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_backify(&buffers->multi_gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_backify(&buffers->rope_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
    }
}
void measure_check_test(Buffer_Set *buffers){
    int count;
    count = buffers->buffer.line_count;
    assert_4tech(count == buffers->buffer.widths_count);
    
    assert_4tech(count == buffers->gap_buffer.line_count);
    assert_4tech(count == buffers->multi_gap_buffer.line_count);
    assert_4tech(count == buffers->rope_buffer.line_count);
    
    assert_4tech(count == buffers->gap_buffer.widths_count);
    assert_4tech(count == buffers->multi_gap_buffer.widths_count);
    assert_4tech(count == buffers->rope_buffer.widths_count);

    page_compare(buffers->buffer.line_starts, buffers->gap_buffer.line_starts, sizeof(int)*count);
    page_compare(buffers->buffer.line_starts, buffers->multi_gap_buffer.line_starts, sizeof(int)*count);
    page_compare(buffers->buffer.line_starts, buffers->rope_buffer.line_starts, sizeof(int)*count);

    page_compare(buffers->buffer.line_widths, buffers->gap_buffer.line_widths, sizeof(float)*count);
    page_compare(buffers->buffer.line_widths, buffers->multi_gap_buffer.line_widths, sizeof(float)*count);
    page_compare(buffers->buffer.line_widths, buffers->rope_buffer.line_widths, sizeof(float)*count);
}