summaryrefslogtreecommitdiff
path: root/setedit/easydiag/tshzgrp.cc
blob: fc83b3e3a7abdfd938d728402d1401fade8a859c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/* Copyright (C) 1996,1997,1998,1999,2000 by Salvador E. Tropea (SET),
   see copyrigh file for details */
#define Uses_TSHzGroup
#include <easydia1.h>
#include <tv.h>
#include <easydiag.h>
#include <stdarg.h>


TSHzGroup::~TSHzGroup()
{
 delete Este;
 delete Ant;
};

TSHzGroup::TSHzGroup(TSView *este, TSView *ant, int sep)
{
 sepa=sep;
 w=este->w+ant->w+sep;
 h=max(este->h,ant->h);
 Este=este;
 Ant=ant;
 view=Este->view; // Just in case somebody tries it.
}

void TSHzGroup::insert(TDialog *d)
{
 Este->x=x;
 Este->y=y;
 Este->insert(d);
 Ant->x=x+Este->w+sepa;
 Ant->y=y;
 Ant->insert(d);
}

void TSHzGroup::setWidth(int aW)
{
 int cant=howManyHz();
 int extra=aW-w;
 if (extra<=0)
    return;
 w=aW;
 int forFirst=(int)(((double)extra/cant)*Este->howManyHz()+0.5);
 Este->setWidth(Este->w+forFirst);
 Ant->setWidth(Ant->w+extra-forFirst);
}

int TSHzGroup::howManyHz()
{
 return Este->howManyHz()+Ant->howManyHz();
}

void TSHzGroup::setGrowMode(unsigned val)
{
 Este->setGrowMode(val);
 Ant->setGrowMode(val);
}


TSHzGroup *MakeHzGroup(TSView *este, TSView *ant, ...)
{
 TSHzGroup *ret;
 TSView *cur;
 va_list arg;
 va_start(arg,ant);

 ret=new TSHzGroup(este,ant);
 while ((cur=va_arg(arg,TSView *))!=0)
   {
    ret=new TSHzGroup(ret,cur);
   }
 va_end(arg);
 return ret;
}

TSHzGroup *MakeHzGroup(int sepa, TSView *este, TSView *ant, ...)
{
 TSHzGroup *ret;
 TSView *cur;
 va_list arg;
 va_start(arg,ant);

 ret=new TSHzGroup(este,ant,sepa);
 while ((cur=va_arg(arg,TSView *))!=0)
   {
    ret=new TSHzGroup(ret,cur,sepa);
   }
 va_end(arg);
 return ret;
}