diff --git a/unix/x0vncserver/Geometry.h b/unix/x0vncserver/Geometry.h
index 82da9c6..69ab687 100644
--- a/unix/x0vncserver/Geometry.h
+++ b/unix/x0vncserver/Geometry.h
@@ -33,13 +33,23 @@
 public:
   Geometry(int fullWidth, int fullHeight);
 
+  // Return coordinates and dimensions that specify a rectangular part
+  // of the desktop that would be shown to RFB clients. This
+  // information is extracted in the constructor from the "Geometry"
+  // parameter.
   int width() const { return m_rect.width(); }
   int height() const { return m_rect.height(); }
   int offsetLeft() const { return m_rect.tl.x; }
   int offsetTop() const { return m_rect.tl.y; }
+
+  // Return the same information as a Rect structure.
   const Rect& getRect() const { return m_rect; }
 
-  bool isVideoAreaSet() const { return !m_videoRect.is_empty(); }
+  // Return coordinates of the video rectangle if one was set with the
+  // "VideoArea" parameter. The coordinates are relative to the whole
+  // rectangle as returned by getRect(). In other words, the
+  // coordinate (0, 0) corresponds to the top left corner of the
+  // rectangle shown to RFB clients.
   const Rect& getVideoRect() const { return m_videoRect; }
 
 protected:
