about summary refs log tree commit diff
path: root/docs/tool/Modules/NaturalDocs/Project
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tool/Modules/NaturalDocs/Project')
-rw-r--r--docs/tool/Modules/NaturalDocs/Project/ImageFile.pm160
-rw-r--r--docs/tool/Modules/NaturalDocs/Project/SourceFile.pm113
2 files changed, 273 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;
diff --git a/docs/tool/Modules/NaturalDocs/Project/SourceFile.pm b/docs/tool/Modules/NaturalDocs/Project/SourceFile.pm
new file mode 100644
index 00000000..fd649d9c
--- /dev/null
+++ b/docs/tool/Modules/NaturalDocs/Project/SourceFile.pm
@@ -0,0 +1,113 @@
+###############################################################################
+#
+#   Class: NaturalDocs::Project::SourceFile
+#
+###############################################################################
+#
+#   A simple information class about project 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::SourceFile;
+
+
+
+###############################################################################
+# Group: Implementation
+
+#
+#   Constants: Members
+#
+#   The class is implemented as a blessed arrayref.  The following constants are used as indexes.
+#
+#       HAS_CONTENT             - Whether the file contains Natural Docs content or not.
+#       LAST_MODIFIED           - The integer timestamp of when the file was last modified.
+#       STATUS                       - <FileStatus> since the last build.
+#       DEFAULT_MENU_TITLE  - The file's default title in the menu.
+#
+
+# DEPENDENCY: New() depends on its parameter list being in the same order as these constants.  If the order changes, New()
+# needs to be changed.
+use NaturalDocs::DefineMembers 'HAS_CONTENT', 'LAST_MODIFIED', 'STATUS', 'DEFAULT_MENU_TITLE';
+
+
+###############################################################################
+# Group: Functions
+
+#
+#   Function: New
+#
+#   Creates and returns a new file object.
+#
+#   Parameters:
+#
+#       hasContent         - Whether the file contains Natural Docs content or not.
+#       lastModified         - The integer timestamp of when the file was last modified.
+#       status                 - The <FileStatus> since the last build.
+#       defaultMenuTitle  - The file's title in the menu.
+#
+#   Returns:
+#
+#       A reference to the new object.
+#
+sub New #(hasContent, lastModified, status, defaultMenuTitle)
+    {
+    # DEPENDENCY: This function depends on its parameter list being in the same order as the member constants.  If either order
+    # changes, this function needs to be changed.
+
+    my $package = shift;
+
+    my $object = [ @_ ];
+    bless $object, $package;
+
+    return $object;
+    };
+
+# Function: HasContent
+# Returns whether the file contains Natural Docs content or not.
+sub HasContent
+    {  return $_[0]->[HAS_CONTENT];  };
+
+# Function: SetHasContent
+# Sets whether the file contains Natural Docs content or not.
+sub SetHasContent #(hasContent)
+    {  $_[0]->[HAS_CONTENT] = $_[1];  };
+
+# Function: LastModified
+# Returns the integer timestamp of when the file was last modified.
+sub LastModified
+    {  return $_[0]->[LAST_MODIFIED];  };
+
+# Function: SetLastModified
+# Sets the file's last modification timestamp.
+sub SetLastModified #(lastModified)
+    {  $_[0]->[LAST_MODIFIED] = $_[1];  };
+
+# Function: Status
+# Returns the <FileStatus> since the last build.
+sub Status
+    {  return $_[0]->[STATUS];  };
+
+# Function: SetStatus
+# Sets the <FileStatus> since the last build.
+sub SetStatus #(status)
+    {  $_[0]->[STATUS] = $_[1];  };
+
+# Function: DefaultMenuTitle
+# Returns the file's default title on the menu.
+sub DefaultMenuTitle
+    {  return $_[0]->[DEFAULT_MENU_TITLE];  };
+
+# Function: SetDefaultMenuTitle
+# Sets the file's default title on the menu.
+sub SetDefaultMenuTitle #(menuTitle)
+    {  $_[0]->[DEFAULT_MENU_TITLE] = $_[1];  };
+
+
+1;