```/* <![CDATA[ */
function get_sym_list(){return [["Function","xf",[["any_flag_set",4],["expand_to",52],["expand_to_with_flags",11]]]];} /* ]]> */1<?php
2// \$Header: /cvsroot/html2ps/utils_array.php,v 1.7 2006/09/07 18:38:16 Konstantin Exp \$
3
4function any_flag_set(&\$flags) {
5  for (\$i=0, \$size = count(\$flags); \$i<\$size; \$i++) {
6    if (\$flags[\$i]) { return true; };
7  }
8  return false;
9}
10
11function expand_to_with_flags(\$size, \$array, \$flags) {
12  // if array have no elements - return immediately
13  if (count(\$array) == 0) { return \$array; };
14
15  // Never decrease exising values
16  if (array_sum(\$array) > \$size) {
17    return \$array;
18  }
19
20  // Subtract non-modifiable values from target value
21  for (\$i=0; \$i < count(\$array); \$i++) {
22    if (!\$flags[\$i]) { \$size -= \$array[\$i]; };
23  };
24
25  // Check if there's any expandable columns
26  \$sum = 0;
27  for (\$i=0, \$count = count(\$flags); \$i<\$count; \$i++) {
28    if (\$flags[\$i]) { \$sum += \$array[\$i]; };
29  }
30
31  if (\$sum == 0) {
32    // Note that this function is used in colpans-width calculation routine
33    // If we executing this branch, then we've got a colspan over non-resizable columns
34    // So, we decide to expand the very first column; note that 'Size' in this case
35    // will contain the delta value for the width and we need to _add_ it to the first
36    // column's width
37    \$array[0] += \$size;
38    return \$array;
39  }
40
41  // Calculate scale koeff
42  \$koeff = \$size / \$sum;
43
44  // Apply scale koeff
45  for (\$i=0, \$count = count(\$flags); \$i < \$count; \$i++) {
46    if (\$flags[\$i]) { \$array[\$i] *= \$koeff; };
47  }
48
49  return \$array;
50}
51
52function expand_to(\$size, \$array) {
53  // if array have no elements - return immediately
54  if (count(\$array) == 0) { return \$array; };
55
56  // If array contains only zero elements (or no elements at all) do not do anything
57  if (array_sum(\$array) == 0) { return \$array; };
58
59  // Never decrease exising values
60  if (array_sum(\$array) > \$size) {
61    return \$array;
62  }
63
64  // Calculate scale koeff
65  \$koeff = \$size / array_sum(\$array);
66
67  // Apply scale koeff
68  for (\$i=0, \$size = count(\$array); \$i<\$size; \$i++) {
69    \$array[\$i] *= \$koeff;
70  }
71
72  return \$array;
73}
74?>```