ONLYOFFICE Docs 1.3 for iOS:モバイルスプレッドシートエディターの仕組み

それが起こった:私たちは、iOSデバイス用の1.3のONLYOFFICE Documentsモバイルアプリケーションの大規模な更新をリリースしました。 iPad用のスプレッドシートエディタがアプリケーションに登場しました。これは、多くの異なる便利なことを実行できます。Webバージョンで実行できるほとんどすべてのことができます。 また、サードパーティのストレージであるGoogle Drive、Dropbox、OneDrive、Yandex Disk、およびWebDAVプロトコルをサポートするその他のストレージを接続する機能も追加されました。



この記事では、スプレッドシートエディタの仕組みについて詳しく説明します。









機能性





ユーザーに提供するONLYOFFICE Documentsアプリケーションの機能は次のとおりです。



ONLYOFFICEポータルおよびONLYOFFICEに接続されているその他のクラウドサービスに保存されているドキュメントを管理します。







私たちは、完全に機能的で非常に有能なテキストエディターが好きです。 彼が何ができるかについてのビデオを撮影しました。 ここにあります:







テーブルエディタでも多くのことができます。 すべてのテーブルオブジェクトを管理できます。 セル内のテキストがフォーマットされ、セルのプロパティが変更され、数式、ダイアグラム、自動シェイプが挿入され、テーブル自体がエクスポートされて印刷されます。







次に、このエディターのデバイスについて説明します。



テーブルエディターの構造





デスクトップアプリケーションのデバイスについては、すでにここに書いています 。 原則として、すべてのドキュメントエディタを開発する場合、1つのスキームを順守します。 データを生成するためのすべてのビジネスロジックはjavascript'eで作成されます。 Web、デスクトップ、モバイルアプリケーション用の共通コードがありますが、唯一の違いは結論です。 デスクトップとは異なり、iOSアプリケーションにはドキュメントのネイティブレンダリングがあります。



アプリケーションの一般的なスキームは次のとおりです。







独自のレンダリングを行った理由





理論的には、Webとの類推、つまりWebViewを使用してレンダリングを実行するオプションがありました。 これをしなかった理由:



1. iOSのChromeアナログは使用できません。Appleはサードパーティのjavascriptエンジンの使用を許可していません。



2.組み込みブラウザーは、エディターで非常にゆっくりと動作します。 これは、すべてのiOSデバイスの画面解像度が大きいためです。 私たち自身はすべてのドキュメントをCanvasに描画するため、このような画面の場合は、さらに多くを描画して計算する必要があります(約2回)。 その結果、パフォーマンスが低下します。



一般に、これを行いました:グラフィックの描画を選択し、フォントを操作し、ドキュメントをエディターから個別のネイティブコンポーネントに表示し、C ++に転送し、エディターのコアを表示領域と追跡にレンダリングしました。 これにより、行、列を無制限に描画できます。



分割して計算する





シートの物理的なサイズがわかっているドキュメントエディターとは異なり、テーブルは無制限です。 無制限の仮想テクスチャを作成することはできません。 画像のレンダリングを高速化するために、無限の可能性のあるテーブルを正方形に分割しました。 たとえば、テーブル自体は10万行を超える場合がありますが、ユーザーにとっては、特定の時間に必要な領域だけを描画します-目に見える領域を持ついくつかの正方形(小さなマージンあり)。 それ以外はすべて必要に応じて計算され、必要になるまで物理的にレンダリングされません。 たとえば、Yandex.Mapsは同様の原理で機能します。



スキーム:







ドキュメントを開いた後、可視領域は1024x1024ピクセルの正方形にビートします。 このような各正方形は、JavaScriptエディターによって計算されます。 ドキュメントの計算プロセスでは、フォントに関する情報がネイティブコードから取得され、コマンドが配列に出力されます。 目に見える正方形を計算した結果、描画用のコマンドの配列を取得します(たとえば、線の描画、領域の塗りつぶし、文字の描画など)。 次に、コマンドはネイティブグラフィックライブラリによってビットマップにラスタライズされます。 次に、すでにメインストリームで、同じサイズのこれらのビットマップを使用してOpenGLテクスチャが更新または作成されます。 これはすべて非同期に行われます(最後の段落を除く)。



まとめ





うまく動作し、ほとんどのWebバージョンの機能をサポートするクールなアプリケーションを作成しました。 しかし、開発はそこで終わりではありません。 現在、iPhone用のスプレッドシートエディタを開発中です。 また、スプレッドシートエディタの機能を拡張し、一般的な自動保存機能を実装する予定です。



アプリケーションは、App Storeのリンクから入手できます。 これを使用するには、アクティブなONLYOFFICEポータルが必要です。 ポータルがない場合は、アプリケーション自体を使用して個人用オフィスを無料で作成できます。



All Articles