CLIP STUDIO PAINTのプラグインをC#で書きたい!(2)

あすかです。

前回投稿から1ヶ月がたってしまいました。。
この1ヶ月、夏コミにサークル参加するので、その準備(コピー本とかコピー本とかコピー本とか)をしてたりしました。
やっと一段落つきましたが、今度は冬コミ‥もとい来年2月のコミティアに向けて、技術本を書くことにしました。
技術本については、冬コミコミティアのどちらかに当選次第、またこのブログで案内しますね。
というわけで、このブログの更新がしばらく雑になります。

さて、前回どういう話でしたっけ‥ああ、CLIP STUDIO PAINTプラグインで使う関数をC#から呼び出す話でしたね。

kmycode.hatenablog.jp

マネージドコードからアンマネージドコードの関数を呼び出す時はDLLImportの利用が一般的ですが、
今回、SDK内の関数の定義を見るに、今回生成するC++のDLL内で関数が定義されているわけではないので、DllImportは使えません。

じゃあどうすればいいのでしょうか。C++で、SDKの関数を呼び出すラッパ関数を作っておいて、その関数のポインタを.NETに渡すことにします!
ただ、C++の関数のポインタをそのままマネージドコードに取り込むことはできないので、.NETのデリゲートというものを使います。

続きを読む

CLIP STUDIO PAINTのプラグインをC#で書きたい!(1)

あすかです。

我ながら言うのもあれですが、今回はちょっと狂気のある内容です。
もちろん、本当はやってはいけないことです。
本記事の内容を読んで作ったものは、インターネット上には公開せず、個人としての利用にとどめてください。

概要

今回は、グラフィックソフト「CLIP STUDIO PAINT」のプラグインを、C#で作ってしまおうというおはなしです。
(※自作プラグインの適用は、CLIP STUDIO PAINT EXのみの機能です

f:id:kmynews:20170723120440p:plain

CLIP STUDIO PAINT(以下クリスタ)の詳細は別のサイトに委ねるとして、「漫画やイラストを制作するためのグラフィックツール」くらいの認識でOKです。
そのクリスタは、プラグインを作って機能拡張することができます。
そのSDKも公開されていますよー!

www.clip-studio.com

でも、SDKC++のやつしかないです。C++以外でプラグインを開発する方法は用意されていないです。
そもそもグラフィックツールって、画像処理を何回もしますから、当然重い処理が何度も入ってきます。C++くらい高速でないと無理です。無理ですよね。

無理なのはわかってるんですが、いっぺんC#で作ってみたい!ってことで作ってみます。

続きを読む

CentOS 7でNextCloud立ててみたおはなし

あすかです。

私は趣味で漫画描いてるんですが、パソコンが壊れたときに備えて、それらの漫画をどっかにバックアップしておきたくなってきます。
でも、漫画の中にはいかがわしい内容も含まれていまして、DropboxやOneDriveの規約に引っかかってある日突然アカウント削除されないか心配だったので、Dropboxと同じことができるOSSどっかにねーかなと思っていたら、ありました。なぜかありました。奇跡です。てかなぜ作った。発想がすげえよ。

というわけで、AWSCentOS 7上で構築してみたので、備忘録として。

AWSでも一部(児童ポルノや米国でタブーの獣姦はもちろん、相互同意がない性交など。二次ソース(公式日本語訳)も参照)のアダルトコンテンツは規約で禁止されてるのでグレーゾーンらしい。今のところギリギリかな。もっと安全なところ探しちうだけど値段が

続きを読む

Unityを久しぶりに使って

あすかです。

大学以来、久しぶりにUnityを使ってみました。

Unityには、いろいろあって苦手意識がありましたが、Unityを使っていくうちになんかいろいろ見えてきたものがあったので
かなり初歩的なことばかりだと思いますが、メモします。

続きを読む

WPFの文字列リソース(resx)をそのままUWPとXamarin.Formsで共有したおはなし

あすかです。

UWPで国際化(ローカライズ)というと、すでに先人が記事をかかれているとおり、いろいろな方法があります。

aile.hatenablog.com

これ見てる限り、リソース名は「なんとか.Text」だとか「あーだこーだ.Content」だとか、「ユニーク名+プロパティ名」という形で指定するようですね。

f:id:kmynews:20170625095632p:plain

これによって、テキストだけでなく、その他の、なんかの数値や色とかも国際化することができるみたいです。
中国は赤!ロジアは赤!イギリスは黄色!うーん、ロマンチックですね。

ところで、WPFで国際化するときの方法を見てみます。

grabacr.net

WPFは、UWPと違ってプロパティ名を指定する必要が無いみたいですね。
みんなそうしてますよね、仕方ないですね。

なお、Xamarin.Formsのローカライズでも、PCLプロジェクトに「AppResources.resx」「AppResources.ja.resx」を作ります。ここはWPFと似ていますね。

続きを読む

event-streamでデータストリーミングしてみる

あすかです。

夏コミC92受かりました。
ただしジャンルは3日目の「創作(少年)」です。技術系ではないです。
あとは適当に探してください。

ASP.NETで、ストリーミングをやります。
ストリーミングといっても、受信する方のおはなしではありません。両方です。

また、送信するのはただのテキストデータです。
ビデオとかはやりませんが、この記事を応用して、例えば映像をBASE643に変換するとかすればできるかもしれません。
C#オブジェクトのやり取りも、JSONが使えます。

今回は、ASP.NET側からストリーミングのデータを送信し、Console側でそれを受信します。
自給自足、自作自演です。

続きを読む

自分の漫画を取得できるREST APIを作ってみたおはなし

あすかです。

私は趣味で漫画を描いて自分のホームページに載せているのですが、それを取得するREST APIを作ろうなんていう需要不明意味不明なことをしてきましたので、簡単に紹介します。

名前はGunuccoです。ASP.NET Core 1.1で開発しました。

github.com

続きを読む