Mercurial > repos > IBBoard
annotate Limits/SimpleRoundedPercentageLimit.cs @ 100:fa8378a30ed2
* Add some Stream handling utilities
no-open-ticket
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 06 Mar 2011 14:51:05 +0000 |
parents | 0e64a120785f |
children |
rev | line source |
---|---|
49
a177a3750acd
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
48
diff
changeset
|
1 // This file (SimpleRoundedPercentageLimit.cs) is a part of the IBBoard project and is copyright 2009 IBBoard |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 // |
49
a177a3750acd
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
48
diff
changeset
|
3 // The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license. |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 using System; |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 using IBBoard.CustomMath; |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 |
54 | 8 namespace IBBoard.Limits |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 { |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 /// <summary> |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 /// A percentage-based limit that always either rounds up or down to the closest integer |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 /// </summary> |
57 | 13 public class SimpleRoundedPercentageLimit : AbstractLimit, IPercentageLimit |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 { |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 private bool roundUp; |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 |
60 | 17 public SimpleRoundedPercentageLimit (double percentageLimit) : this(percentageLimit, true) |
18 { | |
19 } | |
20 | |
49
a177a3750acd
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
48
diff
changeset
|
21 public SimpleRoundedPercentageLimit (double percentageLimit, bool roundFractionUp) : base(percentageLimit) |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 { |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 roundUp = roundFractionUp; |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
24 } |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 |
60 | 26 public double Percentage |
27 { | |
28 get | |
29 { | |
30 return Limit; | |
31 } | |
32 } | |
33 | |
34 | |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
35 /// <summary> |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 /// Gets the limited number, based on the percentage limit that this <code>Limit</code> represents and the rounding direction |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 /// </summary> |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 /// <param name="size"> |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 /// The maximum size |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
40 /// </param> |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
41 /// <returns> |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
42 /// <code>size</code> or the numeric limit this object was created with, whichever is smaller. |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
43 /// </returns> |
50
e98708559618
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
49
diff
changeset
|
44 public override int GetLimit(int size) |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
45 { |
49
a177a3750acd
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
48
diff
changeset
|
46 return (int)IBBMath.Round(size * Limit / 100, roundUp); |
48
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
47 } |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
48 } |
f3bb5b77a7e4
Re #24: Add "limit" objects that can be used for numeric limits
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
49 } |