~ubuntu-branches/ubuntu/natty/freeciv/natty-proposed

« back to all changes in this revision

Viewing changes to utility/ftwl/widget_window.c

  • Committer: Bazaar Package Importer
  • Author(s): Clint Adams, Karl Goetz, Clint Adams
  • Date: 2010-02-23 22:09:02 UTC
  • mfrom: (7.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20100223220902-s3spqi1x4e190y0t
Tags: 2.2.0-1
[ Karl Goetz ]
* Remove civserver files in /etc/ggzd/ (Closes: 523772, 517787)
* Adding ${misc:Depends} to all binary packages (lintian warnings)

[ Clint Adams ]
* New upstream version.
  - Drop data_dsc_use_bindir.diff (binary pathnames have changed).

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
/* REMOVE ME */
31
31
#include "timing.h"
32
32
 
 
33
#define FLUSH_RECTS TRUE       /* flush dirty rectangles or whole screen */
 
34
 
33
35
#define DEBUG_UPDATES  0
34
36
#define DUMP_UPDATES   0
35
37
#define DUMP_WINDOWS   0
50
52
                                  const struct ct_rect *region)
51
53
{
52
54
  if (widget->data.window.canvas_background) {
53
 
    struct ct_size size = { region->width,
 
55
   struct ct_size size = { region->width,
54
56
                            region->height };
55
57
    struct ct_point pos = { region->x, region->y };
56
58
 
57
 
    be_copy_osda_to_osda(get_osda(widget),
 
59
    be_copy_osda_to_osda(sw_widget_get_osda(widget),
58
60
                         widget->data.window.canvas_background,
59
61
                         &size, &pos, &pos);
60
62
  }
73
75
 
74
76
    be_draw_region(widget->data.window.target, &rect,
75
77
                   widget->data.window.title->background);
76
 
    be_draw_rectangle(get_osda(widget), &rect, 1,
 
78
    be_draw_rectangle(sw_widget_get_osda(widget), &rect, 1,
77
79
                      widget->data.window.title->foreground);
78
80
    pos.x = widget->inner_bounds.x + TITLE_PADDING;
79
81
    pos.y = widget->inner_bounds.y + TITLE_PADDING;
80
 
    be_draw_string(get_osda(widget), &pos,
 
82
    be_draw_string(sw_widget_get_osda(widget), &pos,
81
83
                   widget->data.window.title);
82
84
  }
83
85
}
375
377
/*************************************************************************
376
378
  ...
377
379
*************************************************************************/
 
380
void flush_rect_to_screen(const struct ct_rect *rect)
 
381
{
 
382
  be_copy_osda_to_screen(whole_osda, rect);  
 
383
}
 
384
 
 
385
/*************************************************************************
 
386
  ...
 
387
*************************************************************************/
378
388
void flush_all_to_screen(void)
379
389
{
380
 
  be_copy_osda_to_screen(whole_osda);
 
390
  be_copy_osda_to_screen(whole_osda, NULL);
381
391
 
382
392
  if (dump_screen) {
383
 
    static int counter = -1;
 
393
    static int counter = 0;
384
394
    char b[100];
385
395
 
386
 
    counter++;
387
 
 
388
 
    freelog(LOG_NORMAL, "flush to screen %d",counter);
389
 
 
390
 
    sprintf(b, "screen-%04d.ppm", counter);
 
396
    my_snprintf(b, sizeof(b), "fc_%05d.ppm", counter++);
 
397
    freelog(LOG_NORMAL, _("Making screenshot %s"), b);
 
398
 
391
399
    be_write_osda_to_file(whole_osda, b);
392
400
  }
393
401
}
424
432
    size.width = rect->width;
425
433
    size.height = rect->height;
426
434
 
427
 
    be_draw_sprite(get_osda(widget), widget->background_sprite,
 
435
    be_draw_sprite(sw_widget_get_osda(widget), widget->background_sprite,
428
436
                   &size, &pos, &pos);
429
437
  } else if (widget->has_background_color) {
430
 
    be_draw_region(get_osda(widget), rect,
 
438
    be_draw_region(sw_widget_get_osda(widget), rect,
431
439
                   widget->background_color);
432
440
  } else {
433
441
    if (widget->parent && widget->type != WT_WINDOW) {
451
459
      rect.y = 0;
452
460
    }
453
461
 
454
 
    be_draw_rectangle(get_osda(widget), &rect, BORDER_WIDTH,
 
462
    be_draw_rectangle(sw_widget_get_osda(widget), &rect, BORDER_WIDTH,
455
463
                      widget->border_color);
456
464
  }
457
465
}
503
511
  pos.y = rect.y + PADDING;
504
512
 
505
513
  if (widget->type == WT_WINDOW) {
506
 
    osda = get_osda(widget->parent);
 
514
    osda = sw_widget_get_osda(widget->parent);
507
515
  } else {
508
 
    osda = get_osda(widget);
 
516
    osda = sw_widget_get_osda(widget);
509
517
  }
510
518
 
511
519
  for (i = 1; i < widget->tooltip->shadow; i++) {
524
532
/*************************************************************************
525
533
  ...
526
534
*************************************************************************/
 
535
void untooltip(struct sw_widget *widget)
 
536
{
 
537
  struct ct_point pos;
 
538
  struct ct_rect rect;
 
539
  const int PADDING = 5;
 
540
  struct osda *osda;
 
541
  int i, extra;
 
542
 
 
543
  if (widget->tooltip && widget->tooltip_callback_id != 0) {
 
544
    sw_remove_timeout(widget->tooltip_callback_id);
 
545
    widget->tooltip_callback_id = 0;
 
546
  }
 
547
 
 
548
  if (!widget->tooltip || (widget->tooltip && !widget->tooltip_shown)) {
 
549
    return;
 
550
  }
 
551
  widget->tooltip_shown = FALSE;
 
552
  
 
553
  extra = 2 * PADDING + widget->tooltip->shadow;
 
554
  
 
555
  rect.width = widget->tooltip->text->size.width + extra;
 
556
  rect.height = widget->tooltip->text->size.height + extra;
 
557
 
 
558
  rect.x =
 
559
      MAX(0,
 
560
          widget->outer_bounds.x + (widget->outer_bounds.width -
 
561
                                    rect.width) / 2);
 
562
  rect.y = MAX(0,widget->outer_bounds.y - rect.height - PADDING);
 
563
 
 
564
  pos.x = rect.x + PADDING;
 
565
  pos.y = rect.y + PADDING;
 
566
 
 
567
  if (widget->type == WT_WINDOW) {
 
568
    osda = sw_widget_get_osda(widget->parent);
 
569
  } else {
 
570
    osda = sw_widget_get_osda(widget);
 
571
  }
 
572
 
 
573
  for (i = 1; i < widget->tooltip->shadow; i++) {
 
574
    struct ct_rect rect2 = rect;
 
575
 
 
576
    rect2.x += i;
 
577
    rect2.y += i;
 
578
    be_draw_region(osda, &rect2, be_get_color(0, 0, 0, MIN_OPACITY));
 
579
  }
 
580
 
 
581
  be_draw_region(osda, &rect, be_get_color(0, 0, 0, MIN_OPACITY));
 
582
  be_draw_rectangle(osda, &rect, 1, be_get_color(0, 0, 0, MIN_OPACITY));  
 
583
  
 
584
  parent_needs_paint(widget);
 
585
}
 
586
 
 
587
/*************************************************************************
 
588
  ...
 
589
*************************************************************************/
527
590
static void draw_one(struct sw_widget *widget)
528
591
{
529
592
  draw_background(widget);
597
660
 
598
661
  orig = tmp;
599
662
  copy = list;
600
 
  region_list_unlink_all(copy);
 
663
  region_list_clear(copy);
601
664
 
602
665
  region_list_iterate(orig, region) {
603
666
    if (ct_rect_in_rect_list(region, copy)) {
607
670
    }
608
671
  } region_list_iterate_end;
609
672
 
610
 
  region_list_unlink_all(tmp);
611
673
  region_list_free(tmp);
612
674
}
613
675
 
694
756
 
695
757
  merge_regions(normalized_regions);
696
758
 
 
759
#if 0
 
760
  if (DEBUG_PAINT_ALL) {
 
761
    printf("  merged normalized_regions\n");
 
762
    region_list_iterate(normalized_regions, region) {
 
763
      printf("    region=%s\n", ct_rect_to_string(region));
 
764
    } region_list_iterate_end;
 
765
  }
 
766
#endif
 
767
 
697
768
  if(DEBUG_PAINT_ALL) {
698
769
    printf("starting flushing of %d regions\n",
699
770
           region_list_size(normalized_regions));
744
815
      }
745
816
      window_nr++;
746
817
    } widget_list_iterate_end;
 
818
    
 
819
#if FLUSH_RECTS
 
820
    flush_rect_to_screen(region);
 
821
#endif
 
822
    
747
823
    region_list_unlink(normalized_regions, region);
748
824
    free(region);
749
825
#if DUMP_UPDATES
758
834
  be_write_osda_to_file(whole_osda,filename);
759
835
#endif
760
836
 
 
837
#if !FLUSH_RECTS
761
838
  if (DEBUG_PAINT_ALL) {
762
839
    start_timer(timer4);
763
840
  }
765
842
  if (DEBUG_PAINT_ALL) {
766
843
    stop_timer(timer4);
767
844
  }
768
 
 
 
845
#endif
 
846
  
769
847
  if (DEBUG_PAINT_ALL) {
770
848
    printf("PAINT-ALL: update=%fs normalize=%fs flushs=%fs flush-all=%fs\n",
771
849
           read_timer_seconds(timer1), read_timer_seconds(timer2),
889
967
/*************************************************************************
890
968
  ...
891
969
*************************************************************************/
892
 
void sw_window_canvas_background_region_needs_repaint(struct sw_widget
893
 
                                                      *widget, const struct ct_rect
894
 
                                                      *region)
 
970
void sw_window_canvas_background_region_needs_repaint(
 
971
                  struct sw_widget *widget, const struct ct_rect *region)
895
972
{
896
 
#if 0
897
 
  struct ct_size size = { region->width,
898
 
    region->height
899
 
  };
900
 
  struct ct_point pos = { region->x, region->y };
901
 
 
902
 
  be_copy_osda_to_osda(get_osda(widget),
 
973
  struct ct_rect region2;
 
974
  struct ct_size size;
 
975
  struct ct_point pos;
 
976
 
 
977
  if (region) {
 
978
    region2 = *region;
 
979
  } else {
 
980
    sw_widget_get_bounds(widget, &region2);
 
981
  }
 
982
 
 
983
  size = (struct ct_size){ region2.width, region2.height };
 
984
  pos = (struct ct_point){ region2.x, region2.y };
 
985
  
 
986
  be_copy_osda_to_osda(sw_widget_get_osda(widget),
903
987
                       widget->data.window.canvas_background,
904
 
                       &size, &pos, &pos, 0);
905
 
#endif
906
 
  //add_flush_region(widget, region);
907
 
  widget_needs_paint(widget);
 
988
                       &size, &pos, &pos);
 
989
 
 
990
  add_flush_region(widget, &region2);
908
991
}
909
992
 
910
993
/*************************************************************************