about summary refs log tree commit diff
path: root/docs/tool/Modules/NaturalDocs/Project/ImageFile.pm
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-08-02 08:21:29 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-08-02 08:21:29 +0000
commit61bfe2d70cae6be8c4086a210a5451135ccca9ea (patch)
tree62bf7808b1b2bfe5f56fe1e329871fb0991d0687 /docs/tool/Modules/NaturalDocs/Project/ImageFile.pm
parenta13b94f9e0bca8ea892311d9d9e0c0bc48616ea7 (diff)
downloadzcatch-61bfe2d70cae6be8c4086a210a5451135ccca9ea.tar.gz
zcatch-61bfe2d70cae6be8c4086a210a5451135ccca9ea.zip
added doc tool
Diffstat (limited to 'docs/tool/Modules/NaturalDocs/Project/ImageFile.pm')
-rw-r--r--docs/tool/Modules/NaturalDocs/Project/ImageFile.pm160
1 files changed, 160 insertions, 0 deletions
diff --git a/docs/tool/Modules/NaturalDocs/Project/ImageFile.pm b/docs/tool/Modules/NaturalDocs/Project/ImageFile.pm
new file mode 100644
index 00000000..bcf9b556
--- /dev/null
+++ b/docs/tool/Modules/NaturalDocs/Project/ImageFile.pm
@@ -0,0 +1,160 @@
+###############################################################################
+#
+#   Class: NaturalDocs::Project::ImageFile
+#
+###############################################################################
+#
+#   A simple information class about project image files.
+#
+###############################################################################
+
+# This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure
+# Natural Docs is licensed under the GPL
+
+use strict;
+use integer;
+
+package NaturalDocs::Project::ImageFile;
+
+
+
+###############################################################################
+# Group: Implementation
+
+#
+#   Constants: Members
+#
+#   The class is implemented as a blessed arrayref.  The following constants are used as indexes.
+#
+#       LAST_MODIFIED - The integer timestamp of when the file was last modified.
+#       STATUS - <FileStatus> since the last build.
+#       REFERENCE_COUNT - The number of references to the image from the source files.
+#       WAS_USED - Whether the image was used the last time Natural Docs was run.
+#       WIDTH - The image width.  Undef if can't be determined, -1 if haven't attempted to determine yet.
+#       HEIGHT - The image height.  Undef if can't be determined, -1 if haven't attempted to determine yet.
+#
+
+use NaturalDocs::DefineMembers 'LAST_MODIFIED', 'LastModified()', 'SetLastModified()',
+                                                 'STATUS', 'Status()', 'SetStatus()',
+                                                 'REFERENCE_COUNT', 'ReferenceCount()',
+                                                 'WAS_USED', 'WasUsed()', 'SetWasUsed()',
+                                                 'WIDTH', 'Width()',
+                                                 'HEIGHT', 'Height()';
+
+
+#
+#   Topic: WasUsed versus References
+#
+#   <WasUsed()> is a simple true/false that notes whether this image file was used the last time Natural Docs was run.
+#   <ReferenceCount()> is a counter for the number of times it's used *this* run.  As such, it starts at zero regardless of whether
+#   <WasUsed()> is set or not.
+#
+
+
+###############################################################################
+# Group: Functions
+
+#
+#   Function: New
+#
+#   Creates and returns a new file object.
+#
+#   Parameters:
+#
+#       lastModified - The image file's last modification timestamp
+#       status - The <FileStatus>.
+#       wasUsed - Whether this image file was used the *last* time Natural Docs was run.
+#
+sub New #(timestamp lastModified, FileStatus status, bool wasUsed)
+    {
+    my ($package, $lastModified, $status, $width, $height, $wasUsed) = @_;
+
+    my $object = [ ];
+    $object->[LAST_MODIFIED] = $lastModified;
+    $object->[STATUS] = $status;
+    $object->[REFERENCE_COUNT] = 0;
+    $object->[WAS_USED] = $wasUsed;
+    $object->[WIDTH] = -1;
+    $object->[HEIGHT] = -1;
+
+    bless $object, $package;
+
+    return $object;
+    };
+
+
+#
+#   Functions: Member Functions
+#
+#   LastModified - Returns the integer timestamp of when the file was last modified.
+#   SetLastModified - Sets the file's last modification timestamp.
+#   Status - Returns the <FileStatus> since the last build.
+#   SetStatus - Sets the <FileStatus> since the last build.
+#
+
+#
+#   Function: ReferenceCount
+#   Returns the current number of references to this image file during *this* Natural Docs execution.
+#
+
+#
+#   Function: AddReference
+#   Increases the number of references to this image file by one.  Returns the new reference count.
+#
+sub AddReference
+    {
+    my $self = shift;
+
+    $self->[REFERENCE_COUNT]++;
+    return $self->[REFERENCE_COUNT];
+    };
+
+#
+#   Function: DeleteReference
+#   Decreases the number of references to this image file by one.  Returns the new reference count.
+#
+sub DeleteReference
+    {
+    my $self = shift;
+    $self->[REFERENCE_COUNT]--;
+
+    if ($self->[REFERENCE_COUNT] < 0)
+        {  die "Deleted more references to an image file than existed.";  };
+
+    return $self->[REFERENCE_COUNT];
+    };
+
+
+#
+#   Functions: Member Functions
+#
+#   WasUsed - Returns whether this image file was used during the *last* Natural Docs execution.
+#   SetWasUsed - Sets whether this image file was used during the *last* Natural Docs execution.
+#   Width - Returns the width in pixels, undef if it can't be determined, and -1 if determination hasn't been attempted yet.
+#   Height - Returns the width in pixels, undef if it can't be determined, and -1 if determination hasn't been attempted yet.
+#
+
+
+#
+#   Function: SetDimensions
+#   Sets the width and height of the image.  Set to undef if they can't be determined.
+#
+sub SetDimensions #(int width, int height)
+    {
+    my ($self, $width, $height) = @_;
+
+    # If either are undef, both should be undef.  This will also convert zeroes to undef.
+    if (!$width || !$height)
+        {
+        $self->[WIDTH] = undef;
+        $self->[HEIGHT] = undef;
+        }
+    else
+        {
+        $self->[WIDTH] = $width;
+        $self->[HEIGHT] = $height;
+        };
+    };
+
+
+1;