This document provides a high-level introduction to InkCanvasForClass Community Edition (ICC CE), an educational whiteboard and PowerPoint annotation tool built with WPF and .NET Framework 4.7.2. It covers the application's purpose, core capabilities, system architecture, and key technical characteristics. For detailed information about specific subsystems, refer to the child pages: Getting Started, Project Information & Versioning, and Architecture Overview.
InkCanvasForClass Community Edition is a desktop application designed for educational environments, enabling teachers to:
The application maintains backward compatibility with the .icstk file format from its predecessors and integrates with Microsoft PowerPoint via COM/ROT interfaces.
Sources: README.md1-61 Ink Canvas/Properties/AssemblyInfo.cs1-48
Diagram: Project Evolution
The current version builds upon three generations of development, inheriting core ink rendering capabilities while adding educational-specific features such as PowerPoint integration, multi-page whiteboards, and crash recovery mechanisms. Copyright ownership resides with CJK_mkp under the GPLv3 license.
Sources: README.md34-35 Ink Canvas/Properties/AssemblyInfo.cs11-13
InkCanvasForClass Community Edition provides the following functional domains:
| Domain | Key Features | Primary Implementation |
|---|---|---|
| Input Processing | Mouse, stylus, touch, multi-finger gestures | MainWindow.MW_TouchEvents.cs |
| Drawing Tools | Free drawing, geometric shapes (line, rectangle, ellipse, arrow, parabola), color themes | MainWindow.MW_ShapeDrawing.cs, MainWindow.MW_Colors.cs |
| PowerPoint Integration | Slide annotation, per-slide ink persistence, slide navigation | PPTManager classes, PPTInkManager |
| Whiteboard System | 101-page canvas, TimeMachine undo/redo, page thumbnails | MainWindow.MW_BoardControls.cs, MainWindow.MW_TimeMachine.cs |
| Selection & Manipulation | Lasso selection, transformation (scale, rotate, flip), element insertion | MainWindow.MW_SelectionGestures.cs, MainWindow.MW_ElementsControls.cs |
| Persistence | .icstk file format, auto-save, settings backup | PPTInkManager, Settings, AutoBackupManager |
| Auto-Update | Multi-channel distribution, priority rollout, version rollback | AutoUpdateHelper |
| Stability | Crash handling, watchdog process, silent restart | App.xaml.cs, crash handling subsystem |
Sources: README.md24-60 UpdateLog.md1-106
The following diagram maps the high-level architecture to concrete code entities:
Diagram: Core Code Entity Architecture
This architecture follows a layered model where App.xaml.cs manages the application lifecycle, MainWindow serves as the central controller coordinating all subsystems, and specialized partial classes handle specific concerns (input, drawing, PowerPoint, settings, etc.).
Sources: High-level system architecture diagrams, README.md24-60
The following sequence diagram illustrates how components interact during a typical annotation session:
Diagram: Typical Annotation Session Flow
This sequence demonstrates the coordination between input handling (MW_TouchEvents), mode-based routing (drawingShapeMode), shape generation (MW_ShapeDrawing), stroke persistence (TimeMachine), and PowerPoint integration (PPTInkManager).
Sources: Application initialization sequence diagram, Input processing pipeline diagram, PowerPoint integration architecture diagram
InkCanvasForClass uses a partial class decomposition pattern for MainWindow, where functionality is organized into separate files:
MainWindow.xaml.cs - Core initialization and coordinationMainWindow.MW_TouchEvents.cs - Input event handlersMainWindow.MW_ShapeDrawing.cs - Geometric shape generationMainWindow.MW_FloatingBarIcons.cs - Toolbar managementMainWindow.MW_Settings.cs - Settings UI bindingMainWindow.MW_PPT.cs - PowerPoint event handlersMainWindow.MW_BoardControls.cs - Whiteboard page managementMainWindow.MW_TimeMachine.cs - Undo/redo historyMainWindow.MW_Colors.cs - Color theme managementMainWindow.MW_SelectionGestures.cs - Stroke selection and transformationMainWindow.MW_ElementsControls.cs - Image and media element insertionThis organization maintains cohesion while preventing the monolithic growth of a single file. For detailed information, see MainWindow Architecture & Partial Classes.
The application employs multiple state persistence mechanisms operating at different scopes:
| Scope | Mechanism | Storage | Recovery |
|---|---|---|---|
| Action-level | TimeMachine undo/redo stacks | In-memory arrays per page | User-triggered undo/redo |
| Session-level | Settings object hierarchy | Settings.json | LoadSettings() on startup |
| Presentation-level | PPTInkManager per-slide storage | .icstk files + MemoryStream[] | SwitchToSlide() + auto-save |
| Recovery-level | AutoBackupManager | Timestamped backup files | TryRestoreFromBackup() on corruption |
This layered persistence ensures data resilience at multiple granularities. For details, see Persistence and State Management and Settings System.
The application implements a parent-watchdog process model for crash resilience:
Diagram: Dual-Process Health Monitoring
If the parent process crashes, the watchdog detects the missing heartbeat and restarts the application automatically (configurable via CrashActionType). The coordination uses file-based communication (lastHeartbeat, watchdogExitSignalFile) to survive process boundaries. For implementation details, see Watchdog Process.
Sources: Application initialization sequence diagram, README.md24-27
PowerPoint integration uses a dual-strategy connection model:
GetActiveObject("PowerPoint.Application")The strategy is controlled by the Settings.PowerPointSettings.UseRotPptLink boolean flag. Both implementations conform to the IPPTLinkManager interface, enabling runtime strategy switching without code changes. For detailed information, see PowerPoint Integration and Connection Management.
Sources: PowerPoint integration architecture diagram, README.md40-56
| Component | Requirement | Purpose |
|---|---|---|
| .NET Framework | 4.7.2 or higher | WPF runtime and API compatibility |
| Operating System | Windows 7 SP1 / Windows 10 / Windows 11 | TLS configuration, UI features |
| Microsoft Office | Office 365 / Office 2016+ (activated) | PowerPoint COM automation |
| Architecture | x86 or x64 | Multi-architecture DLL extraction |
Known Conflicts:
For setup guidance and troubleshooting, see Getting Started.
Sources: README.md42-61
Current version: 1.7.18.8
Version numbering follows the pattern: Major.Minor.Build.Revision
AssemblyVersion and AssemblyFileVersion: Ink Canvas/Properties/AssemblyInfo.cs46-47For version history and feature tracking, see UpdateLog.md1-106 and Project Information & Versioning.
Sources: Ink Canvas/Properties/AssemblyInfo.cs1-48 AutomaticUpdateVersionControl.txt1-2
This overview page provides the foundation for understanding InkCanvasForClass Community Edition. To explore specific subsystems in depth:
Sources: Table of contents JSON structure
Refresh this wiki