Giter Site home page Giter Site logo

writer's Introduction

Writer

About

This is a word processor similar to Microsoft Word or LibreOffice Writer. My goal is to support the core features without getting tied up in details.

I originally started this project because I wanted to add a Writer application to Serenity OS. Maybe, that will still happen at some point in the future, but I no longer have plans to do so at the moment.

The problem is, that this whole thing is much more challenging than expected. I thought that I could simply create a wrapper for a web browser and thus use HTML/CSS for rendering. Then I would write some C++ code that deals with all the interaction logic and connects to LibWeb and the file system.

However, I quickly realized that this would not work, because of paging. Paging is the process of taking the text and deciding on which page it should be rendered. This is a chicken-egg problem where the layout can influence the structure of the page, which itself infuences the layout.

Since CSS is not capable of modifying the DOM and the support for CSS3-REGIONS was removed from browsers, there is no way to get this working. There are workarounds, but I ultimately decided to create my own rendering engine ditching the web browser entirely. I stated working on a prototype in Python, which became this project.

Demo

This is in an early state of development. Currently, the following features are supported:

  • Placing cursor with mouse.

  • Inserting text with keyboard.

  • Deleting with backspace key.

  • Undoing and redoing actions.

  • Breaking paragraphs across pages.

This video hasn't been updated to the current state of the project.

0003_demo.mp4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.