時速でデキるアプリケーション開発

愛用者の皆様からは強力で、すばらしく、簡単に習得できるとの評判に加え、生産性に大満足していただいております。

Ring の評判

“Smalltalk が大好きですが、いまでは Ring のほうが大好きです！”

─ ガル・ゾルト (ハンガリー)

“言語と文法が非常に自然で理解しやすいです。”

─ ブッダ (アメリカ合衆国)

“この新しいプログラミング言語は非常に素晴らしい取り組みです。”

─ マット・モステール (オーストリア)

“非常に興味深い！ 今後も目が離せません！”

─ エスリパク (アルゼンチン)

“ベンチマークによる性能評価をお願いします。その結果を確認できれば、本当に有望であることが確信に変わるからです。 ”

─ アレックス・デヴァ (スウェーデン)

“素晴らしい！”

─ リジュ・サンカル (アメリカ合衆国)

“このプロジェクトがもっと良くなることを祈ります。”

─ デビッド・オニール (アメリカ合衆国)

“素晴らしい。それ以上の言葉が見つかりません。”

─ ホセ・アントニオ (メキシコ)

“これは少数精鋭のチームにより開発されたと思います。”

─ ジム・クラック (アメリカ合衆国)

“これまでのところ Ring は、かなり興味深いです。”

─ エリック・ジョンソン (アメリカ合衆国)

“インストールして、すぐに Qt バインディングが使えるのがとてもいいです。素晴らしいプログラミング言語をありがとうございます。”

─ マーシャル・ファエッセル

“開発者コミュニティ、および初心者向けプログラミングに関する戦果は素晴らしいことです。”

─ マリノ・エステバン

“Ring はスゴいとしか言いようがありません。 Ring は最高のプログラミング言語であり、さらにコードをスラスラ書くことができます。Ring の成功を確信しています。”

─ アーメド・ザイン

“マハムード・サミルと開発チームの発展を誇りに思います。 ^_^

Ring を大いに応援したいと考えています。”

─ ザイナブ・マハムード

“親愛なる兄弟へ。私は Ring が大好きです。開発者たちは完璧なプログラミング言語を作成したと思います。”

─ モエメン・グルミ

“マハムードさん。お疲れ様です。 Ring をインストールしました。非常に素晴らしいプログラミング言語ですね。”

─ アーメド・オマール (エジプト)

“この素晴らしいスタートアップ・プログラミング言語をありがとうございます。幸運を祈ります。”

─ エル・カウジャ・ハリド

“おめでとうございます！　非常にうれしいです。あなたがたの成功と幸運を祈ります。”

─ アボバシムラ・ハッサン

“ウェブ、モバイルとデスクトップ用の汎用プログラミング言語としては優れた機能がありますね。”

─ アブデリハム・ハイダー

“非常に面白い取り組みですね。”

─ ジャイアンナカキス・コスタス (ギリシア)

“私はコメントウィンドウを開いてメッセージを投稿する気があまり起きない筆不精です。けれども、今回は「完璧」であると断言しなくてはいけません。 実際に Ring が本当の意味で完璧な成果となるよう、注目に値する斬新なプログラミング言語の開発をお願いします。少しずつでもいいので Ring ノートパッド(コードエディタ) の開発継続をお願いします……。”

─ ロゼッタコードでの批評！

“以前に発表された記事の読了後、数日前から用例を試した結果、このまま愛用することにしました。 Ring が大好きです。”

追伸: アンダース・ヘルスバーグ、ニコラウス・ヴィルト、ビャーネ・ストロヴストルップ、エイダ・ラヴレースなどの巨匠たちと一緒に名誉の殿堂入りを心待ちにしております……。

─ マーティン・ネドピル (チェコ共和国)

“非常にやさしい設計と Qt バインディングは非常に魅力的です。宣言型手法と豊富な解説のある取扱説明書が気に入っています。”

─ シャローク・シャローム (オーストリア)

“Ring (と豊富な機能拡張ライブラリ + Qt) は驚くべきものです。”

─ コバックス・アッティラ (ハンガリー)

“二日間ほど Ring を試した感想としては、強力な命令と簡単に使えることに加えて、本当に非常に効率的、かつ非常に高速であることに強く感動しています。

今年は Programming Without Coding Technology (PWCT) + Ring の組み合わせを、毎日学びたいです……。これは、私にとってクリスマスの贈り物です！！！　ホー・ホー・ホー・ホー

素晴らしい功績と祝福が続きますように。”

─ ホセ・ル・ルー (フランス)

“C と Python 風の三種類の記法を使用できるのがいいです。”

─ シックスティフォー・レミー

“Rosettacode (ロゼッタコード) を閲覧しているときに Ring を見つけました。私は Ring の明瞭で理解しやすいシンタックスを大変気に入りました。おまじない (Sigil) がいらない非常に明瞭な BASIC 方言風のスタイルです。今まで使用してきたプログラミング言語でもっともやさしく、もっとも BASIC 風のプログラミング言語であると言えます。”

─ トマズ

“労作をありがとうございます。一目で興味深いのが理解できます。

厳格な定義規則を用いずに、単純明快な命令にすることで Clipper 風にしようとしていますね。それは良いことです。 ”

─ アナンド・グプタ

“驚異のプログラミング言語をありがとうございます。”

─ ヴィノード・ケーシー (インド)

“非常に啓発的かつ良い成果だ！”

─ サウスマウンテン (アメリカ合衆国)

“ループの終了方法が気に入りました。”

─ レオン・ド・ポール (オーストラリア)

“プログラミングに値する秀逸で、やさしいプログラミング言語だ。”

─ ケネス・ブルゴ (フィリピン)

“ほかのプログラミング言語よりも理解しやすいので Ring を選びました。”

─ ハリー・シン

“Ring が気に入りました。予想より遥かに豊富な機能と自由な表現力があり、個性的です。”

─ エビコン

“マハムードさん。ありがとう！　様々な実験で Ring を使用しており、大変気に入っています。

実際に Ring を使い続けて、私ができることで応援したいです。”

─ ジョン・ストーム (シェンシステム)

“旦那、こいつは非常に優秀だ。”

─ カムレッシュ・パテール

“もっとも優れた点は「クール」なシンタックスです。例えば、各単語による関数の弓括弧間の呼び出しなど自由形式によるテキストの記述です。

それは興味深いものです (テキストの記法を宣言するためのシンタックスは素晴らしいです)。”

─ ローリ・チアーズ

“Ring のページをブラウズすると 160 人の開発参戦者リストを確認できます。今年は TIOBE インデックスの上位 100 内へ登場しました。多大なる労力により Ring は登場して、そして大衆の注目を集めることができたと思います。”

─ フトゥホラ

“ANSI C に関する Ring 本来の考えかたが気に入りました。

それは感銘を与える創造物であり、様々な才能が注がれました。”

─ ゲーリー・テイラー

“非常に画期的なプログラミング言語だ！ シンタックスも明瞭ですな。”

─ コードプロジェクトのメンバ－

“事実、開発者は困難な仕事へ取り組み、豊かなプログラミング言語のエコシステムの構築したことは賞賛すべきです。 Ring は非常に大規模であると思います。 BNF 文法とセマンティクスの簡潔な適用範囲を参照することで、実用的であると理解できます。”

─ Xx-レーニスト-1917-Xx (レッドディット)

“私は未来の人工知能が計算機の問題をこの技術で解決しているであろうと考えています……人類のために。”

─ クリプトナイト (アメリカ合衆国)

“Ring が気に入りました。 RingQt でモバイルアプリケーションを開発する予定です。ウェブライブラリもありがたいです。”

─ ドメニコ・ドリア (イタリア)

“この新しいプログラミング言語による素晴らしい成果を祝福します。”

─ ケニー・シルバ (ベネズエラ)

“Ring は驚異的な完全機能プログラミング言語であり、上手く文章化されています (そこが大抵の新作プログラミング言語にとって悩みの種です！)。”

─ アレックス・マッカリー

”昨日、 Ring を見つけました。宣言型手法により QtWidgets GUI の作成を行える Qt バインディングが気に入りました。”

─ コーチス・シーザー

“Ring は興味深いです。そして、取扱説明書をかなりのページまで読み進めています。”

─ ジェイミー・クーパー

“動的型付け、プロトタイプ型言語の設計を行い C/C++ へコンパイルする手段の開発を最近まで検討していましたが、昨晩にウェブを調べていたら、最近開発された知る人ぞ知るプログラミング言語 Ring を見つけました。

Ring の設計理由と実装理由について調べるために Wikibooks で Motivation の記事を読み始めました。すると、検討中の件と同じ目的、必要性でプログラミング言語を開発している人がいることに驚きました。現行のプログラミング言語が抱える問題への言及に心を打たれました。えーと……。

時代遅れで、非常に不可解な C/C++ のシンタックスに苦悩する不毛な理由は？

なぜ未だにヘッダファイル……などを取り扱うのでしょうか？　Java と C# は冗長すぎる上に、ユーザにオブジェクト指向プログラミングを強いることついての意見はまさに正論です。

これらのプログラミング言語は未だに主流であり、何百万人ものプログラマが日常的な仕事で一番多く使用されています。この時点で、新しい環境への移行が行われてこなかったレガシーアプリケーションの問題と同様、学術界、そして産業界の多くの人々により共有され長年支持され続けた「衆人に訴える論証 (Appeal to Popularity)」に関する誤謬 (ごびゅう) によるものだと思います。

そこで、より簡単で、より現代的であり、なおかつ、今の時代を証明するプログラミング言語に至ります。 Python などのプログラミング言語はスペースとインデント、および (既に言及したプログラミング言語なども) 条件ステートメントと関連付けられていないトークンを重視しています。当然、弓括弧やセミコロンを下方向にたどることは悪くはないことですが、インデントをひとつ踏み間違えて下方向にたどることと同じくらい苛立たしいほうがまだマシです。同じことが Ruby でさえ起きており、言及の必要すらないプログラミング言語にも、理解不能な記法が設計に組み込まれています。既に述べたプログラミング言語に限らず、 Lua などは非常に多くの機能が欠落したままになっています。

そのほかのプログラミング言語でも色々な欠陥があり、 PHP はウェブページとバックエンド用のニカワ言語 (Glue Language) に過ぎないと主張できます。しかし、今日では豊富なフレームワークが利用できる状態であるのにも関わらず、急速に人気や支持を失っています。今もなお JavaScript はクローンが開発され続けています。

既に知られている汎用プログラミング言語は、ドメイン特化であり、ある処理系では特定のオペレーティングシステムに対応しています (C♯ は 2016 年以前から存在しており、 Objective-C / Swift は主にMacOS アプリケーションの開発で常用されています)。それでも、ハイブリッド言語から D, GoLang, Julia, Scala など命令型言語の選択肢が色々あります。

しかし、最後に新しいプログラミング言語 Ring があります。 ─ それは全てを統治することになるでしょう。最後まで紹介を遅らせていたのは伝説の一角獣 (Unicorn) だからです。 Ring は様々な問題、作業とパラダイムを処理できます。正直に言いますと、今すぐ移行するために待つことは我慢できません。恐らくそうしてしまうと、すぐには戻ってこられなくなると思います。

唯一の懸念材料として Ring には Julia や Python にある算術ライブラリ、または算術基本関数が搭載されていないことです。それは別として、もし願わくば、リニア式の配列を使用したくありません (知的筆不精であることをお許しください)。

Ring は一年前からある即戦力となる完成された素晴らしい実用プログラミング言語です。

─ ゲダルヤ (YouTube)

“マハムードさま。すべてが素晴らしい成果をありがとうございます。ソースコードを探ると、素晴らしい努力の成果を理解・関心してしまいます。さらなる発展と目覚ましい開発により、創造主は報酬として望むものをお与えになることでしょう。”

─ アズディン・レマル

“驚くべきことに比類なきプログラミング言語を見つけることができるとは…すばらしき歓喜ッ！！！　私は取扱説明書を読破して、ロゼッタコードのサンプルを調べてみると、完全なる歓喜を覚えました。これは驚異的な作品です。このプログラミング言語の開発に私の運命を委ねることにします。このプログラミング言語が爆発的に普及することを祈って良い努力を続けてください。

追伸: 配列のインデックスが 1 から始点となる仕様を維持していただき、ありがとうございます。これは非常に意味のあることです。”

─ ネヘミヤ・ジェイコブ (オーストラリア国シドニー市)

"非常におもしろいです。特に注目すべきことは、クロスプラットフォームであることです。"

─ ボウデヴィン・ルトガーインク

"一番だいすきなプログラミング言語です。効率的、単純明快、やさしい、柔軟性があり、素晴らしいプログラミング言語です。"

─ ロシャン・アリ

"多様性が好きです。ツールボックスが豪華であると、ツールはより適切なものになります。"

─ ジョナサン・デイ (クォーラ)

"この仕事を達成されたことを大いに称賛します。"

─ ウンベルト・メグリオ (イタリア)

"Ring を見つけて二日後に習得を決意しました。驚くべきことに、サンプルは非常に役に立ちます。"

─ ザラキ・ケン

"素晴らしい。上出来だ。"

─ ラグビーリーグ (コードプロジェクトのメンバ－ - イギリス)

"Ring 言語はたのしいです。非常に速く進歩しています。"

─ ネスクック (コードプロジェクトのメンバ - スイス)

"Ring を使うことができてうれしいです。"

─ アキル・レディ

"Ring プログラミング言語を使うことを楽しませていただいています。"

─ ガブリエル・ウェント

"この言語が大好きです！"

─ ハブロ・プリエト

"Ring の実力の一例を挙げるならば、それは Ring ノートパッドです。

デザイン機能対応、ドラッグ・アンド・ドロップ、オブジェクトの属性など組み込みフォームがあり、まるで NotePad++ のようです。 Ring ノートパッドは 素晴らしいアプリケーションです。" ─ バート・マリアーニ (イタリア)

"Ring は C/C++, C# などのオブジェクト指向言語で要する長期開発期間と、コストに欲求不満を感じながらも、アプリケーションの開発者にとって乗り換える可能性が最もある言語です。

2016 年の初版からの開発状況を考慮すると、 Ring チームはプログラミング言語界で非常に高い業績が称賛に値することわかりました。

Ring がデータベースアプリケーション、 Web アプリケーションと GUI アプリケーションの開発を簡単にしたことは Ring チームへの偉大な栄誉です。

Ring の オブジェクト指向実装と GUI ベースのアプリケーションは C++, C# よりも遥かに優秀です。

Ring チームの主要業績を別に挙げますと、オンライン版 Ring 取扱説明書へのアクセスをしやすくしたことで、オンライン版 C++, C# 取扱説明書と匹敵するようになったことです。本当に Ring ゲームエンジンはエレガントあり、このような印象的なソフトウェア部品を制作したデザイナーは沢山の名誉を得るに値します。"

─ エル・ゴディオレスッキー

"特筆すべき強力な新型ゲームプログラミング言語です。難しい設定は不要でインストール直後から、すぐにプログラミングに取りかかれますので初学者でも環境構築で挫折する心配がありません。そしてコミュニティは健全性が保たれています。これは非常に重要なことです。

Ring は幅広く使われる土台は揃っているとはいえ、まだまだ発展途上です。 Ring はキラーアプリケーションの不在やドキュメンテーションの品質改善、偏見や誤解の払拭など抵抗なく受け入れられるための課題も多く残されています。改善には世界中の人々の協力、認知度向上が必要です。ですが、健全なコミュニティの支援により、だんだん良くなると信じています。微力ながら、今後もできる限り翻訳や後方支援にて戦いを続けていきたい所存であります。"

─ イズ・ボウエル (オープンソース翻訳者 - 日本)

"この言語には興味深い機能が色々とあります。特に興味深いのが括弧でオブジェクトのフィールドとメソッドへのアクセスです。"

─ ヌアウア (レッドディット)

"本当に Ring VM の実装コードは非常に素晴らしいものに見えます。そしてテストコード集が利用できます ─ 素晴らしい！"

─ パーフェクトファイアフライ (レッドディット)

"このような着想は以前からありますが、 2016 年に初公開された Ring は前途有望であると思います。 Ring は移植性を意図してあり C/C++ プロジェクトへの組み込みも可能です。"

─ ウィム・テン・ブリンク (クォーラ - 2018年の上位投稿者)

"Lua に代わる興味深い選択肢です。"

─ ディージェイエックスティーシー (ソースフォージ)

"Ring のプログラミング言語環境は真剣に考えられているものです。この言語の価値を考慮するならば、評価の決定前に基礎を理解するべきです。設計者の明確な約束による簡明、柔軟性と学習容易性といった新機軸があります。

ほかの方法では、思考不可能な際限のないアプリケーション一式で Ring の境地を開くことにより、自然言語を思い描きます。豊かなドメイン特化型言語により、数カ月ではなく数時間で対話型チャットボットを開発しました。

宣言的プログラミングのパラダイムは、効率的な実装を賢く組み合わせることで、 Ring はどのような文法一式でも、どのような種類のプログラミング言語であっても作成できます。英語に限らず、人類の言語ならば、自作キーワードを配布することで、言語キーワードの上書きができます。

Ring は破壊的、大規模知的前進ですが、遺産的着眼点としての美しい霊魂再来説と Basic, Lisp などにある古典言語の最善実践方法も取り入れています。 Ring 設計者のマハムード・Ｓ・ファイド、そして Clojure 設計者のリック・ヒッキーによる理念は新たなるヴィジョナリーとしての人類遺産ですが、今日の複雑なプログラマビリティの世界では、忘れ去られようとしていることです。

Ring の別次元には、基本的な動機としてビジュアルプログラミング関連の制作があります。ソフトウェアは流動的で進化する生物です。そしてソースコード原文は、ほとんどの一般人が理解できません。ビジュアルプログラミングの約束とは人々にプログラミングの権利を与え、理解性の拡張と更なる直感性により、ソフトウェア開発の活躍の舞台へビジネスユーザーを誘うことです。 Ring は、より良いビジュアルパラダイムに対応するプログラミング言語と成るべく計画的に制作されました。

Ring 言語において、ゲーミフィケーションは第一級オブジェクトです。この素晴らしい利点が他の汎用プログラミング言語に匹敵します。Ring はゲーミングライブラリに対応していますが、ゲーミングに限らず、ビジネスと文教用アプリケーションにも広大な境地を開きます。

Ring の実力を評価する最良の方法は説明書と既存知識・経験で早合点することでありません。先入観を捨てること、そして実際の調査・実践と問題解決能力について考えることです。"

─ マンスール・アユウニ (チュニジア)

"Ring 言語を理解するのにかかったのは数週間だけで、本当に Ring の機能と考えかたが大好きになりました: 括弧によるアクセス、クラスの範囲、宣言型と自然言語のプログラミングです。

Ring で前述のパラダイムを駆使する方法は簡潔かつ見事です。 Ring が本当に大作であり完成しているものと思います。

それだけに止(とど)まらず、 Ring 言語の流儀でコードの主要部を宣言型と自然言語でプログラミングをしたイーサリアム・クライアントの開発を望みます。

さらに「自然言語 → イーサリアム仮想機械用バイトコード」コンパイラがあれば、 Ring のソリューションは素晴らしいものとなるでしょう。"

─ アスタ

"この言語は注目に値する素晴らしいものです！"

─ エリック・ホーク

"マハムードさん。あなたは Ring の開発に努力を惜しまない素晴らしいプログラマです。プロジェクトに収録されている 3D の用例は期待できるものであり、それは本当に素晴らしいものです。"

─ ラファウ・ヨペック

"重要なプロジェクトであり立派な作品であると思います"

─ ロホス・ケラー (スイス・チューリッヒ工科大学在籍博士)

"Ring は母国語でのプログラミングが非常に便利で簡単だと思います。Unicode を使いヒンディー語 (インド) でプログラミングしてみるとキチンと動きました。こんなことが手軽にデキるプラットフォームは Ring 以外にありません。"

─ ネギ・マノジュ (インド)

"Ring の改良に協力できて光栄です。理解しやすいデザインとアーキテクチャがあるのも良いです。 Ring は大きな可能性を秘めていると思います。"

─ ムニール・イドラッシー (VeraCrypt 開発者)

"Ring で WebAssembly の複雑なアプリケーションを手軽に開発できるところが気に入っています。"

─ ルイス・ロザド

"本日、 Ring に一目惚れしてしまい、さっそく使ってみました。 Java, Ada と Python の熟練者として Ring のマルチパラダイムは興味深いです。"

─ バートランド・ピバティ

"わおっ、 Ring はかなりヤバいぜ！　マジでイカしたおニューのプログラミング言語なんてレアモンスター級の逸材じゃん！　ってか、おいおい、なんだよこいつ。 Visual Basic っぽいフォームデザイナーもあんのかよ。ほかの言語じゃ、ここまでやってんのないね。コイツは本当にマジパネェでっけえ謎の力を秘めてんじゃないか！"

─ エタニティフォレスト (レッドディット)

FetchStockData アプリケーション

Yahoo! (USA) から株式情報を取得して各種チャートを描画します。

Google API Shortener アプリケーション

Google 短縮 API で URL を短縮するための小粒で素晴らしいツールです。

Video-Music-Player アプリケーション

マルチメディアファイルの再生用アプリケーションです。

Fifteen Puzzle ゲーム 2

Fifteen Puzzle ゲームの実装です。

Analog Clock

質実剛健なるアナログ時計の実装です。

Squares Puzzle ゲーム

おなじみ Squares Puzzle ゲームの実装です。

本書のサンプル

このサンプルは短時間で開発しました。

このスクリーンショットは Ring ノートパッドです。

このスクリーンショットは Cards ゲームです。

このスクリーンショットは Cards ゲーム (Android 用) です。

このスクリーンショットはウェブ開発の章からの引用です。

このスクリーンショットはゲームエンジンの章で解説するシンプルな 2D ゲームです。

Stars Fighter ゲーム

Flappy Bird 3000 ゲーム

Super Man 2016 ゲーム

このスクリーンショットは TicTacToe 3D ゲームです。

スクリーンショット:

このスクリーンショットは Gold Magic 800 ゲームです。

このスクリーンショットは RingQt3D の章からの引用です。

画期的

Ring の宣言型と自然言語プログラミングへの対応は非常に画期的かつ優秀であり、それらのパラダイムを重視しております。オブジェクト指向と関数型プログラミングの実用的な新技法によるパラダイムへの対応を導入しており、解決すべき問題に応じて多種多様・豊富で実用的なプログラミングパラダイムの選択・併用ができるマルチパラダイム言語の機能もあります。手続き型、オブジェクト指向、および関数型言語を使い続けるよりも優れています。プログラミングの発想転換となる優れた問題解決手段であるため、 Ring で問題を解決すると意思決定の価値が理解できます。

Ring はコンパイラや構文解析などの事前知識なしで Supernova などの自然言語、あるいは REBOL や QML などの宣言型言語の構築でプログラマが求めるツールであります。さらに、短時間でドメイン特化言語を作成、構築できる言語構成要素を標準装備しています。

記事:-

Natural Language Programming Library (自然言語プログラミングのライブラリ) :

https://www.codeproject.com/Articles/1200766/Using-the-Natural-Language-Programming-Library-NLP

Natural Language Programming (自然言語プログラミング) :

https://www.codeproject.com/Articles/1138605/Natural-Language-Programming-in-the-Ring-Programmi

The Declarative Approach (宣言型手法) :

https://www.codeproject.com/Articles/1222105/The-declarative-approach-of-the-Ring-programming-l

Syntax Flexibility (シンタックスの柔軟性) :

https://www.codeproject.com/Articles/1137388/Syntax-Flexibility-in-the-Ring-Programming-Languag

The Ring Programming Language (プログラミング言語 Ring) :

https://www.codeproject.com/Articles/1089887/The-Ring-Programming-Language

実用性

ほとんどの Ring ライブラリ (StdLib, WebLib, 自然言語ライブラリ、ゲームエンジンなど)、および Ring 統合開発環境 (Ring ノートパッド、フォームデザイナーなど) は Ring で記述されています。

Ring は今すぐ製品開発ができる即戦力であり、開発者の生産性を改善します。

フォームデザイナーのソースコードをご確認ください :

https://github.com/ring-lang/ring/tree/master/applications/formdesigner

Android アプリケーションとしても実行できます！

WebAssembly を用いたウェブアプリケーションをウェブ・ブラウザで実行することもできます。

はじめに

プログラミング言語 Ring へようこそ！

Ring は画期的で実用性のある汎用マルチパラダイム言語です。 C/C++ プロジェクトへの組み込み、 C/C++ コードにより拡張・単体プログラミング言語にもなります。命令型、手続き型、オブジェクト指向、関数型、メタプログラミング、多重構造による宣言型、および自然言語のプログラミング・パラダイムに対応しています。 Ring は移植性 (Windows, Linux, macOS, Android, WebAssembly など) があり、小規模、柔軟かつ高速な設計の動的プログラミング言語です。コンソール、GUI、ウェブ、ゲーム、およびモバイル・アプリケーションを作成できます。ソースコードをバイトコードへコンパイル後に、 Ring コンパイラで単体プログラムとして統合を行い、 Ring 仮想計算機で実行します。

さて、 Ring 言語の設計と実装の背景にある目標を議論しましょう。

動機

2011年11月に、新しいバージョンの Programming Without Coding Technology (PWCT) [http://doublesvsoop.sf.net/] ソフトウェアを白紙段階から開発することを検討し始めました。

ウェブとモバイル開発に対応したマルチプラットフォーム版 Programming Without Coding Technology (PWCT) の作成に興味がありました。

マルチプラットフォーム対応、より優れた実行性能、コンポーネントを記述できるスクリプト言語であり、開発環境の構築にも耐え、多種多様なアプリケーションを開発できるものです。さらに、大規模アプリケーションの開発用に設計してあり、ガベージコレクター (GC) 制御の良くできている高速で生産性の高い小規模な動的プログラミング言語です。

そのため、複数のプログラミング言語を併用するのではなく、開発言語を一本に絞ることを決めました。

様々なプログラミング言語を調査したところ、知性を兼ね備えた新発想の異次元プログラミング言語を求めていることに気づきました。

Ring 以外のプログラミング言語

Ring は下記のプログラミング言語の影響を受けています。

Lua

Python

Ruby

C

C#

BASIC

QML

xBase

Supernova

歴史

2013年09月より Ring の設計と実装を開始し、21ヶ月後の2015年05月頃に Ring コンパイラと仮想計算機は完成しました。

その後、再検証で三ヶ月間を費やしました。優れたテストを記述してから各種不具合の修正を続け、 2015年08月末までに不具合の修正を完了しました。大量のテストを用意して自動化することは、製品の安定化で大いに役に立ちました。

2015年09月12日に取扱説明書の大部分を執筆しました。 Facebook ページへアラビア語の記事を投稿して、広報活動を開始しました (Ring の公開前に、手短な説明を読んでいただき、 Ring の考えに興味をもった開発参戦者を探すためです)。同日、開発参加に興味がある開発者、そして友人たちから多数の電子メールを受け取りました！

2016年01月25日に Ring 1.0 を公開しました。わずか数日で数千回のダウンロードを達成しました！　そして、世界中の開発者が学習と使用をはじめました。Ring の発展と成功は、皆様から寄せられた声のお蔭でございます。また、皆様から Ring を用いて短時間で作成した素晴らしい用例をいただきました。

2017年12月07日に Ring 1.6 取扱説明書の日本語訳作業が isVowel (旧名義: めぐみ発動機 / GreenWing) により開始されました。 Ring 1.0 の公開から約二年半後となる翌年の 2018年06月03日には、非公式ウェブサイト (Geocities Japan) と Ring 1.7 の日本語訳が公開されました。翌年の 2019年02月05日には OSDN への非公式ウェブサイト移転、同月10日には日本語キット化のテスト版が公開されました。そして、同月22日には、日本語サイトへのアクセス件数が 5,000件 を超えました。

2018年10月06日に公開の Ring 1.9 では Heroku に対応し、クラウド・アプリケーションも開発可能です。

2019年01月25日に公開の Ring 1.10 ではパッケージマネージャーが導入されました。

2019年09月15日に公開の Ring 1.11 では Allegro, SDL に加えて 2D/3D ゲームプログラミングライブラリである RayLib [https://www.raylib.com/] に対応しました。また、ZeroLibの導入により、リストと文字列で 0 ベースのインデックスを使用できるようになりました。

2020年01月25日に公開の Ring 1.12 では RayLib のサンプルソース集強化、 Load Again コマンドによるソースコードに記述された定数の動的再読み込みに対応しました。また、記念すべきことに Ring は初公開から今年で五周年となりました。今後ともご愛顧いただけますよう宜しくお願い致します。

2020年09月15日に公開の Ring 1.13 では世界初となる Ring 入門書が発売され、さらに StbImage, WebAssembly に対応しました。

2021年01月25日に公開の Ring 1.14 ではレトロゲーム開発向けのゲームエンジンである Tilengine と軽量GUIツールキットである LibUI にも対応しました。また RingSockets により RingQt の使えない環境でもソケットプログラミングが可能となりました。

Ring は、今後広く使われるプログラミング言語と大成すべく着実に成長を続けています。

主な機能

自由なオープンソース (MIT ライセンス)

ハイブリッド実装 (コンパイラ + 仮想計算機)

オブジェクト指向プログラミングによる宣言型プログラミング

オブジェクト指向プログラミングによる自然言語プログラミング

自然言語プログラミング・ライブラリ

三種類の標準コード記法と自作記法を使用可能

柔軟性のあるシンタックス (言語のキーワードと演算子は変更可能)

言語キーワードは英語から他国語 (アラビア語、フランス語、日本語など) へ翻訳可能

ステートメントへの明示的な end が不要であるため、シンタックスは簡潔です (; や ENTER は不要)

括弧 { } でオブジェクトへのアクセス、および変数、属性としてメソッド、関数を使えます。

透過型実装 (プログラムごとに字句、構文、およびバイトコードを表示可能)

ビジュアル実装 - ビジュアル言語 Programming Without Coding Technology (PWCT) で実装

ANSI C で記述 (コード生成 + 手書きのコードと同一記法)

質実剛健たるプログラミング言語

コンパイラ + 仮想計算機 (20,000 行の C コード)

そのほか 500,000 行のコードはライブラリ関連です！

移植性 (Windows, Linux および macOS, Android, WebAssembly など)

コメント (一行と複数行)

英数大小文字同一視

動的型付け

弱い型付け (数値と文字列間でのみ自動変換)

レキシカルスコープ (グローバル、ローカル、およびオブジェクトのステート)

関数内変数のデフォルトスコープ (ローカル)

関数外変数のデフォルトスコープ (グローバル)

ライブラリごと、またはサブプロジェクトで独立したグローバルスコープがあります。

ガベージコレクター - メモリの自動管理 (エスケープ解析と参照カウント)

ほとんどの場合 (90%)、エスケープ解析によりガベージコレクターの実行を不要にしています (高速です)。

構造化プログラミング

豪華な制御構造と演算子

For in では値ではなく参照により項目を取得するため、項目を読み書きできます

exit による一階層以上のループからの脱出 (小規模プログラミング専用)

手続き、関数

メイン関数 (オプション扱い - グローバルスコープの使用回避)

定義前の関数呼び出し (トップダウンプログラミング)

再帰処理

複数行リテラル

インデックスによる文字列内の文字へのアクセス (読み書き)

リストのインデックスは 1 から開始

クラス、パッケージ、関数には end キーワードは不要

範囲演算子。用例: 1:10 および "a":"z"

第一級変数、リスト、オブジェクトと関数

値による格納、リストのコピー、オブジェクト (深いコピー)

参照によるリスト、オブジェクト渡し

オブジェクト指向への標準対応

カプセル化

Setter/Getter (オプション扱い)

プライベートステート (オプション扱い)

インスタンス化

多態性

コンポジション

継承 (単一継承)

演算子のオーバーロード

パッケージ

リフレクションとメタプログラミング

明瞭なプログラム構造 (ステートメントの後に関数、そしてパッケージとクラス)

例外処理

Eval() によるアプリケーション実行中のコード実行

8-bit クリーン設計であるためバイナリデータも処理できます。

I/O 命令

算術関数

文字列関数

リスト関数

ファイル処理関数

データベースへの対応 (ODBC, SQLite, MySQL および PostgreSQL)

セキュリティ関数 (OpenSSL)

インターネット関数 (LibCurl)

Zip ファイル処理関数

CGI ライブラリ (Ring にて記述)

HTTP Get

HTTP Post

ファイルのアップロード

クッキー

URL エンコード

HTML テンプレート

HTML 特殊文字

関数による HTML の生成

クラスによる HTML の生成

CRUD の用例 (MVC を使用)

ユーザーによる用例 (登録、ログインと確認)

クラウド経由によるウェブアプリケーションの配布 (Heroku)

C/C++ による拡張機能の使用 (単純明快な API)

C/C++ プログラムへの組み込み

Ring プログラムへの Ring 組み込み

手軽に C/C++ ライブラリと接続するためのコード生成器 (Ring にて記述) を標準装備。

RingAllegro (Allegro ラッパー) の開発で使用

RingLibSDL (LibSDL ラッパー) の開発で使用

RingQt (Qt ラッパー) の開発で使用

デスクトップとモバイル用の 2D ゲーム作成 (Allegro ライブラリ)

RingLibSDL 拡張機能

シンプルな 2D ゲームエンジンを標準装備

RingOpenGL 拡張機能

RingFreeGLUT 拡張機能

RingRayLib 拡張機能

RingTilengine 拡張機能

デスクトップとモバイル用の GUI アプリケーションの開発機能 (Qt フレームワーク)

コードエディタ (Ring ノートパッド) とフォームデザイナーを搭載した統合開発環境 (IDE)

RingREPL (Read-Eval-Print-Loop)

トレースとデバッグ

型ヒントライブラリ

アプリケーションの配布用に Ring2EXE を標準装備

RingLibuv 拡張機能

RingLibui 拡張機能

RingSockets 拡張機能

RingThreads 拡張機能

インタプリタ (VM) 全体の停止 (global interpreter (VM) lock) は起こりません (GIL なし) - これはスレッドと平行性において優れています (高速化)

RingPM (パッケージ管理プログラム)

豊富なサンプルソースとアプリケーション

完成度の高い取扱説明書

ライセンス

プログラミング言語 Ring

http://ring-lang.net/

Version 1.14

MIT ライセンス (MIT)

Copyright (c) Mahmoud Fayed

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Ring ノートパッドの用法

Ring ノートパッドの用法、および Ring プログラムの作成と実行方法です。

Ring ノートパッドは Ring で作成された Ring 用の簡易統合開発環境アプリケーションです。

Ring ノートパッド - メインウィンドウ

Ring ノートパッドの実行後に着脱可能なウィンドウが表示されます。

ウィンドウの機能と用途:

名称

説明

プロジェクトファイル

Ring ファイル (*.ring) を選択して開けます。

ソースコード

ソースコードを記述する場所です。

フォームデザイナー

フォームデザイナーでは GUI アプリケーションのフォームを作成します。

ウェブブラウザ

取扱説明書を読む、またはウェブサイトを開きます。

実行結果

標準出力への表示を行うプログラムを実行すると結果が出力されます。

関数

現在のソースにおける関数のリストです。

クラス

現在のソースにおけるクラスのリストです。

コンソールアプリケーションの作成と実行

ソースコードを入力します。

see "Hello, World!"

この画像の通りにします。

ツールバーの保存ボタンをクリックします (または CTRL+S を押します)。

ソースコード名と保存場所を指定します。

例えば、このように入力します : hello

新しいソースコードファイルを作成します : hello.ring

プログラムを実行するには、ツールバーの“デバッグ - 実行後に待機”ボタンをクリックします。

このスクリーンショットでは、実行中のアプリケーションを表示しています。

Ring ノートパッドへ戻って作業を続行するには Enter キーを押します。

GUI / WebAssembly / モバイル・アプリケーションの作成と実行

Ring による GUI アプリケーションの作成方法は“RingQt を使用したデスクトップ、WebAssembly、およびモバイルの開発”の章を参照してください。

ソースコード:

load "guilib.ring"

new qApp {
        new qWidget() {
                resize(400,400)
                setWindowTitle("Hello, World!")
                show()
        }
        exec()
}

Ring ノートパッドには、コンソールウィンドウの表示を行わずに GUI アプリケーションを実行するための特別なボタンがあります。

このスクリーンショットでは、実行中のアプリケーションを表示しています。

ウェブアプリケーションの作成と実行

ウェブサーバーでの Ring 対応方法、そして Ring でウェブアプリケーションを作成する方法については “ウェブ開発 (CGI ライブラリ)” の章を参照してください。

注釈

この用例を実行するには、ウェブサーバーで Ring を使用可能にしてください。

ちなみに

Windows 版には Apache ウェブサーバーが添付されています！　難しい設定を行わなくても、 Ring ノートパッドにて指定フォルダからウェブアプリケーションを実行できます。

ソースコード:

#!ring.exe -cgi

load "weblib.ring"

import System.Web

new Page {

        text("Hello, World!")

}

Ring ノートパッド内蔵のブラウザ、または外部ウェブブラウザでアプリケーションを実行できます。

ウェブアプリケーションはウェブアイコンをクリックすることで実行します。

デスクトップとモバイルゲームの作成と実行

Ring で 2D ゲームを作成する方法は“デモプロジェクト - 2D ゲームエンジン”の章を参照してください。

ソースコード:

load "gameengine.ring"

func main

        oGame = New Game
        {
                title = "My First Game"
                sprite
                {
                        type = GE_TYPE_PLAYER
                        x=400 y=400 width=100 height=100
                        file = "images/player.png"
                        transparent = true
                        Animate=false
                        Move=true
                        Scaled=true
                }
        }

アプリケーションは GUI アプリケーションとして実行できます。

プロジェクトのメインファイル

メインファイルツールバーの考えは、プロジェクトに複数のソースコードのファイルがある場合にプロジェクトのメインファイルを決定することです。

この機能を使うとプロジェクトでほかのファイルを開いているときに、プロジェクトを実行するためにメインファイルを切り替えることなくプロジェクトを実行できます。

この機能を使うには、プロジェクトのメインファイルを開きます。

現在のソースコードファイルをメインファイルとして設定するには Ctrl+Shift+M を押してください。

プロジェクトで別のソースコードファイルを開いて修正します。

プロジェクト (メインファイル) を実行したいときは Ctrl+Shift+F5 (GUI) または Ctrl+Shift+D (コンソール) を押してください。

スクリーンショット:

ファイルメニュー

このメニューからソースコードの新規作成、開く、保存ができます。

このメニューには“PDF へ出力”もあります。

編集メニュー

編集メニューからテキストの切り取り、コピーと貼り付けます。

フォントと配色の変更もできます。

指定行へ移動、または検索と置換ウィンドウを使うことでテキストの検索と置換ができます。

さらに、タブ幅も設定できます (スペースの文字数)

Ring 1.8 からファイルの検索オプションがあります。

Ring 1.11 からテキストの挿入、小文字へ変換、大文字へ変換、および単語の一文字目を大文字へ変換のオプションがあります。

表示メニュー

このメニューから着脱可能なウィンドウの表示、または非表示にできます。

また、 Ring ノートパッドのスタイルを変更できます。

通常のスタイルは「フュージョン : 白」と「フュージョン : 黒」です。

さらにコンテキストにより着脱可能なウィンドウのグループを表示、または非表示にできます。

プログラムメニュー

このメニューからプログラムを実行します。

また、メインファイルをプロジェクトに設定できます。

ブラウザメニュー

このメニューからウェブサイトのリンクをブラウザで開きます。

ツールメニュー

このメニューからフォームデザイナーを別のウィンドウで実行します。

また REPL (Read-Eval-Print-Loop : 読み取り、評価、出力、繰り返し) を実行できます。

配布メニュー

このメニューからアプリケーションの実行可能ファイルのビルド、またはアプリケーションの配布準備を行います。

ヘルプメニュー

このメニューからヘルプファイルを閲覧します。 (CHM と PDF 形式)

入門 - 第一形式

Hello World

このプログラムは、 Hello World のメッセージを画面表示します (標準出力)。

see "Hello World"

プログラムの実行

プログラムを実行するには、ファイルにコードを保存します。例えば : hello.ring です。コマンドラインまたはターミナルから、 Ring でプログラムを実行します (事前に ring/bin フォルダのパスを追加してください)。

ring hello.ring

注釈

Ring ノートパッドでもコードの記述と実行ができます (パスの設定は不要です)。

実行可能ファイルの作成

Ring2EXE でアプリケーションの実行可能ファイルを作成します。

ring2exe hello.ring -static

英数大小文字同一視

Ring は英数大小文字同一視です。同じプログラムを違う記法で書くこともできます。

ちなみに

全てのプログラムのソースコードで同じ記法を一つ選択することをお勧めします。

SEE "Hello World"

See "Hello World"

複数行リテラル

この用例のとおり、複数行リテラルを記述できます。

See "
        Hello
        Welcome to the Ring programming language
        How are you?

    "

また、変数 nl で改行の挿入、 + 演算子で文字列を連結します。

改行で NL があるように、同じく Tab (タブ) と CR (キャリッジリターン) もあります。

注釈

値 nl は改行を意味しますが、改行に相当する文字コードはオペレーティングシステムにより異なります。

See "Hello" + nl + "Welcome to the Ring programming language" +
    nl + "How are you?"

標準入力の取得

Give 命令でユーザからの標準入力を取得します。

See "What is your name? "
Give cName
See "Hello " + cName

文末終端子は明示不要

ステートメントを区切るために ‘;’ の記述、または ENTER を押さなくてもいいです。前述のプログラムは一行で記述できます。

See "What is your name? " give cName see "Hello " + cName

式の表示後に ? で改行するには

表示後に改行を行うのは一般的ですが、その処理は演算子 ? でも行うことができます！

用例:

? "Hello, World!"
for x = 1 to 10
        ? x
next

実行結果:

Hello, World!
1
2
3
4
5
6
7
8
9
10

コメントの記述

一行コメントと複数行コメントを記述できます。

一行コメントは # または // で始まります。

複数行コメントは /* ～ */ です。

/*
        プログラムの名前    : はじめての Ring プログラム
        日付                : 2016.09.09
        作者                : Mahmoud Fayed
*/

See "What is your name? "   # 画面へメッセージを表示
give cName                  # ユーザからの標準入力を取得
see "Hello " + cName        # こんにちわ！

// See "Bye!"

注釈

// による一行コメントは一種のコード記法です。

入門 - 第二形式

Hello World

このプログラムは、 Hello World のメッセージを画面表示します (標準出力)。

put "Hello World"

プログラムの実行

プログラムを実行するには、ファイルにコードを保存します。例えば : hello.ring です。コマンドラインまたはターミナルから、 Ring でプログラムを実行します (事前に ring/bin フォルダのパスを追加してください)。

ring hello.ring

注釈

Ring ノートパッドでもコードの記述と実行ができます (パスの設定は不要です)。

実行可能ファイルの作成

Ring2EXE でアプリケーションの実行可能ファイルを作成します。

ring2exe hello.ring -static

英数大小文字同一視

Ring は英数大小文字同一視です。同じプログラムを違う記法で書くこともできます。

ちなみに

全てのプログラムのソースコードで同じ記法を一つ選択することをお勧めします。

PUT "Hello World"

Put "Hello World"

複数行リテラル

この用例のとおり、複数行リテラルを記述できます。

Put "
        Hello
        Welcome to the Ring programming language
        How are you?

    "

また、変数 nl で改行の挿入、 + 演算子で文字列を連結します。

改行で NL があるように、同じく Tab (タブ) と CR (キャリッジリターン) もあります。

注釈

値 nl は改行を意味しますが、改行に相当する文字コードはオペレーティングシステムにより異なります。

Put "Hello" + nl + "Welcome to the Ring programming language" +
    nl + "How are you?"

標準入力の取得

Get 命令でユーザからの標準入力を取得します。

Put "What is your name? "
Get cName
Put "Hello " + cName

文末終端子は明示不要

ステートメントを区切るために ‘;’ の記述、または ENTER を押さなくてもいいです。前述のプログラムは一行で記述できます。

Put "What is your name? " get cName put "Hello " + cName

コメントの記述

一行コメントと複数行コメントを記述できます。

一行コメントは # または // で始まります。

複数行コメントは /* ～ */ です。

/*
        プログラムの名前    : はじめての Ring プログラム
        日付                : 2016.09.09
        作者                : Mahmoud Fayed
*/

Put "What is your name? "       # 画面へメッセージを表示
get cName                       # ユーザからの標準入力を取得
put "Hello " + cName            # こんにちわ！

// Put "Bye!"

注釈

// による一行コメントは一種のコード記法です。

入門 - 第三形式

Hello World

このプログラムは、 Hello World のメッセージを画面表示します (標準出力)。

load "stdlib.ring"

print("Hello World")

プログラムの実行

プログラムを実行するには、ファイルにコードを保存します。例えば : hello.ring です。コマンドラインまたはターミナルから、 Ring でプログラムを実行します (事前に ring/bin フォルダのパスを追加してください)。

ring hello.ring

注釈

Ring ノートパッドでもコードの記述と実行ができます (パスの設定は不要です)。

実行可能ファイルの作成

Ring2EXE でアプリケーションの実行可能ファイルを作成します。

ring2exe hello.ring -static

-static オプションは ring.dll|ring.so|ring.dylib が不要になります。

しかし stdlib.ring の読み込みがライブラリで必要になることがあります (LibCurl, OpenSSL, MySQL など)。

その場合はライブラリが必要になります！

これらのライブラリを不要にするためには (stdlib クラスが不要ならば)、

この用例の通り stdlib.ring ではなく stdlibcore.ring を使います。

load "stdlibcore.ring"

print("Hello World")

stdlibcore.ring を使うと stdlib クラスではなく stdlib 関数へアクセスします。

stdlib.ring を用いてアプリケーションを配布したい場合は、

ring2exe hello.ring -dist -allruntime -noqt -noallegro

英数大小文字同一視

Ring は英数大小文字同一視です。同じプログラムを違う記法で書くこともできます。

ちなみに

全てのプログラムのソースコードで同じ記法を一つ選択することをお勧めします。

LOAD "stdlib.ring"
PRINT("Hello World")

Load "stdlib.ring"
Print("Hello World")

複数行リテラル

この用例のとおり、複数行リテラルを記述できます。

Load "stdlib.ring"
Print("
        Hello
        Welcome to the Ring programming language
        How are you?

    ")

また、 \n で改行の挿入、および #{変数名} で変数の値を挿入できます。

Load "stdlib.ring"
Print( "Hello\nWelcome to the Ring programming language\nHow are you?")

標準入力の取得

getstring() 関数はユーザからの標準入力を取得します。

Load "stdlib.ring"
Print("What is your name? ")
cName = GetString()
Print("Hello #{cName}")

文末終端子は明示不要

ステートメントを区切るために ‘;’ の記述、または ENTER を押さなくてもいいです。前述のプログラムは一行で記述できます。

Load "stdlib.ring"
Print("What is your name? ") cName=getstring() print("Hello #{cName}")

コメントの記述

一行コメントと複数行コメントを記述できます。

一行コメントは # または // で始まります。

複数行コメントは /* ～ */ です。

/*
        プログラムの名前    : はじめての Ring プログラム
        日付                : 2016.09.09
        作者                : Mahmoud Fayed
*/

Load "stdlib.ring"

Print("What is your name? ")    # 画面へメッセージを表示
cName=GetString()               # ユーザからの標準入力を取得
print("Hello #{cName}")         # こんにちわ！

// print("Bye!")

注釈

// による一行コメントは一種のコード記法です。

変数

新しい変数を作成するには、変数名と値を定義します。変数の型は値により決定します。同名変数の値を変更することで型も変更されます。

文法:

<変数名> = <値>

ちなみに

ここでは、演算子 '=' は代入演算子として扱いますが、この演算子は式の等価性を評価するために条件文でも使います。

注釈

変数は実際の値を有しています (参照ではありません)。すでにリストやオブジェクトが変数にあっても、変数の値を変更すると、以前の古い値は削除されます。

動的型付け

Ring は 動的型付け [https://ja.wikipedia.org/wiki/動的型付け] を使う動的プログラミング言語です。

x = "Hello"             # x は文字列です。
see x + nl
x = 5                   # x は数値です (int 型)。
see x + nl
x = 1.2                 # x は数値です (double 型)。
see x + nl
x = [1,2,3,4]           # x はリストです。
see x                   # リストの項目を表示します。
x = date()              # は日付入りの文字列です。
see x + nl
x = time()              # は時刻入りの文字列です。
see x + nl
x = true                # x は数値です (論理値 = 1)。
see x + nl
x = false               # x は数値です (論理値 = 0)。
see x + nl

深いコピー

代入演算子 '=' は変数を完全にコピーします。文字列と数値などの値のコピーに限らず、リストとオブジェクトも完全にコピーします。この処理は 深いコピー (Deep Copy) [http://en.wikipedia.org/wiki/Object_copy#Deep_copy] です。

list = [1,2,3,"four","five"]
list2 = list
list = []
See list        # 最初のリストを表示します - 項目を表示しません。
See "********" + nl
See list2       # 次のリストを表示します - 五項目あります。

暗黙的型変換

Ring は数値と文字列において自動型変換を行います。

変換規則:

<数値> + <文字列> --> <数値>
<文字列> + <数値> --> <文字列>

注釈

演算子 '+' は算術演算子、または文字列の連結にも使います。

用例:

x = 10                  # x は数値です。
y = "20"                # y は文字列です。
sum = x + y             # sum は数値です (y は数値へ変換します)。
Msg = "Sum = " + sum    # Msg は文字列 (sum は文字列へ変換します)。
see Msg + nl

演算子

演算子の用法です。

算術演算子

これは算術演算子の早見表です。ここでは変数 X=50 および、変数 Y=10 とします:

演算子

説明

用例

結果

+

加算

x+y

60

-

減算

x-y

40

*

乗算

x*y

500

/

除算

x/y

5

%

余剰

x%y

0

++

インクリメント (増分)

x++

51

--

デクリメント (減分)

x--

49

関係演算子

これは関係演算子の早見表です。ここでは変数 X=50 および、変数 Y=10 とします:

演算子

説明

用例

結果

=

等しい

x = y

False

!=

等しくない

x != y

True

>

より大きい

x > y

True

<

より小さい

x < y

False

>=

より大きいか等しい

x >= y

True

<=

より小さいか等しい

x <= y

False

論理演算子

これは論理演算子の早見表です。ここでは変数 X=True および、変数 Y=False とします:

演算子

説明

用例

結果

and

論理 AND

x and y

False

or

論理 OR

x or y

True

not

論理 Not

not x

False

別の記法

演算子

説明

用例

結果

&&

論理 AND

x && y

False

||

論理 OR

x or y

True

!

論理 Not

! x

False

ビット演算子

これはビット演算子の早見表です。ここでは変数 X=8 および、変数 Y=2 とします:

演算子

説明

用例

結果

&

二進数 AND

x & y

0

|

二進数 OR

x | y

10

^

二進数 XOR

x ^ y

10

~

二進数による 1 の補数

~x

-9

<<

二進数による左シフト

x << y

32

>>

二進数による右シフト

x >> y

2

代入演算子

これは代入演算子の早見表です。

ここでは変数 X=8 とします:

演算子

説明

用例

結果

=

代入

x = 10

x=10

+=

加算して代入

x += 5

x=13

-=

減算して代入

x -= 3

x=5

*=

乗算して代入

x *= 2

x=16

/=

除算して代入

x /= 3

x=2.67

%=

余剰して代入

x %= 2

x=0

<<=

左シフトして代入

x <<= 2

x=32

>>=

右シフトして代入

x >>= 2

x=2

&=

ビット演算 AND して代入

x &= 4

x=0

|=

ビット演算 OR して代入

x |= 3

x=11

^=

ビット演算 XOR して代入

x ^= 4

x=12

そのほかの演算子

演算子

説明

:リテラル

接頭辞 : を識別子に付けるとリテラルとして扱われます。

始点:終点

始点から終点までの項目から成るリストを作成します。

[リストの項目]

リストの項目を定義します。

リスト[インデックス]

リストの項目へアクセスします。

オブジェクト.名前

ドット演算子でオブジェクトのメンバへアクセスします (属性またはメソッド)。

オブジェクト {ステートメント}

オブジェクトの属性とメソッドへアクセスできるステートメントを実行します。

関数(仮引数,...)

コンマで区切られた仮引数で関数を呼び出します。

? <式>

式の表示後に改行します。

演算子の評価優先順位

これは最高優先度 (最初に評価します) から最低優先度までの演算子を表記したものです。

演算子

. [] () {}

- ~ :リテラル [リストの項目]

++ --

始点:終点

* / %

+ -

<< >>

&

| ^

< > <= >=

= !=

not !

and or && ||

代入 = += -= *= /= %= >>= <<= &= ^= |=

?

用例:

See 3+5*4       # 23 を表示

制御構造 - 第一形式

第一形式による制御構造の用法です。

分岐処理

If ステートメント

文法:

if 式
        ステートメント・ブロック
but 式
        ステートメント・ブロック
else
        ステートメント・ブロック
ok

用例:

see "
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

    " give nOption

if nOption = 1  see "Enter your name : " give name see "Hello " + name + nl
but nOption = 2 see "Sample : using if statement" + nl
but nOption = 3 bye
else see "bad option..." + nl
ok

Switch ステートメント

文法:

switch 式
on 式
        ステートメント・ブロック
other
        ステートメント・ブロック
off

用例:

See "
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

    " Give nOption

Switch nOption
On 1 See "Enter your name : " Give name See "Hello " + name + nl
On 2 See "Sample : using switch statement" + nl
On 3 Bye
Other See "bad option..." + nl
Off

ループ処理

While ループ

文法:

while 式
        ステートメント・ブロック
end

用例:

While True

        See "
                Main Menu
                ---------
                (1) Say Hello
                (2) About
                (3) Exit

            " Give nOption

        Switch nOption
        On 1
                See "Enter your name : "
                Give name
                See "Hello " + name + nl
        On 2
                See "Sample : using while loop" + nl
        On 3
                Bye
        Other
                See "bad option..." + nl
        Off
End

For ループ

文法:

for 識別子=式 to 式 [step 式]
        ステートメント・ブロック
next

用例:

# 1 ～ 10 までの数値を表示します。
for x = 1 to 10  see x + nl  next

用例:

# 動的ループ
See "Start : " give nStart
See "End   : " give nEnd
See "Step  : " give nStep
For x = nStart to nEnd Step nStep
        see x + nl
Next

用例:

# 0 ～ 10 までの偶数値を表示します。
for x = 0 to 10 step 2
        see x + nl
next

用例:

# 10 ～ 0 までの偶数値を表示します。
for x = 10 to 0 step -2
        see x + nl
next

For in ループ

文法:

for 識別子 in リストまたは文字列  [step 式]
        ステートメント・ブロック
next

用例:

aList = 1:10                     # 1 ～ 10 までの数値があるリストを作成します。
for x in aList see x + nl  next  # 1 ～ 10 までの数値を表示します。

For in での Step オプションの用法

For in で Step オプションを使うと、繰り返しのたびに対象となった項目の数値における処理を省きます。

用例:

aList = 1:10    # 1 ～ 10 までの数値を有するリストを作成します。
# リスト内にある奇数の項目を表示します。
for x in aList step 2
        see x + nl
next

For in でのリスト変更方法

(For in) は項目を参照で取得します。

つまり、ループの内側で項目の読み取りと編集ができます。

用例:

aList = 1:5     # 1 ～ 5 までの数値を有するリストを作成します。
# リストの数値を文字列へ置換します。
for x in aList
        switch x
        on 1  x = "one"
        on 2  x = "two"
        on 3  x = "three"
        on 4  x = "four"
        on 5  x = "five"
        off
next
see aList       # リストの項目を表示します。

Do ～ Again ループ

文法:

do
        ステートメント・ブロック
again 式

用例:

x = 1
do
        see x + nl
        x++
again x <= 10

Exit 命令

一階層以上のループの外側へ脱出します。

文法:

exit  [式]       # ループの内側

用例:

for x = 1 to 10
        see x + nl
        if x = 5 exit ok
next

二階層のループからの脱出

この用例では Exit 命令で二階層のループから一気に脱出する方法を示します。

用例:

for x = 1 to 10
        for y = 1 to 10
                see "x=" + x + " y=" + y + nl
                if x = 3 and y = 5
                        exit 2     # 二階層のループから脱出
                ok
        next
next

Loop 命令

次のループの繰り返し処理を飛ばすために使用されます。

文法:

loop [式]       # ループの内側

用例:

for x = 1 to 10
        if x = 3
                see "Number Three" + nl
                loop
        ok
        see x + nl
next

短絡評価

論理演算子 and/or は 短絡評価 [https://ja.wikipedia.org/wiki/短絡評価] となります。

AND 演算子において最初の引数が 0 ならば、次の引数の評価は不要であるため、結果は 0 です。

OR 演算子において最初の引数が 1 ならば、次の引数の評価は不要であるため、結果は 1 です。

用例:

/* 実行結果
** nice
** nice
** great
*/

x = 0 y = 10

if (x = 0 and nice()) and (y = 10 and nice())
        see "great" + nl
ok

func nice  see "nice" + nl   return 1

用例:

# 実行結果なし

x = 0 y = 10

if (x = 1 and nice()) and (y = 10 and nice())
        see "great" + nl
ok

func nice  see "nice" + nl   return 1

用例:

/* 実行結果
** nice
** great
*/

x = 0 y = 10

if (x = 0 and nice()) or (y = 10 and nice())
        see "great" + nl
ok

func nice  see "nice" + nl  return 1

評価方法の解説

True, False, nl と NULL は言語で定義済みの変数です。

True = 1

False = 0

nl = 改行

NULL = 空文字列 = “”

0 (False) は以外はすべて True として評価されます。

用例:

# 実行結果 = message from the if statement

if 5    # 非ゼロ (0) であるため 5 は true として評価されます。
        see "message from the if statement" + nl
ok

制御構造 - 第二形式

第二形式による制御構造の用法です。

分岐処理

If ステートメント

文法:

if 式
        ステートメント・ブロック
elseif 式
        ステートメント・ブロック
else
        ステートメント・ブロック
end

用例:

put "
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

    " get nOption

if nOption = 1  put "Enter your name : " get name put "Hello " + name + nl
elseif nOption = 2 put "Sample : using if statement" + nl
elseif nOption = 3 bye
else put "bad option..." + nl
end

Switch ステートメント

文法:

switch 式
case 式
        ステートメント・ブロック
else
        ステートメント・ブロック
end

用例:

Put "
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

    " Get nOption

Switch nOption
Case 1 Put "Enter your name : " Get name Put "Hello " + name + nl
Case 2 Put "Sample : using switch statement" + nl
Case 3 Bye
Else Put "bad option..." + nl
End

ループ処理

While ループ

文法:

while 式
        ステートメント・ブロック
end

用例:

While True

        Put "
                Main Menu
                ---------
                (1) Say Hello
                (2) About
                (3) Exit

            " Get nOption

        Switch nOption
        Case 1
                Put "Enter your name : "
                Get name
                Put "Hello " + name + nl
        Case 2
                Put "Sample : using while loop" + nl
        Case 3
                Bye
        Else
                Put "bad option..." + nl
        End
End

For ループ

文法:

for 識別子=式 to 式 [step 式]
        ステートメント・ブロック
end

用例:

# 1 ～ 10 までの数値を表示します。
for x = 1 to 10  put x + nl  end

用例:

# 動的ループ
Put "Start : " get nStart
Put "End   : " get nEnd
Put "Step  : " get nStep
For x = nStart to nEnd Step nStep
        Put x + nl
End

用例:

# 0 ～ 10 までの偶数値を表示します。
for x = 0 to 10 step 2
        Put x + nl
end

用例:

# 10 ～ 0 までの偶数値を表示します。
for x = 10 to 0 step -2
        put x + nl
end

For in ループ

文法:

for 識別子 in リストまたは文字列  [step 式]
        ステートメント・ブロック
end

用例:

aList = 1:10    # 1 ～ 10 までの数値を有するリストを作成します。
for x in aList  put x + nl  end # 1 ～ 10 までの数値を表示します。

例外処理

try
        ステートメント・ブロック
catch
        ステートメント・ブロック
end

制御構造 - 第三形式

第三形式による制御構造の用法です。

分岐処理

If ステートメント

文法:

if 式 {
        ステートメント・ブロック
elseif 式
        ステートメント・ブロック
else
        ステートメント・ブロック
}

用例:

Load "stdlib.ring"

print("
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit
    ")

nOption = getnumber()

if nOption = 1  {
        print("Enter your name : ")
        name = getstring()
        print("Hello #{name}\n")
elseif nOption = 2
        print("Sample : using if statement\n")
elseif nOption = 3
        bye
else
        print("bad option...\n")
}

Switch ステートメント

文法:

switch 式 {
case 式
        ステートメント・ブロック
else
        ステートメント・ブロック
}

用例:

Load "stdlib.ring"

print("
        Main Menu
        ---------
        (1) Say Hello
        (2) About
        (3) Exit

      ")

nOption = GetString()

switch nOption {
case 1
        print("Enter your name : ")
        name = getstring()
        print("Hello #{name}\n")
case 2
        print("Sample : using switch statement\n")
case 3
        Bye
else
        print("bad option...\n")
}

ループ処理

While ループ

文法:

while 式 {
        ステートメント・ブロック
}

用例:

Load "stdlib.ring"

While True {

        print("
                Main Menu
                ---------
                (1) Say Hello
                (2) About
                (3) Exit

                  ")

        nOption = GetString()

        switch nOption {
        case 1
                print("Enter your name : ")
                name = getstring()
                print("Hello #{name}\n")
        case 2
                print("Sample : using switch statement\n")
        case 3
                Bye
        else
                print("bad option...\n")
        }

}

For ループ

文法:

for 識別子=式 to 式 [step 式] {
        ステートメント・ブロック
}

用例:

# 1 ～ 10 までの数値を表示します。
load "stdlib.ring"
for x = 1 to 10  {
        print("#{x}\n")
}

用例:

load "stdlib.ring"

# 動的ループ
print("Start : ") nStart = getnumber()
print("End   : ") nEnd = getnumber()
print("Step  : ") nStep = getnumber()
for x = nStart to nEnd step nStep {
        print("#{x}\n")
}

用例:

load "stdlib.ring"

# 0 ～ 10 までの偶数値を表示します。
for x = 0 to 10 step 2 {
        print("#{x}\n")
}

用例:

load "stdlib.ring"

# 10 ～ 0 までの偶数値を表示します。
for x = 10 to 0 step -2 {
        print("#{x}\n")
}

For in ループ

文法:

for 識別子 in リストまたは文字列  [step 式] {
        ステートメント・ブロック
}

用例:

load "stdlib.ring"

aList = 1:10    # 1 ～ 10 までの数値を有するリストを作成します。
for x in aList { print("#{x}\n") }      # 1 ～ 10 までの数値を表示します。

用例:

load "stdlib.ring"

aList = 1:10    # 1 ～ 10 までの数値を有するリストを作成します。
# print リスト内にある奇数の項目を表示します。
for x in aList step 2 {
        print("#{x}\n")
}

(For in) は項目を参照で取得します。

つまり、ループの内側で項目の読み取りと編集ができます。

用例:

load "stdlib.ring"

aList = 1:5             # 1 ～ 5 までの数値を有するリストを作成します。
# リストの数値を文字列へ置換します。
for x in aList {
        switch x {
        case 1  x = "one"
        case 2  x = "two"
        case 3  x = "three"
        case 4  x = "four"
        case 5  x = "five"
        }
}
print(aList)    # リストの項目を表示します。

例外処理

try {
        ステートメント・ブロック
catch
        ステートメント・ブロック
}

標準入力の取得

標準入力 (キーボード) の用法です。

Give 命令

GetChar() 関数

Input() 関数

Give 命令

Give 命令はユーザからの標準入力を取得します。

文法:

Give 変数名

用例:

See "Enter the first number : " Give nNum1
See "Enter the second number : " Give nNum2
See "Sum : " + ( 0 + nNum1 + nNum2 )

実行結果:

Enter the first number : 3
Enter the second number : 4
Sum : 7

GetChar() 関数

GetChar() 関数は標準入力から一文字取得します。

文法:

GetChar() ---> 文字

用例:

While True
        See "
                Main Menu
                (1) Say Hello
                (2) Exit
            "
        Option = GetChar()
        GetChar() GetChar()  # 改行

        # 前述の二行は改行へ置換できます。
        # Option を与えます。

        if Option = 1
                see "Enter your name : " give cName
                see "Hello " + cName
        else
                bye
        ok
End

Input() 関数

Input() 関数はキーボードから標準入力を取得します。

文法:

Input(nCount) ---> 文字列

この関数は nCount 文字 (最低でも) を読み取るまで待機します。

用例:

See "Enter message (30 characters) : " cMsg = input(30)
See "Message : " + cMsg

関数 - 第一形式

第一形式による関数の用法です。

関数の定義

関数の呼び出し

仮引数の宣言

仮引数の送信

メイン関数

変数のスコープ

返値

再帰処理

関数の定義

新しい関数を定義するには

文法:

func <関数名> [仮引数]
        ステートメント・ブロック
[end]

注釈

関数の定義において end キーワードはオプション扱いです。

用例:

func hello
        see "Hello from function" + nl

関数の呼び出し

仮引数を指定せずに関数を呼び出すには、関数名末尾に () を入力します。

ちなみに

関数の定義、および関数のコードの記述前に関数を呼び出せます。

用例:

hello()

func hello
        see "Hello from function" + nl

用例:

first()  second()

func first   see "message from the first function" + nl

func second  see "message from the second function" + nl

仮引数の宣言

関数へ仮引数を宣言するには、関数名末尾に仮引数リストとしてカンマで区切った識別子のグループを記述します。

用例:

func sum x,y
        see x+y+nl

仮引数の送信

関数へ仮引数を送信するには、関数名末尾に () の内側で仮引数を入力します。

文法:

関数名(仮引数)

用例:

/* 実行結果
** 8
** 3000
*/

sum(3,5) sum(1000,2000)

func sum x,y see x+y+nl

Main 関数

Ring では、 Main (メイン) 関数はオプション扱いです。 Main 関数が定義された場合は、ほかのステートメント実行後にメイン関数が実行されます。

ほかのステートメントが存在しない場合に限り、メイン関数は最初の エントリーポイント [https://ja.wikipedia.org/wiki/エントリーポイント] となります。

用例:

# このプログラムは、 Hello World メッセージを表示した後にメイン関数を実行します。

See "Hello World!" + nl

func main
        see "Message from the main function" + nl

変数のスコープ

Ring は変数のスコープの決定で 静的スコープ [https://ja.wikipedia.org/wiki/静的スコープ] を使用します。

関数内定義の変数は、ローカル変数になります (関数の仮引数も該当します)。関数外定義の変数は、グローバル変数になります (関数の前にあるのは全て該当します)。

この関数内で定義されたグローバル変数は、別の関数内にある変数としてもアクセスできます。

用例:

# このプログラムでは 1 ～ 10 までの数値を表示します。

x = 10                          # x はグローバル変数です。

func main

        for t = 1 to 10         # t はローカル変数です。
                mycounter()     # 関数の呼び出し
        next

func mycounter
        see x + nl              # グローバル変数の値を表示します。
        x--                     # 減分します。

注釈

for ループの変数 t をローカル変数として宣言する前に、 Main 関数を使用してください。つまり、新しい変数のスコープをローカルとして設定するために、命令を記入するのではなく、 Main 関数では自動的にローカルとして設定することが推奨されます。

返値

Return 命令は、関数の値を返します。

文法:

Return [式]

ちなみに

Return 命令の後にある式はオプションであり、 Return 命令で値を返さずに関数の実行を終了することもできます。

注釈

関数が明示的な値を返さない場合は、 NULL (空の文字列 = "") を返します。

用例:

if novalue() = NULL
        See "the function doesn't return a value" + nl
ok

func novalue

再帰処理

Ring は 再帰 [https://ja.wikipedia.org/wiki/再帰] に対応しており、異なる引数を使用して関数が関数自身を再帰的に呼び出せます。

用例:

see fact(5)     # 実行結果 = 120

func fact x if x = 0 return 1 else return x * fact(x-1) ok

関数 - 第二形式

第二形式による関数の用法です。

関数の定義

関数の呼び出し

仮引数の宣言

仮引数の送信

メイン関数

変数のスコープ

返値

再帰処理

関数の定義

新しい関数を定義するには

文法:

def <関数名> [仮引数]
        ステートメント・ブロック
[end]

注釈

関数の定義において end キーワードはオプション扱いです。

用例:

def hello
        put "Hello from function" + nl
end

関数の呼び出し

仮引数を指定せずに関数を呼び出すには、関数名末尾に () を入力します。

ちなみに

関数の定義、および関数のコードの記述前に関数を呼び出せます。

用例:

hello()

def hello
        put "Hello from function" + nl
end

用例:

first()  second()

def first   put "message from the first function" + nl

def second  put "message from the second function" + nl

仮引数の宣言

関数へ仮引数を宣言するには、関数名末尾に仮引数のリストとしてカンマで区切った識別子のグループを記述します。

用例:

def sum x,y
        put x+y+nl
end

仮引数の送信

関数へ仮引数を送信するには、関数名末尾に () の内側で仮引数を入力します。

文法:

関数名(仮引数)

用例:

/* 実行結果
** 8
** 3000
*/

sum(3,5) sum(1000,2000)

def sum x,y put x+y+nl

Main 関数

Ring では、 Main (メイン) 関数はオプション扱いです。 Main 関数が定義された場合は、ほかのステートメント実行後にメイン関数が実行されます。

ほかのステートメントが存在しない場合に限り、メイン関数は最初の エントリーポイント [https://ja.wikipedia.org/wiki/エントリーポイント] となります。

用例:

# このプログラムは、 Hello World メッセージを表示した後にメイン関数を実行します。

put "Hello World!" + nl

def main
        put "Message from the main function" + nl
end

変数のスコープ

Ring は変数のスコープの決定で 静的スコープ [https://ja.wikipedia.org/wiki/静的スコープ] を使用します。

関数内定義の変数は、ローカル変数になります (関数の仮引数も該当します)。関数外定義の変数は、グローバル変数になります (関数の前にあるのは全て該当します)。

この関数内で定義されたグローバル変数は、別の関数内にある変数としてもアクセスできます。

用例:

# このプログラムでは 1 ～ 10 までの数値を表示します。

x = 10                          # x はグローバル変数です。

def main
        for t = 1 to 10         # t はローカル変数です。
                mycounter()     # 関数の呼び出し
        end
end

def mycounter
        put x + nl              # グローバル変数の値を表示します。
        x--                     # 減分します。
end

注釈

for ループの変数 t をローカル変数として宣言する前に、 Main 関数を使用してください。つまり、新しい変数のスコープをローカルとして設定するために、命令を記入するのではなく、 Main 関数では自動的にローカルとして設定することが推奨されます。

返値

Return 命令は、関数の値を返します。

文法:

Return [式]

ちなみに

Return 命令の後にある式はオプションであり、 Return 命令で値を返さずに関数の実行を終了することもできます。

注釈

関数が明示的な値を返さない場合は、 NULL (空の文字列 = "") を返します。

用例:

if novalue() = NULL
        put "the function doesn't return a value" + nl
end

def novalue

再帰処理

Ring は 再帰 [https://ja.wikipedia.org/wiki/再帰] に対応しており、異なる引数を使用して関数が関数自身を再帰的に呼び出せます。

用例:

put fact(5)     # 実行結果 = 120

def fact x if x = 0 return 1 else return x * fact(x-1) end

関数 - 第三形式

第三形式による関数の用法です。

関数の定義

関数の呼び出し

仮引数の宣言

仮引数の送信

メイン関数

変数のスコープ

返値

再帰処理

関数の定義

新しい関数を定義するには

文法:

func <関数名> [仮引数] ['{']
        ステートメント・ブロック
['}']

用例:

load "stdlib.ring"
func hello {
        print("Hello from function \n")
}

関数の呼び出し

仮引数を指定せずに関数を呼び出すには、関数名末尾に () を入力します。

ちなみに

関数の定義、および関数のコードの記述前に関数を呼び出せます。

用例:

load "stdlib.ring"

hello()

func hello {
        print("Hello from function \n")
}

用例:

load "stdlib.ring"

first()  second()

func first {  print("message from the first function \n")  }

func second { print("message from the second function \n") }

仮引数の宣言

関数へ仮引数を宣言するには、関数名末尾に仮引数のリストとしてカンマで区切った識別子のグループを記述します。

用例:

load "stdlib.ring"

func sum(x,y) {
        print(x+y)
}

仮引数の送信

関数へ仮引数を送信するには、関数名末尾に () の内側で仮引数を入力します。

文法:

関数名(仮引数)

用例:

/* 実行結果
** 8
** 3000
*/

load "stdlib.ring"

sum(3,5) sum(1000,2000)

func sum(x,y) { print(x+y) }

Main 関数

Ring では、 Main (メイン) 関数はオプション扱いです。 Main 関数が定義された場合は、ほかのステートメント実行後にメイン関数が実行されます。

ほかのステートメントが存在しない場合に限り、メイン関数は最初の エントリーポイント [https://ja.wikipedia.org/wiki/エントリーポイント] となります。

用例:

# このプログラムは、 Hello World メッセージを表示した後にメイン関数を実行します。

load "stdlib.ring"

print("Hello, World! \n")

func main {
        print("Message from the main function \n")
}

変数のスコープ

Ring は変数のスコープの決定で 静的スコープ [https://ja.wikipedia.org/wiki/静的スコープ] を使用します。

関数内定義の変数は、ローカル変数になります (関数の仮引数も該当します)。関数外定義の変数は、グローバル変数になります (関数の前にあるのは全て該当します)。

この関数内で定義されたグローバル変数は、別の関数内にある変数としてもアクセスできます。

用例:

# このプログラムでは 1 ～ 10 までの数値を表示します。

load "stdlib.ring"

x = 10                          # x はグローバル変数です。

func main {
        for t = 1 to 10 {       # t はローカル変数です。
                mycounter()     # 関数の呼び出し
        }
}

func mycounter {
        print("#{x}\n")         # グローバル変数の値を表示します。
        x--                     # 減分します。
}

注釈

for ループの変数 t をローカル変数として宣言する前に、 Main 関数を使用してください。つまり、新しい変数のスコープをローカルとして設定するために、命令を記入するのではなく、 Main 関数では自動的にローカルとして設定することが推奨されます。

返値

Return 命令は、関数の値を返します。

文法:

Return [式]

ちなみに

Return 命令の後にある式はオプションであり、 Return 命令で値を返さずに関数の実行を終了することもできます。

注釈

関数が明示的な値を返さない場合は、 NULL (空の文字列 = "") を返します。

用例:

load "stdlib.ring"

if novalue() = NULL {
        print("the function doesn't return a value\n")
}

func novalue { }

再帰処理

Ring は 再帰 [https://ja.wikipedia.org/wiki/再帰] に対応しており、異なる引数を使用して関数が関数自身を再帰的に呼び出せます。

用例:

load "stdlib.ring"

print( fact(5) )        # 実行結果 = 120

func fact(x) { if x = 0 { return 1 else return x * fact(x-1) } }

プログラムの構造

複数のソースコードファイルを同じプロジェクトで扱う方法です。

ソースコードファイルの階層

ソースコードは下記の各階層から構成されています (同一順)。

ソースコードの階層

ファイルの読み込み

ステートメントとグローバル変数

関数

パッケージとクラス

アプリケーションは一本以上のファイルから構成されています。

複数のソースコードファイルを扱う方法

Load 命令はプロジェクトへ別のソースファイルをインクルードします。

文法:

Load  "filename.ring"

注釈

Load 命令は、コンパイラの構文解析処理の段階で実行します。

ちなみに

実行時までファイル名がわからない、または関数でファイルのパスを取得する必要がある場合は、 eval() を使用します。

用例:

# ファイル : Start.ring

Load "sub.ring"

sayhello("Mahmoud")

# ファイル : sub.ring

func sayhello cName
        see "Hello " + cName + nl

Load Package

'Load' 命令により、複数の Ring ソースファイルをプロジェクトで使えますが、

グローバルスコープを共有しているため、グローバル変数の名前衝突が起きることがあります。

この問題は "Load Package" 命令で解決します。

"Load Package" 命令で新規生成したグローバルスコープへライブラリ (*.ring ファイル) を読み込みます。

これにより既存のグローバル変数との名前衝突を回避できます。これはライブラリ開発でも非常に便利です。

用例:

ファイル: loadpackage.ring

x = 100
? "Hello, World!"
load package "testloadpackage.ring"

? x
test()

ファイル: testloadpackage.ring

? "Hello from testloadpackage.ring"

x = 1000

test()

func test
        ? x

実行結果:

Hello, World!
Hello from testloadpackage.ring
1000
100
1000

Load Again

Ring 1.12 から Load Again コマンドが使えるようになりました。

このコマンドを使うと Ring ソースファイルにある定数を何度でも読み込めます。

これはグローバル定数による翻訳用 Ring ソースファイルを使用するときに便利です。

用例:

下記はアラビア語と英語に対応するプロジェクトからの引用です。

english.ring と arabic.ring ファイルには翻訳で使う定数があります。

これらのファイルはプログラムの開始時に読み込まれます。

Load コマンドで同じファイルの再読み込みはできません。

Load コマンドは同じソースファイルを一度だけ読み込み、それ以降の読み込み指定は無視するからです。

しかし Load Again コマンドならできます。

よって、下記のコードを使うと実行中にファイルの再利用ができます。

func setLang nLanguage
        if C_ENV_DEFAULT_LANG = nLanguage
                return
        ok
        C_ENV_DEFAULT_LANG = nLanguage
        # 言語の変更
                switch nLanguage
                        on C_TRANSLATION_ENGLISH
                                load again "translation/english.ring"
                        on C_TRANSLATION_ARABIC
                                load again "translation/arabic.ring"
                off

リスト

リストの用法です。

リストの作成

角括弧の内側にリストを定義することで、新しいリストを作成できます。

用例:

aList = [1,2,3,4,5]

また : 演算子や、

用例:

aList = 1:5
aList2 = "a":"z"

用例:

aList = 5:1
aList2 = "z":"a"

list() 関数でも新しいリストを作成できます。

文法:

list = list(size)

二次元リストを作成するには、

list = list(nRows,nCols)

用例 (1)

aList = list(10)        # aList で 10 項目を割り当てます。

用例 (2)

aList = list(5,4)       # 5 行 4 列からなる二次元リストを作成します。

注釈

リストのインデックスは 1 が始点となります。

項目の追加

Add() 関数はリストへ新しい項目を追加します。

文法:

Add(List,Item)

用例:

aList = ["one","two"]
add(aList,"three")
see aList

+ 演算子も使えます。

文法:

リスト + 項目

用例:

aList = 1:10    # 1 ～ 10 までの数値を有するリストを作成します。
aList + 11      # リストへ数値 11 を追加
see aList       # リストを表示

リストのサイズ取得

len() 関数はリストのサイズを取得します。

文法:

Len(List)

用例:

aList = 1:20  see len(aList)  # 20 を表示

リスト項目の削除

del() 関数はリストから項目を削除します。

文法:

del(list,index)

用例:

aList = ["one","two","other","three"]
Del(aList,3)    # 3 番目の項目を削除
see aList       # one two three を表示

リスト項目の取得

リストから項目を取得するには、

文法:

List[Index]

用例:

aList = ["Cairo","Riyadh"]
see "Egypt : " + aList[1] + nl +
    "KSA   : " + aList[2] + nl

リスト項目への代入

リストの項目へ値を代入するには、

文法:

List[Index] = Expression

用例:

aList = list(3) # 三項目を有するリストを作成します。
aList[1] = "one" aList[2] = "two" aList[3] = "three"
see aList

検索

Find() 関数はリスト内の項目を検索します。

文法:

Find(List,ItemValue)                    ---> 項目のインデックス
Find(List,ItemValue,nColumn)            ---> nColumn を検索して項目のインデックスを返します。
Find(List,ItemValue,nColumn,cAttribute) ---> 項目のインデックス

用例:

aList = ["one","two","three","four","five"]
see find(aList,"three")         # 3 を表示

用例:

mylist = [["one",1],
          ["two",2],
          ["three",3]]

see find(mylist,"two",1) + nl           # 2 を表示
see find(mylist,2,2) + nl               # 2 を表示

また binarysearch() 関数は整列後のリストを検索します。

文法:

BinarySearch(List,ItemValue)         ---> 項目のインデックス
BinarySearch(List,ItemValue,nColumn) ---> nColumn を検索して項目のインデックスを返します。

用例:

aList = ["one","two","three","four","five"]
aList = sort(aList)
see binarysearch(aList,"three")

実行結果:

five
four
one
three
two
4

整列

Sort() 関数はリストを整列します。

文法:

Sort(List)                    ---> 整列後のリスト
Sort(List,nColumn)            ---> nColumn に基づいて整理されたリスト
Sort(List,nColumn,cAttribute) ---> 属性に基づいて整列されたリスト

用例:

aList = [10,12,3,5,31,15]
aList = sort(aList) see aList # 3 5 10 12 15 31 を表示

文字列の整列もできます。

用例:

mylist = ["mahmoud","samir","ahmed","ibrahim","mohammed"]
see mylist                # 整列前のリストを表示
mylist = sort(mylist)     # リストの整列
see "list after sort"+nl
see mylist                # ahmed ibrahim mahmoud mohammed samir を表示

特定の列に基づいてリストを整列できます。

用例:

aList = [ ["mahmoud",15000] ,
          ["ahmed", 14000 ] ,
          ["samir", 16000 ] ,
          ["mohammed", 12000 ] ,
          ["ibrahim",11000 ] ]

aList2 = sort(aList,1)
see aList2

実行結果:

ahmed
14000
ibrahim
11000
mahmoud
15000
mohammed
12000
samir
16000

反転

Reverse() 関数はリストを反転します。

文法:

Reverse(List) ---> 反転されたリスト

用例:

aList = [10,20,30,40,50]
aList = reverse(aList)
see aList       # 50 40 30 20 10 を表示

リスト項目の挿入

Insert() 関数はリストへ項目を挿入します。

文法:

Insert(List,Index,Item)

インデックスの後に項目を挿入します。

用例:

aList = ["A","B","D","E"]
insert(aList,2,"C")    # インデックス 2 の後に位置 3 へ "C" を挿入します。
see aList              # A B C D E を表示

また、 insert(aList, 0 ,Value) で リストの先頭位置 (最初)に項目を挿入します

aList = 1:5
insert(aList,0,0)  // リスト、先頭位置 (0)、挿入する項目のデータ
See aList # 0 ～ 5 までの数値を表示します。

多重リスト

リストは他のリストを有しています。

用例:

aList = [ 1 , [10,20,30] , 5 , [100,1000,5000] ]
aList2 = [
"one","two",
[3,4],
[20,30], ["three",
          "four",
          "five",[100,200,300]
         ]
]

see aList[2]            # 10 20 30 を表示
see aList[4][3] + nl    # 5000 を表示
see aList2[5][2] + nl   # four を表示
see aList2[5][4][3]     # 300 を表示

リストのコピー

代入演算子はリスト (多重リストも含む) をコピーします。

用例:

aList = [
"one","two",
[3,4],
[20,30], ["three",
          "four",
          "five",[100,200,300]
         ]
]

aList2 = aList          # aList から aList2 へコピー
aList2[5] = "other"     # 項目番号 five を変更
see aList2[5] + nl      # other を表示
see aList[5]            # three four five 100 200 300 を表示

第一級リスト

リストは 第一級オブジェクト [https://ja.wikipedia.org/wiki/第一級オブジェクト] であるため、リストへ変数を格納したり、関数へリストを渡したり、さらに関数からリストを返せます。

用例:

aList = duplicate( [1,2,3,4,5] )
see aList[10] + nl                # 5 を表示

see mylist()                      # 10 20 30 40 50 を表示

func duplicate list
        nMax = len(list)
        for x = 1 to nMax
                list + list[x]
        next
        return list

func mylist return [10,20,30,40,50]

リストを定義時に使用するには

初回にリストを定義するときに、リストとリスト項目を使用します。

用例:

aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
see aList       # 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 を表示

用例:

x = [ 1, 2, x ]
? x             # 1 2 1 2 を表示
? len(x)        # 3 を表示
? x[1]          # 1 を表示
? x[2]          # 2 を表示
? x[3]          # 1 2 を表示

実行結果:

1
2
1
2

3
1
2
1
2

リストを関数へ渡すには

リストは参照渡しにより関数へ渡されるため、呼び出された関数側でリストの処理や変更ができます。

用例:

func main
        aList = [1,2,3,4,5]     # Main 関数内でローカルなリストを作成します。
        myfunc(aList)           # リストを参照渡しにすることで、関数を呼び出します。
        see aList               # 1 2 3 4 5 6 7 8 9 10 を表示します。

func myfunc list
        list + [6,7,8,9,10]

文字列インデックスによるリストへのアクセス

項目のインデックスを数値で決定することで、項目の値の設定または項目を取得できますが、二つの項目を有するリストであり、かつ最初の項目が文字列から構成されている項目ならば、文字列インデックスで項目へアクセスできます。

用例:

aList = [ ["one",1] , ["two",2] , ["three",3] ]
see aList["one"] + nl +
    aList["two"] + nl +
    aList["three"]      # 1 2 3 の表示

この種類のリストは演算子 : および = で定義したほうがより優れたシンタックスになります。

用例:

aList = [ :one = 1 , :two = 2 , :three = 3 ]
see aList["one"] + nl +
    aList["two"] + nl +
    aList["three"] + nl # 1 2 3 の表示
see aList[1]            # one 1 表示

ちなみに

識別子 (単語) の先頭に : (コロン) を付けるとリテラルとして扱われます。

注釈

= で二つの項目を有するリストを定義すると最初の項目は左辺となり、次の項目は右辺となるリストを作成します。

文字列インデックスでリストへ新しい項目を追加できます。

用例:

aList = []
aList["Egypt"] = "Cairo"
aList["KSA"] = "Riyadh"
see aList["Egypt"] + nl +       # Cairo を表示
aList["KSA"] + nl               # Riyadh を表示

リストによる仮引数または実引数の渡しかた

この種類のリストでは、仮引数の順序は重要ではないため、関数へ渡すための仮引数としては非常に優れています (順序の変更ができます)。

仮引数は、オプション扱いの場合があります。

用例:

myconnect (  [ :server = "myserver.com" , :port = 80 ,
               :username = "mahmoud" , :password = "password" ] )

func myconnect mypara

        # 接続の詳細を表示
        see "User Name : " + mypara[:username] + nl +
            "Password  : " + mypara[:password] + nl +
            "Server    : " + mypara[:server] + nl +
            "Port      : " + mypara[:port]

リスト配列による仮引数または実引数の渡しかた

配列形式により、関数へ仮引数また実引数を渡します。

用例:

myList = [5,7,3,9]    ### 配列は実引数または仮引数のリストです。
result = sum(myList)
See "Sum result: "+ result +n

func sum(aList)
  acc = 0
  sizeList = len(aList)

  for i = 1 to sizeList
     See aList[i] +nl
     acc = acc + aList[i]
  next
return acc

リストまたはハッシュテーブルを引数として返すには

関数から配列またはハッシュ形式で引数を返します。

用例:

sudoku = [  [2,9,0],
            [0,0,1],
            [0,0,0] ]

aOutput = myFunctionArray(sudoku)
        See "Return Array: T/F: "+ aOutput[1] +" Row: "+ aOutput[2] +" Col: "+ aOutput[3] +nl

aOutput = myFunctionHash(sudoku)
        See "Return Hash.: T/F: "+ aOutput[:lValue] +" Row: "+ aOutput[:nRow] +" Col: "+ aOutput[:nCol] +nl

###--------------------------------
### isSolvedSoduku - 配列を返します

Func myFunctionArray(sudoku)
    for Row = 1 to 9
        for Col = 1 to 9
            if sudoku[Row][Col] = 0

                //-----------------------------
                // 三要素から成る配列を返します
                return [False, Row, Col]
            ok
        next
    next
return [True, Row, Col]

###------------------------------------
### isSolvedSoduku - ハッシュを返します

Func myFunctionHash(sudoku)
    for Row = 1 to 3
        for Col = 1 to 3
            if sudoku[Row][Col] = 0

                //-----------------------------------------
                // 三要素から成るハッシュテーブルを返します
                return  [   :lValue = False,
                            :nRow   = Row,
                            :nCol   = Col
                        ]
            ok
        next
    next

return  [ :lValue = False, :nRow = Row, :nCol = Col ]

###-----------------------------

リストと再帰による多次元配列の作成方法

指定の大きさによる多次元配列でも関数の再帰で作成できます。

用例:

###---------------------------------------------------------------------------------
### 配列の作成 -- 指定の大きさの次元:  三次元、四次元、五次元など

dimList = [4,3,4]
bList   = createDimList(dimList)

###---------------------------------------------------------------------------------
### 1 のカウンタを使用して配列へ代入 ,  4x4x4 = 256 , 2x3x4x5x6 = 720

Counter = 1

for Col=1 to dimList[1]
  for Row=1 to dimList[2]
    for Dep=1 to dimList[3]
            blist[Col][Row][Dep] = Counter
            Counter++
    next
  next
next

###---------------------------------------------------------------------------------
### ブロック形式で配列の要素を表示します。

for Col=1 to dimList[1]
  for Row=1 to dimList[2]
    for Dep=1 to dimList[3]
            See bList[Col][Row][Dep] See " "
    next
    See nl
  next
    See nl
next

###=================================================================================
### 関数

###---------------------------------------------------------------------------------
### 次元をもつ配列を再帰的に作成します。
### 配列の次元を渡すことで呼び出します: dimList = [2,3,4,5]
### 最初のエントリーで全ての反復呼び出しの降下を行い newParms を作成します。
###
### 用例:
###    dimList = [4,2,3,2]                <<< 配列形式による次元の大きさと数値です。
###    bList   = createDimList(dimList)   <<< 入力からの配列を使用して呼び出します。

func createDimList(dimArray)

     sizeList = len(dimArray)

     newParms = []
     for i = 2 to sizeList
        Add(newParms, dimArray[i])
     next

     alist = list(dimArray[1])

     if sizeList = 1
        return aList
     ok

     for t in alist
         t = createDimList(newParms)
     next

return alist

項目の交換

Swap() 関数はリスト項目を交換します。

用例:

aList = [:one,:two,:four,:three]
see aList
see copy("*",50) + nl
swap(aList,3,4)
see aList

実行結果:

one
two
four
three
**************************************************
one
two
three
four

文字列

文字列の作成と操作です。

文字列リテラル

文法:

cStr = "This is a string"
cStr2 = 'Another string'
cStr3 = :JustAnotherString
cStr4 = `Yet "another" 'string' ! `

文字列の長さを取得するには

len() 関数は文字列の長さ (文字列内の文字数) を取得します。

文法:

len(string) ---> 文字列の長さ

用例:

cStr = "How are you?"
see cStr + nl
see "String size : " + len(cStr) + nl

文字のつづりを変換するには

文法:

lower(string) ---> 文字列を小文字へ変換します。
upper(string) ---> 文字列を大文字へ変換します。

用例:

cStr = "Welcome To The Ring Programming Language"
see cStr + nl + upper(cStr) + nl + lower(cStr)

文字列にある文字へのアクセス

文字インデックスで文字列内にある文字へアクセスします。

文法:

string[index] ---> 文字列にある文字を取得します。
string[index] = letter  # 文字列にある文字へ別の文字列を配置します。

用例:

# ユーザ名を一文字ずつ表示します (一文字ごとに改行されます)。

See "Hello, Enter your name : " give cName
for x = 1 to len(cName)
        see nl + cName[x]
next

for in で文字列の文字を取得します。

用例:

# ユーザ名を一文字ずつ表示します (一文字ごとに改行されます)。

See "Hello, Enter your name : " give cName
for x in cName
        see nl + x
next

文字列にある文字を変更します。

用例:

# 最初の一文字目を大文字へ変換します。

See "Enter your name : " give cName
cName[1] = upper(cName[1])
see "Hello " + cName

Left() 関数

Left() 関数は文字列から指定文字数の文字を取得します。

開始位置は 1 です。

文法:

Left(string, count)

用例:

see left("Hello World!",5) # Hello の表示

Right() 関数

Right() 関数は文字列から指定文字数の文字を取得します。

始点は最後の文字の右側からです。

文法:

Right(string, count)

用例:

see Right("Hello World!",6) # World! を表示

Trim() 関数

Trim() 関数は文字列の先頭と最後から半角空白文字 (0x20H) をすべて削除します。

文法:

trim(string)

用例:

cMsg = "     Welcome      "
see trim(cMsg)                  # Welcome を表示

タブ文字 (0x1BH) を削除したい場合は SubStr() 関数を併用します:

cMsg = "     Welcome      "
see trim(substr(cMsg, tab, ' '))        # Welcome を表示

Copy() 関数

copy() 関数は文字列を一回以上繰り返してコピーします。

文法:

copy(string, nCount)
        ---> 文字列を nCount 回繰り返します。

用例:

see copy("***hello***",3) # ***hello******hello******hello*** を表示

Lines() 関数

Lines() は文字列にある行数を取得します。

文法:

lines(string) ---> 文字列内の行数

用例:

cStr = "Hello
How are you?
are you fine?"
see lines(cStr)         # 3 の表示

Substr() 関数

Substr() 関数は文字列内にある部分文字列を処理します。また、このようなことができます。

部分文字列の検索

指定位置から末尾までの部分文字列の取得

指定位置から文字の字数を取得

部分文字列を別の部分文字列へ変換

部分文字列の検索

文法:

substr(string, substring)
        ---> 文字列内の部分文字列における始点位置

用例:

cStr = "Welcome to the Ring programming language"
see substr(cStr,"Ring")         # 16 の表示

指定位置から末尾までの部分文字列を取得するには

文法:

substr(string, position)
        ---> 指定位置から末尾までの部分文字列を取得します。

用例:

cStr = "Welcome to the Ring programming language"
nPos = substr(cStr,"Ring")      # nPos = 16
see substr(cStr,nPos)           # Ring programming language を表示

文字の位置を数値で取得するには

文法:

substr(string, position, count)
        ---> 文字の位置を取得します。

用例:

cStr = "Welcome to the Ring programming language"
nPos = substr(cStr,"Ring")      # nPos = 16
see substr(cStr,nPos,4)         # Ring を表示

部分文字列を別の部分文字列へ置換するには

文法:

substr(string, substring, newsubstring)
        ---> 置換文字列 (英数大小文字を区別する)

substr(string, substring, newsubstring, 1)
        ---> 置換文字列 (英数大小文字を区別しない)

用例:

cStr = "Welcome to the New programming language"
see substr(cStr,"New","Ring")   + nl # Welcome to the Ring programming language の表示
see substr(cStr,"new","Ring",1) + nl # Welcome to the Ring programming language の表示

strcmp() 関数

strcmp() 関数は文字列同士を比較します。

文法:

strcmp(cString1,cString2) ---> 値 = 0 if cString1 = cString2
                               値 < 0 if cString1 < cString2
                               値 > 0 if cString1 > cString2

用例:

see strcmp("hello","hello") + nl +
    strcmp("abc","bcd") + nl +
    strcmp("bcd","abc") + nl

実行結果:

0
-1
1

str2list() と list2str() 関数

str2list() 関数は文字列にある行をリストへ変換します。また list2str() 関数はリストを文字列へ変換します。

文法:

str2list(string) ---> 文字列の行からリストの項目への変換結果 (改行で分割)
list2str(list)   ---> リストの項目から文字列への変換結果 (リストの全項目を連結)

用例:

/* 実行結果:
** Items : 4
** Item : Hello
** Item : How are you ?
** Item : are you fine ?
** Item : ok
** list2Str result = Hello
** How are you ?
** are you fine ?
** ok
** Done
*/

mystr = "Hello
How are you ?
are you fine ?
ok"

mylist = str2list(mystr)
see "Items : " + len(mylist) + nl

for x in mylist
        see "Item : " + x + nl
next

newstr = list2str(mylist)
see "list2Str result = " + newstr

if mystr = newstr
        see nl + "Done"
else
        see nl + "Error!"
ok

バイナリ文字の統合

Ring 1.0 からバイナリ文字列の作成と操作を行えます。

Ring 1.8 より文字列から個別に文字を取得したり、 '+' 演算子でまとめて統合できます。

用例:

cStr = "Welcome"
? cstr[1] + cstr[2] + cStr[5]
v = cstr[1] + cstr[2] + cStr[5]
? v
? len(v)
c1 = cStr[1]
? c1
aList = [1,2,3]
cStr = ""
for item in aList
        cStr += int2bytes(item)
next
? "All String"
? len(cStr)
? "First Part"
n1 = cStr[1] + cStr[2] + cStr[3] + cStr[4]
? len(n1)
? "Second Part"
n2 = cStr[5] + cStr[6] + cStr[7] + cStr[8]
? len(n2)
? "Third Part"
n3 = cStr[9] + cStr[10] + cStr[11] + cStr[12]
? len(n3)
? "All String"
cString = cStr[1] + cStr[2] + cStr[3] + cStr[4] +
          cStr[5] + cStr[6] + cStr[7] + cStr[8] +
          cStr[9] + cStr[10] + cStr[11] + cStr[12]
? len(cString)
? ascii(cStr[1])
? len(cStr[2])

実行結果:

Weo
Weo
3
W
All String
12
First Part
4
Second Part
4
Third Part
4
All String
12
1
1

日付と時刻

日付と時刻の用法です。

Clock() 関数

文法:

Clock() ---> プログラム開始時からのクロック・ティック数

用例:

See "Calculate performance" + nl
t1 = clock()
for x = 1 to 1000000 next
see clock() - t1

ClocksPerSecond() 関数

一秒あたりのクロック数を返します。

文法:

clockspersecond() ---> 一秒あたりのクロック数

用例:

# 1 秒待つ
t = clock()
while clock() - t <= clockspersecond() end

Time() 関数

Time() 関数はシステムの時刻を取得します。

用例:

See "Time : " + time()

Date() 関数

Date() 関数は日付を取得します。

文法:

Date() ---> 文字列は "日/月/西暦" 表記による日付表記です。

用例:

See "Date : " + date()  # 日付 : 24/05/2015

TimeList() 関数

TimeList() 関数は日付と時刻の情報を表示します。

文法:

TimeList() ---> 時刻と日時の情報をリストで返します。

この表はリストの項目です。

インデックス

値

1

略式による週の名前

2

正式による週の名前

3

略式による月の名前

4

正式による月の名前

5

日付と時刻

6

今月の経過日数

7

時間 (24 時間制)

8

時間 (12 時間制)

9

今年の経過日数

10

今年の経過月数

11

今時の経過分数

12

AM (午前) または PM (午後)

13

今分の経過秒数

14

今年の経過週数 (日～土)

15

今週の経過日数

16

日付

17

時刻

18

世紀による年の表記

19

西暦

20

タイムゾーン

21

パーセント記号

用例:

## 実行結果:
## Sun                  略式による週の名前
## Sunday               正式による週の名前
## May                  略式による月の名前
## May                  正式による月の名前
## 05/24/15 09:58:38    日付と時刻
## 24                   今月の経過日数
## 09                   時間 (24 時間制)
## 09                   時間 (12 時間制)
## 144                  今年の経過日数
## 05                   今年の経過月数
## 58                   今時の経過分数
## AM                   AM (午前) または PM (午後)
## 38                   今分の経過秒数
## 21                   今年の経過週数 (日～土)
## 0                    今週の経過日数
## 05/24/15             日付
## 09:58:38             日時
## 15                   世紀による年表記
## 2015                 西暦
## 東京 (標準時)        タイムゾーン (結果は OS, 言語、地域に依存)
## %                    パーセント記号

See TimeList()

用例:

See "Day Name : " + TimeList()[2]       # Sunday

用例:

See "Month Name : " + TimeList()[4]     # May

AddDays() 関数

文法:

AddDays(cDate,nDays) ---> cDate から  nDays 後の日付です。

用例:

cDate = date()
see cDate + nl                  # 24/05/2015
cDate = adddays(cDate,10)
see cDate + nl                  # 03/06/2015

DiffDays() 関数

文法:

DiffDays(cDate1,cDate2) ---> 日数 (Date1 - Date2)

用例:

cDate1 = date()
see cDate1 + nl                                         # 24/05/2015
cDate2 = adddays(cDate1,10)
see cDate2 + nl                                         # 03/06/2015
see "DiffDays = " + diffdays(cDate1,cDate2) + nl        # -10
see "DiffDays = " + diffdays(cDate2,cDate1) + nl        # 10

EpochTime() 関数

文法:

EpochTime( cDate, cTime ) ---> エポック秒

用例:

###-------------------------------------------------------------
# EpochTime()
# 用例    ---   EpochSec = EpochTime( Date(), Time() )
# 呼び出し形式: EpochSec = EpochTime( "15/07/2016", "10:15:30" )
#               EpochSec = 1468577730
#---------------------------------------------------------------

Func EpochTime(Date, Time)

    arrayDate = split(Date, "/")
    arrayTime = split(Time, ":")

    Year = arrayDate[3] ; Month  = arrayDate[2] ; Day    = arrayDate[1]
    Hour = arrayTime[1] ; Minute = arrayTime[2] ; Second = arrayTime[3]

    cDate1    = Day +"/"+ Month +"/"+ Year
    cDate2    = "01/01/" + Year
    DayOfYear = DiffDays( cDate1, cDate2)

    ### 数式
    tm_sec  = Second    * 1
    tm_min  = Minute    * 60
    tm_hour = Hour      * 3600
    tm_yday = DayOfYear * 86400
    tm_year = Year      - 1900

    tm_year1 =         ( tm_year -  70)          * 31536000
    tm_year2 = ( floor(( tm_year -  69) /   4 )) * 86400
    tm_year3 = ( floor(( tm_year -   1) / 100 )) * 86400
    tm_year4 = ( floor(( tm_year + 299) / 400 )) * 86400

    ### 結果
    EpochSec = tm_sec + tm_min + tm_hour + tm_yday + tm_year1 + tm_year2 - tm_year3 + tm_year4

return EpochSec

データ型の検査と変換

この用途の関数です。

データ型の判定

字種判定

変換処理

データ型の判定

データ型判定用の関数です。

isstring()

isnumber()

islist()

type()

isnull()

IsString() 関数

IsString() 関数は値が文字列か判定します。

文法:

IsString(値) ---> 値が文字列ならば 1 を、そうでなければ 0 です。

用例:

see isstring(5) + nl +          # 0 を表示
    isstring("hello") + nl      # 1 を表示

IsNumber() 関数

IsNumber() 関数は値が数値か判定します。

文法:

IsNumber(値) ---> 値が数値ならば 1 を、そうでなければ 0 です。

用例:

see isnumber(5) + nl +          # 1 を表示
    isnumber("hello") + nl      # 0 を表示

IsList() 関数

IsList() 関数は値がリストか判定します。

文法:

IsList(値) ---> 値がリストならば 1 を、そうでなければ 0 です。

用例:

see islist(5) + nl +            # 0 を表示
    islist("hello") + nl +      # 0 を表示
    islist([1,3,5])             # 1 を表示

Type() 関数

Type() 関数は値の型を検査します。

文法:

Type(値) ---> 型を文字列で返します。

用例:

see Type(5) + nl +          # NUMBER を表示
Type("hello") + nl +        # STRING を表示
Type([1,3,5])               # LIST を表示

IsNULL() 関数

IsNULL() 関数は値が null か判定します。

文法:

IsNULL(値) ---> 値が NULL ならば 1 を、そうでなければ 0 です。

用例:

see isnull(5) + nl +        # 0 を表示
isnull("hello") + nl +      # 0 を表示
isnull([1,3,5]) + nl +      # 0 を表示
isnull("") + nl +           # 1 を表示
isnull("NULL")              # 1 を表示

字種判定

字種判定用の関数です。

isalnum()

isalpha()

iscntrl()

isdigit()

isgraph()

islower()

isprint()

ispunct()

isspace()

isupper()

isxdigit()

IsAlNum() 関数

IsAlNum() 関数は値が英数字か判定します。

文法:

IsAlNum(値) ---> 値が数字または文字ならば 1 を、そうでなければ 0 です。

用例:

see isalnum("Hello") + nl +     # 1 を表示
    isalnum("123456") + nl +    # 1 を表示
    isalnum("ABCabc123") + nl + # 1 を表示
    isalnum("How are you")      # 空白のため 0 を表示

IsAlpha() 関数

IsAlpha() 関数は値が英字文字か判定します。

文法:

IsAlpha(値) ---> 値が文字ならば 1 を、そうでなければ 0 です。

用例:

see isalpha("Hello") + nl +     # 1 を表示
    isalpha("123456") + nl +    # 0 を表示
    isalpha("ABCabc123") + nl + # 0 を表示
    isalpha("How are you")      # 0 を表示

IsCntrl() 関数

IsCntrl() 関数は値が制御文字か判定します。

文法:

IsCntrl(値) ---> 値が制御文字 (表示不能) ならば 1 を、
                    そうでなければ 0 です。

用例:

See iscntrl("hello") + nl +     # 0 を表示
    iscntrl(nl)                 # 1 を表示

IsDigit() 関数

IsDigit() 関数は値が数字か判定します。

文法:

IsDigit(値) ---> 値が数字ならば 1 を、そうでなければ 0 です。

用例:

see isdigit("0123456789") + nl +        # 1 を表示
    isdigit("0123a")                    # 0 を表示

IsGraph() 関数

IsGraph() 関数は値が表示可能 (空白文字を除く) か判定します。

文法:

IsGraph(値)
        ---> 値が表示可能 (空白文字を除く) であれば 1 を、そうでなければ 0 を返します。

用例:

see isgraph("abcdef") + nl +    # 1 を表示
    isgraph("abc def")          # 0 を表示

IsLower() 関数

IsLower() 関数は値が英数小文字か判定します。

文法:

IsLower(値) ---> 値が英数小文字ならば 1 を、そうでなければ 0 です。

用例:

see islower("abcDEF") + nl +    # 0 を表示
    islower("ghi")              # 1 を表示

IsPrint() 関数

IsPrint() 関数は値が表示可能か判定します。

文法:

IsPrint(値) ---> 値が表示可能であれば 1 を、そうでなければ 0 です。

用例:

see isprint("Hello") + nl +             # 1 を表示
    isprint("Nice to see you") + nl +   # 1 を表示
    isprint(nl)                         # 0 を表示

IsPunct() 関数

IsPunct() 関数は値が句読記号文字か判定します。

文法:

IsPunct(値) ---> 値が句読記号文字ならば 1 を、そうでなければ 0 です。

用例:

see ispunct("hello") + nl +     # 0 を表示
    ispunct(",")                # 1 を表示

IsSpace() 関数

IsSpace() 関数は値が空白文字か判定します。

文法:

IsSpace(値) ---> 値が空白文字ならば 1 を、そうでなければ 0 です。

用例:

see isspace("   ") + nl +       # 1 を表示
    isspace("test")             # 0 を表示

IsUpper() 関数

IsUpper() 関数は値が英数大文字か判定します。

文法:

IsUpper(値) ---> 値が英数大文字ならば 1 を、そうでなければ 0 です。

用例:

see isupper("welcome") + nl +    # 0 を表示
    isupper("WELCOME")           # 1 を表示

IsXdigit() 関数

IsXdigit() 関数は値が十六進数文字か判定します。

文法:

IsXdigit(値) ---> 値が十六進数文字ならば 1 をそうでなければ 0 です。

用例:

see isxdigit("0123456789abcdef") + nl +  # 1 を表示
    isxdigit("123z")                     # 0 を表示

変換処理

文字列と数値の変換用関数です。

number()

string()

ascii()

char()

hex()

dec()

str2hex()

hex2str()

Number() 関数

Number() 関数または + 演算子は文字列を数値へ変換します。

文法:

Number(文字列) ---> 数値
0 + 文字列     ---> 数値

用例:

see number("5") + 5 + nl        # 10 を表示
see 0 + "10" + 2                # 12 を表示

String() 関数

String() 関数または + 演算子は数値を文字列へ変換します。

文法:

String(数値) ---> 文字列
"" + 数値    ---> 文字列

用例:

see string(5) + 5 + nl          # 55 を表示
see "" + 10 + 2                 # 102 を表示

Ascii() 関数

Ascii() 関数は文字から ASCII コードを取得します。

文法:

Ascii(文字) ---> ASCII コード

用例:

See ascii("m") + nl +   # 109 を表示
    ascii("M")          # 77 を表示

Char() 関数

Char() 関数は ASCII コードを文字へ変換します。

文法:

Char(ASCII コード) ---> 文字

用例:

See char(109) + nl +    # m を表示
    char(77)            # M を表示

Hex() 関数

Hex() 関数は十進数から十六進数へ変換します。

文法:

Hex(十進数) ---> 十六進数

用例:

See hex(10) + nl +      # a を表示
    hex(200)            # c8 を表示

Dec() 関数

Dec() 関数は十六進数から十進数へ変換します。

文法:

Dec(十六進数) ---> 十進数

用例:

See dec("a") + nl +     # 10 を表示
    dec("c8")           # 200 を表示

Str2hex() 関数

Str2hex() 関数は文字列の文字を十六進数文字へ変換します。

文法:

Str2hex(文字列) ---> 十六進数文字列

用例:

See str2hex("hello")    # 68656c6c6f を表示

Hex2str() 関数

Hex2str() 関数は十六進数文字を文字列へ変換します。

文法:

Hex2Str(十六進数文字列) ---> 文字列

用例:

See hex2str("68656c6c6f")       # hello を表示

算術関数

算術関数の用法です。

関数のリスト

このような算術関数が Ring にあります。

関数

説明

sin(x)

ラジアン x のサイン角度を返します。

cos(x)

ラジアン x のコサイン角度を返します。

tan(x)

ラジアン x のタンジェント角度を返します。

asin(x)

ラジアン表記によるアークサインの x の主値を返します。

acos(x)

ラジアン表記によるアークコサインの x の主値を返します。

atan(x)

ラジアン表記によるアークタンジェントの x の主値を返します。

atan2(y,x)

ラジアン [-pi,+pi] の区間にある、ラジアン表記によるアークタンジェントの x の主値を返します。

sinh(x)

ラジアン x の双曲線サインを返します。

cosh(x)

ラジアン x の双曲線コサインを返します。

tanh(x)

ラジアン x の双曲線タンジェントを返します。

exp(x)

e の x 乗値を返します。

log(x)

x の自然対数を返します (e を底とする)。

log(x,b)

b を底とする x の対数を返します

log10(x)

x の常用対数を返します (10 を底とする対数)。

ceil(x)

x 以上の最小整数値を返します。

floor(x)

x 以下の最大整数値を返します。

fabs(x)

x の絶対値を返します。

pow(x,y)

x に対する y の累乗を返します。

sqrt(x)

x の平方根を返します。

random(x)

[0,x] の範囲による乱数を返します。

srandom(x)

乱数生成器を初期化します。

unsigned(n,n,c)

符号なし数値で演算を実行します。

decimals(n)

浮動小数点数、倍精度数の小数点の後にある小数点以下の数値を決定します。

用例

See "Mathematical Functions" + nl
See "Sin(0) = " + sin(0) + nl
See "Sin(90) radians = " + sin(90) + nl
See "Sin(90) degree = " + sin(90*3.14/180) + nl

See "Cos(0) = " + cos(0) + nl
See "Cos(90) radians = " + cos(90) + nl
See "Cos(90) degree = " + cos(90*3.14/180) + nl

See "Tan(0) = " + tan(0) + nl
See "Tan(90) radians = " + tan(90) + nl
See "Tan(90) degree = " + tan(90*3.14/180) + nl

See "asin(0) = " + asin(0) + nl
See "acos(0) = " + acos(0) + nl
See "atan(0) = " + atan(0) + nl
See "atan2(1,1) = " + atan2(1,1) + nl

See "sinh(0) = " + sinh(0) + nl
See "sinh(1) = " + sinh(1) + nl
See "cosh(0) = " + cosh(0) + nl
See "cosh(1) = " + cosh(1) + nl
See "tanh(0) = " + tanh(0) + nl
See "tanh(1) = " + tanh(1) + nl

See "exp(0) = " + exp(0) + nl
See "exp(1) = " + exp(1) + nl
See "log(1) = " + log(1) + nl
See "log(2) = " + log(2) + nl
See "log10(1) = " + log10(1) + nl
See "log10(2) = " + log10(2) + nl
See "log10(10) = " + log10(10) + nl

See "Ceil(1.12) = " + Ceil(1.12) + nl
See "Ceil(1.72) = " + Ceil(1.72) + nl

See "Floor(1.12) = " + floor(1.12) + nl
See "Floor(1.72) = " + floor(1.72) + nl

See "fabs(1.12) = " + fabs(1.12) + nl
See "fabs(1.72) = " + fabs(1.72) + nl

See "pow(2,3) = " + pow(2,3) + nl

see "sqrt(16) = " + sqrt(16) + nl

実行結果:

Mathematical Functions
Sin(0) = 0
Sin(90) radians = 0.89
Sin(90) degree = 1.00
Cos(0) = 1
Cos(90) radians = -0.45
Cos(90) degree = 0.00
Tan(0) = 0
Tan(90) radians = -2.00
Tan(90) degree = 1255.77
asin(0) = 0
acos(0) = 1.57
atan(0) = 0
atan2(1,1) = 0.79
sinh(0) = 0
sinh(1) = 1.18
cosh(0) = 1
cosh(1) = 1.54
tanh(0) = 0
tanh(1) = 0.76
exp(0) = 1
exp(1) = 2.72
log(1) = 0
log(2) = 0.69
log10(1) = 0
log10(2) = 0.30
log10(10) = 1
Ceil(1.12) = 2
Ceil(1.72) = 2
Floor(1.12) = 1
Floor(1.72) = 1
fabs(1.12) = 1.12
fabs(1.72) = 1.72
pow(2,3) = 8
sqrt(16) = 4

Random() 関数

Random() 関数は乱数を生成します。また最大値の指定もできます (オプション扱い)。

文法:

Random(x) ---> [0,x] の範囲による乱数。

用例:

for x = 1 to 20
        see  "Random number : " + random() + nl +
             "Random number Max (100) : " + random(100) + nl
next

実行結果:

Random number : 31881
Random number Max (100) : 80
Random number : 5573
Random number Max (100) : 63
Random number : 2231
Random number Max (100) : 43
Random number : 12946
Random number Max (100) : 39
Random number : 22934
Random number Max (100) : 48
Random number : 4690
Random number Max (100) : 52
Random number : 13196
Random number Max (100) : 65
Random number : 30390
Random number Max (100) : 87
Random number : 4327
Random number Max (100) : 77
Random number : 12456
Random number Max (100) : 17
Random number : 28438
Random number Max (100) : 13
Random number : 30503
Random number Max (100) : 6
Random number : 31769
Random number Max (100) : 94
Random number : 8274
Random number Max (100) : 65
Random number : 14390
Random number Max (100) : 90
Random number : 28866
Random number Max (100) : 12
Random number : 24558
Random number Max (100) : 70
Random number : 29981
Random number Max (100) : 77
Random number : 12847
Random number Max (100) : 63
Random number : 6632
Random number Max (100) : 60

SRandom() 関数

SRandom() 関数は乱数生成器を初期化します。

文法:

SRandom(x)

Unsigned() 関数

Unsigned() 関数により符号なし整数を使えます。

文法:

Unsigned(nNum1,nNum2,cOperator)
        --> nNum1,nNum2 における cOperator の演算結果。

用例:

see oat_hash("hello") + nl

# ジェンキンス法によるハッシュ関数 - https://en.wikipedia.org/wiki/Jenkins_hash_function
func oat_hash cKey
        h = 0
        for x in cKey
                h = unsigned(h,ascii(x),"+")
                h = unsigned(h,unsigned(h,10,"<<"),"+")
                r = unsigned(h,6,">>")
                h = unsigned(h, r,"^")
        next
        h = unsigned(h,unsigned(h,3,"<<"),"+")
        h = unsigned(h,unsigned(h,11,">>"),"^")
        h = unsigned(h,unsigned(h,15,"<<"),"+")
        return h

実行結果:

3372029979.00

Decimals() 関数

Decimals() により浮動小数点数、倍精度数の小数点の後にある小数点以下の数値を決定できます。

文法:

Decimals(nDecimalsCount)

用例:

x = 1.1234567890123
for d = 0 to 14
        decimals(d)
        see x + nl
next

実行結果:

1
1.1
1.12
1.123
1.1235
1.12346
1.123457
1.1234568
1.12345679
1.123456789
1.1234567890
1.12345678901
1.123456789012
1.1234567890123
1.12345678901230

数値の桁間に _ を使うには

数値の桁間に‘_’を使うことができます。

用例:

x = 1_000_000
see type(x)+nl
see x+1+nl

実行結果:

NUMBER
100000001

数値の末尾に f を使うには

数値の末尾に‘f’を使うことができます。

用例:

x = 19.99f
see type(x) + nl

実行結果:

NUMBER

十六進数を使うには

十六進数は接頭辞に "0x" または "0X" を付けて記述します。

用例:

x = 0x10
? x             # 16
x = 0xff
? x             # 255
x = 0x0A
? x             # 10
? 0xFFFF        # 65535
? 0x0A + 1      # 10+1 = 11

ファイル

ファイル関数の用法です。

Read()

Write()

Dir()

Rename()

Remove()

Fopen()

Fclose()

Fflush()

Freopen()

Tempfile()

Tempname()

Fseek()

Ftell()

Rewind()

Fgetpos()

Fsetpos()

Clearerr()

Feof()

Ferror()

Perror()

Fgetc()

Fgets()

Fputc()

Fputs()

Ungetc()

Fread()

Fwrite()

Fexists()

Direxists()

Getpathtype()

数値とバイト

Read() 関数

Read() 関数はファイルの内容を読み取ります。

文法:

Read(cFileName) ---> ファイルの内容を文字列で返します。

用例:

see read("myfile.txt")

Read() 関数はバイナリファイルの読み取りもできます。

用例:

see read("myapp.exe")

ちなみに

Read() 関数で返された文字列を改行ごとに分割したリストへ一括変換するには str2list() 関数を使います。

Write() 関数

Write() 関数は文字列をファイルへ書き込みます。

文法:

Write(cFileName,cString)        # 文字列 cString をファイル cFileName へ書き込みます。

Write() 関数はバイナリファイルの書き込みもできます。

用例:

# ファイルのコピー
cFile = read("ring.exe")
write("ring2.exe",cFile)

ちなみに

リストを文字列へ変換して書き込むには list2str() 関数を使います。

Dir() 関数

Dir() 関数はフォルダの内容 (ファイルとサブフォルダ) を取得します。

文法:

Dir(cFolderPath) ---> ファイルとサブフォルダの内容をリストで返します。

この関数はリストを返します。リストごとの項目は以下のとおりです。

ファイル / サブフォルダの名前

種類 (0 = ファイル , 1 = フォルダ、ディレクトリ)

用例:

see "Testing DIR() " + nl
mylist = dir("C:\myfolder")
for x in mylist
        if x[2]
                see "Directory : " + x[1] + nl
        else
                see "File : " + x[1] + nl
        ok
next
see "Files count : " + len(mylist)

Rename() 関数

Rename() 関数はファイルを名称変更します。

文法:

Rename(cOldFileName,cNewFileName) ---> 数値 ( 状態: 成功 (0) , エラー (-1) )

用例:

rename("file.txt","help.txt")

Remove() 関数

Remove() 関数はファイルを削除します。

文法:

Remove(cFileName)

用例:

remove("test.txt")

Fopen() 関数

Fopen() 関数はファイルを開きます。

文法:

Fopen(cFileName,cMode) ---> ファイルハンドル

モード

説明

“r”

読み取り (ファイルが存在している必要があります)

“w”

書き込み (空のファイルを作成、上書き)

“a”

追記 (ファイルが存在しない場合は作成)

“r+”

更新 (読み取り、書き込み)

“w+”

空のファイルを作成 (読み取り、書き込み)

“a+”

読み取りと追記

Fclose() 関数

fopen() 関数でファイルを開いて処理を終えた後は、 Fclose() 関数でファイルを閉じます。

文法:

Fclose(ファイルハンドル)

Fflush() 関数

Fflush() 関数はストリームの出力バッファを追い出します (flush)。

文法:

Fflush(ファイルハンドル)

Freopen() 関数

同じファイルハンドルで別のファイルを開きますが、以前に開いていたファイルを併せて閉じます。

文法:

Freopen(cFileName,cMode,file handle) ---> ファイルハンドル

用例:

freopen("myprogoutput.txt","w+",stdout)
see "welcome" + nl
for x = 1 to 10
        see x + nl
next

##
## 必読 : https://ja.wikipedia.org/wiki/デバイスファイル#MS-DOS・Windows
## このコードには移植性がありません。使用前に iswindows() で動作環境を
## 判定してから各オペレーティングシステム専用のコードを書いてください。
##

freopen("CON","w",stdout)   # Microsoft Windows では
see "Done" + nl             # もう一度、標準出力へ表示

実行結果:

# 標準出力へ出力
Done

# ファイルへの出力 : myprogoutput.txt
welcome
1
2
3
4
5
6
7
8
9
10

Tempfile() 関数

Tempfile() 関数は一時ファイルを作成します (バイナリ形式)。

ファイルはストリームが閉じられたときに自動で削除されます。

文法:

TempFile() ---> ファイルハンドル

Tempname() 関数

Tempname() 関数は一時ファイル名を生成します。

生成された名前は唯一無二であり、既存ファイル名とは一切異なります。

文法:

Tempname() ---> ファイル名として生成された文字列

Fseek() 関数

Fseek() 関数はストリームにおけるファイル位置を設定します。

文法:

Fseek(ファイルハンドル, nOffset, nWhence) ---> 0 ならば成功です。

この表は nWhence の値を表したものです。

値

説明

0

ファイルの先頭

1

現在の位置

2

ファイルの末尾

Ftell() 関数

Ftell() 関数 はストリームにおける現在のファイル位置を検出します。

文法:

Ftell(ファイルハンドル) ---> 数値によるファイルの位置です。

Rewind() 関数

Rewind() 関数はファイルの位置を先頭へ設定します。

文法:

Rewind(ファイルハンドル)

Fgetpos() 関数

Fgetpos() 関数はハンドルにおける現在のファイル位置を取得します。

文法:

Fgetpos(ファイルハンドル) ---> 位置ハンドル

Fsetpos() 関数

Fsetpos() 関数は現在のファイルの位置を設定します。

文法:

Fsetpos(ファイルハンドル,位置ハンドル)

Clearerr() 関数

clearerr () 関数は EOF エラーとエラーインジケーターをストリームから消去します。

文法:

Clearerr(ファイルハンドル)

Feof() 関数

Feof() 関数は EOF インジケーターをテストします。

文法:

Feof(ファイルハンドル) ---> EOF ならば 1 を、そうでなければ 0 を返します。

Ferror() 関数

Ferror() 関数 はエラーインジケーターをテストします。

文法:

Ferror(ファイルハンドル) ---> エラーならば 1 を、そうでなければ 0 を返します。

Perror() 関数

Perror() 関数は標準出力エラーへエラーメッセージを表示します。

文法:

Perror(cErrorMessage)

Fgetc() 関数

Fgetc() 関数はストリームから次の文字を取得します。

文法:

Fgetc(ファイルハンドル) ---> 文字または EOF を返します。

Fgets() 関数

Fgets() 関数はストリームから新しい行を読み取ります。

文法:

Fgets(ファイルハンドル,nSize) ---> 文字列

この関数は nSize 文字まで読み取る、または新しい行を読み取るか EOF になると停止します。

Fputc() 関数

Fputc() 関数は文字をストリームへ書き込みます。

文法:

Fputc(ファイルハンドル,cChar)

Fputs() 関数

Fputs() 関数は文字列をストリームへ書き込みます。

文法:

Fputs(ファイルハンドル,cString)

Ungetc() 関数

Ungetc() 関数は文字をストリームへプッシュします。

文字は次回の読み取りから利用できます。

文法:

Ungetc(ファイルハンドル,文字)

Fread() 関数

Fread() 関数はデータをストリームへ読み込みます。

文法:

Fread(ファイルハンドル,nSize)

Fwrite() 関数

Fwrite() 関数はデータをストリームへ書き込みます。

文法:

Fwrite(ファイルハンドル,cString)

Fexists() 関数

Fexists() 関数はファイルの存在を確認します。

文法:

Fexists(cFileName) ---> ファイルがあれば 1 を返します。

用例:

see fexists("c:\mahmoud\apps\ring\ring.exe") + nl +
    fexists("c:\mahmoud\apps\ring\ring2.exe") + nl

実行結果:

1
0

Direxists() 関数

Direxists() 関数はディレクトリの存在を確認します。

文法:

Direxists(cDirPath) ---> ディレクトリがあれば 1 を返します。

用例:

? direxists("c:\ring") + nl +
  direxists("c:\ring\bin2")

実行結果:

1
0

Getpathtype() 関数

Getpathtype() 関数は指定されたパス (ファイルまたはディレクトリ) の種類を確認します。

文法:

Getpathtype(cPath) ---> 0 ならばパスは存在しません。
                        1 ならば既存のファイルと一致しています。
                        2 ならば既存のディレクトリと一致しています。
                        -1 ならばパスは存在しますが
                           種類は不明です (例としてはパイプ)

用例:

? Getpathtype("c:\ring\bin\ring.exe") + nl +
  Getpathtype("c:\ring") + nl +
  Getpathtype("c:\ring\bin2")

実行結果:

1
2
0

用例

このプログラムはファイル関数をテストします。

See "testing file functions" + nl

See "open file" + nl
fp = fopen(exefolder() + "../tests/scripts/s65.ring","r")

See "reopen" + nl
fp = freopen(exefolder() + "../tests/scripts/s78.ring","r",fp)
See "close file" + nl
fclose(fp)

see "temp file" + nl
fp = tempfile()
fclose(fp)

see "temp name" + nl
see tempname() + nl

remove(exefolder() + "../tests/scripts/mytest2.txt")
write(exefolder() + "../tests/scripts/tests1.txt","hello")
rename(exefolder() + "../tests/scripts/test1.txt",exefolder() +
                                        "../tests/scripts/mytests2.txt")

see "print file" + nl
fp = fopen(exefolder() + "../samples/fromdoc/filefuncs.ring","r")
r = fgetc(fp)
while isstring(r)
                see r
                r = fgetc(fp)
end
fclose(fp)

see nl+"print line from the file" + nl
fp = fopen(exefolder() + "../samples/fromdoc/filefuncs.ring","r")
r = fgets(fp,33)
see r + nl
fclose(fp)
fp = fopen(exefolder() + "../tests/scripts/test78.txt","w+")
fseek(fp,0,2) # ファイルの末尾へ移動
fputc(fp,"t")
fputc(fp,"e")
fputc(fp,"s")
fputc(fp,"t")
fputs(fp,"tests2")
fclose(fp)

see "print file" + nl
see read(exefolder() + "../tests/scripts/test78.txt")

fp = fopen(exefolder() + "../tests/scripts/test78.txt","r")
see "testing ungetc() " + nl
for x = 1 to 3
                r = fgetc(fp)
                see r + nl
                ungetc(fp,r)
next
fclose(fp)

see "testing fread() " + nl
fp = fopen(exefilename(),"rb")
r = fread(fp,100)
see r + nl
fclose(fp)

see "testing fwrite() " + nl
fp = fopen(exefolder() + "../tests/scripts/test1.txt","wb")
fwrite(fp,r)
fclose(fp)

この用例はバイナリファイルの内容を表示します。

see "Testing: fread()" +" FileName: "+ exefilename() +nl +nl
fp = fopen(exefilename(),"rb")
r = fread(fp,800)
for n =1 to len(r)
        if isprint(substr(r, n, 1))
                see substr(r, n, 1)
        else
                see "."
        ok
        ### 1 行あたり 80 文字
        if n % 80 = 0
                see nl
        ok
next
fclose(fp)

数値とバイト

この関数は数値とバイトとの間で変換を行います。

Int2Bytes()

Float2Bytes()

Double2Bytes()

Bytes2Int()

Bytes2Float()

Bytes2Double()

用例:

see "Test Int2Bytes() and Bytes2Int() - Value : 77" + nl
r = Int2Bytes(77)
see "Int Size : " + len(r) + nl
see r + nl
see Bytes2Int(r) + nl
see "Test Float2Bytes() and Bytes2Float() - Value 77.12" + nl
r = Float2Bytes(77.12)
see "Float Size : " + len(r) + nl
see r + nl
see Bytes2Float(r) + nl
see "Test Double2Bytes() and Bytes2Double() - Value 9999977.12345" + nl
r = Double2Bytes(9999977.12345)
see "Double Size : " + len(r) + nl
see r + nl
decimals(5)
see Bytes2Double(r) + nl

システム関数

システム関数の用法です。

System()

SysGet()

SysSet()

SysUnset()

IsMSDOS()

IsWindows()

IsWindows64()

IsUnix()

IsMacOSX()

IsLinux()

IsFreeBSD()

IsAndroid()

GetArch()

Windowsnl()

コマンドライン引数の取得

使用中のソースファイル名を取得

CurrentDir()

ExeFileName()

ChDir()

ExeFolder()

Version()

Shutdown()

System() 関数

System() 関数はシステムコマンドを実行します。

文法:

System(cCommand)

用例:

System("myapp.exe")     # myapp.exe の実行
System("ls")            # ファイルのリストを表示

SysGet() 関数

SysGet() 関数は環境変数を取得します。

文法:

SysGet(cVariable)

用例:

see sysget("path")              # システムパスの情報を表示

SysSet() 関数

SysSet() 関数は指定された環境変数を定義します。

SysSet(cVariable, cValue) ---> 1 ならば成功であり 0 ならば失敗です。

SysUnset() 関数

SysUnset() 関数は指定された環境変数を削除します。

SysUnset(cVariable) ---> 1 ならば成功であり 0 ならば失敗です。

IsMSDOS() 関数

IsMSDOS() 関数はオペレーティングシステムが MS-DOS か確認します。

文法:

IsMSDOS()
        → オペレーティングシステムが MS-DOS ならば 1 を、そうでなければ 0 を返します。

IsWindows() 関数

IsWindows() 関数はオペレーティングシステムが Windows か確認します。

文法:

IsWindows()
        → オペレーティングシステムが Windows ならば 1 を、そうでなければ 0 を返します。

IsWindows64() 関数

IsWindows64() 関数はオペレーティングシステムが 64bit 版の Windows か確認します。

文法:

IsWindows64()
        → オペレーティングシステムが Windows64 ならば 1 を、そうでなければ 0 を返します。

IsUnix() 関数

IsUnix() 関数はオペレーティングシステムが UNIX か確認します。

文法:

IsUnix()
        → オペレーティングシステムが UNIX ならば 1 を、そうでなければ 0 を返します。

IsMacOSX() 関数

IsMacOSX() 関数はオペレーティングシステムが macOS か確認します。

文法:

IsMacOSX()
        → オペレーティングシステムが macOS ならば 1 を、そうでなければ 0 を返します。

IsLinux() 関数

IsLinux() 関数はオペレーティングシステムが Linux か確認します。

文法:

IsLinux()
        → オペレーティングシステムが Linux ならば 1 を、そうでなければ 0 を返します。

IsFreeBSD() 関数

IsFreeBSD() 関数はオペレーティングシステムが FreeBSD か確認します。

文法:

IsFreeBSD()
        → オペレーティングシステムが FreeBSD ならば 1 を、そうでなければ 0 を返します。

IsAndroid() 関数

IsAndroid() 関数はオペレーティングシステムが Android か確認します。

文法:

IsAndroid()
        → オペレーティングシステムが Android ならば 1 を、そうでなければ 0 を返します。

用例

see "IsMSDOS()     --> " + ismsdos()     + nl
see "IsWindows()   --> " + iswindows()   + nl
see "IsWindows64() --> " + iswindows64() + nl
see "IsUnix()      --> " + isunix()      + nl
see "IsMacOSX()    --> " + ismacosx()    + nl
see "IsLinux()     --> " + islinux()     + nl
see "IsFreeBSD()   --> " + isfreebsd()   + nl
see "IsAndroid()   --> " + isandroid()   + nl

実行結果:

IsMSDOS()     --> 0
IsWindows()   --> 1
IsWindows64() --> 0
IsUnix()      --> 0
IsMacOSX()    --> 0
IsLinux()     --> 0
IsFreeBSD()   --> 0
IsAndroid()   --> 0

GetArch() 関数

GetArch() 関数は Ring 実行可能ファイルが動作しているアーキテクチャ名を検出します。

文法:

GetArch() ---> cString (Ring 実行可能ファイルが動作しているアーキテクチャ名)

利用できる値:

x86
x64
arm64
arm
unknown

用例:

switch getarch()
on "x86"
        ? "x86 32bit アーキテクチャ"
on "x64"
        ? "x64 64bit アーキテクチャ"
on "arm64"
        ? "ARM64 64bit アーキテクチャ"
on "arm"
        ? "ARM 32bit アーキテクチャ"
other
        ? "Unknown アーキテクチャ"
off

Windowsnl() 関数

Windowsnl() 関数は Windows の改行文字を取得します。

文法:

WindowsNL() → CR+LF = CHAR(13) + CHAR(10) から構成される文字列

用例:

cStr = read("input.txt")

if iswindows()
        cStr = substr(cStr,windowsnl(),nl)
ok

aList = str2list(cStr)
# 課題 - リストの項目処理で "for in" を使用する
cStr = list2str(aList)

if iswindows()
        cStr = substr(cStr,nl,windowsnl())
ok

write("ouput.txt",cStr)

コマンドライン引数の取得

Ring スクリプトへ渡されたコマンドライン引数を得るには、リスト形式の変数 sysargv を使用します。

用例:

see copy("=",30) + nl
see "Command Line Parameters" + nl
see "Size : " + len(sysargv) + nl
see sysargv
see copy("=",30) + nl
if len(sysargv) < 4 return ok
nStart = sysargv[3]
nEnd = sysargv[4]
for x = nStart to nEnd
        see x + nl
next

実行結果:

c:\mahmoud\apps\ring>ring tests\syspara.ring 1 10
==============================
Command Line Parameters
Size : 4
ring
tests\syspara.ring
1
10
==============================
1
2
3
4
5
6
7
8
9
10

使用中のソースファイル名を取得

filename() 関数は現在使用中のソースファイル名 (*.ring) を取得します。

文法:

filename() → この文字列は現在使用中のソースファイル名です。

用例:

see "Active Source File Name : " + filename() + nl

実行結果:

Active Source File Name : tests\filename.ring

用例:

if sysargv[2] = filename()
        see "I'm the main program file!" + nl
        # ここでテスト実行ができます！
else
        see "I'm a sub file in a program" + nl
ok

PrevFileName() 関数

PrevFileName() 関数は以前使用中のソースファイル名を取得します。

「以前使用中のファイル」とは、呼び出し元の関数が存在するファイル、または PrevFileName() を呼び出す前に呼び出された関数が存在するファイルです。

文法:

prevfilename() → この文字列は以前使用中のソースファイル名です。

用例:

この関数は stdlib.ring の PrevFileName() により「呼び出し元にある関数が存在するファイル」が「プログラムのメインソース」であるか判定をします。

Func IsMainSourceFile
        if PrevFileName() = sysargv[2]
                return true
        ok
        return false

CurrentDir() 関数

現在のディレクトリをパスを返します。

文法:

CurrenDir() → この文字列は現在のディレクトリのパスです。

ExeFileName() 関数

Ring の実行可能ファイル名を返します。

文法:

exefilename() → この文字列は Ring の実行可能ファイル名です。

ChDir() 関数

現在のディレクトリを変更します。

文法:

ChDir(cNewPath)

ExeFolder() 関数

Ring の実行可能ファイルがあるパスを返します。

文法:

exefolder() → この文字列は Ring の実行可能ファイルがあるパスです。

Version() 関数

Ring のバージョン情報を返します。

文法:

version() → この文字列は Ring のバージョンです。

実行結果:

1.14

Shutdown() 関数

アプリケーションを閉じます。

文法:

shutdown(nStatus) → アプリケーションを閉じます。

NofProcessors() 関数

NofProcessors() 関数はシステムに搭載されている CPU の論理プロセッサ数を検出します。

文法:

NofProcessors() ---> nProcessors

用例:

? NofProcessors()

Eval() とデバッグ

下記の用法です。

Try/Catch/Done によるエラー処理

Eval() 関数

Raise() 関数

Assert() 関数

Try/Catch/Done

文法:

Try
        ステートメント...
Catch
        ステートメント...
Done

まず Try ブロックのステートメントが実行されます。そしてエラーが発生すると catch ブロックのステートメントが実行されます。

catch ブロックの内側では変数 cCatchError でエラーメッセージを取得できます。

用例:

Try
        see 5/0
Catch
        see "Catch!" + nl + cCatchError
Done

実行結果:

Catch!
Error (R1) : Cann't divide by zero !

Eval() 関数

Eval() 関数は実行時に文字列からコードを実行します。

文法:

Eval(cCode)

用例:

Eval("nOutput = 5+2*5 " )
See "5+2*5 = " + nOutput + nl
Eval("for x = 1 to 10 see x + nl next")
Eval("func test see 'message from test!' ")
test()

実行結果:

5+2*5 = 15
1
2
3
4
5
6
7
8
9
10
message from test!

Return 命令で値を返せます。

用例:

see Eval("return 5*5")

実行結果:

25

Raise() 関数

Raise() 関数は例外を発生します。

文法:

Raise(cErrorMessage)

この関数はエラーメッセージを表示した後にプログラムを終了します。

raise() 関数で生成された例外は Try/Catch/Done により回避できます。

用例:

nMode = 10

if nMode < 0 or nMode > 5
        raise("Error : nMode not in the range 1:4")
ok

実行結果:

Line 4 Error : nMode not in the range 1:4
In raise in file tests\raise.ring

用例:

try
        testmode(6)
catch
        see "avoid raise!"
done

testmode(-1)

func testmode nMode

        if nMode < 0 or nMode > 5
                raise("Error : nMode not in the range 1:4")
        ok

実行結果:

avoid raise!
Line 12 Error : nMode not in the range 1:4
In raise In function testmode() in file tests\raise2.ring
called from line 7  in file tests\raise2.ring

Assert() 関数

Assert() 関数はコードの実行前に条件をテストします。

テストに失敗した場合は、アサートの条件を有するエラーメッセージを表示後にプログラムを終了します。

文法:

Assert( 条件 )

用例:

x = 10
assert( x = 10)
assert( x = 100 )

実行結果:

Line 3 Assertion Failed!
In assert in file tests\assert.ring

デモプログラム

デモプログラムを紹介します。

対話型プログラミング言語シェル

メインメニュー

対話型プログラミング言語シェル

このプログラムでは対話型プログラミング環境を作成します。

while true
        see nl + "code:> "
        give cCode
        try
                eval(cCode)
        catch
                see cCatchError
        done
end

実行結果:

code:> see "hello world"
hello world
code:> for x = 1 to 10 see x + nl next
1
2
3
4
5
6
7
8
9
10

code:> func test see "Hello from test" + nl

code:> test()
Hello from test

code:> bye

メインメニュー

用例:

# デモプログラム

while true

        see "

        Main Menu
        ===========
        [1] Say Hello
        [2] Sum two numbers
        [3] Stars
        [4] Fact
        [5] Exit

        " give nMenu see nl

        # IF-BUT-ELSE-OK の代わりに Switch-ON-Other-OFF を使えます。

        Switch nMenu
        On 1 sayhello()
        On 2 Sum()
        On 3 Stars()
        On 4
                see "Enter Number : " give x
                see "Output : "

                Try
                        see Fact(number(x))
                Catch
                        see "Error in parameters!" + nl
                Done

        On "5" return
        Other see "bad option" + nl
        Off

end

func sayhello
        see "Enter your name ? " give fname
        see "Hello " + fname + nl

func sum
        see "number 1 : " give num1 see "number 2 : " give num2
        see "Sum : " see 0 + num1 + num2

func stars
        for x = 1 to 10
                see space(8)
                for y = 1 to x see "*" next see nl
        next

func fact x if x = 0 return 1 else return x * fact(x-1) ok

func space x y = "" for t=1 to x y += " " next return y

実行結果:

        Main Menu
        ===========
        [1] Say Hello
        [2] Sum two numbers
        [3] Stars
        [4] Fact
        [5] Exit

        1

Enter your name ? Mahmoud Fayed
Hello Mahmoud Fayed

        Main Menu
        ===========
        [1] Say Hello
        [2] Sum two numbers
        [3] Stars
        [4] Fact
        [5] Exit

        2

number 1 : 3
number 2 : 4
Sum : 7

        Main Menu
        ===========
        [1] Say Hello
        [2] Sum two numbers
        [3] Stars
        [4] Fact
        [5] Exit

        3

        *
        **
        ***
        ****
        *****
        ******
        *******
        ********
        *********
        **********

        Main Menu
        ===========
        [1] Say Hello
        [2] Sum two numbers
        [3] Stars
        [4] Fact
        [5] Exit

        4

Enter Number : 5
Output : 120

        Main Menu
        ===========
        [1] Say Hello
        [2] Sum two numbers
        [3] Stars
        [4] Fact
        [5] Exit

        5

ODBC 関数

ODBC 関数の用法です。

odbc_init()

odbc_drivers()

odbc_datasources()

odbc_close()

odbc_connect()

odbc_disconnect()

odbc_execute()

odbc_colcount()

odbc_fetch()

odbc_getdata()

odbc_tables()

odbc_columns()

odbc_autocommit()

odbc_commit()

odbc_rollback()

この関数の使用前に odbclib.ring ライブラリを読み込みます。

load "odbclib.ring"
# ODBC 関数の使用

odbc_init() 関数

odbc_init() 関数はハンドルを作成します。

文法:

odbc_init() ---> ODBC ハンドル

odbc_drivers() 関数

odbc_drivers() 関数は ODBC ドライバのリストを取得します。

文法:

odbc_drivers(ODBC ハンドル) ---> ドライバのリスト

odbc_datasources() 関数

odbc_datasources() 関数は ODBC データソースのリストを取得します。

文法:

odbc_datasources(ODBC ハンドル) ---> データソースのリスト

odbc_close() 関数

ODBC_Close() 関数は ODBC 関数の使用終了後にリソースを解放します。

文法:

odbc_close(ODBC ハンドル)

ODBC ドライバのリストを表示

この用例は ODBC ドライバのリストを表示します。

See "ODBC test 1" + nl
oODBC = odbc_init()
See "Drivers " + nl
see odbc_drivers(oODBC)
odbc_close(oODBC)

実行結果:

ODBC test 1
Drivers
Microsoft Access-Treiber (*.mdb) - SQLLevel=0
Driver do Microsoft Paradox (*.db ) - SQLLevel=0
Driver do Microsoft Excel(*.xls) - SQLLevel=0
Microsoft Text Driver (*.txt; *.csv) - SQLLevel=0
Driver da Microsoft para arquivos texto (*.txt; *.csv) - SQLLevel=0
Microsoft dBase-Treiber (*.dbf) - SQLLevel=0
SQL Server - CPTimeout=60
Microsoft Excel Driver (*.xls) - SQLLevel=0
Driver do Microsoft dBase (*.dbf) - SQLLevel=0
Microsoft Paradox-Treiber (*.db ) - SQLLevel=0
Microsoft ODBC for Oracle - CPTimeout=120
Microsoft Text-Treiber (*.txt; *.csv) - SQLLevel=0
Microsoft Excel-Treiber (*.xls) - SQLLevel=0
Microsoft Access Driver (*.mdb) - SQLLevel=0
Driver do Microsoft Access (*.mdb) - SQLLevel=0
Microsoft Paradox Driver (*.db ) - SQLLevel=0
Microsoft dBase Driver (*.dbf) - SQLLevel=0
Microsoft Access Driver (*.mdb, *.accdb) - UsageCount=3
Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) - UsageCount=3
Microsoft Access Text Driver (*.txt, *.csv) - UsageCount=3
SQL Server Native Client 10.0 - UsageCount=1
SQL Server Native Client 11.0 - UsageCount=1
Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx) - UsageCount=3
Microsoft Access Paradox Driver (*.db) - UsageCount=3
MySQL ODBC 5.3 ANSI Driver - UsageCount=1
MySQL ODBC 5.3 Unicode Driver - UsageCount=1
ODBC Driver 11 for SQL Server - UsageCount=1
Lianja ODBC Driver - CPTimeout=60
Microsoft Visual FoxPro Driver - UsageCount=1
Microsoft Visual FoxPro-Treiber - UsageCount=1
Driver para o Microsoft Visual FoxPro - UsageCount=1
Microsoft FoxPro VFP Driver (*.dbf) - UsageCount=1

ODBC データソースのリストを表示

この用例は ODBC データソースのリストを表示します。

See "ODBC test 2" + nl
pODBC = odbc_init()
See "Data Sources " + nl
see odbc_datasources(pODBC)
odbc_close(pODBC)

実行結果:

ODBC test 2
Data Sources
Excel Files - Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
MS Access Database - Microsoft Access Driver (*.mdb, *.accdb)
Customer - Microsoft Access Driver (*.mdb)
IdCardData - Microsoft Access Driver (*.mdb)
MyProjectData2 - Microsoft Access Driver (*.mdb)
MyData - Microsoft Access Driver (*.mdb)
MonprojetData - Microsoft Access Driver (*.mdb)
dBASE Files - Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
myvfpdata - Microsoft Visual FoxPro Driver
FACTORYDATA - Microsoft Access Driver (*.mdb)
TRAININGSYSDATA - Microsoft Access Driver (*.mdb)
RVCSYSDATASQLDB - SQL Server Native Client 11.0
PWCTRVCDATA - Microsoft Access Driver (*.mdb)
MyCompany - Microsoft Access Driver (*.mdb)
HCS - Microsoft Access Driver (*.mdb)
HCS2 - Microsoft Access Driver (*.mdb, *.accdb)
MyProjectData - Microsoft Access Driver (*.mdb)
Xtreme Sample Database 2008 - Microsoft Access Driver (*.mdb)
Lianja_Southwind - Lianja ODBC Driver
Visual FoxPro Database - Microsoft Visual FoxPro Driver
Visual FoxPro Tables - Microsoft Visual FoxPro Driver

odbc_connect() 関数

odbc_connect() 関数はデータベースへ接続します。

文法:

odbc_connect(ODBC ハンドル, 接続文字列)

odbc_disconnect() 関数

odbc_disconnect() 関数はデータベースの接続を閉じます。

文法:

odbc_disconnect(ODBC ハンドル)

接続の開始と終了

この用例はデータベースへ接続後にデータベースへの接続を閉じます。

See "ODBC test 3" + nl
pODBC = odbc_init()
See "Connect to database" + nl
see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
See "disconnect" + nl
odbc_disconnect(pODBC)
See "Close database..." + nl
odbc_close(pODBC)

実行結果:

ODBC test 3
Connect to database
1
disconnect
Close database...

odbc_execute() 関数

odbc_execute() 関数はデータベースで SQL ステートメントを実行します。

文法:

odbc_execute(ODBC ハンドル, cSQLStatement)

odbc_colcount() 関数

odbc_colcount() 関数はクエリの結果にあるカラム数を取得します。

文法:

odbc_colcount(ODBC ハンドル) ---> 数値によるカラム数

odbc_fetch() 関数

odbc_fetch() 関数はクエリ結果から列をフェッチします。

文法:

odbc_fetch(ODBC ハンドル)

odbc_getdata() 関数

odbc_getdata() 関数はフェッチ済みの列からカラム値を取得します。

文法:

odbc_getdata(ODBC ハンドル, nColumnNumber) ---> カラムの値

クエリの実行と結果の表示

この用例はクエリの実行後にクエリの結果を表示します。

See "ODBC test 4" + nl
pODBC = odbc_init()
See "Connect to database" + nl
see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
See "Select data" + nl
see odbc_execute(pODBC,"select * from person") + nl
nMax = odbc_colcount(pODBC)
See "Columns Count : " + nMax + nl
while odbc_fetch(pODBC)
        See "Row data:" + nl
        for x = 1 to nMax
                see odbc_getdata(pODBC,x) + " - "
        next
end
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

odbc_tables() 関数

odbc_tables() 関数はテーブル内にあるテーブルのリストを取得します。

この関数の結果はクエリ結果を取得するときにアクセスできます。

文法:

odbc_tables(ODBC ハンドル)

用例:

See "ODBC test - Get Database Tables" + nl
pODBC = odbc_init()
See "Connect to database" + nl
odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
See "Select data" + nl
odbc_tables(pODBC) + nl
nMax = odbc_colcount(pODBC)
See "Columns Count : " + nMax + nl
while odbc_fetch(pODBC)
        for x = 1 to nMax
                see odbc_getdata(pODBC,x)
                if x != nMax see " - " ok
        next
        See nl
end
See "Close database..."
odbc_disconnect(pODBC)
odbc_close(pODBC)

実行結果:

ODBC test - Get Database Tables
Connect to database
Select data
Columns Count : 5
.\test - NULL - Customer - TABLE - NULL
.\test - NULL - employee - TABLE - NULL
.\test - NULL - person - TABLE - NULL
.\test - NULL - tel - TABLE - NULL
Close database...

odbc_columns() 関数

odbc_columns() 関数はテーブル内にあるカラムのリストを取得します。

文法:

odbc_columns(ODBC ハンドル, cTableName)

用例:

See "ODBC test - Get Table Columns" + nl
pODBC = odbc_init()
See "Connect to database" + nl
odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
See "Get Columns inside the Person Table" + nl
odbc_columns(pODBC,"person") + nl
while odbc_fetch(pODBC)
        see odbc_getdata(pODBC,4) + nl
end
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

実行結果:

ODBC test - Get Table Columns
Connect to database
Get Columns inside the Person Table
FIRST
LAST
STREET
CITY
STATE
ZIP
HIREDATE
MARRIED
AGE
SALARY
NOTES
Close database...

odbc_autocommit() 関数

odbc_autocommit() 関数は自動コミット機能を有効または無効化します。

文法:

odbc_autocommit(ODBC ハンドル, lStatus)   # lStatus には True または False を指定します。

odbc_commit() 関数

odbc_commit() 関数はデータベースのコミット更新をします。

文法:

odbc_commit(ODBC ハンドル)

odbc_rollback() 関数

odbc_rollback() 関数はデータベースのロールバック更新をします。

文法:

odbc_rollback(ODBC ハンドル)

トランザクションおよびコミットとロールバックの用法

用例:

See "ODBC Test - Transactions and using Commit and Rollback" + nl
pODBC = odbc_init()
See "Connect to database" + nl
see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
see "insert data..." + nl
odbc_autocommit(pODBC,0)
for x = 1 to 10000
        odbc_execute(pODBC,"insert into tel values (" + x + ",'mahmoud')")
next
for x = 10001 to 15000
        odbc_execute(pODBC,"insert into tel values (" + x + ",'samir')")
next
odbc_commit(pODBC)

for x = 15001 to 20000
        odbc_execute(pODBC,"insert into tel values (" + x + ",'fayed')")
next

ODBC_ROLLBACK(pODBC)
odbc_execute(pODBC,"insert into tel values (" + x + ",'fayed')")
odbc_commit(pODBC)

See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

実行結果:

ODBC Test - Transactions and using Commit and Rollback
Connect to database
1
insert data...
Close database...

イメージの保存と復元

この用例ではデータベースのイメージを保存します。

See "ODBC test - Save image in the database" + nl
pODBC = odbc_init()
See "Connect to database" + nl
see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
see "Read Image File..." + nl
cFile = str2hex(read("tests\mahmoud.jpg"))
see "size " + len(CFile)+nl
see "Save image in the database..." + nl
stmt = "insert into tel values (20000,'mahmoud','" + cFile + "');"
odbc_execute(pODBC,stmt)
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

この用例ではデータベースのイメージを復元します。

See "ODBC Test - Restore image from the database" + nl
pODBC = odbc_init()
See "Connect to database" + nl
see odbc_connect(pODBC,"DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
See "Select data" + nl
see odbc_execute(pODBC,"select * from tel where id = 20000") + nl
nMax = odbc_colcount(pODBC)
See "Columns Count : " + nMax + nl
if odbc_fetch(pODBC)
        See "Write image file" + nl
        write("tests\great.jpg",hex2str( odbc_getdata(pODBC,3) ) )
ok
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

MySQL 関数

MySQL 関数の用法です。

MySQL_Info()

MySQL_Init()

MySQL_Error()

MySQL_Connect()

MySQL_Close()

MySQL_Query()

MySQL_Insert_ID()

MySQL_Result()

MySQL_Next_Result()

MySQL_Columns()

MySQL_Result2()

MySQL_Escape_String()

MySQL_AutoCommit()

MySQL_Commit()

MySQL_Rollback()

この関数の使用前に mysqllib.ring ライブラリを読み込みます。

load "mysqllib.ring"
# MySQL 関数の使用

MySQL_Info() 関数

MySQL_Info() 関数は MySQL クライアントのバージョンを取得します。

文法:

MySQL_Info() ---> MySQL のバージョン文字列

用例:

see "MySQL Client Version : " + mysql_info()

実行結果:

MySQL Client Version : 6.1.5

MySQL_Init() 関数

MySQL_Init() 関数により MySQL クライアントを使用します。

文法:

MySQL_Init() ---> MySQL ハンドル

MySQL_Error() 関数

MySQL_Error() 関数は MySQL クライアントからエラーメッセージを取得します。

文法:

MySQL_Error(MySQL ハンドル) ---> エラーメッセージの文字列

MySQL_Connect() 関数

MySQL_Connect() 関数は MySQL データベースのサーバーへ接続します。

文法:

MySQL_Connect(MySQL ハンドル, cServer, cUserName, cPassword) ---> lStatus

MySQL_Close() 関数

MySQL_Close() 関数は MySQL データベースの接続を閉じます。

文法:

MySQL_Close(MySQL ハンドル)

MySQL_Query() 関数

MySQL_Query() 関数は SQL のクエリを実行します。

文法:

MySQL_Query(MySQL ハンドル, cSQLQuery)

データベースの作成

この用例は MySQL サーバーへ接続後に新しいデータベースを作成します。

See "MySQL Test - Create Database" + nl
con = mysql_init()

See "Connect" + nl
if mysql_connect(con,"localhost","root","root") = 0
        see "Cann't connect" + nl
        see "Error : " + mysql_error(con) + nl
        mysql_close(con)
        bye
ok

See "Create Database..." + nl
mysql_query(con,"CREATE DATABASE mahdb")

See "Close Connection" + nl
mysql_close(con)

実行結果:

MySQL Test - Create Database
Connect
Create Database...
Close Connection

テーブルの作成とデータの挿入

この用例は新しいテーブルの作成、およびレコードの挿入を行います。

func main
        see "Create Table and Insert Records" + nl
        con = mysql_init()

        see "Connect" + nl
        if mysql_connect(con, "localhost", "root", "root","mahdb") = 0
                system_error(con)
        ok

        see "Drop table" + nl
        if mysql_query(con, "DROP TABLE IF EXISTS Employee")  system_error(con) ok

        see "Create table" + nl
        if mysql_query(con, "CREATE TABLE Employee(Id INT, Name TEXT, Salary INT)")
           system_error(con) ok

        see "Insert data" + nl
        if mysql_query(con, "INSERT INTO Employee VALUES(1,'Mahmoud',15000)")
           system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee VALUES(2,'Samir',16000)")
           system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee VALUES(3,'Fayed',17000)")
           system_error(con) ok

        see "Close connection" + nl
        mysql_close(con)

func system_error con
        see mysql_error(con)  mysql_close(con)  bye

実行結果:

Create Table and Insert Records
Connect
Drop table
Create table
Insert data
Close connection

MySQL_Insert_ID() 関数

MySQL_Insert_ID() 関数は挿入された列の ID を取得します。

文法:

MySQL_Insert_ID() ---> 数値により挿入された列の ID

用例:

con = mysql_init()
see "connect to database" + nl
mysql_connect(con,"localhost","root","root","mahdb")
see "drop table" + nl
mysql_query(con, "DROP TABLE IF EXISTS Customers")
see "create table" + nl
mysql_query(con, "CREATE TABLE Customers(Id INT PRIMARY KEY AUTO_INCREMENT, Name TEXT)")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Mahmoud')")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Samir')")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Fayed')")
see "insert record" + nl
mysql_query(con, "INSERT INTO Customers(Name) VALUES('Test 2015')")

see "inserted row id : " + mysql_insert_id(con) + nl
see "close database" + nl
mysql_close(con)

実行結果:

connect to database
drop table
create table
insert record
insert record
insert record
insert record
inserted row id : 4
close database

MySQL_Result() 関数

MySQL_Result() 関数はクエリの結果 (カラム名を除くデータ) を取得します。

文法:

MySQL_Result(MySQL ハンドル) ---> クエリの結果を有するリスト

MySQL_Next_Result() 関数

MySQL_Next_Result() 関数は次のクエリの結果を移動します。この関数は同じクエリで複数の SQL ステートメントがあるときに使用します。

文法:

MySQL_Next_Result(MySQL ハンドル)

クエリの結果を表示するには

この用例はデータベースでクエリを実行後に結果を表示します。

con = mysql_init()
see "Connect to database" + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
see "Execute Query" + nl
mysql_query(con, "SELECT Name FROM Employee WHERE Id=1;"+
                 "SELECT Name FROM Employee WHERE Id=3")
see "Print Result" + nl
see mysql_result(con)
mysql_next_result(con)
see mysql_result(con)
see "close database" + nl
mysql_close(con)

実行結果:

Connect to database
Execute Query
Print Result
Mahmoud
Fayed
close database

MySQL_Columns() 関数

MySQL_Columns() 関数はカラム名のリストを取得します。

文法:

MySQL_Columns(MySQL ハンドル) ---> カラムの情報を有するリスト

用例:

con = mysql_init()
see "Connect to database" + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
see "Execute Query" + nl
mysql_query(con, "SELECT * FROM Employee")
see "Result" + nl
see mysql_columns(con)
see "Close database" + nl
mysql_close(con)

実行結果:

Connect to database
Execute Query
Result
Id
11
3
32768
Name
65535
252
16
Salary
11
3
32768
Close database

MySQL_Result2() 関数

MySQL_Result() でカラム名がないデータの結果を取得するのではなく MySQL_Result2() は、カラム名を全て取得した後にクエリの結果を一つのリストにします。

文法:

MySQL_Result2(MySQL ハンドル) ---> リスト (カラム名を除いたクエリの結果)

用例:

con = mysql_init()
see "Connect to database" + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
see "Execute Query" + nl
mysql_query(con, "SELECT * FROM Employee")
see "Print Result" + nl
see mysql_result2(con)
see "Close database" + nl
mysql_close(con)

実行結果:

Connect to database
Execute Query
Print Result
Id
Name
Salary
1
Mahmoud
15000
2
Samir
16000
3
Fayed
17000
Close database

MySQL_Escape_String() 関数

MySQL_Escape_String() 関数は処理後に、バイナリデータまたは特殊文字をデータベースへ格納します。

文法:

MySQL_Escape_String(MySQL ハンドル, cString) ---> 処理後の文字列

データベースのイメージを保存するには

用例:

See "Read file" + nl
cFile = read("tests\mahmoud.jpg")
con = mysql_init()
See "Connect to database..." + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
See "Escape string..." + nl
cFile = mysql_escape_string(con,cFile)
stmt = "INSERT INTO photo(id, data) VALUES(1, '" + cFile + "')"
See "Insert data..." + nl
mysql_query(con,stmt)
See "Close database..." + nl
mysql_close(con)

実行結果:

Read file
Connect to database...
Escape string...
Insert data...
Close database...

データベースからイメージを復元するには

用例:

con = mysql_init()
See "Connect to database..." + nl
mysql_connect(con, "localhost", "root", "root","mahdb")
See "Read data from database..." + nl
mysql_query(con,"SELECT data FROM photo WHERE id=1")
See "Write new file" + nl
result = mysql_result(con)
write("tests\mahmoud2.jpg",result[1][1])
See "Close database..." + nl
mysql_close(con)

実行結果:

Connect to database...
Read data from database...
Write new file
Close database...

MySQL_AutoCommit() 関数

MySQL_AutoCommit() 関数は自動コミット機能の有効、または無効化を指定します。

文法:

MySQL_AutoCommit(MySQL ハンドル, lStatus)  # lStatus には True または False を指定します。

MySQL_Commit() 関数

MySQL_Commit() 関数はデータベースへ更新をコミットします。

文法:

MySQL_Commit(MySQL ハンドル)

MySQL_Rollback() 関数

MySQL_Rollback() 関数はデータベースのロールバックを更新します。

文法:

MySQL_Rollback(MySQL ハンドル)

トランザクションの用例

この用例では、 MySQL_Autocommit(), MySQL_Commit() および、 MySQL_RollBack() の用法です。

用例:

func main

        con = mysql_init()

        see "Connect" + nl
        if mysql_connect(con, "localhost", "root", "root","mahdb") = 0
                system_error(con) ok

        see "Drop table" + nl
        if mysql_query(con, "DROP TABLE IF EXISTS Employee2")
                system_error(con) ok

        see "Create table" + nl
        if mysql_query(con, "CREATE TABLE Employee2(Id INT, Name TEXT, Salary INT)")
                system_error(con) ok

        see "Insert data" + nl
        if mysql_query(con, "INSERT INTO Employee2 VALUES(1,'Mahmoud',15000)")
                system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee2 VALUES(2,'Samir',16000)")
                system_error(con) ok

        if mysql_query(con, "INSERT INTO Employee2 VALUES(3,'Fayed',17000)")
                system_error(con) ok

        mysql_autocommit(con,False)
        mysql_query(con, "INSERT INTO Employee2 VALUES(4,'Ahmed',5000)")
        mysql_query(con, "INSERT INTO Employee2 VALUES(5,'Ibrahim',50000)")
        mysql_query(con, "INSERT INTO Employee2 VALUES(6,'Mohammed',50000)")
        See "Save transaction (y/n) " give nChoice
        if upper(nChoice) = "Y"
                mysql_commit(con)
        else
                mysql_rollback(con)
        ok

        see "Close connection" + nl
        mysql_close(con)

func system_error con

        see mysql_error(con)
        mysql_close(con)
        bye

実行結果:

Connect
Drop table
Create table
Insert data
Save transaction (y/n) y
Close connection

SQLite 関数

SQL データベースの用法です。

使用前に sqlitelib.ring ライブラリを読み込みます。

load "sqlitelib.ring"
# SQLite 関数の使用

sqlite_init() 関数

文法:

sqlite_init() ---> SQLite オブジェクト

sqlite_open() 関数

文法:

sqlite_open(SQLite オブジェクト,cFileName)

sqlite_execute() 関数

文法:

sqlite_execute(SQLite オブジェクト,cSQLStatement)

sqlite_close() 関数

文法:

sqlite_close(SQLite オブジェクト)

用例

このコードは SQL データベースの作成を行い、新しいデータを追加した後にデータを表示します。

load "sqlitelib.ring"

oSQLite = sqlite_init()

sqlite_open(oSQLite,"mytest.db")

sql = "
         CREATE TABLE COMPANY (
         ID INT PRIMARY KEY     NOT NULL,
         NAME           TEXT    NOT NULL,
         AGE            INT     NOT NULL,
         ADDRESS        CHAR(50),
         SALARY         REAL );
"
sqlite_execute(oSQLite,sql)

sql = "
        INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
        VALUES  (1, 'Mahmoud' , 29, 'Jeddah', 20000.00 ),
                (2, 'Ahmed'   , 27, 'Jeddah', 15000.00 ),
                (3, 'Mohammed', 31, 'Egypt' , 20000.00 ),
                (4, 'Ibrahim' , 24, 'Egypt ', 65000.00 );
"

sqlite_execute(oSQLite,sql)

aResult =  sqlite_execute(oSQLite,"select * from COMPANY")
for x in aResult
        for t in x
                ? t[2] + nl
        next
next
? copy("*",50)
for x in aResult
        ? x[:name]
next
sqlite_close(oSQLite)

実行結果:

1
Mahmoud
29
Jeddah
20000.0
2
Ahmed
27
Jeddah
15000.0
3
Mohammed
31
Egypt
20000.0
4
Ibrahim
24
Egypt
65000.0
**************************************************
Mahmoud
Ahmed
Mohammed
Ibrahim

PostgreSQL 関数

PostgreSQL データベースの用法です。

ライブラリの読み込み

この関数の使用前に postgresqllib.ring ライブラリを読み込みます。

load "postgresqllib.ring"
# PostgreSQL 関数の使用

用例

用例 (1):

load "postgresqllib.ring"

conninfo = "user=postgres password=sa dbname = postgres"

exit_nicely = func conn {
        PQfinish(conn)
        shutdown(1)
}

conn = PQconnectdb(conninfo)

if (PQstatus(conn) != CONNECTION_OK)
        fputs(stderr, "Connection to database failed: "+PQerrorMessage(conn))
                call exit_nicely(conn)
ok

res = PQexec(conn, "select * from pg_database")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Select failed: " + PQerrorMessage(conn))
        PQclear(res)
        exit_nicely(conn)
ok

nFields = PQnfields(res)
for i = 1 to nFields
                ? PQfname(res, i-1)
next

? copy("*",60)

for i = 1 to PQntuples(res)
        for j=1 to nFields
                see PQgetvalue(res, i-1, j-1) + " "
        next
        see nl
next

PQclear(res)

PQfinish(conn)

実行結果:

datname
datdba
encoding
datcollate
datctype
datistemplate
datallowconn
datconnlimit
datlastsysoid
datfrozenxid
datminmxid
dattablespace
datacl
************************************************************
postgres 10 6 English_United States.1252
        English_United States.1252 f t -1 12937 549 1 1663
template1 10 6 English_United States.1252 English_United States.1252
        t t -1 12937 549 1 1663 {=c/postgres,postgres=CTc/postgres}
template0 10 6 English_United States.1252 English_United States.1252
        t f -1 12937 549 1 1663 {=c/postgres,postgres=CTc/postgres}
mahdb 10 6 English_United States.1252 English_United States.1252
        f t -1 12937 549 1 1663

用例 (2):

load "postgresqllib.ring"

conninfo = "user=postgres password=sa dbname = mahdb"

exit_nicely = func conn {
        PQfinish(conn)
        shutdown(1)
}

conn = PQconnectdb(conninfo)

if (PQstatus(conn) != CONNECTION_OK)
        fputs(stderr, "Connection to database failed: "+PQerrorMessage(conn))
                call exit_nicely(conn)
ok

res = PQexec(conn, "
        DROP DATABASE mahdb;
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Remove failed: " + PQerrorMessage(conn))
        PQclear(res)
ok
PQclear(res)

res = PQexec(conn, "CREATE DATABASE mahdb;")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Create database failed: " + PQerrorMessage(conn))
        PQclear(res)
ok

res = PQexec(conn, "
CREATE TABLE COMPANY (
                 ID INT PRIMARY KEY     NOT NULL,
                 NAME           TEXT    NOT NULL,
                 AGE            INT     NOT NULL,
                 ADDRESS        CHAR(50),
                 SALARY         REAL );
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Create Table failed: " + PQerrorMessage(conn))
        PQclear(res)
ok
PQclear(res)

res = PQexec(conn, "
                INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
                VALUES  (1, 'Mahmoud' , 31, 'Jeddah', 10.00 ),
                                (2, 'Ahmed'   , 27, 'Jeddah', 20.00 ),
                                (3, 'Mohammed', 33, 'Egypt' , 30.00 ),
                                (4, 'Ibrahim' , 24, 'Egypt ', 40.00 );
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Insert Table failed: " + PQerrorMessage(conn))
        PQclear(res)
ok
PQclear(res)

res = PQexec(conn, "
           select * from COMPANY
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Select failed: " + PQerrorMessage(conn))
        PQclear(res)
        call exit_nicely(conn)
ok

nFields = PQnfields(res)
for i = 1 to nFields
                ? PQfname(res, i-1)
next

? copy("*",60)

for i = 1 to PQntuples(res)
        for j=1 to nFields
                see PQgetvalue(res, i-1, j-1) + " "
        next
        see nl
next

PQclear(res)

PQfinish(conn)

実行結果:

id
name
age
address
salary
************************************************************
1 Mahmoud  31 Jeddah  10
2 Ahmed    27 Jeddah  20
3 Mohammed 31 Egypt   30
4 Ibrahim  24 Egypt   40

RingPostgreSQL 定数

この定数は RingPostgreSQL ライブラリで定義済みです。

CONNECTION_STARTED
CONNECTION_MADE
CONNECTION_AWAITING_RESPONSE
CONNECTION_AUTH_OK
CONNECTION_SSL_STARTUP
CONNECTION_SETENV
CONNECTION_OK

PQPING_OK
PQPING_REJECT
PQPING_NO_RESPONSE
PQPING_NO_ATTEMPT

PGRES_EMPTY_QUERY
PGRES_COMMAND_OK
PGRES_TUPLES_OK
PGRES_COPY_OUT
PGRES_COPY_IN
PGRES_BAD_RESPONSE
PGRES_NONFATAL_ERROR
PGRES_FATAL_ERROR
PGRES_COPY_BOTH
PGRES_SINGLE_TUPLE

PG_DIAG_SEVERITY
PG_DIAG_SQLSTATE
PG_DIAG_MESSAGE_PRIMARY
PG_DIAG_MESSAGE_DETAIL
PG_DIAG_MESSAGE_HINT
PG_DIAG_STATEMENT_POSITION
PG_DIAG_INTERNAL_POSITION
PG_DIAG_INTERNAL_QUERY
PG_DIAG_CONTEXT
PG_DIAG_SCHEMA_NAME
PG_DIAG_TABLE_NAME
PG_DIAG_COLUMN_NAME
PG_DIAG_DATATYPE_NAME
PG_DIAG_CONSTRAINT_NAME
PG_DIAG_SOURCE_FILE
PG_DIAG_SOURCE_LINE
PG_DIAG_SOURCE_FUNCTION

RingPostgreSQL 関数

この関数は RingPostgreSQL ライブラリで定義されています。

リファレンス : https://www.postgresql.org/docs/9.1/static/libpq.html

PGconn *PQconnectdbParams(const char **keywords,
        const char **values,int expand_dbname);
PGconn *PQconnectdb(const char *conninfo)
PGconn *PQsetdbLogin(const char *pghost,const char *pgport,
        const char *pgoptions,const char *pgtty,
        const char *dbName,const char *login,const char *pwd)
PGconn *PQsetdb(char *pghost,char *pgport,char *pgoptions,
        char *pgtty,char *dbName)
PGconn *PQconnectStartParams(const char **keywords,
        const char **values,int expand_dbname)
PGconn *PQconnectStart(const char *conninfo)
PostgresPollingStatusType PQconnectPoll(PGconn *conn)
PQconninfoOption *PQconndefaults(void)
PQconninfoOption *PQconninfo(PGconn *conn)
PQconninfoOption *PQconninfoParse(const char *conninfo, char **errmsg)
void PQfinish(PGconn *conn)
void PQreset(PGconn *conn)
int PQresetStart(PGconn *conn)
PostgresPollingStatusType PQresetPoll(PGconn *conn)
PGPing PQpingParams(const char **keywords,const char **values,
        int expand_dbname)
PGPing PQping(const char *conninfo)
char *PQdb(const PGconn *conn)
char *PQuser(const PGconn *conn)
char *PQpass(const PGconn *conn)
char *PQhost(const PGconn *conn)
char *PQport(const PGconn *conn)
char *PQtty(const PGconn *conn)
char *PQoptions(const PGconn *conn)
ConnStatusType PQstatus(const PGconn *conn)
PGTransactionStatusType PQtransactionStatus(const PGconn *conn)
const char *PQparameterStatus(const PGconn *conn, const char *paramName)
int PQprotocolVersion(const PGconn *conn)
int PQserverVersion(const PGconn *conn)
char *PQerrorMessage(const PGconn *conn)
int PQsocket(const PGconn *conn)
int PQbackendPID(const PGconn *conn)
int PQconnectionNeedsPassword(const PGconn *conn)
int PQconnectionUsedPassword(const PGconn *conn)
int PQsslInUse(const PGconn *conn)
const char *PQsslAttribute(const PGconn *conn, const char *attribute_name)
const char **PQsslAttributeNames(const PGconn *conn)
void *PQsslStruct(const PGconn *conn, const char *struct_name)
void *PQgetssl(const PGconn *conn)
PGresult *PQexec(PGconn *conn, const char *command);
PGresult *PQexecParams(PGconn *conn,const char *command,int nParams,
        const Oid *paramTypes,const char **paramValues,
        const int *paramLengths,const int *paramFormats,int resultFormat)
PGresult *PQprepare(PGconn *conn,const char *stmtName,
        const char *query,int nParams,const Oid *paramTypes)
PGresult *PQexecPrepared(PGconn *conn,const char *stmtName,
        int nParams,const char **paramValues,
        const int *paramLengths,const int *paramFormats,int resultFormat)
PGresult *PQdescribePrepared(PGconn *conn, const char *stmtName)
PGresult *PQdescribePortal(PGconn *conn, const char *portalName)
ExecStatusType PQresultStatus(const PGresult *res)
char *PQresStatus(ExecStatusType status)
char *PQresultErrorMessage(const PGresult *res)
char *PQresultErrorField(const PGresult *res, int fieldcode)
void PQclear(PGresult *res)
int PQntuples(const PGresult *res)
int PQnfields(const PGresult *res)
char *PQfname(const PGresult *res,int column_number)
int PQfnumber(const PGresult *res,const char *column_name)
Oid PQftable(const PGresult *res,int column_number)
int PQftablecol(const PGresult *res,int column_number)
int PQfformat(const PGresult *res,int column_number)
Oid PQftype(const PGresult *res,int column_number)
int PQfmod(const PGresult *res,int column_number)
int PQfsize(const PGresult *res,int column_number)
int PQbinaryTuples(const PGresult *res)
char *PQgetvalue(const PGresult *res,int row_number,int column_number)
int PQgetisnull(const PGresult *res,int row_number,int column_number)
int PQgetlength(const PGresult *res,int row_number,int column_number)
int PQnparams(const PGresult *res)
Oid PQparamtype(const PGresult *res, int param_number)
void PQprint(FILE *fout,const PGresult *res,const PQprintOpt *po)
char *PQcmdStatus(PGresult *res)
char *PQcmdTuples(PGresult *res)
Oid PQoidValue(const PGresult *res)
char *PQoidStatus(const PGresult *res)
char *PQescapeLiteral(PGconn *conn, const char *str, size_t length)
char *PQescapeIdentifier(PGconn *conn, const char *str, size_t length)
size_t PQescapeStringConn(PGconn *conn,char *to,
        const char *from, size_t length,int *error)
size_t PQescapeString(char *to, const char *from, size_t length)
unsigned char *PQescapeByteaConn(PGconn *conn,
        const unsigned char *from,size_t from_length,size_t *to_length)
unsigned char *PQescapeBytea(const unsigned char *from,
        size_t from_length,size_t *to_length)
unsigned char *PQunescapeBytea(const unsigned char *from, size_t *to_length)
int PQsendQuery(PGconn *conn, const char *command)
int PQsendQueryParams(PGconn *conn,const char *command,
        int nParams,const Oid *paramTypes,const char **paramValues,
        const int *paramLengths,const int *paramFormats,int resultFormat)
int PQsendPrepare(PGconn *conn,const char *stmtName,
        const char *query,int nParams,const Oid *paramTypes)
int PQsendQueryPrepared(PGconn *conn,const char *stmtName,
        int nParams,const char **paramValues,
        const int *paramLengths,const int *paramFormats,int resultFormat)
int PQsendDescribePrepared(PGconn *conn, const char *stmtName)
int PQsendDescribePortal(PGconn *conn, const char *portalName)
PGresult *PQgetResult(PGconn *conn)
int PQconsumeInput(PGconn *conn)
int PQisBusy(PGconn *conn)
int PQsetnonblocking(PGconn *conn, int arg)
int PQisnonblocking(const PGconn *conn)
int PQflush(PGconn *conn)
int PQsetSingleRowMode(PGconn *conn)
PGcancel *PQgetCancel(PGconn *conn)
void PQfreeCancel(PGcancel *cancel)
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize)
int PQrequestCancel(PGconn *conn)
PGresult *PQfn(PGconn *conn,int fnid,int *result_buf,
        int *result_len,int result_is_int,const PQArgBlock *args,int nargs)
PGnotify *PQnotifies(PGconn *conn)
int PQputCopyData(PGconn *conn,const char *buffer,int nbytes)
int PQputCopyEnd(PGconn *conn,const char *errormsg)
int PQgetCopyData(PGconn *conn,char **buffer,int async)
int PQgetline(PGconn *conn,char *buffer,int length)
int PQgetlineAsync(PGconn *conn,char *buffer,int bufsize)
int PQputline(PGconn *conn,const char *string)
int PQputnbytes(PGconn *conn,const char *buffer,int nbytes)
int PQendcopy(PGconn *conn)
int PQclientEncoding(const PGconn *conn)
char *pg_encoding_to_char(int encoding_id)
int PQsetClientEncoding(PGconn *conn, const char *encoding)
void PQtrace(PGconn *conn, FILE *stream)
void PQuntrace(PGconn *conn)
void PQfreemem(void *ptr)
void PQconninfoFree(PQconninfoOption *connOptions)
char *PQencryptPasswordConn(PGconn *conn, const char *passwd,
         const char *user, const char *algorithm)
char *PQencryptPassword(const char *passwd, const char *user)
PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status)
int PQfireResultCreateEvents(PGconn *conn, PGresult *res)
PGresult *PQcopyResult(const PGresult *src, int flags)
int PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc *attDescs)
int PQsetvalue(PGresult *res, int tup_num, int field_num,
                char *value, int len)
void *PQresultAlloc(PGresult *res, size_t nBytes)
int PQlibVersion(void)
PQnoticeReceiver PQsetNoticeReceiver(PGconn *conn,
                PQnoticeReceiver proc,void *arg)
PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn,
                PQnoticeProcessor proc,void *arg)
void PQinitOpenSSL(int do_ssl, int do_crypto)
void PQinitSSL(int do_ssl)
int PQisthreadsafe(void)

セキュリティとインターネット関数

ハッシュ、暗号化、および復号化に関するセキュリティとインターネット関数について説明します。

この関数の使用前に openssllib.ring ライブラリを読み込みます。

load "openssllib.ring"
# OpenSSL 関数の使用

MD5()

SHA1()

SHA256()

SHA512()

SHA384()

SHA224()

Encrypt()

Decrypt()

Randbytes()

MD5Init(), MD5Update(), MD5Final()

SHA1Init(), SHA1Update(), SHA1Final()

SHA256Init(), SHA256Update(), SHA256Final()

SHA512Init(), SHA512Update(), SHA512Final()

SHA384Init(), SHA384Update(), SHA384Final()

SHA224Init(), SHA224Update(), SHA224Final()

この関数の使用前に internetlib.ring ライブラリを読み込みます。

load "internetlib.ring"
# インターネット関数の使用

Download()

SendEmail()

MD5() 関数

MD5() 関数は MD5 ハッシュ値を計算します。

文法:

MD5(cString) ---> 文字列 cString の MD5 ハッシュ値による文字列

用例:

see "md5('happy') = " + md5("happy") + nl +
    "md5('Hello') = " + md5("Hello") + nl

実行結果:

md5('happy') = 56ab24c15b72a457069c5ea42fcfc640
md5('Hello') = 8b1a9953c4611296a827abf8c47804d7

SHA1() 関数

SHA1() 関数は SHA1 ハッシュ値を計算します。

文法:

SHA1(cString) ---> 文字列 cString の SHA1 ハッシュ値による文字列

用例:

see "sha1('hello') : " + sha1("hello") + nl +
    "sha1('apple') : " + sha1("apple") + nl

実行結果:

sha1('hello') : aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
sha1('apple') : d0be2dc421be4fcd0172e5afceea3970e2f3d940

SHA256() 関数

SHA256() 関数は SHA256 ハッシュ値を計算します。

文法:

SHA256(cString) ---> 文字列 cString の SHA256 ハッシュ値による文字列

用例:

see "sha256('hello') : " + sha256("hello") + nl +
    "sha256('apple') : " + sha256("apple") + nl

実行結果:

sha256('hello') : 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
sha256('apple') : 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b

SHA512() 関数

SHA512() 関数は SHA512 ハッシュ値を計算します。

文法:

SHA512(cString) ---> 文字列 cString の SHA512 ハッシュ値による文字列

用例:

see "sha512('hello') : " + sha512("hello") + nl +
    "sha512('apple') : " + sha512("apple") + nl +
    "sha512('hello world') : " + sha512("hello world") + nl

実行結果:

sha512('hello') : 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673c
a72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
sha512('apple') : 844d8779103b94c18f4aa4cc0c3b4474058580a991fba85d3ca698a0bc9e52
c5940feb7a65a3a290e17e6b23ee943ecc4f73e7490327245b4fe5d5efb590feb2
sha512('hello world') : 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca8
6d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f

SHA384() 関数

SHA384() 関数は SHA384 ハッシュ値を計算します。

文法:

SHA384(cString) ---> 文字列 cString の SHA384 ハッシュ値による文字列

用例:

see "sha384('hello') : " + sha384("hello") + nl +
    "sha384('apple') : " + sha384("apple") + nl +
    "sha384('hello world') : " + sha384("hello world") + nl

実行結果:

sha384('hello') : 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa
90125a3c79f90397bdf5f6a13de828684f
sha384('apple') : 3d8786fcb588c93348756c6429717dc6c374a14f7029362281a3b21dc10250
ddf0d0578052749822eb08bc0dc1e68b0f
sha384('hello world') : fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcb
b83578b3e417cb71ce646efd0819dd8c088de1bd

SHA224() 関数

SHA224() 関数は SHA224 ハッシュ値を計算します。

文法:

SHA224(cString) ---> 文字列 cString の SHA224 ハッシュ値による文字列

用例:

see "sha224('hello') : " + sha224("hello") + nl +
    "sha224('apple') : " + sha224("apple") + nl +
    "sha224('hello world') : " + sha224("hello world") + nl

実行結果:

sha224('hello') : ea09ae9cc6768c50fcee903ed054556e5bfc8347907f12598aa24193
sha224('apple') : b7bbfdf1a1012999b3c466fdeb906a629caa5e3e022428d1eb702281
sha224('hello world') : 2f05477fc24bb4faefd86517156dafdecec45b8ad3cf2522a563582b

Encrypt() 関数

Encrypt() 関数は Blowfish アルゴリズム法でデータを暗号化します。

文法:

Encrypt(cString, cKey, cIV) ---> 暗号化された文字列

Decrypt() 関数

Decrypt() 関数は Encrypt() 関数で暗号化されたデータを復号化します。

文法:

Decrypt(cCipher, cKey, cIV) ---> 復号化された文字列

暗号化と復号化の用例

この用例は Encrypt() および Decrypt() 関数の用法です。

いずれの関数も Blowfish アルゴリズム法を使用しています。

See "Enter a string : " give cStr
list = 0:15  cKey=""    for x in list cKey += char(x) next
list = 1:8   cIV = ""   for x in list cIV += char(x) next
cStr = Encrypt(cStr,cKey,cIV)
See "Cipher Text    : " + cStr + nl +
    "Plain Text     : " + Decrypt(cStr,cKey,cIV) + nl

通常の for ループで同じ用例を記述できます。

See "Enter a string : " give cStr

cKey=""                         # 16 バイト
for x = 0 to 15
        cKey += char(x)
next

cIV = ""
for x = 1 to 8
        cIV += char(x)
next

cStr = Encrypt(cStr,cKey,cIV)
See "Cipher Text    : " + cStr + nl +
    "Plain Text     : " + Decrypt(cStr,cKey,cIV) + nl

また、文字列でパスワードと IV を指定することもできます。

See "Enter a string : " give cStr

# 注意: 推測されやすく暗号強度の低い単純なパスワードを使用しないでください！
cKey = "1234567890@#$%^&"
cIV  = "87654321"

cStr = Encrypt(cStr,cKey,cIV)
See "Cipher Text    : " + cStr + nl +
    "Plain Text     : " + Decrypt(cStr,cKey,cIV) + nl

ファイルのハッシュ

この用例はハッシュ関数でファイルのハッシュ値を計算する方法です。

cStr = read("myapp.exe")
see "Size : " + len(cStr) + nl +
    "md5 : " + md5(cStr) + nl +
    "sha1 : " + sha1(cStr) + nl +
    "sha256 : " + sha256(cStr) + nl +
    "sha224 : " + sha224(cStr) + nl +
    "sha384 : " + sha384(cStr) + nl +
    "sha512 : " + sha512(cStr) + nl

実行結果:

Size : 58079876
md5 : 762eee15d8d2fd73b71ea52538b28667
sha1 : 9212c0c7258bad89a62bd239e1358a9276a9d070
sha256 : 7d6724e69b6c553da749ba31b6185dddc965129b64d9e9bf3de88f67df3b1cdc
sha224 : 5a9c8a7d662bce4f880ba94f90a79362b672528b9efd5abc718c7a3d
sha384 : 18e23f973abedbeb3981c423f12aeadecf96f9c6fb28aeabe3be4c484f8540afcc3861b
b370ce2b59cf3c99c130b856b
sha512 : da3d5e997d06f8b2a7a9964b77f7d82eedb76b245c611082c1639f83f51d83880bcd08f
cd53dcab1167bdca0b82fec5071971ac17c76479d76985ced4ab0d18e

Randbytes() 関数

Randbytes() 関数は擬似乱数バイト列を生成します。

文法:

Randbytes(nSize) ---> 乱数のバイト列による文字列 (バイト列数 = nSize)。

用例:

salt =  randbytes(32)
password = "SecretPassWord@$%123"
see salt + nl
see sha256("test" + salt) + nl

大規模ファイルのハッシュ値計算

以下の関数は大規模ファイル、またはデータの全内容を単独文字列として読み込むことなくハッシュ値を計算します。

md5init() -> MD5_CTX
md5update (MD5_CTX, string) -> 1 ならば成功、 0 ならば失敗
md5final (MD5_CTX) -> string

sha1init() -> SHA_CTX
sha1update (SHA_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha1final (SHA_CTX) -> string

sha224init() -> SHA224_CTX
sha224update (SHA224_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha224final (SHA224_CTX) -> string

sha256init() -> SHA256_CTX
sha256update (SHA256_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha256final (SHA256_CTX) -> string

sha384init() -> SHA384_CTX
sha384update (SHA384_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha384final (SHA384_CTX) -> string

sha512init() -> SHA512_CTX
sha512update (SHA512_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha512final (SHA512_CTX) -> string

Download() 関数

指定された URL からファイルをダウンロードします。

文法:

Download(cURL) ---> サーバーからのレスポンス文字列

用例:

cStr= download("http://doublesvsoop.sourceforge.net/")
see cStr
write("download.txt",cStr)

SendEmail() 関数

電子メール送信します。

文法:

SendEmail(cSMTPServer,cEmail,cPassword,cSender,cReceiver,cCC,cTitle,cContent)

用例:

See "Send email..." + nl
sendemail("smtp://smtp.gmail.com:587",
        "email@gmail.com",
        "password",
        "email@gmail.com",
        "somebody@yahoo.com",
        "somebodyelse@yahoo.com",
        "Sending email from Ring",
        "Hello
         How are you?
         Are you fine?
         Thank you!
         Greetings,
         Mahmoud")
see "Done.." + nl

オブジェクト指向プログラミング (OOP)

Ring でオブジェクト指向プログラミングのパラダイムを扱う方法です。

クラスとオブジェクト

括弧を用いたオブジェクトへのアクセス

コンポジション

Setter と Getter

プライベート属性とメソッド

演算子のオーバーロード

継承

動的属性

パッケージ

オブジェクトの表示

Find() とオブジェクトのリスト

Sort() とオブジェクトのリスト

Self.属性 および Self.メソッド() の用法

This.属性 および This.メソッド() の用法

クラスとオブジェクト

このシンタックスで新しいクラスを定義できます。

文法:

Class <クラス名> [From|<|: <親クラス名>]
        [属性]
        [メソッド]
        [Private
          [属性]
          [メソッド]
        ]

また、このシンタックスでオブジェクトを作成できます。

文法:

New <オブジェクト名> [ (init メソッドの仮引数) ] |
[ { オブジェクトのデータ、およびメソッドへのアクセス } ]   ---> オブジェクト

用例:

New point { x=10  y=20  z=30  print() }
Class Point x y z func print see x + nl + y + nl + z + nl

注釈

{ } でオブジェクトのデータとメソッドへアクセスできます。

ちなみに

クラス名の直後にクラスの属性を宣言できます。

実行結果:

10
20
30

別の記法で同じプログラムを書き直せます。

New point                       # point クラスで新しいオブジェクトを作成
{                               # 新しいオブジェクトの属性、およびメソッドへのアクセス
        x = 10                  # 属性 x へ 10 を設定
        y = 20                  # 属性 y へ 20 を設定
        z = 30                  # 属性 z へ 30 を設定
        print()                 # print メソッドの呼び出し
}                               # オブジェクトのアクセスを終了

Class Point                    # Point クラスの定義
        x y z                   # クラスには属性 x, y および z があります。
        func print             # print メソッドの定義
                see x + nl +   # 属性 x の表示
                y + nl +       # 属性 y の表示
                z + nl         # 属性 z の表示

また、別の方法で同じプログラムを書くことができます。

P1 = New Point
P1.x = 10
P1.y = 20
P1.z = 30
P1.Print()
Class Point x y z func print see x + nl + y + nl + z + nl

注釈

オブジェクト名の直後にドット演算子を用いるとオブジェクトのメンバへアクセスできます。

また、別の方法で同じプログラムを書くことができます。

new point { print() }
Class Point
        x = 10  y = 20  z = 30
        func print see x + nl + y + nl + z + nl

注釈

クラスの属性を宣言する時にクラスの属性へデフォルトの値を設定できます。

また、別の方法で同じプログラムを書くことができます。

new point(10,20,30)
Class Point
        x y z
        func init p1,p2,p3 x=p1 y=p2 z=p3 print()
        func print see x + nl + y + nl + z + nl

注釈

新しいオブジェクトの作成時に () を使うと init メソッドを呼び出せます。

また、別の方法で同じプログラムを書くことができます。

new point( [ :x = 10 , :y = 20 , :z = 30 ] )
Class Point x y z
      func init aPara x = aPara[:x] y = aPara[:y] z = aPara[:z] print()
      func print see x + nl + y + nl + z + nl

ちなみに

メソッドの仮引数を渡すためにハッシュを使用する場合は、オプションの仮引数の作成時、およびハッシュへ追加時は仮引数の順序を変更できます。

括弧を用いたオブジェクトへのアクセス

括弧 { } で、いつでもオブジェクトへアクセスできます。

括弧内ではオブジェクトの属性とメソッドを使えます。

これは New キーワードによるオブジェクトの作成、またはこのシンタックスを必要なときに使えます。

オブジェクト名 { オブジェクトのデータ、およびメソッドへのアクセス }

用例:

See "Creating the Object" + nl
o1 = new Point
See "Using the Object" + nl
o1 {
        x=5
        y=15
        z=25
        print()
}
Class Point x y z func print see x + nl + y + nl + z

括弧は関数、またはメソッドの呼び出し時にオブジェクトへアクセスするために使えます。

用例:

o1 = new Point

print( o1 { x=10 y=20 z=30 } )

func print object
        see object.x + nl +
            object.y + nl +
            object.z

Class Point x y z

括弧とドット演算子を併用して同じ式のオブジェクトへアクセスできます。

用例:

o1 = new Point

O1 { x=10 y=20 z=30 }.print()

Class Point x y z
        func print see x + nl + y + nl + z

コンポジション

オブジェクトでは、ほかのオブジェクトの属性を所有できます。

アクセスしたいオブジェクトを多重括弧にすることで実現できます。

用例:

R1 = New Rectangle
{

        Name = "Rectangle 1"

        P1
        {
                X = 10
                Y = 20
        }

        P2
        {
                X = 200
                Y = 300
        }

        Color = "Blue"

}

see "Name : " + R1.Name + nl +
    "Color: " + R1.Color + nl +
    "P1   : (" + R1.P1.X + "," + R1.P1.Y + ")" + nl +
    "P2   : (" + R1.P2.X + "," + R1.P2.Y + ")"

Class Rectangle
        name  color
        p1 = new Point
        p2 = new Point

Class Point x y

実行結果:

Name : Rectangle 1
Color: Blue
P1   : (10,20)
P2   : (200,300)

Setter と Getter

オブジェクトの属性を設定 (Setter)、または取得 (Getter) 時に用いるメソッドを定義できます。

文法:

Class [クラス名]

        [属性名]
        ...

        Func Set[属性名]
                ...

        Func Get[属性名]
                ...

用例:

o1 = new person

o1.name = "Mahmoud"  see o1.name + nl

o1 { name = "Ahmed"  see name }

Class Person

        name family = "Fayed"

        func setname value
                see "Message from SetName() Function!" + nl
                name = value + " " + family

        func getname
                see "Message from GetName() Function!" + nl
                return "Mr. " + name

実行結果:

Message from SetName() Function!
Message from GetName() Function!
Mr. Mahmoud Fayed
Message from SetName() Function!
Message from GetName() Function!
Mr. Ahmed Fayed

プライベート属性とメソッド

クラスの本体内では private キーワードの後にプライベートな属性とメソッドを定義できます。

用例:

o1 = new person {
        name = "Test"
        age = 20
        print()
        o1.printsalary()
}

try
        see o1.salary
catch
        see cCatchError + nl
done

try
        o1.increasesalary(1000)
catch
        see cCatchError + nl
done

Class Person

        name age

        func print
                see "Name   : " + name + nl +
                    "Age    : " + age + nl

        func printsalary
                see "Salary : " + salary + nl

        private

        salary = 15000

        func increasesalary x
                salary += x

実行結果:

Name   : Test
Age    : 20
Salary : 15000
Error (R27) : Using private attribute from outside the class : salary
Error (R26) : Calling private method from outside the class : increasesalary

演算子のオーバーロード

クラスオブジェクトで演算子を使用可能にするには、クラスへ operator メソッドを追加します。

文法:

Class ClassName

        ...

        Func operator cOperator,Para

                ...

関数の演算子は二種類の仮引数を扱います。一つ目は演算子を、二つ目は演算子の後にある第二仮引数を意味します。

用例:

o1 = new point { x = 10 y = 10 print("P1    : ") }
o2 = new point { x = 20 y = 40 print("P2    : ") }

o3 = o1 + o2
o3.print("P1+P2 : ")

class point x y

        func operator cOperator,Para
                result = new point
                switch cOperator
                on "+"
                        result.x = x + Para.x
                        result.y = y + Para.y
                on "-"
                        result.x = x - Para.x
                        result.y = y - Para.y
                off
                return result

        func print cPoint
                see cPoint + "X : " + x + " Y : " + y + nl

実行結果:

P1    : X : 10 Y : 10
P2    : X : 20 Y : 40
P1+P2 : X : 30 Y : 50

この用例は stdlib.ring にある List クラスからの引用です。

Func operator cOperator,Para
        result = new list
        switch cOperator
                on "+"
                        if isobject(para)
                                for t in Para.vValue
                                        vValue + t
                                next
                        but islist(para)
                                for t in Para
                                        vValue + t
                                next
                        ok
                on "len"
                        return len( vValue )
                on "[]"
                        return &vValue[para]
        off
        return result

“len” 演算子は制御構造 (for in) で使用されます。

“[]” 演算子はリスト項目のアクセスをするときに使用されます。この場合、 & 演算子は数値による参照で文字列などの項目の値を返すときに使用します。よって、項目へアクセスするときに項目の更新ができます。

用例(2)

func main

See "----1"+nl
    a1 = new BigNumber( "123" )
    a2 = new BigNumber( "456" )
    a3 = new BigNumber( "789" )
See nl+"----2"+nl
        a1.print()
        a2.print()
        a3.print()
See nl+"----3"+nl
    a2 = a1 + "45"
See nl+"----4"+nl
    a2.print()
See nl+"----5"+nl
    a3 = a1 + a2
See nl+"----6"+nl
    a3.print()
See nl+"----7"+nl

###==================================
Func FuncAdd( num1, num2)
   Sum = 0 + num1 + num2    ### Para.aData isNumber
   Sum = "" +Sum            ### Para.adata isString
return Sum                  ### クラスからの返値
###===================================

class BigNumber

    ### 変数
    aData = "468"

    ### INIT 関数のデフォルト値
    func init aPara
        ? "INIT aPara: " ? aPara
        if isString(aPara)
            aData = aPara
        else
            aData = "" + aPara
        ok

    ### そのほかの関数
    func operator cOperator, Para
            whatType = Type(Para)
            ? nl+"WhatType-PARA: "+ whatType ? Para
            ? nl+"Operator: " ? cOperator  ? nl+"PARA: " ? Para ? "    ______" ? nl
                            if whatType = "STRING"
                               dataInfo = Para
                               ? "dataInfo String: " ? dataInfo
                            but whatType = "NUMBER"
                               datinfo  = "" + Para
                               ? "dataInfo Number: " ? dataInfo
                            else whatType = "OBJECT"
                               dataInfo = "" + para.aData
                               ? "dataInfo OBJECT: " ? dataInfo
                            ok
                          ? "dataInfo USING: " ? dataInfo
            ### Para.aData は初めて渡されたときには存在しません (メンバのオブジェクト)。
            ### "self" が代入されたときの結果は isObject です。
            result = self
            switch cOperator
                on "+"
                     answer = FuncAdd( aData, dataInfo )
                     ? nl+"AnswerString - FunAdd aData, dataInfo: " ? answer
                     ### result = Self はオブジェクトであるため、 aData メンバへオブジェクトを代入します
                     result.aData = answer
                off
            ### Result = Self はオブジェクトです
            return result

    func print
        ? nl+"ClassPrint aData: " ? aData

継承

From キーワードを使用したクラスの定義で別のクラスからクラスを作成できます。

文法:

Class <クラス名> [From <親クラスの名前>]

super オブジェクトで子クラスから親クラスのメソッドを呼び出せます。

文法:

func methodname
        ...
        super.methodname()
        ...

用例:

Func main
        e1 = new Employee {
                Name = "test"
                age = 20
                job = "programmer"
                salary = 20000000
                print()
        }

Class Human
        Name Age
        func print
                see "Name : " + name + nl + "Age  : " + age + nl

Class Employee from Human
        Job Salary
        func print
                super.print()
                see "Job  : " + job + nl + "Salary : " + salary + nl

実行結果:

Name : test
Age  : 20
Job  : programmer
Salary : 20000000

動的属性

クラス名末尾に命令を記述すると、新しいオブジェクトが作成されたときに実行します。

用例:

o1 = new dynamicClass
see o1.var5 + nl        # 5 を出力

Class DynamicClass
        for x = 1 to 10
                cStr = "var" + x + " = " + x
                eval(cStr)
        next

ちなみに

前述の用例では var1, var2, ..., var10 は属性として定義されています。

ちなみに

前述の用例における問題は x および cStr が同じ属性として定義されていることです！

注釈

文字列内にクラスの定義を記述できます。また、 eval() 関数で文字列を実行するとクラスを定義できます。

パッケージ

このシンタックスでパッケージ (共通の名前によるクラスのグループ) を作成できます。

package PackageName
        Class Class1
                ...
        Class Class2
                ...
        Class Class3
                ...
        ...

用例:

o1 = new System.output.console
o1.print("Hello World")

Package System.Output
        Class Console
                Func Print cText
                        see cText + nl

注釈

パッケージ名にドット演算子を使えます。

パッケージ.クラス名 (PackageName.ClassName) という長い名前を入力する代わりに import 命令を使えます。

パッケージをインポートする場合は、このパッケージを指定のクラスで使えます。

用例:

import system.output
o1 = new console {
        print("Hello World")
}
Package System.Output
        Class Console
                Func Print cText
                        see cText + nl

オブジェクトの表示

see 命令はオブジェクトの状態 (属性と値) を表示します。

用例:

see new point { x=10 y=20 z=30 }
class point x y z

実行結果:

x: 10.000000
y: 20.000000
z: 30.000000

Find() とオブジェクトのリスト

Find() 関数はオブジェクトのリスト内部を検索します。

文法:

Find(List,ItemValue,nColumn,cAttribute) ---> 項目のインデックス

用例:

myList1 = [new Company {position=3 name="Mahmoud" symbol="MHD"},
           new Company {position=2 name="Bert" symbol="BRT"},
           new Company {position=1 name="Ring" symbol="RNG"}
          ]

see find(mylist1,"Bert",1,"name") + nl
see find(mylist1,"Ring",1,"name") + nl
see find(mylist1,"Mahmoud",1,"name") + nl
see find(mylist1,"RNG",1,"symbol") + nl
see find(mylist1,"MHD",1,"symbol") + nl
see find(mylist1,"BRT",1,"symbol") + nl
see find(mylist1,3,1,"position") + nl
see find(mylist1,1,1,"position") + nl
see "Other" + nl
see find(mylist1,"test",1,"name") + nl
see find(mylist1,"test",0,"name") + nl
see find(mylist1,"test",5,"name") + nl

class company position name symbol

実行結果:

2
3
1
3
1
2
1
3
Other
0
0
0

Sort() とオブジェクトのリスト

Sort() 関数はオブジェクトの属性に基づきオブジェクトのリストを整列します。

文法:

Sort(List,nColumn,cAttribute) ---> オブジェクトの属性に基づいて整列されたリスト

用例:

myList1 = [
                new Company {position=3 name="Mahmoud" symbol="MHD"},
                new Company {position=2 name="Bert" symbol="BRT"},
                new Company {position=8 name="Charlie" symbol="CHR"},
                new Company {position=6 name="Easy" symbol="FEAS"},
                new Company {position=7 name="Fox" symbol="EFOX"},
                new Company {position=5 name="Dog" symbol="GDOG"},
                new Company {position=4 name="George" symbol="DGRG"},
                new Company {position=1 name="Ring" symbol="RNG"}
          ]

see sort(mylist1,1,"name")
see copy("*",70) + nl
see sort(mylist1,1,"symbol")
see copy("*",70) + nl
see sort(mylist1,1,"position")

class company position name symbol

実行結果:

position: 2.000000
name: Bert
symbol: BRT
position: 8.000000
name: Charlie
symbol: CHR
position: 5.000000
name: Dog
symbol: GDOG
position: 6.000000
name: Easy
symbol: FEAS
position: 7.000000
name: Fox
symbol: EFOX
position: 4.000000
name: George
symbol: DGRG
position: 3.000000
name: Mahmoud
symbol: MHD
position: 1.000000
name: Ring
symbol: RNG
**********************************************************************
position: 2.000000
name: Bert
symbol: BRT
position: 8.000000
name: Charlie
symbol: CHR
position: 4.000000
name: George
symbol: DGRG
position: 7.000000
name: Fox
symbol: EFOX
position: 6.000000
name: Easy
symbol: FEAS
position: 5.000000
name: Dog
symbol: GDOG
position: 3.000000
name: Mahmoud
symbol: MHD
position: 1.000000
name: Ring
symbol: RNG
**********************************************************************
position: 1.000000
name: Ring
symbol: RNG
position: 2.000000
name: Bert
symbol: BRT
position: 3.000000
name: Mahmoud
symbol: MHD
position: 4.000000
name: George
symbol: DGRG
position: 5.000000
name: Dog
symbol: GDOG
position: 6.000000
name: Easy
symbol: FEAS
position: 7.000000
name: Fox
symbol: EFOX
position: 8.000000
name: Charlie
symbol: CHR

Self.属性 と Self.メソッド() の用法

クラスの範囲内 (クラス名末尾、およびメソッドの前) ならびに、クラスのメソッドは Self.属性 と Self.メソッド() を使えます。

Class Point
        self.x = 10
        self.y = 20
        self.z = 30
        func print
                see self.x + nl + self.y + nl + self.z + nl

注釈

クラスの属性を定義するために、クラスの範囲内で Self.属性 を使うとクラスの属性はグローバル変数との名前衝突から保護されます。

ちなみに

Self.属性 でクラスの属性を定義するときに、同名のグローバル変数が存在する場合は属性の定義は行われずにグローバル変数が使用されます。

グローバル変数名と属性名の間で起こる名前衝突については「スコープの規則」を参照してください。

これは何が起きているのですか？

理由

クラスの範囲内ではグローバル変数へアクセスできます。

変数定義前に Ring は変数の検索を行い、見つかれば使用します。

注釈

グローバル変数を避けるために Main 関数の使用、および名前を $ から始めてください。

ちなみに

大規模プログラムでは Self.属性 でクラスの保護、およびメンバの定義してください。

This.属性 と This.メソッド() の用法

クラス内にあるメソッドはオブジェクトのスコープへアクセスできます。属性の読み書き、またはメソッドの呼び出しでは Self.属性 あるいは Self.メソッド() の使用は不要です。

また、括弧 { } でメソッドの内側から別のオブジェクトへアクセスできます。この場合は、現在のオブジェクトの有効範囲は括弧内へ変更されます。

括弧内のクラスの属性、およびメソッドへのアクセスする方法はありますか？

これは This.属性 と This.メソッド() で実現できます。

用例:

new point

class point
        x=10 y=20 z=30
        print()
        func print
                new UI {
                        display(this.x,this.y,this.z)
                }

Class UI
        func display x,y,z
                see x + nl + y + nl + z + nl

クラス範囲で This を Self として使用

クラス範囲とはクラス名の後、およびすべてのメソッドの前に出現する範囲のことです。

クラス範囲で This を Self として使えます。

用例:

func main

        o1 = new program {
                test()
        }

        ? o1

class program

        this.name = "My Application"
        this.version = "1.0"
        ? name ? version

        func test
                ? "Name    = " + name
                ? "Version = " + version

実行結果:

My Application
1.0
Name    = My Application
Version = 1.0
name: My Application
version: 1.0

注釈

弓括弧は現在の有効なオブジェクトを変更しますが、This はクラスを指したままにできます。

ちなみに

This と Self には違いがあります。 Self が指している現在の有効なオブジェクトは弓括弧で変更できます。

ほとんどの場合、クラス範囲で This あるいは Self を使う必要はないことを覚えていてください。

このように記述することもできます。

class program name version

または、

class program name="My Application" version="1.0"

注釈

同名で定義されたグローバル変数との衝突を回避するために、クラス範囲で This あるいは Self を使用します。

オブジェクト属性のデフォルト値

オブジェクト属性のデフォルト値は NULL です。

Ring では、 NULL 値は空文字列または "NULL" を有する文字列です。

isNULL() 関数で NULL 値を確認できます。

用例:

oProgram = new Program
? oProgram.name
? oProgram.version
? isNULL(oProgram.name)
? isNULL(oProgram.version)
oProgram { name="My Application" version="1.0" }
? isNULL(oProgram.name)
? isNULL(oProgram.version)
? oProgram

class program
        name
        version

実行結果:

NULL
NULL
1
1
0
0
name: My Application
version: 1.0

関数型プログラミング

以前に関数と再帰を説明させていただきました。

ここでは関数型プログラミング (FP) の概念を詳説します。

純粋関数

第一級関数

高階関数

無名関数と多重関数

等式関数

純粋関数

純粋関数 (状態不変関数) を定義するには、オリジナルデータを参照渡しで関数に与えて処理するのではなく、変数 (リストとオブジェクト) の値を代入演算子で新しい変数にコピーします。

用例:

Func Main
        aList = [1,2,3,4,5]
        aList2 = square(aList)
        see "aList" + nl
        see aList
        see "aList2" + nl
        see aList2

Func Square aPara
        a1 = aPara              # リストのコピー
        for x in a1
                x *= x
        next
        return a1               # 新しいリストを返します。

実行結果:

aList
1
2
3
4
5
aList2
1
4
9
16
25

第一級関数

Ring の関数は第一級オブジェクトです。関数を仮引数として渡したり、変数として代入、または値を返せます。

例えば、関数名を "関数名" や :関数名 のようにリテラルにすると関数を渡したり返せます。

関数名を代入した変数は関数に渡したり、返値として返せます。

Call 命令は関数名を代入した変数から関数を呼び出します。

文法:

[関数の返値を代入するための変数] = Call 変数名([仮引数])

用例:

Func Main
        see "before test2()" + nl
        f = Test2(:Test)
        see "after test2()" + nl
        call f()

Func Test
        see "Message from test!" + nl

Func Test2 f1
        call f1()
        See "Message from test2!" + nl
        return f1

実行結果:

before test2()
Message from test!
Message from test2!
after test2()
Message from test!

高階関数

高階関数は関数を仮引数として扱えます。

用例:

Func Main
        times(5,:test)

Func Test
        see "Message from the test function!" + nl

Func Times nCount,F

        for x = 1 to nCount
                Call F()
        next

実行結果:

Message from the test function!
Message from the test function!
Message from the test function!
Message from the test function!
Message from the test function!

無名関数と多重関数

無名関数は、固有名のない関数です。ほかの関数へ仮引数として渡したり、変数へ代入できます。

文法:

Func [仮引数] { [ステートメント] }

用例:

test( func x,y {
                        see "hello" + nl
                        see "Sum : " + (x+y) + nl
               } )

new great { f1() }

times(3, func { see "hello world" + nl } )

func test x
        call x(3,3)
        see "wow!" + nl

func times n,x
        for t=1 to n
                call x()
        next

Class great
        func f1
                f2( func { see "Message from f1" + nl } )

        func f2 x
                call x()

実行結果:

hello
Sum : 6
wow!
Message from f1
hello world
hello world
hello world

用例:

Func Main
        aList = [1,2,3,4]
        Map (aList , func x {
                                return x*x
                            } )
        see aList
        aList = [4,9,14,25]
        Map(aList, :myfilter )
        see aList
        aList = [11,12,13,14]
        Map (aList , func x {
                if x%2=0
                        return "even"
                else
                        return "odd"
                ok
        })
        see aList

Func myfilter x
        if x = 9
                return "True"
        else
                return "False"
        ok

Func Map aList,cFunc
        for x in aList
                x = call cFunc(x)
        next

実行結果:

1
4
9
16
False
True
False
False
odd
even
odd
even

等式関数

if 関数 = 関数、または演算子‘=’や‘!=’ を用いずにテストできます (この機能は関数の等価性、あるいは Equality of functions とも言います)。

用例:

f1 = func { see "hello" + nl }

f2 = func { see "how are you?" + nl }

f3 = f1

call f1()
call f2()
call f3()

see (f1 = f2) + nl
see (f2 = f3) + nl
see (f1 = f3) + nl

実行結果:

hello
how are you?
hello
0
0
1

参考文献

How is the equality of functions defined? - Quora : https://www.quora.com/How-is-the-equality-of-functions-defined

リフレクションとメタプログラミング

Ring は動的プログラミング言語であり、プログラムのコードに関する応答を得られます。さらに、実行中にコードを変更できます。

ここでは関数一覧とその用法を扱います。

locals()

globals()

functions()

cfunctions()

islocal()

isglobal()

isfunction()

iscfunction()

packages()

ispackage()

classes()

isclass()

packageclasses()

ispackageclass()

classname()

objectid()

isobject()

attributes()

methods()

isattribute()

isprivateattribute()

ismethod()

isprivatemethod()

addattribute()

addmethod()

getattribute()

setattribute()

mergemethods()

packagename()

locals() 関数

locals() 関数は現在のスコープにある変数名のリストを取得します。

文法:

locals() --> 現在のスコープにある変数名のリスト

用例:

test("hello")

func test cMsg

        see cMsg + nl

        x = 10
        y = 20
        z = 30

        see locals()

実行結果:

hello
cmsg
x
y
z

globals() 関数

globals() 関数はグローバルスコープにある変数名のリストを取得します。

文法:

globals() --> グローバルスコープにある変数名のリスト

用例:

x=10 y=20 z=30
test()

func test
        see "message from test()" + nl +
            "Global Variables:" + nl
        see globals()

実行結果:

message from test()
Global Variables:
x
y
z

functions() 関数

functions() 関数は Ring で記述された関数名のリストを取得します。

文法:

functions() --> Ring 関数名のリスト

用例:

see functions()

func f1
        see "f1" + nl

func f2
        see "f2" + nl

func f3
        see "f3" + nl

実行結果:

f1
f2
f3

cfunctions() 関数

cfunctions() 関数は C 言語で記述された関数名のリストを取得します。

文法:

cfunctions() --> C 関数名のリスト

用例:

aList =  cfunctions()
See "Count : " + len(aList) + nl
for x in aList
        see x + "()" + nl
next

実行結果:

Count : 236
len()
add()
del()
get()
clock()
...
(以下、長文のため省略)

islocal() 関数

islocal() 関数はローカルスコープで定義済みの変数か検査します。

文法:

islocal(cVariableName) --> 変数がローカルスコープで定義されているならば 1 を返します。
                           変数がローカルスコープで定義されていないならば 0 を返します。

用例:

test()

func test
        x=10 y=20
        see islocal("x") + nl +
            islocal("y") + nl +
            islocal("z") + nl

実行結果:

1
1
0

isglobal() 関数

isglobal() 関数はグローバルスコープで定義済みの変数か検査します。

文法:

isglobal(cVariableName) --> 変数がグローバルスコープで定義されているならば 1 を返します。
                            変数がグローバルスコープで定義されていないならば 0 を返します。

用例:

x=10 y=20

test()

func test
        see isglobal("x") + nl +
            isglobal("y") + nl +
            isglobal("z") + nl

実行結果:

1
1
0

isfunction() 関数

isfunction() 関数は定義済みの Ring 関数か検査します。

文法:

isfunction(cFunctionName) --> Ring 関数が定義されているならば 1 を返します。
                              Ring 関数が定義されていないならば 0 を返します。

用例:

see isfunction("f1") + nl +
    isfunction("f2") + nl +
    isfunction("f3") + nl

func f1
        see "message from f1()" + nl

func f2
        see "message from f2()" + nl

実行結果:

1
1
0

iscfunction() 関数

iscfunction() 関数は定義済みの C 関数か検査します。

文法:

iscfunction(cFunctionName) --> C 関数が定義されているならば 1 を返します。
                               C 関数が定義されていないならば 0 を返します。

用例:

see iscfunction("len") + nl +
    iscfunction("add") + nl +
    iscfunction("test") + nl

実行結果:

1
1
0

packages() 関数

packages() 関数はパッケージ名のリストを取得します。

文法:

packages() --> パッケージ名のリスト

用例:

See packages()

Package Package1
        Class class1
                Func f1

Package Package2
        Class class1
                Func f1

Package Package3
        Class class1
                Func f1

Package Package4
        Class class1
                Func f1

実行結果:

package1
package2
package3
package4

ispackage() 関数

ispackage() 関数は定義済みのパッケージか検査します。

文法:

ispackage(cPackageName) --> パッケージが定義されているならば 1 を返します。
                            パッケージが定義されていないならば 0 を返します。

用例:

See ispackage("package1") + nl +
    ispackage("package4") + nl +
    ispackage("package5") + nl +
    ispackage("package3") + nl

Package Package1
        Class class1
                Func f1

Package Package2
        Class class1
                Func f1

Package Package3
        Class class1
                Func f1

Package Package4
        Class class1
                Func f1

実行結果:

1
1
0
1

classes() 関数

classes() 関数はクラス名のリストを取得します。

文法:

classes() --> クラス名のリスト

用例:

See classes()

Class class1
        Func f1

Class class2
        Func f1

Class class3
        Func f1

実行結果:

class1
class2
class3

isclass() 関数

isclass() 関数は定義済みのクラスか検査します。

文法:

isclass(cClassName) -->  クラスが定義されているならば 1 を返します。
                         クラスが定義されていないならば 0 を返します。

用例:

see isclass("class4") + nl +
    isclass("class3") + nl +
    isclass("class2") + nl

Class class1
        func f1

class class2
        func f1

class class3
        func f1

実行結果:

0
1
1

packageclasses() 関数

packageclasses() 関数はパッケージにあるクラス名のリストを取得します。

文法:

packageclasses(cPackageName) --> パッケージにあるクラス名のリスト

用例:

see "classes in Package1" + nl
see packageclasses("Package1")
see "classes in Package2" + nl
see packageclasses("Package2")

Package Package1
        Class class1
                Func f1

Package Package2
        Class class1
                Func f1
        Class class2
                Func f1
        Class class3
                func f1

実行結果:

classes in Package1
class1
classes in Package2
class1
class2
class3

ispackageclass() 関数

ispackageclass() 関数はパッケージで定義済みのクラスか検査します。

文法:

ispackageclass(cPackageName,cClassName) -->  クラスが定義されているならば 1 を返します。
                                             クラスが定義されていないならば 0 を返します。

用例:

see ispackageclass("package1","class1") + nl +
    ispackageclass("package1","class2") + nl +
    ispackageclass("package2","class1") + nl +
    ispackageclass("package2","class2") + nl

Package Package1
        Class class1
                Func f1

Package Package2
        Class class1
                Func f1
        Class class2
                Func f1
        Class class3
                func f1

実行結果:

1
0
1
1

classname() 関数

classname() 関数はオブジェクトのクラス名を検査します。

文法:

classname(object) --> オブジェクトのクラス名を返します。

用例:

o1 = new point
o2 = new rect

see classname(o1) + nl          # point を表示
see classname(o2) + nl          # rect  を表示

class point
class rect

objectid() 関数

objectid() 関数はオブジェクトの識別子 (ID) を検査します。

文法:

objectid(object) --> オブジェクトの識別子 (ID) を返します。

用例:

o1 = new point
see objectid(o1) + nl
test(o1)

func test v
        see objectid(v) + nl

Class point x y z

実行結果:

021B5808
021B5808

isobject() 関数

isobject() 関数は変数がオブジェクトか検査します。

文法:

isobject(variable) --> オブジェクトならば True を、そうでなければ False を返します。

attributes() 関数

attributes() 関数はオブジェクトの属性を取得します。

文法:

attributes(object) --> オブジェクトの属性リストを返します。

用例:

o1 = new point
aList = attributes(o1)          # see attributes(o1) を使えます。
for t in aList see t next       # xyz の表示
Class Point x y z

methods() 関数

methods() 関数はオブジェクトのメソッドを取得します。

文法:

methods(object) --> オブジェクトのメソッドのリストを返します。

用例:

o1 = new test
aList = methods(o1)

for x in aList
        cCode = "o1."+x+"()"
        eval(cCode)
next

Class Test
        func f1
                see "hello from f1" + nl
        func f2
                see "hello from f2" + nl
        func f3
                see "hello from f3" + nl
        func f4
                see "hello from f4" + nl

実行結果:

hello from f1
hello from f2
hello from f3
hello from f4

isattribute() 関数

isattribute() 関数はオブジェクトに属性があるか検査します。

文法:

isattribute(object,cAttributeName)
        --> オブジェクトが属性を有しているならば True を返します。

用例:

o1 = new point

see isattribute(o1,"x") + nl    # 1 の表示
see isattribute(o1,"t") + nl    # 0 の表示
see isattribute(o1,"y") + nl    # 1 の表示
see isattribute(o1,"z") + nl    # 1 の表示

class point x y z

isprivateattribute() 関数

isprivateattribute() 関数はオブジェクトにプライベート属性があるか検査します。

文法:

isprivateattribute(object,cAttributeName)
        --> オブジェクトにプライベート属性があるならば True を返します。

用例:

o1 = new person

see isprivateattribute(o1,"name") + nl +
    isprivateattribute(o1,"address") + nl +
    isprivateattribute(o1,"phone") + nl +
    isprivateattribute(o1,"job") + nl +
    isprivateattribute(o1,"salary")

Class Person
        name address phone
        private
                job salary

実行結果:

0
0
0
1
1

ismethod() 関数

ismethod() 関数はオブジェクトのクラスにメソッドがあるか検査します。

文法:

ismethod(object,cMethodName)
        --> オブジェクトのクラスにメソッドがあるならば True を返します。

用例:

o1 = new point

see ismethod(o1,"print") + nl           # 1 の表示

mylist = []
mylist + new point

see ismethod(mylist[1],"print") + nl    # 1 の表示

class point x y z
        func print
                see x + nl + y + nl + z + nl

isprivatemethod() 関数

isprivatemethod() 関数はオブジェクトのクラスにプライベートメソッドがあるか検査します。

文法:

isprivatemethod(object,cMethodName)
        --> オブジェクトのクラスにプライベートメソッドあるならば True を返します。

用例:

o1 = new Test

see isprivatemethod(o1,"f1") + nl +
    isprivatemethod(o1,"f2")

Class Test
        func  f1
                see "message from f1()" + nl
        private
                func f2
                        see "message from f2()" + nl

実行結果:

0
1

addattribute() 関数

addattribute() 関数はオブジェクトの状態 (クラスではなく) へ属性 (または属性のグループ) を追加します。

文法:

AddAttribute(object,cAttributeName|aAttributesList)

用例①:

see new point {x=10 y=20 z=30}
Class Point
        AddAttribute(self,["x","y","z"])

用例②:

o1 = new point
addattribute(o1,"x")
addattribute(o1,"y")
addattribute(o1,"z")
see o1 {x=10 y=20 z=30}
class point

実行結果:

x: 10.000000
y: 20.000000
z: 30.000000

addmethod() 関数

addmethod() 関数はオブジェクトのクラスへメソッドを追加します。このメソッドは同一クラスにあるオブジェクトでも使えます。

文法:

AddMethod(Object,cNewMethodName,cMethodName|AnonymousFunction)

用例:

o1 = new point { x=10 y=20 z=30 }

addmethod(o1,"print", func { see x + nl + y + nl + z + nl } )

o1.print()

Class point
        x y z

実行結果:

10
20
30

無名関数ではなく関数名により、新規メソッドをクラスへ追加できます

用例:

o1 = new point { x=10 y=20 z=30 }

myfunc = func { see x + nl + y + nl + z + nl }

addmethod(o1,"print", myfunc )
addmethod(o1,"display", myfunc )
addmethod(o1,"show", myfunc )

o1.print()
o1.display()
o1.show()

Class point
        x y z

実行結果:

10
20
30
10
20
30
10
20
30

クラスへメソッドを追加するため、このメソッドでは対象のクラスにあるメソッドを使用します。

用例:

o1 = new point { x=10 y=20 z=30 }
o2 = new point { x=100 y=200 z=300 }
o3 = new point { x=50 y=150 z=250 }

addmethod(o1,"print", func { see x + nl + y + nl + z + nl } )

o1.print()
o2.print()
o3.print()

Class point
        x y z

実行結果:

10
20
30
100
200
300
50
150
250

getattribute() 関数

getattribute() 関数はオブジェクトの属性値を取得します。

文法:

GetAttribute(oObject,cAttributeName) ---> 属性の値

用例:

o1 = new point

see getattribute(o1,"name") + nl +
    getattribute(o1,"x") + nl +
    getattribute(o1,"y") + nl +
    getattribute(o1,"z") + nl

Class Point
        x=10 y=20 z=30
        name = "3D-Point"

実行結果:

3D-Point
10
20
30

用例:

findclass() 関数から GetAttribute() を呼び出してクラスリストのメンバを検索します。検索には桁の位置よりもメンバ名を優先して使用します。

myList =
          [new Company {position=3 name="Mahmoud" symbol="MHD"},
           new Company {position=2 name="Bert" symbol="BRT"},
           new Company {position=1 name="Ring" symbol="RNG"}
          ]

see myList
see nl +"=====================" + nl + nl

for i = 1 to len(myList)
     see  "Pos: "+ i +" | "+ myList[i].position +" | "+ myList[i].name +
          " | "+  myList[i].symbol    +" | "+ nl
next

See findclass(myList, "MHD", "symbol") +nl   ### メンバのクラス名を指定

###---------------------------------------

func findclass classList, cValue, classMember

       See nl + "FindClass: "  +" "+ cValue + nl + nl

       for i = 1 to len(classList)
            result = getattribute( classList[i], classMember )

           See "Result-Attr: " + i +" "+  result +nl
           if result = cValue
               j = i
            ok
       next
return j

###--------------------------------------

class company position name symbol

実行結果:

Pos: 1 | 3 | Mahmoud | MHD |
Pos: 2 | 2 | Bert | BRT |
Pos: 3 | 1 | Ring | RNG |

FindClass:  MHD

Result-Attr: 1 MHD
Result-Attr: 2 BRT
Result-Attr: 3 RNG

1

setattribute() 関数

setattribute() 関数はオブジェクトの属性値を設定します。

文法:

SetAttribute(oObject,cAttributeName,Value)

用例:

o1 = new person
setattribute(o1,"cName","Mahmoud")
setattribute(o1,"nSalary",1000000)
setattribute(o1,"aColors",["white","blue","yellow"])

see o1
see o1.aColors

Class Person
        cName
        nSalary
        aColors

実行結果:

cname: Mahmoud
nsalary: 1000000.000000
acolors: List...
white
blue
yellow

mergemethods() 関数

MergeMethods() 関数は継承を行わずにクラスとメソッドを共有します。

この関数は別のクラスへクラスのメソッドを併合します。

文法:

MergeMethods(cClassNameDestination,cClassNameSource)

用例:

mergemethods("count","share")
mergemethods("count2","share")

o1 = new count  { test() }
o1 = new count2 { test() }

Class Share
        func one
                see "one" + nl
        func two
                see "two" + nl
        func three
                see "three" + nl

Class Display
        Func printline
                see copy("*",20) + nl

Class Count from Display
        Func test
                printline()
                one()
                two()
                three()
                printline()

Class Count2 from Display
        Func test
                three()
                two()
                one()
                printline()

実行結果:

********************
one
two
three
********************
three
two
one
********************

packagename() 関数

packagename() 関数は import 命令が成功した最近のパッケージ名を検査します。

文法:

packagename() --> import 命令が成功した最近のパッケージ名を返します。

用例:

load "weblib.ring"
import System.web
see packagename()       # system.web

多重構造の宣言型プログラミング

オブジェクト指向による多重構造の宣言型プログラミング環境の構築方法です。

リストへオブジェクトを作成するには

コンポジションと参照によりオブジェクトとリストを返すには

オブジェクトのアクセス完了後にコードを実行するには

オブジェクト指向による宣言型プログラミング

リストへオブジェクトを作成するには

リストの定義時にリストへオブジェクトを作成できます。

Add() 関数、または + 演算子により、必要なときにオブジェクトをリストへ追加できます。

用例:

alist = [new point, new point, new point]       # # オブジェクトが三つあるリストを作成します。

alist + [1,2,3]                                 # 別の項目をリストへ追加します。

see "Item 4 is a list contains 3 items" + nl
see alist[4]

add(alist , new point)
alist + new point

alist[5] { x = 100 y = 200 z = 300 }
alist[6] { x = 50 y = 150 z = 250 }

see "Object inside item 5" + nl
see alist[5]
see "Object inside item 6" + nl
see alist[6]

class point x y z

実行結果:

Item 4 is a list contains 3 items
1
2
3
Object inside item 5
x: 100.000000
y: 200.000000
z: 300.000000
Object inside item 6
x: 50.000000
y: 150.000000
z: 250.000000

コンポジションと参照によりオブジェクトとリストを返すには

コンポジションの使用とクラス属性のオブジェクトがある場合、オブジェクトの返値は参照で返します。

呼び出し元で代入演算子を使う場合は、オブジェクトのコピーを作成します。

呼び出し元で代入演算子を使わない場合は、参照で返されたオブジェクトへアクセスできます。

また、属性がリスト (オブジェクトではありません) でも同じ処理が適用されます。

注釈

オブジェクト、およびリストは同じ規則で処理します。関数へ渡すときは、参照渡しになります。関数から返すときは、参照で返されたオブジェクト属性を除き値返しになります。

用例:

o1 = new Container
myobj = o1.addobj()     # 別のコピーを代入で作成します。
myobj.x = 100
myobj.y = 200
myobj.z = 300
see o1.aobjs[1]         # コンテナにあるオブジェクトを表示します。
see myobj               # コピーの表示

Class Container
        aObjs = []
        func addobj
                aobjs + new point
                return aobjs[len(aobjs)]        # オブジェクトを参照で返します。

Class point
        x  = 10
        y  = 20
        z  = 30

実行結果:

x: 10.000000
y: 20.000000
z: 30.000000
x: 100.000000
y: 200.000000
z: 300.000000

用例②:

func main
        o1 = new screen  {
                content[point()] {
                        x = 100
                        y = 200
                        z = 300
                }
                content[point()] {
                        x = 50
                        y = 150
                        z = 250
                }
        }
        see o1.content[1]
        see o1.content[2]

Class Screen
        content = []
        func point
                content + new point
                return len(content)

Class point
        x  = 10
        y  = 20
        z  = 30

実行結果:

x: 100.000000
y: 200.000000
z: 300.000000
x: 50.000000
y: 150.000000
z: 250.000000

用例③:

func main
        o1 = New Screen  {
                point() {               # 参照でオブジェクトへアクセスします。
                        x = 100
                        y = 200
                        z = 300
                }
                point() {               # 参照でオブジェクトへアクセスします。
                        x = 50
                        y = 150
                        z = 250
                }
        }
        see o1.content[1]
        see o1.content[2]

Class Screen
        content = []
        func point
                content + new point
                return content[len(content)]    # オブジェクトを参照で返します。

Class point x=10 y=20 z=30

実行結果:

x: 100.000000
y: 200.000000
z: 300.000000
x: 50.000000
y: 150.000000
z: 250.000000

オブジェクトのアクセス完了後にコードを実行するには

オブジェクト属性とメソッドを使うには { } でオブジェクトへアクセスします。

オブジェクトに BraceEnd() メソッドがある場合は、オブジェクトのアクセス完了直前に実行します。

用例:

New Point { See "How are you?" + nl }

Class Point x y z
        func braceend
                see "I'm fine, Thank you!" + nl

実行結果:

How are you?
I'm fine, Thank you!

オブジェクト指向による宣言型プログラミング

この機能はオブジェクト指向による多重構造の宣言型プログラミング環境の構築と使用を可能にします。

{ } によるオブジェクト属性、およびメソッドへのアクセス

BraceEnd() メソッド

参照によるオブジェクト返し

Setter (セッター) / Getter (ゲッター) メソッド (オプション扱い)

用例:

# 宣言型プログラミング (多重構造)

Screen()
{

        point()
        {
                x = 100
                y = 200
                z = 300
        }

        point()
        {
                x = 50
                y = 150
                z = 250
        }
}

# 関数とクラス

Func screen return new screen

Class Screen

        content = []

        func point
                content + new point
                return content[len(content)]

        func braceend
                see "I have " + len(content) + " points!"

Class point

        x=10 y=20 z=30

        func braceend
                see self

実行結果:

x: 100.000000
y: 200.000000
z: 300.000000
x: 50.000000
y: 150.000000
z: 250.000000
I have 2 points!

コード品質の向上

メソッドで仮引数を使わないときは、メソッド名末尾の () を省略できます。これにより、コード品質の向上になります。この機能はオブジェクトメソッドとオブジェクト属性との機能に違いがあるため Ring では使えません。オブジェクト属性へ Getter メソッドを定義するとき、同様の効果をコードの構文で実現できます。例えば point() メソッドの定義ではなく point 属性値の取得で実行される getpoint() メソッドを point 属性として定義します。変数名は () を省略できるため、 point() ではなく point と記述します。 getpoint() メソッドはオブジェクトの作成、およびオブジェクトの参照を返します。

用例:

new Container
{
        Point
        {
                x=10
                y=20
                z=30
        }
}

Class Container
        aObjs = []
        point
        func getpoint
                aObjs + new Point
                return aObjs[len(aObjs)]

Class Point x y z
        func braceend
                see "3D Point" + nl + x + nl + y + nl + z + nl

実行結果:

3D Point
10
20
30

自然言語プログラミング

プログラミング言語 Ring でクラスとオブジェクトを土台にした自然プログラミング言語を作成できます。

沿革

2010年にプログラミング言語 Supernova の新規開発で Programming Without Coding Technology (PWCT) を使用しました。 Supernova は自然言語ステートメントと類似の記法によるコードで GUI アプリケーションを簡単に作成できます。五年後、いまでは同様の成果を Ring で得ることができます。さらに好みや必要に応じて、どのような問題領域であっても自然言語ステートメントに類似したコードの作成、使用する能力があります。

Ring は Supernova の精神を受け継いでおり、そのほかにも多種様々な汎用プログラミング言語の精神を受け継いでいます。

用例

この用例は、二つの命令を定義するクラスの作成方法です。

最初の命令は : I want window

次の命令は : Window title = <式>

また ‘the’ などのキーワードは無視します。

New App
{
        I want window
        The window title = "hello world"
}

Class App

        # I want window 命令の属性
                i want window
                nIwantwindow = 0
        # Window title 命令の属性
        # ここで window 属性の再定義を行いません。
                title
                nWindowTitle = 0
        # 値を与えると、キーワードを無視します。
                the=0

        func geti
                if nIwantwindow = 0
                        nIwantwindow++
                ok

        func getwant
                if nIwantwindow = 1
                        nIwantwindow++
                ok

        func getwindow
                if nIwantwindow = 2
                        nIwantwindow= 0
                        see "Instruction : I want window" + nl
                ok
                if nWindowTitle = 0
                        nWindowTitle++
                ok

        func settitle cValue
                if nWindowTitle = 1
                        nWindowTitle=0
                        see "Instruction : Window Title = " + cValue + nl
                ok

実行結果:

Instruction : I want window
Instruction : Window Title = hello world

キーワード‘And’の変更

‘and’で二つの命令同士をつなげたい場合があります。

‘and’ は Ring のキーワードであるため、問題がありますが、

ChangeRingKeyword 命令により変更できます。

文法:

ChangeRingKeyword  <変更元のキーワード>  <変更先のキーワード>

注釈

キーワードの復元をお忘れなく。

ちなみに

ChangeRingKeyword 命令はコンパイラにより、字句解析段階で実行されます (構文解析の前に)。

用例:

ChangeRingKeyword       and  _and

New App
{
                I want window and the window title = "hello world"
}

Class App

                # I want window 命令の属性
                                i want window
                                nIwantwindow = 0
                # Window title 命令の属性
                # ここで window 属性の再定義を行いません。
                                title
                                nWindowTitle = 0
                # 値を与えると、キーワードは無視されます。
                                the=0  and=0

ChangeRingKeyword       _and  and

                func geti
                        if nIwantwindow = 0
                                nIwantwindow++
                        ok

                func getwant
                        if nIwantwindow = 1
                                nIwantwindow++
                        ok

                func getwindow
                        if nIwantwindow = 2
                                nIwantwindow= 0
                                see "Instruction : I want window" + nl
                        ok
                        if nWindowTitle = 0
                                nWindowTitle++
                        ok

                func settitle cValue
                        if nWindowTitle = 1
                                nWindowTitle=0
                                see "Instruction : Window Title = " + cValue + nl
                        ok

                func getand
                        see "Using : and" + nl

実行結果:

Instruction : I want window
Using : and
Instruction : Window Title = hello world

演算子 ‘+’ の変更

“+”演算子などの演算子へ新しい動作を定義したいときがあります。

この変更は、 ChangeRingOperator 命令を使うと演算子を隠せます (名前自体の変更)。

また、演算子を識別子へ変更しても処理で扱えます。

文法:

ChangeRingOperator  <変更前の演算子>  <変更後の演算子>

注釈

キーワードの復元をお忘れなく。

ちなみに

ChangeRingOperator 命令はコンパイラにより、字句解析段階で実行されます (構文解析の前に)。

用例:

ChangeRingOperator + _+

New App {
        +
}

Class App
        +
        func get+
                see "Plus operator"

ChangeRingOperator _+ +

実行結果:

Plus operator

‘=’ 演算子を ‘is’ へ変更するには

用例:

ChangeRingKeyword       and  _and
ChangeRingOperator      =    is

New App
{
                I want window and the window title is "hello world"
}

ChangeRingOperator      is    =

Class App

                # I want window 命令の属性
                                i want window
                                nIwantwindow = 0
                # Window title 命令の属性
                # ここで window 属性の再定義を行いません。
                                title
                                nWindowTitle = 0
                # 値を与えると、キーワードは無視されます。
                                the=0  and=0

ChangeRingKeyword       _and  and

                func geti
                        if nIwantwindow = 0
                                nIwantwindow++
                        ok

                func getwant
                        if nIwantwindow = 1
                                nIwantwindow++
                        ok

                func getwindow
                        if nIwantwindow = 2
                                nIwantwindow= 0
                                see "Instruction : I want window" + nl
                        ok
                        if nWindowTitle = 0
                                nWindowTitle++
                        ok

                func settitle cValue
                        if nWindowTitle = 1
                                nWindowTitle=0
                                see "Instruction : Window Title = " + cValue + nl
                        ok

自然言語コードで Eval() を使うには

用例:

func Main

  cProgram = ' I want window and the window title is "hello world" '

  MyLanguage(cProgram)

Func MyLanguage cCode

  # キーワードと演算子を変更する命令をコードへ追加します。
  # 理由は Eval() はコンパイラの新しいオブジェクトとして使用されるからです (元のキーワードと演算子)。

  cCode = '
        ChangeRingKeyword  and  _and
        ChangeRingOperator  =    is
  ' + cCode

  New App
  {
          eval(cCode)
  }

  Class App

          # I want window 命令の属性
                  i want window
                  nIwantwindow = 0
          # Window title 命令の属性
          # ここで window 属性の再定義を行いません。
                  title
                  nWindowTitle = 0
          # 値を与えると、キーワードは無視されます。
                  the=0

          ChangeRingKeyword  and  _and
                  and=0
          ChangeRingKeyword  _and  and

          func geti
                if nIwantwindow = 0
                  nIwantwindow++
                ok

          func getwant
                if nIwantwindow = 1
                  nIwantwindow++
                ok

          func getwindow
                if nIwantwindow = 2
                  nIwantwindow= 0
                  see "Instruction : I want window" + nl
                ok
                if nWindowTitle = 0
                  nWindowTitle++
                ok

          func settitle cValue
                if nWindowTitle = 1
                  nWindowTitle=0
                  see "Instruction : Window Title = " + cValue + nl
                ok

BraceStart と BraceEnd メソッド

{ } の使用前後で実行されるコードを記述できます。

用例:

o1 = new test {
        see "Hello" + nl
}

o1 {}

class test

        func bracestart
                see "start" + nl

        func braceend
                see "end" + nl

実行結果:

start
Hello
end
start
end

BraceExprEval メソッド

この用例は、 “BraceExprEval”メソッドで自然言語コードの式を取得するための用法です。

用例:

new natural {
        create 5
}

class natural
        create=0
        lkeyword = false
        func braceexpreval r
                if lkeyword lkeyword=false return ok
                see "expr eval" + nl
                see "type: " + type(r) see nl
                see "value : " see r see nl
        func getcreate
                lkeyword = true
                see "create" + nl

実行結果:

create
expr eval
type: NUMBER
value : 5

本物の自然言語コード

これは一歩進んだ応用例です。

# 自然言語コード
new program {
        Accept 2 numbers then print the sum
}

# 自然言語コードの実装
class program
        # キーワード
                Accept=0 numbers=0 then=0 print=0 the=0 sum=0

        # 実行
        func braceexpreval x
                value = x
        func getnumbers
                for x=1 to value
                        see "Enter Number ("+x+") :" give nNumber
                        aNumbers + nNumber
                next
        func getsum
                nSUm = 0
                for x in aNumbers nSum+= x next
                see "The Sum : " + nSum
        private
                value=0 aNumbers=[]

実行結果:

Enter Number (1) :3
Enter Number (2) :4
The Sum : 7

BraceError() メソッド

この用例は、 “BraceError” メソッドで括弧 { } を用いてオブジェクトへアクセスした時のエラー処理の用法です。

用例:

func main
        o1 = new point {
                x=10 y=20 z=30
                TEST
                SEE test
        }

class point x y z
        func braceerror
                see "Handle Error!" + nl
                SEE "Message :" + cCatchError + nl
                if ( left(cCatchError,11) = "Error (R24)" ) and not isattribute(self,"test")
                        see "add attribute" + nl
                        addattribute(self,"test")
                        test = 10
                ok
                see "done" + nl
                return

実行結果:

Handle Error!
Message :Error (R24) : Using uninitialized variable : test
add attribute
done
10

用例:

new point {
        x=10 y=20 z=30
        test()
        see "mmm..." + NL
}

class point x y z
        func braceerror
                see "Handle Error!" + nl
                see "Message :" + cCatchError + nl
                see self
                see "Done" + NL

実行結果:

Handle Error!
Message :Error (R3) : Calling Function without definition !: test
x: 10.000000
y: 20.000000
z: 30.000000
Done
mmm...

美しい自然言語コード

“literal”としてリテラルを記入しなくても単語を扱えます。

用例:

この用例では、“hello world”の代わりに hello world を受け入れます。

この用例では、命令の終了を確認するために braceend() を使用しています。

このクラスではリテラルで終了する自然言語命令のみ処理します。

ChangeRingKeyword       and  _and

New App
{
                I want window and the window title is hello world
}

Class App

                # I want window 命令の属性
                                i want window
                                nIwantwindow = 0
                # Window title 命令の属性
                # ここで window 属性の再定義を行いません。
                                title is
                                nWindowTitle = 0
                # 値を与えると、キーワードは無視されます。
                                the=0  and=0
                # データ
                                literal = ""

ChangeRingKeyword       _and  and

                func geti
                        if nIwantwindow = 0
                                nIwantwindow++
                        ok

                func getwant
                        if nIwantwindow = 1
                                nIwantwindow++
                        ok

                func getwindow
                        if nIwantwindow = 2
                                nIwantwindow= 0
                                see "Instruction : I want window" + nl
                        ok
                        if nWindowTitle = 0
                                nWindowTitle++
                        ok

                func gettitle
                        if nWindowTitle = 1
                                nWindowTitle=2
                        ok

                func getis
                        if nWindowTitle = 2
                                nWindowTitle=3
                        ok

                func braceend
                        if nWindowTitle = 3
                                see "Instruction : Window Title = " + literal + nl
                                nWindowTitle = 0
                        ok

                func braceerror
                        c= substr(cCatchError,":")
                        while c > 0
                                c= substr(cCatchError,":")
                                cCatchError=substr(cCatchError,c+1)
                        end
                        literal += substr(cCatchError,1)

自然言語ライブラリの用法

自然言語ライブラリで命令グループのある言語を手軽に定義するための用法です。

自然言語ライブラリの使用前に naturallib.ring ライブラリを読み込みます。

load "naturallib.ring"

ライブラリの読み込み後、このメソッドで自然言語を使えます。

SetLanguageName(cLanguageName)

setCommandsPath(cFolder)

SetPackageName(cPackageName)

UseCommand(cCommandName)

SetOperators(cOperators)

RunFile(cFileName)

RunString(cString)

自然言語ライブラリ - デモプログラム

例えば、テキストファイル program.txt に自然言語コードを記述します。

ファイル: program.txt

Welcome to the Ring programming language!
What you are reading now is not comments, I swear!

After many years of programming I decided to think different about
programming and solve the problems in a better way.

We are writing commands or code and the Ring language is reading
it to understand us! Sure, What you are seeing now is
just ***part of the code - Not the Complete Program***
You have to write little things before and after this
part to be able to run it!

It is the natural part of our code where we can write in English,
Arabic or any Natural Language Then we will tell the computer
through the Ring language what must happens! in a way that we can scale
for large frameworks and programs.

Just imagine what will happens to the world of programming once
we create many powerful frameworks using the Ring language that
uses this way (Natural Programming).

For example When we say Hello to the Machine, It can reply! and when we
say count from 1 to 5 it will understand us, Also if
we said count from 5 to 1 it will
understand us too! You can see the Output window!

This Goal is not new, but the Ring language comes
with an innovative solution to this problem.

実行結果:

Hello, Sir!

The Numbers!

1

2

3

4

5

I will count Again!

5

4

3

2

1

自然言語コードを実行するには start.ring が必要です。

start.ring には言語と命令を定義します。

ファイル: start.ring

load "stdlib.ring"
load "naturallib.ring"

New NaturalLanguage {
        SetLanguageName(:MyLanguage)
        SetCommandsPath(CurrentDir()+"/../command")
        SetPackageName("MyLanguage.Natural")
        UseCommand(:Hello)
        UseCommand(:Count)
        RunFile("program.txt")
}

これで MyLanguage 言語名は定義済みになり、言語命令用のフォルダが指定されます。

各命令は MyLanguage.Natural パッケージにあるクラスとして定義されています。

Hello と Count の二つの命令を定義しています。

CurrentDir()+”/../command” フォルダで命令を定義するために二つのファイルが必要です。

ファイル: hello.ring

DefineNaturalCommand.SyntaxIsKeyword([
        :Package = "MyLanguage.Natural",
        :Keyword = :hello,
        :Function = func {
                See  "Hello, Sir!" + nl + nl
        }
])

ファイル: count.ring

DefineNaturalCommand.SyntaxIsKeywordNumberNumber([
        :Package = "MyLanguage.Natural",
        :Keyword = :count,
        :Function = func {
                if not isattribute(self,:count_times) {
                        AddAttribute(self,:count_times)
                        Count_Times = 0
                }
                if Expr(1) > Expr(2) {
                        nStep = -1
                else
                        nStep = 1
                }
                if Count_Times = 0 {
                        see nl+"The Numbers!" + nl
                        Count_Times++
                else
                        see nl + "I will count Again!" +nl
                }
                for x = Expr(1) to Expr(2) step nStep {
                        see nl+x+nl
                }
                CommandReturn(fabs(Expr(1)-Expr(2))+1)
        }
])

命令の定義

DefineNaturalCommand オブジェクトで新しい命令を定義します。

このオブジェクトでは、下記のメソッドが使えます。

SyntaxIsKeyword(aPara)

SyntaxIsKeywordNumber(aPara)

SyntaxIsKeywordNumberNumber(aPara)

SyntaxIsKeywordNumbers(aPara,nCount)

SyntaxIsKeywordString(aPara)

SyntaxIsKeywordStringString(aPara)

SyntaxIsKeywordStrings(aPara,nCount)

SyntaxIsKeywordExpression(aPara)

SyntaxIsKeywordExpressionExpression(aPara)

SyntaxIsKeywordExpressions(aPara,nCount)

SyntaxIsCommand(aPara)

SyntaxIsCommandNumber(aPara)

SyntaxIsCommandNumberNumber(aPara)

SyntaxIsCommandNumbers(aPara,nCount)

SyntaxIsCommandString(aPara)

SyntaxIsCommandStringString(aPara)

SyntaxIsCommandStrings(aPara,nCount)

SyntaxIsCommandExpression(aPara)

SyntaxIsCommandExpressionExpression(aPara)

SyntaxIsCommandExpressions(aPara,nCount)

ファイル: mylanguage.ring

load "stdlib.ring"
load "naturallib.ring"

MyLanguage = New NaturalLanguage {
        SetLanguageName(:MyLanguage)
        SetCommandsPath(CurrentDir()+"/../command")
        SetPackageName("MyLanguage.Natural")
        UseCommand(:Hello)
        UseCommand(:Count)
        UseCommand(:Print)
        UseCommand(:IWantWindow)
        UseCommand(:WindowTitleIs)
        UseCommand(:IWantButton)
}

用例①

この用例では、 Print 命令を定義します。

SyntaxIsKeywordExpression() メソッドを使用します。

メソッドにはリスト (ハッシュとして) を渡します。実行するパッケージ名、キーワード、および関数を決定します。

この定義にある Expr(nExprNumber) 関数はユーザがキーワードの後に記述する式の値を取得します。

ファイル: print.ring

DefineNaturalCommand.SyntaxIsKeywordExpression([
        :Package = "MyLanguage.Natural",
        :Keyword = :print,
        :Function = func {
                See  Expr(1)
        }
])

用法:

load "mylanguage.ring"

MyLanguage.RunString('
        print "Hello, World!"
')

実行結果:

Hello, World!

用例②

ファイル: iwantwindow.ring

DefineNaturalCommand.SyntaxIsCommand([
        :Package = "MyLanguage.Natural",
        :Command = "i want window",
        :Function = func {
                See  "Command: I want window" + nl
        }
])

用法:

load "mylanguage.ring"

MyLanguage.RunString('
        i want window
')

実行結果:

Command: I want window

用例③

ファイル: windowtitleis.ring

DefineNaturalCommand.SyntaxIsCommandString([
        :Package = "MyLanguage.Natural",
        :Command = "window title is",
        :Function = func {
                See  "Command: Window title is " + Expr(1) + nl
        }
])

用法:

load "mylanguage.ring"

MyLanguage.RunString('
        I want window and the window title is "Hello World"
')

実行結果:

Command: I want window
Command: Window title is Hello World

自然言語ライブラリ - 演算子

この用例は演算子ではなく Count 命令を使用しています。

load "mylanguage.ring"

MyLanguage.RunString("
        Hello
        Count 1 5
        Count 5 1
")

詳述すると、

load "mylanguage.ring"

MyLanguage.RunString("
        Hello, Please   Count from 1 to 5 then count from 5 to 1
")

また、命令は “(” や ”)” などの演算子で囲むことができます。

load "mylanguage.ring"

MyLanguage {
        SetOperators("()")
        RunString("
                Here we will play and will try something
                that looks like Lisp Syntax
                (count  (count 1 5)  (count 20 15))
                Just for fun!
        ")
}

クラスによる命令の定義

実装について詳しく説明します。

自然言語ライブラリは新規命令の定義をするたびにクラスを定義します。

DefineNaturalCommand オブジェクト、またはこの用例のように、新しいクラスの定義により単純明快なインタフェースで命令を定義する選択肢があります。

DefineNaturalCommand (最も簡単な方法) は実行時にクラスを定義します。

ファイル: hello.ring

Package MyLanguage.Natural

class Hello

        func AddAttributes_Hello
                AddAttribute(self,:hello)

        func GetHello
                See  "Hello, Sir!" + nl + nl

ファイル: count.ring

Package MyLanguage.Natural

class Count

        func Getcount
                StartCommand()
                CommandData()[:name] = :Count
                CommandData()[:nExpr] = 0
                CommandData()[:aExpr] = []

        func BraceExprEval_Count nValue
                if isCommand() and CommandData()[:name] = :Count {
                        if isNumber(nValue) {
                                CommandData()[:nExpr]++
                                CommandData()[:aExpr] + nValue
                                if CommandData()[:nExpr] = 2 {
                                        Count_Execute()
                                }
                        }
                }

        func AddAttributes_Count
                AddAttribute(self,:count)

        func Count_Execute
                if not isattribute(self,:count_times) {
                        AddAttribute(self,:count_times)
                        Count_Times = 0
                }
                if Expr(1) > Expr(2) {
                        nStep = -1
                else
                        nStep = 1
                }
                if Count_Times = 0 {
                        see nl+"The Numbers!" + nl
                        Count_Times++
                else
                        see nl + "I will count Again!" +nl
                }
                for x = Expr(1) to Expr(2) step nStep {
                        see nl+x+nl
                }
                CommandReturn(fabs(Expr(1)-Expr(2))+1)

変数と属性のスコープ規則

Ring のスコープ規則と変数の検出方法、および名前衝突の解説と解決方法と回避方法です。

この情報は Ring で大規模アプリケーションの開発をはじめるときに重要です。

アプリケーションには下記が使用されています。

グローバル変数 (不使用を心がけてください)

クラス (オブジェクト指向)

括弧 { } によるオブジェクトのアクセス

宣言型プログラミング

自然言語プログラミング

三種類のスコープ

Ring には三種類のスコープがあります。

パブリックスコープとグローバルスコープ - 各変数はステートメント部で定義されます (関数とクラスの前)

オブジェクトスコープ - オブジェクトの内側にあるとき (クラスのメソッドの内側または { } の使用によるオブジェクトへのアクセス)

ローカルスコープ - 関数とメソッドに関連付けられています

変数の定義と変数へのアクセス

Ring はレキシカルスコープを使用しています。つまり、変数のスコープは変数を定義した場所により決定します。

{ } 括弧内でのオブジェクトのアクセス時、現在有効なオブジェクトのスコープを対象となるオブジェクトのスコープへ変更します。今まで通り、グローバルスコープとローカルスコープへアクセスできます。

'Class' キーワードとクラス名末尾に、変数名の定義を記述したとしても、今まで通りグローバルスコープへアクセスできます。

この範囲 (クラスの範囲 - クラス名の後、およびメソッドの前) にあるものは、

グローバルスコープ ----> グローバルスコープ

オブジェクトスコープ ----> オブジェクトスコープ

ローカルスコープ ----> オブジェクトスコープ

注釈

クラスの範囲にあるローカルスコープからでも、この範囲のオブジェクトスコープを指すため、多重括弧は使用可能でありローカルスコープからクラスのオブジェクトスコープへのアクセスができます。

ちなみに

この範囲での定義によりウィンドウとコントロールの属性を作成できます。

ちなみに

クラスの範囲にてオブジェクトの作成、および括弧 { } でオブジェクトへアクセスした後に、括弧の内側で Self.属性 を使うとクラスを使えます (アクセスしようとしているオブジェクトではありません)。この理由はローカルスコープからクラスを呼び出すことができるからです。

関数の仮引数は、自動的にローカルスコープへ定義されます。

Ring による変数の検出方法

1 - 最初にローカルスコープを検索

見つからない！

2 - オブジェクトスコープの検索

見つからない！

3 - パブリックスコープの検索

見つからない ----> ランタイムエラー

見つかった ----> 次回の検索を回避するために、最適化できるか確認します (性能改善のためのポインタとキャッシュ)。

オブジェクト.属性の用法

オブジェクト.属性 を使うときはオブジェクト属性に限り検索を行います。

つまり、ローカルスコープまたはグローバルスコープのオブジェクト属性では検索は行いません。

注釈

Self.属性を使うときは属性を検索する前に Self の検索を最初に行います。

Self オブジェクト

Selft オブジェクトは現在のオブジェクトを参照するためにクラスのメソッドから使えます！

クラスのメソッドの内側であり Self を使うときは、このクラスから作成されるオブジェクトを意味します。

クラスのメソッドの内側で括弧 { } を使うと、現在のオブジェクトのスコープを変更します。また、 Self でオブジェクトへアクセスするときに、括弧の内側にある参照を変更します。

クラスの範囲 (クラス名の後、およびメソッドの前) の内側はオブジェクトスコープ、およびローカルスコープからオブジェクトへのアクセスすることもできます。この範囲で Self を使うと、常にクラスのオブジェクトへ参照されます。オブジェクトのスコープの変更で括弧を使用後に、括弧の内側で Self を使用した場合でも、クラスの範囲内にあるため、 Self はクラスオブジェクトへの参照になります (既に括弧でアクセスしているオブジェクトではありません)。

グローバルスコープ ---> グローバルスコープ

オブジェクトスコープ ---> オブジェクトスコープ

ローカルスコープ ---> オブジェクトスコープ

括弧を使うとオブジェクトのスコープのみ変更されます。 Ring は変数を検索するときに、ローカルスコープを最初に検索するためクラスの内側にある Self を検出します。

Ring における変数と属性の定義方法

Ring は代入操作で変数名を使用します。

1 - 変数名で検索

2 - 見つからない ---> ランタイムエラーの回避と現在のスコープへ変数を定義します。

3 - 見つかった ---> 変数を使用しますが現在のスコープへ変数を一切定義しません。

グローバルの範囲 (関数またはクラスの前) において現在のスコープはグローバルスコープになります。

クラスの範囲 (クラス名の後、およびメソッドの前) において現在のスコープはオブジェクトの属性になります。

関数とメソッドにおける現在のスコープはローカルスコープになります。

クラス属性とグローバル変数の間での名前衝突

この用例を参照してください:

name = "test"
o1 = new person
see o1

class person
        name
        address
        phone

前述の用例ではグローバル変数 ‘name’ が person クラスの内側にあります。

Ring は‘name’ 変数を使用するにとき検索処理の開始、および検出します。

見つかった ---> 見つかったものを使用

見つからない ---> 新しい属性の定義

しかし、変数名はグローバル変数であるため、検出後に使用されます！

属性名が存在しない！　オブジェクトへ追加します。

解決方法① - Main 関数の使用

func main
        name = "test"
        o1 = new person
        see o1

class person
        name
        address
        phone

解決方法② - $ などのグローバル変数名に特殊記号を使用

$name = "test"
o1 = new person
see o1

class person
        name
        address
        phone

解決方法③ - AddAttribute() メソッドの使用

name = "test"
o1 = new person
see o1

class person
        AddAttribute(self,"name")
        address
        phone

解決方法④ - 属性名の先頭に Self を使用

name = "test"
o1 = new person
see o1

class person
        self.name
        address
        phone

この名前衝突に関する最善の解決方法は？

1 - グローバル変数で $ 記号を使用

2 - オプション扱い : グローバル変数の回避する、または Main 関数の使用

実際は両方とも実施します。

そのほかの解決方法

属性名の先頭に Self を使います。または AddAttribute() を使用します。

クラス属性とローカル変数の間での名前衝突

この名前衝突は、括弧でオブジェクトにアクセスするときに発生します。

用例:

func main
        name = "nice"
        o1 = new person {name="mahmoud" address="Egypt"  phone = 000 }
        see o1

class person
        name
        address
        phone

前述の用例にはローカル変数名があります。

この変数の値は、オブジェクトの属性ではなく“mahmoud”が設定されます。

解決方法① : Self の使用

func main
        name = "nice"
        o1 = new person {self.name="mahmoud" address="Egypt"  phone = 000 }
        see o1

class person
        name
        address
        phone

解決方法② : ローカル変数名の変更

func main
        cName = "nice"
        o1 = new person {name="mahmoud" address="Egypt"  phone = 000 }
        see o1

class person
        name
        address
        phone

解決方法③ : 括弧の変更およびドット演算子を使用

func main
        name = "nice"
        o1 = new person
        o1.name ="mahmoud"
        o1.address ="Egypt"
        o1.phone = 000
        see o1

class person
        name
        address
        phone

括弧によるクラスメソッド内オブジェクトへのアクセス方法

クラスのメソッドの内側では三種類のスコープ （ローカルスコープ、オブジェクトスコープとグローバルスコープ） があることを思い出してください。これはオブジェクト属性とメソッドへアクセス可能であると期待しており、括弧でオブジェクトの属性とメソッドへアクセスするまでは本当です。この場合は、オブジェクトのスコープが別のオブジェクトへ切り替えられるためです。

new point { test() }

class point
        x=10 y=20
        func test
                see x + nl + y + nl # 正常に動作します。
                myobj = new otherclass {
                        see name + nl
                        see x + nl + y + nl # エラー！
                }

class otherclass
        name = "test"

実行結果:

10
20
test

Line 8 Error (R24) : Using uninitialized variable : x
In method test() in file methodbraceerror.ring
called from line 5  in file methodbraceerror.ring

さて、前述の問題の解決方法は？

解決方法 (1) : 括弧の外側にあるクラスの属性へアクセスするためのコードを記述する。

new point { test() }

class point
        x=10 y=20
        func test
                see x + nl + y + nl # 正常に動作します。
                myobj = new otherclass {
                        see name + nl
                }
                see x + nl + y + nl # 括弧の外側 - 正常に動作します。

class otherclass
        name = "test"

実行結果:

10
20
test
10
20

解決方法② : 括弧を使用しない

new point { test() }

class point
        x=10 y=20
        func test
                see x + nl + y + nl
                myobj = new otherclass
                see myobj.name
                see x + nl + y + nl

class otherclass
        name = "test"

解決方法③ : Self オブジェクトのコピー

この解決方法は、括弧でクラス属性へアクセスしたいときに使用します (読み取り)。

new point { test() }

class point
        x=10 y=20
        func test
                oSelf = self
                see x + nl + y + nl
                myobj = new otherclass {
                        see name + nl
                        see oself.x + nl + oself.y + nl
                }

class otherclass
        name = "test"

実行結果:

10
20
test
10
20

この行を参照してください

oself = self

前行の問題はオブジェクトの新しいコピーあることです。この理由は Ring の代入演算子はリストと値によるオブジェクト (参照ではない) はコピーしないからです。

新しいオブジェクトへアクセスする場合は問題はありません (読み取り)。

オブジェクトの属性を変更した場合は問題があります (そのためコピーを変更します！)

注釈

括弧はコピーを行うときに再度使えます。

new point { test() }

class point
        x=10 y=20
        func test
                oSelf = self
                see x + nl + y + nl
                myobj = new otherclass {
                        see name + nl
                        oSelf {
                                see x + nl + y + nl
                        }
                }

class otherclass
        name = "test"

GUI アプリケーションでは、様々なメソッドからコントロールへアクセス可能な属性として、 Window オブジェクトがあるクラスを作成します。括弧でメソッドの内側にあるオブジェクトへアクセスするときは、前述の情報を思い出してください。この場合は、オブジェクトとの属性へアクセスできないため Self オブジェクトをコピーした場合は、コピー先での作業となります。新しいコントロールの作成は、コピーと関連付けられていますがアクセスはできません。

クラスのメソッド内にある括弧からクラスの属性にアクセスするには

クラスのメソッドからクラスの属性へアクセスするために、属性やメソッド名の先頭に Self による参照を選択する方法があります。クラスのメソッド内で括弧 { } を使うと、有効なオブジェクトのスコープを変更することになり、クラスの属性への意図しない (directly) アクセスを防げます。また Self の使用は、括弧でアクセスするオブジェクトを変更できるため Self による参照は効果がありません。

この場合、属性を読み取りたい場合は、括弧の使用前に Self オブジェクトを必ずコピーしてください。また、括弧の後に、オブジェクトの属性からローカル変数へコピーしたい場合は、必ず属性を修正してください。

この場合は、括弧の内側にある属性の読み取り、または変更をしたいときに発生します。

Class MyApp

        oCon   # 属性

        # こちらへコードを記述してください。

        Func OpenDatabase
                # こちらへコードを記述してください。
                new QSqlDatabase() {
                        oCon = addDatabase("QSQLITE") {
                                setDatabaseName("weighthistory.db")
                                open()
                        }
                }
                self.oCon = oCon
                # こちらへコードを記述してください。

前述の用例で connection オブジェクトを作成して oCon 属性の内側で保存したいとします。

このオブジェクトは QSQLDatabase() オブジェクトのアクセス後に使用する addDatabase() メソッドからの出力です。

括弧の内側では MyApp クラスから作成したオブジェクトによる Self 参照の使用はできません。ここで Self 参照を使うと、括弧でオブジェクトをアクセスすることになるからです。

ローカル変数 oCon を作成してから、括弧の後に oCon 属性を変数へコピーすることにより、前述の問題を解決しました。

このコードは別の解決方法です。

Class MyApp

        oCon   # 属性

        # こちらへコードを記述してください。

        Func OpenDatabase
                # こちらへコードを記述してください。
                oCon = new QSqlDatabase()
                oCon = oCon.addDatabase("QSQLITE") {
                        setDatabaseName("weighthistory.db")
                        Open()
                }
        # こちらへコードを記述してください。

このコードは優れた解決方法です。

Class MyApp

        oCon   # 属性

        # こちらへコードを記述してください。

        Func OpenDatabase
                # こちらへコードを記述してください。
                new QSqlDatabase() {
                        this.oCon = addDatabase("QSQLITE") {
                                setDatabaseName("weighthistory.db")
                                Open()
                        }
                }
                # こちらへコードを記述してください。

注釈

括弧の内側でクラスの属性 (oCon) へアクセスするために This.属性 を使用しています。

GUI アプリケーションのウィンドウごとにクラスを作成するには

ウィンドウ用のクラスを作成するための優れた方法は、クラス名の直後にウィンドウを定義することです。

この領域で多重括弧を使うとウィンドウとコントロールの定義に関する問題を起こさずに、メソッドから属性にアクセスできます。

用例:

Load "guilib.ring"

new qApp
{
        $ObjectName = "oFirstWindow"
        oFirstWindow = new FirstWindow

        $ObjectName = "oSecondWindow"
        oSecondWindow = new SecondWindow

        exec()
}

Class FirstWindow

        win = new qWidget() {
                setgeometry(0,50,300,200)
                setWindowTitle("First Window")
                label1 = new qLabel(win)
                {
                        setgeometry(10,10,300,30)
                        setText("0")
                }
                btn1 = new qPushButton(win)
                {
                        move(100,100)
                        setText("Increment")
                        setClickEvent($ObjectName+".increment()")
                }
                show()
        }

        Func Increment
                label1 {
                        setText( "" + ( 0 + text() + 1 ) )
                }

Class SecondWindow

        win = new qWidget() {
                setgeometry(400,50,300,200)
                setWindowTitle("Second Window")
                label1 = new qLabel(win)
                {
                        setgeometry(10,10,300,30)
                        setText("0")
                }
                btn1 = new qPushButton(win)
                {
                        move(100,100)
                        setText("Decrement")
                        setClickEvent($ObjectName+".decrement()")
                }
                show()
        }

        Func Decrement
                label1 {
                        setText( "" + ( 0 + text() - 1 ) )
                }

クラス範囲にある括弧内の Self と Self 間との名前衝突

クラスの領域 (クラス名の後、そしてメソッドの前) で属性を定義します。

この領域では、グローバルスコープへアクセスできます。そして、ローカルスコープはオブジェクトスコープを指します。

三種類のスコープ

グローバルスコープ ---> グローバルスコープ

オブジェクトスコープ ---> オブジェクトスコープ

ローカルスコープ ---> オブジェクトスコープ

三種類のスコープ

New Account {
        see aFriends
}

Class Account
        name = "Mahmoud"
        aFriends = []
        aFriends + new Friend {
                name = "Gal"
        }
        aFriends + new Friend {
                name = "Bert"
        }

Class Friend
        name

実行結果:

name: NULL
name: NULL

前述の用例における問題は account クラスには “name” 属性があり、 Friend クラスにも同名属性 “name” があります。

括弧内で self.name を使うと前述の用例と同じ結果になります！

New Account {
        see aFriends
}

Class Account
        name = "Mahmoud"
        aFriends = []
        aFriends + new Friend {
                self.name = "Gal"
        }
        aFriends + new Friend {
                self.name = "Bert"
        }

Class Friend
        name

この名前衝突に関して、括弧の内側で self.name でも解決しない理由は？

このようなクラスの範囲になるからです。

グローバルスコープ ---> グローバルスコープ

オブジェクトスコープ ---> オブジェクトスコープ (Account クラス)

ローカルスコープ ---> ローカルスコープ (Account クラス)

括弧を使うとき、オブジェクトのスコープは変更されるため、このようになります。

グローバルスコープ ---> グローバルスコープ

オブジェクトスコープ ---> オブジェクトスコープ (Friend クラス)

ローカルスコープ ---> ローカルスコープ (Account クラス)

Ring では、ローカルスコープを最初に検索するため、 self.name を使うときは Account クラスを使用します。

様々な解決方法があります。

解決方法① : リストによるオブジェクトへのアクセス

New Account {
        see aFriends
}

Class Account
        name = "Mahmoud"
        aFriends = []
        aFriends + new Friend
        aFriends[len(aFriends)] {
                aFriends[len(aFriends)].name = "Gal"
        }
        aFriends + new Friend
        aFriends[len(aFriends)] {
                aFriends[len(aFriends)].name = "Bert"
        }

Class Friend
        name

解決方法② : name 属性を設定するために friend クラスでメソッドを作成

New Account {
        see aFriends
}

Class Account
        name = "Mahmoud"
        aFriends = []
        aFriends + new Friend {
                setname("Gal")
        }
        aFriends + new Friend {
                setname("Bert")
        }

Class Friend
        name
        func setname cName
                name = cName

解決方法③ : 属性を設定するために account クラスでメソッドを作成

New Account {
        see aFriends
}

Class Account
        name = "Mahmoud"
        aFriends = []
        friend("Gal")
        friend("Bert")

        func friend cName
                aFriends + new Friend {
                        name = cName
                }

Class Friend
        name

解決方法④ : 宣言型プログラミング

New Account {
        name = "mahmoud"
        friend {
                name = "Gal"
        }
        friend {
                name = "Bert"
        }
        see aFriends
}

Class Account
        name
        aFriends = []
        friend
        func getfriend
                aFriends + new Friend
                return aFriends[len(aFriends)]

Class Friend
        name

実行結果:

name: Gal
name: Bert

括弧による現在のオブジェクトスコープの除外方法

括弧から現在のオブジェクトスコープを別のオブジェクトスコープへ変更します。クラス属性の変更、および同名変数の使わずに処理できます。

new point {x=10 y=20 z=30 start() }
class point x y z
        func start
                see self # x y z の値を表示 (10,20,30)
                new Local {
                        x = 100
                        y = 200
                        z = 300
                }
                see self # x y z の値を表示 (10,20,30)
                see x + nl # 100 の表示
                see y + nl # 200 の表示
                see z + nl # 300 の表示
                Self {  # 利点なし - ローカルスコープの最初の検索で完了します。
                        see x + nl # 100 の表示
                        see y + nl # 200 の表示
                        see z + nl # 300 の表示
                }
                see self.x + nl # 10 の表示
                see self.y + nl # 20 の表示
                see self.z + nl # 30 の表示

class Local

実行結果:

x: 10.000000
y: 20.000000
z: 30.000000
x: 10.000000
y: 20.000000
z: 30.000000
100
200
300
100
200
300
10
20
30

For ループでローカルスコープを使用

Ring 1.8 より、 For ループでの新規識別子 (変数) を定義するときは、ローカルスコープで定義します。

用例:

x = 10
? x             # 10 の表示
test1()
? x             # 10 の表示
test2()
? x             # 10 の表示

func test1
        for x = 1 to 5
        next
        ? x     # 6 の表示

func test2
        list = 1:5
        for x in list
        next
        ? x     # NULL の表示 ("For In" ループでは、ループ完了後に参照を破棄します)

実行結果:

10
6
10
NULL
10

スコープ規則のまとめ

最初に次のことを覚えておいてください。

1 - 各種プログラミング言語には言語の目的に基づいたスコープ規則があります。

2 - 小規模プログラミングと大規模プログラミングは異なります。

3 - とあるプログラミング言語は小規模プログラミング用に設計されていますが、それ以外は大規模プログラミング用に設計されています。

4 - プログラミングで、スコープへのアクセスが複数ある場合があります。 - 正確に管理されていない場合は問題になります。

5 - 可視スコープの本数を削減すると、安全性の維持と向上につながります。

6 - とあるプログラミング言語では、不自由で独善的なスコープの管理方法を強制しています！

Ring では

1 - まず柔軟性、そして次に安全性を求めて設計された特別かつ「非常に単純明快」なスコープ規則があります

2 - Ring は小規模プログラミングと大規模プログラミングに対応するように設計されています。

3 - Ring にはプロジェクトの規模に基づいて選択可能な各種プログラミング・パラダイムがあります。ターゲットとなるプロジェクトで悪いパラダイムを選択した、または間違っているか一般的ではない方法によりパラダイムを使用するとエラーになります。

4 - Ring には選択肢があります。グローバル変数の使用・不使用を選べます。特殊記号 $ の指定、または除去できます。オブジェクト指向を使用する、または手続き型の使用を継続できます。クラス範囲 (クラスの範囲 - クラス名の後、およびメソッドの前) で属性の使用、またはコードで属性を使えます。

5 - このスコープ規則をご確認になり、記載されていることについて考えた後に好きな方法を使用してください。

スコープ規則:

1 - プログラムのコード全体で扱えるスコープは最大三種類です (ローカルスコープ、オブジェクトのスコープとグローバルスコープ)。

2 - 変数の検索順は、最初にローカルスコープ、次にオブジェクトのスコープ、最後にグローバルスコープです。

3 - 手続き、またはメソッドは、括弧 { } でオブジェクトへのアクセス、および現在のオブジェクトのスコープをいつでも変更できます。

4 - クラスの範囲 (クラス名の後、およびメソッドの前) において、これはオブジェクトスコープでオブジェクトのスコープとローカルスコープの両方を指す特別な範囲です。すなわち、この範囲で定義する各変数は属性になるため、ローカル変数ではありません。

5 - 変数 (スコープとクラスの範囲) の定義前に検索処理で変数が検出された場合は検出された変数を使用します。

6 - 関数とメソッドの仮引数は関数、またはメソッドへのローカル変数として自動的に定義されます。

7 - オブジェクト.属性 を使うとオブジェクト属性のみ検索します。

8 - Self.属性 を使うと先頭にある Self を最初に検索してから Self の属性を検索します。

9 - クラスの範囲 (クラス名の後、そしてメソッドの前) の内側にある Self 参照はクラスから作成されたオブジェクトのスコープを指します。

10 -メソッドの内側にある Self 参照は括弧による参照でオブジェクトへアクセスするときに変更されます。

11 - クラスの範囲 (クラス名の後、そしてメソッドの前) に変数名を記述すると使用対象、または定義として扱われます。

12 - クラスの範囲で Self.属性 を使うと検索対象となるオブジェクトのスコープの個数を削減します (グローバルスコープとの名前衝突を回避します)。

これらの規則から名前衝突が何故発生するのか、そして回避するにはどうしたら良いか理解できます。

名前衝突を避けるための簡単な助言として、スコープ規則を使うのが最良の方法です。

1 - グローバル変数の回避をしてください。

2 - Main 関数の使用 - これはグローバル変数の回避に有効です。

3 - グローバル変数を多用する場合は変数名の先頭に $ を使用してください。

4 - クラスの範囲で三番目 ($ の使用) の助言を考慮しない場合は、属性を定義するときに self.属性 を使用します。

5 - オブジェクトのスコープを変更したくない場合は、オブジェクト { 属性 } と オブジェクト { メソッド() } の代わりに オブジェクト.属性 と オブジェクト.メソッド() を使用します。

6 - 多重括弧をクラスで使用する場合 - この範囲で { } + によりクラス属性へアクセスするために、オブジェクトのアクセス権がある場合はクラス範囲の使用に関して可能ならば考慮してください。

7 - クラスのメソッドの内側、および多重括弧が使用されている場合は、括弧ごとにオブジェクトのスコープは変更されるため、直ちにクラスの属性へのアクセス権を失いますが、括弧 { } でローカルスコープの前後へアクセスできます。括弧からクラスの属性を読み取り、 または修正する場合は This.属性 を使用してください。この理由として ‘This’ を使用することは「このクラスからオブジェクトが作成される」ことを意味するのとは違い ‘Self’ (現在のスコープにあるオブジェクト) を意味します。

前述の要点を全て理解したならば、本章を会得したことになります。

関数とメソッドのスコープ規則

関数とメソッドのスコープ規則です。

この情報は Ring で大規模アプリケーションの開発をはじめるときに重要です。

下記はアプリケーションに存在・使用されています。

Ring で記述された数多のパッケージとクラス

Ring で記述された数多の関数

Ring 標準関数 (C 言語で記述)

C/C++ で記述された関数とクラス

Ring が関数とメソッドを見つける方法は？

メソッドまたは関数を呼び出し時に関数の検索処理を開始します。

見つかった --> 関数の呼び出しを行い、別の検索で再利用できるようにするために Ring は関数ポインタをキャッシュへ格納します。

見つからない --> ランタイムエラーメッセージ (Try/Catch で回避できます)

検索の処理内容と方法は？

この順に従って関数やメソッドの検索が行われます。

1 - メソッドの検索 (クラスの内側にあるメソッドまたは括弧 { } を使用したオブジェクトの場合)

2 - プログラマが Ring コードで記述した関数の検索

3 - Ring 標準関数など C/C++ で記述された関数の検索

これでクラスメソッドのコードが綺麗になり、関数の名前衝突を全て回避できるようになります。

クラスにあるメソッドと同じ名前の関数を呼び出したい場合はラッパー関数が必要になるか、または { } を使用した一時作業用のオブジェクトへのアクセス後に関数を呼び出します。

C/C++ の関数を Ring の関数へ置き換えることができます。

Ring の関数を Ring のメソッドへ置き換えることができます。

注釈

いかなる場合であろうも self.メソッド() の使用は必要ありません。

ちなみに

this.メソッド() は、括弧 { } でアクセスすると現在の有効なスコープから除外できます。さらにクラス内メソッドの呼び出しにも使えます。

関数とメソッドの間で名前を共有する方法の用例

この用例を参照してください。

func main
        o1 = new myclass { test() test2() }
        test2()

func f1
        see "f1 function" + nl

func f2
        see "f2 function" + nl

func f3
        see "f3 function" + nl

func test2
        myline()
        see "test2 function" + nl
        new myclass {
                f1()
                f2()
                f3()
                self.f3()
        }
        myobj = new myclass
        myobj.f3()
        myline()

func myline
        see copy("=",40) + nl

Class myclass

        func test
                myline()
                see "test method" + nl
                f1()
                f2()
                f3()
                myline()

        func f3
                see "f3 method" + nl

        func test2
                myline()
                see "test2 method" + nl
                self {
                        f1()
                        f2()
                        f3()
                }
                myline()

実行結果:

========================================
test method
f1 function
f2 function
f3 method
========================================
========================================
test2 method
f1 function
f2 function
f3 method
========================================
========================================
test2 function
f1 function
f2 function
f3 method
f3 method
f3 method
========================================

現在のクラスで名前を共有する関数とメソッドを呼び出すには

前述の用例では f3() 関数と f3() メソッドがあります。

どうすれば test() メソッドから f3() 関数を呼び出せますか？

解決方法 (1) : 現在のオブジェクトのスコープを別のオブジェクトのスコープへ変更します。

この解決方法では、現在のオブジェクトのスコープの変更で使用するために、ローカルで呼び出される空のクラスがあります。

func main
        o1 = new myclass { test()}

func f1
        see "f1 function" + nl

func f2
        see "f2 function" + nl

func f3
        see "f3 function" + nl

func myline
        see copy("=",40) + nl

Class myclass

        func test
                myline()
                see "test method" + nl
                f1()
                f2()
                f3()               # f3() メソッドの呼び出し
                new local { f3() } # f3() 関数の呼び出し
                myline()

        func f3
                see "f3 method" + nl

class local

実行結果:

========================================
test method
f1 function
f2 function
f3 method
f3 function
========================================

シンタックスの柔軟性

Ring コンパイラに標準装備されているシンタックスの柔軟性に関する選択肢です。

キーワードの変更

ChangeRingKeyword 命令はキーワードを変更します。

注釈

共同プロジェクトのチーム間で記法の混用があるときは、キーワードの復元を心がけてください。

ちなみに

ChangeRingKeyword 命令は字句解析の段階でコンパイラにより実行されます (構文解析の前に)。

文法:

ChangeRingKeyword  <旧キーワード>  <新キーワード>

用例:

ChangeRingKeyword see print

print "welcome" + nl

ChangeRingKeyword print see

see "Welcome" + nl

用例:

ChangeRingKeyword  func function
ChangeRingKeyword  see  print
ChangeRingKeyword  ok   endif
ChangeRingKeyword  next endfor
ChangeRingKeyword  end  endwhile

x = 10
while x > 0
        print "x = " + x + nl
        for t = 1 to 10
                if t = 3
                        print "number three" + nl
                endif
        endfor

x--
endwhile

test()

function test
        print "message from test" + nl

ChangeRingKeyword  function func
ChangeRingKeyword  print see
ChangeRingKeyword  endif ok
ChangeRingKeyword  endfor next
ChangeRingKeyword  endwhile end

演算子の変更

ChangeRingOperator 命令は演算子を変更します。

注釈

共同プロジェクトのチーム間で記法の混用があるときは、演算子の復元を心がけてください。

ちなみに

ChangeRingOperartor 命令は字句解析の段階でコンパイラにより実行されます (構文解析の前に)。

文法:

ChangeRingOperator  <旧キーワード>  <新キーワード>

用例:

このプログラムは、 + 演算子を _+ へ変更することで隠します。

changeringoperator + _+
changeringkeyword SEE PRINT

try
        print 5 + 10
catch
        print nl print "error" print nl
done

changeringoperator _+ +

このプログラムは、 + 演算子を “plus” へ変更します。

changeringoperator + plus
changeringkeyword SEE PRINT

Print 5 plus 5

changeringoperator plus +
changeringkeyword PRINT SEE

シンタックスファイルの読み込み

複数のソースファイルから後で使用するために、ファイルへ ChangeRingKeyword と ChangeRingOperator 命令のグループを格納です。これらのファイルは Load 命令で呼び出せません。理由として、

ChangeRingKeyword および ChangeRingOperator 命令は字句解析の段階で、コンパイラにより実行されます (構文解析の前に)。

Load 命令は構文解析の段階で実行されます (字句解析後の段階で)。

解決方法: LoadSyntax 命令を字句解析の段階で実行します。

文法:

LoadSyntax      "syntaxfile.ring"

用例:

ファイル : StyleBasicOn.ring

ChangeRingKeyword       see     print
ChangeRingKeyword       ok      endif
ChangeRingKeyword       next    endfor
ChangeRingKeyword       end     endwhile

ファイル : StyleBasicOff.ring

ChangeRingKeyword  print        see
ChangeRingKeyword  endif        ok
ChangeRingKeyword  endfor       next
ChangeRingKeyword  endwhile     end

ファイル : UseStyleBasic.ring

LoadSyntax "stylebasicon.ring"

x = 10
while x > 0
        print "x = " + x + nl
        for t = 1 to 10
                if t = 3
                        print "number three" + nl
                endif
        endfor
        x--
endwhile

LoadSyntax "stylebasicoff.ring"

see "done" + nl

注釈

LoadSyntax 命令により呼び出されるファイルの内容は ChangeRingKeyword と ChangeRingOperator 命令のみ記述してください。

ちなみに

LoadSyntax により呼び出されたファイルは関数、パッケージおよびクラスには対応していません。命令型の命令のみ対応しています。

注釈

この機能により、同じプロジェクトで使用できる多種多様な記法を作成できます。また、 Ring の訳文では日本語、アラビア語、フランス語などの自然言語に対応できます。

ちなみに

LoadSyntax 命令の効果は、現在のソースコードに関連するものだけに限られます (ファイルスコープ)。

関数の引数を“()” で囲うには

関数の引数は“()”で囲います (オプション扱い)。

用例:

hello()
sum(3,4)

func hello()
        see "Hello" + nl

func sum(x,y)
        see x+y+nl

実行結果:

Hello
7

用例:

myfunc = func x,y { see x + y + nl }

call myfunc (3,4)

myfunc2 = func (x,y) { see x+y+nl }

call myfunc(3,4)

実行結果:

7
7

ステートメントの末尾および間でセミコロンを使うには

Ring ではステートメントの末尾、および間でセミコロンを使えます (オプション扱い)。

用例:

# セミコロンの使用はオプション扱いです。

see "Hello" + nl ; see "How are you?" + nl  ; see "Welcome to Ring" + nl ;
one() ; two() ; three() ;
func one ; see "one" + nl ;
func two ; see "two" + nl ;
func three ; see "three" + nl ;

実行結果:

Hello
How are you?
Welcome to Ring
one
two
three

変数名に $ と @ を使うには

変数名には Unicode 文字に加えて $ と @ も使えます。

この機能は便利です。例えば、グローバル変数は $ で、そしてオブジェクトの属性は @ で書き始められます。

これは Ruby などでは規則ですが、 Ring ではコンパイラへ影響を及ぼさないオプション扱いのものです。

用例:

$global_variable = 5

new test { hello() }

class test

        @instance_variable = 10

        func hello

                local_variable = 15

                see "Global   : " + $global_variable + nl +
                    "Instance : " + @instance_variable + nl +
                    "Local    : " + local_variable + nl

実行結果:

Global   : 5
Instance : 10
Local    : 15

If ステートメントで‘but’の代わりに‘elseif’キーワードを使うには

If ステートメントで‘but’を使いたくないときは、 ‘elseif’キーワードへ変更できます。

用例:

give x
if x = 1 see "one"
elseif x=2 see "two"
elseif x=3 see "three"
elseif x=4 see "four"
else see "other"
ok
see nl

Switch ステートメントで‘other’の代わりに‘else’キーワードを使うには

Switch ステートメントで‘other’を使いたくないときは、 ‘else’キーワードへ変更できます。

また If ステートメントで‘else’を‘other’キーワードへ置き換えることもできます。

つまり‘other’キーワードは‘else’キーワードと同じ扱いです。

用例:

x = 1
switch x
        on 10
                see "10" + nl
        else
                see "not 10" + nl
end

実行結果:

not 10

制御構造で‘end’キーワードを使うには

‘end’ キーワードは制御構造を閉じます。

If ステートメント

For ループ

Switch

While

Try ～ Catch

用例:

see "if statement.." + nl
x = 1
if x = 1
        see "one" + nl
elseif x=2
        see "two" + nl
elseif x=3
        see "three" + nl
end
see "for loop.." + nl
for t = 1 to 10
        see t
end
see nl
see "switch..." + nl
x = 1

switch x
        on 1 see "one" + nl
        on 2 see "two" + nl
end

see "try catch..." + nl
try
        x = 1 / 0
catch
        see "catching error" + nl
end

実行結果:

if statement..
one
for loop..
12345678910
switch...
one
try catch...
catching error

制御構造の開始と終了で括弧 { } を使うには

制御構造の開始と終了で括弧 { } を使えます。

If ステートメント

For ループ

Switch

While

Try ～ Catch

用例:

see "if statement.." + nl
x = 1
if x = 1 {
        see "one" + nl
elseif x=2
        see "two" + nl
elseif x=3
        see "three" + nl
}
see "for loop.." + nl
for t = 1 to 10 {
        see t
}
see nl
see "switch..." + nl
x = 1

switch x {
        on 1 see "one" + nl
        on 2 see "two" + nl
}

see "try catch..." + nl
try {
        x = 1 / 0
catch
        see "catching error" + nl
}

実行結果:

if statement..
one
for loop..
12345678910
switch...
one
try catch...
catching error

‘see’と‘give’ の代わりに‘put’と‘get’を使うには

‘see’キーワードを‘put’キーワードへ置き換えられます。

また‘give’キーワードを‘get’キーワードへ置き換えることもできます。

用例:

put "Hello World" + nl
put "Enter Your Name ? " Get Name
Put "Hello " + Name

Switch ステートメントで‘on’の代わりに‘case’を使うには

Switch ステートメントで‘on’キーワードを‘case’キーワードへ置き換えられます。

用例① :

for x=1 to 10
        switch x
        case 1 put "one" + nl
        case 2 put "two" + nl
        case 3 put "thre" + nl
        else put "else" + nl
        end
end

用例② :

for x=1 to 10 {
        switch x {
        case 1 put "one" + nl
        case 2 put "two" + nl
        case 3 put "thre" + nl
        else put "else" + nl
        }
}

関数とメソッドの定義で‘func’の代わりに‘def’を使うには

関数、およびメソッドの定義で ‘func’ の代わりに ‘def’ キーワードを使えます。

用例:

one() two()

def one put "one" + nl
def two put "two" + nl

Package/Class/Function で括弧 { } を使うには

用例:

load "stdlib.ring"

import mypackage

new myclass {
        myfunc()
}

package mypackage
{
        class myclass
        {
                func myfunc
                {
                        print("Hello, World!\n")
                }
        }
}

Package/Class/Function キーワードの後で‘end’を使うには

用例:

import mypackage

new myclass {
        myfunc()
}

package mypackage
        class myclass
                def myfunc
                        put "Hello, World!"
                end
        end
end

Package/Class/Function キーワードの後で‘endpackage’/’endclass’/’endfunc’を使うには

用例:

import mypackage

new myclass { myfunc() }

package mypackage
        class myclass
                func myfunc
                        see "welcome"  + nl
                endfunc
        endclass
endpackage

キーワードの後にくる行を無視

Ring 1.8 からコンパイラは、キーワードの後に続く行をトークンとみなして無視するようになりました。

用例:

see
"
        Hello, World!
"
test()

func
#======================#
        Test
#======================#

        ?
        "

        Hello from the Test function

        "

実行結果:

Hello, World!

Hello from the Test function

型ヒントライブラリについて

型ヒントライブラリの用法です。

型ヒントを使う理由

このライブラリはソースコードへ型情報を追加します。このようなツールで非常に便利です。

コードエディタ

静的解析

注釈

Ring は動的言語であり、コンパイラによる型検査は行われません。

用例

この用例は型ヒントライブラリの用法です。

load "typehints.ring"

see sum(3,4) + nl ;
see sayHello("Mahmoud");

int func sum(int x,int y) {
        return x+y ;
}

string func sayHello(string name) {
        return "Hello " + name ;
}

ユーザ型

型ヒントライブラリは非常に強力であり、自動的にユーザ型 (クラス) へ対応します。

用例:

load "typehints.ring"

import mypackage

test()  { main([:one,:two,:three]) }

myclass func test() {
        see "Testing User Types!" + nl
        return new myclass
}

package mypackage {
        public class myclass {
                public static void func main(list args) {
                        see "welcome" + nl
                        see args
                }
        }
}

コードの内側で型を使うには

また、コードの内側で型を使えます (関数プロトタイプだけに限定されません)。

用例:

load "typehints.ring"

int     sum = sum(3,4)
string  msg = sayHello("Mahmoud")

see "Sum = " + sum + nl + msg + nl

int func sum(int x,int y) {
        return x+y ;
}

string func sayHello(string name) {
        return "Hello " + name ;
}

規則

関数プロトタイプ : 型を使うには、引数の前後を ‘(‘ と ‘)’ で必ず囲んでください。

関数のコード : 型を使うには、必ず変数の値を設定してください (代入)。

この型はライブラリで定義してあります。

# 低水準型
char
unsigned
signed
int
short
long
float
double
void

# 高水準型
string
list
number
object

# その他
public
static
abstract
protected
override

トレースライブラリとインタラクティブデバッガ

トレースライブラリとインタラクティブデバッガの用法です。

トレースライブラリの読み込み

トレースライブラリの使用前に tracelib.ring ライブラリを読み込みます。

load "tracelib.ring"

イベントをすべてトレースするには

この用例は トレースライブラリの用法としてイベントをすべてトレースするためのデモです。

# イベントをすべてトレース
trace(:AllEvents)

see "Hello, world!" + nl
see "Welcome" + nl
see "How are you?" +nl

mytest()

new myclass { mymethod() }

func mytest
        see "Message from mytest" + nl

class myclass
        func mymethod
                see "Message from mymethod" + nl

関数と制御フローのトレース

この用例は関数と制御フローのトレースのデモとしてのトレースライブラリの用法です。

Trace(:Functions)

test1()

func test1
        see :test1 + nl
        test2()

func test2
        see :test2 + nl
        see test3() + nl

func test3
        see :test3 + nl
        return "test 3 output"

エラーの渡しかた

この用例は トレースライブラリの用法であり、エラーを渡すためのデモです！

Trace(:PassError)

test1()

func test1
        x = 10
        see :test1 + nl
        test2() # ランタイムエラー！
        see "We can continue!"

インタラクティブデバッガ

この用例は トレースライブラリの用法であり、インタラクティブデバッガを使用したデモです。

Trace(:Debugger)

test1()
see "good bye!" + nl

func test1
        x = 10
        see :test1 + nl
        t = 12
        test2() # ランタイムエラー！
        see "After Error!" +nl
        see "t = " see t see nl
        see "x = " see x see nl

プログラムを一行ずつ実行

この用例は トレースライブラリの用法であり、プログラムを一行ずつ実行するデモです！

Trace(:LineByLine)

test1()

func test1
        x = 10
        see :test1 + nl
        t = 12
        test2()
        see "After Error!" +nl
        see "t = " + t + nl

ブレークポイント

この用例は トレースライブラリのブレークポイントの停止における用法のデモンストレーションです！

test1()

func test1
        x = 10
        see :test1 + nl
        t = 12
        BreakPoint()
        see "After breakpoint!" +nl
        see "t = " + t + nl
        see "End of program!" + nl

ブレークポイントの禁止

この用例はトレースライブラリの用法であり、ブレークポイントを禁止する方法です！

NoBreakPoints()

test1()

func test1
        x = 10
        see :test1 + nl
        t = 12
        BreakPoint()
        see "After breakpoint!" +nl
        see "t = " + t + nl
        see "End of program!" + nl

インタラクティブデバッガの用法

この用例はブレークポイントをインタラクティブデバッガで開きます！

load "tracelib.ring"

test1()

func test1
        x = 10
        see :test1 + nl
        t = 12
        BreakPoint()
        see "After breakpoint!" +nl
        see "t = " + t + nl
        see "End of program!" + nl

スクリーンショット:

インタラクティブデバッガでブレークポイントを操作できます！

変数の値を表示できます。

変数値の変更後に実行を継続できます。

実行結果ウィンドウでもインタラクティブデバッガを操作できます。

Ring へ Ring を組み込むには

Ring プログラム、またはアプリケーションへ Ring を組み込む方法です。

ステートを共有せずに Ring へ Ring を組み込むには

Ring 1.0 より Ring を C へ組み込むための関数は実装されていました。また eval() 関数で Ring プログラムにある Ring のコードを実行できます。この公開版では、ステートを共有せずに Ring を Ring プログラムへ組み込むための関数があります。

利点:

Ring プログラムとアプリケーションの統合動作環境下で競合が発生しません。

Ring のコードを安全な環境で実行して、トレースを行えます。

用例:

pState = ring_state_init()
ring_state_runcode(pState,"See 'Hello, World!'+nl")
ring_state_runcode(pState,"x = 10")

pState2 = ring_state_init()
ring_state_runcode(pState2,"See 'Hello, World!'+nl")
ring_state_runcode(pState2,"x = 20")

ring_state_runcode(pState,"see x +nl")
ring_state_runcode(pState2,"see x +nl")

v1 = ring_state_findvar(pState,"x")
v2 = ring_state_findvar(pState2,"x")

see v1[3] + nl
see V2[3] + nl

ring_state_delete(pState)
ring_state_delete(pState2)

実行結果:

Hello, World!
Hello, World!
10
20
10
20

プログラムの直列実行

ring_state_main() 関数はアプリケーションの実行後に、別のアプリケーションを実行します。

用例:

chdir(exefolder()+"/../applications/formdesigner")
ring_state_main('formdesigner.ring')
chdir(exefolder()+"/../applications/cards")
ring_state_main('cards.ring')

ring_state_setvar()

ring_state_setvar() 関数は変数の値を設定します。

値には「文字列、数値、リスト、または C ポインタ」を指定します。

この関数は下位 Ring 環境へリストと C ポインタを手早く渡すために必要です。

文法:

ring_state_setvar(oState,cVariableName,Value)

用例:

load "guilib.ring"

myapp   = null
win     = null

func main
        myapp = new qApp {
                win = new qWidget() {
                        setWindowTitle("Advanced Example on using ring_state_setvar()")
                        move(100,100)
                        resize(600,400)
                        new qPushButton(win) {
                                setText("Test")
                                setClickEvent("Test()")
                        }
                        # Qt でタイマーの作成とウィンドウを閉じる動作を行います。
                        # これだけでウィンドウを閉じるには不十分です。
                        # このために下位環境では load 'guilib.ring' を
                        # 必ず使用してください。
                        oFilter = new qAllEvents(win)
                        oFilter.setCloseEvent("myapp.quit()")
                        win.installeventfilter(oFilter)
                        show()
                }
                exec()
        }

func test
        pState = ring_state_init()
        ring_state_runcode(pstate,"load 'guilib.ring'")
        ring_state_runcode(pState,"x = NULL")
        # 文字列を渡します。
                ring_state_setvar(pState,"x","hello")
                ring_state_runcode(pState,"? x")
        # 数値を渡します。
                ring_state_setvar(pState,"x",100)
                ring_state_runcode(pState,"? x")
        # Pass List
                ring_state_setvar(pState,"x",["one","two","three"])
                ring_state_runcode(pState,"? x")
        # リストを渡します。
        # Ring オブジェクトを渡すことはできません (win)。
        # 理由としてオブジェクトはクラス情報のポインタとして格納されているからです。
        # またクラスは Ring の親環境と関連付けられています。
        # しかし、下位 Ring 環境にはアクセスできません。
        # ですが win.pObject のようにすれば C ポインタを渡せます。
                ring_state_setvar(pState,"x",win.pObject)
        # さて、オブジェクトを再作成しましたが同じ C ポインタを使用しています。
        # したがって親 Ring 環境にある同じウィンドウへアクセスできます。
                ring_state_runcode(pState,"
                        new qWidget {
                                pObject = x
                                setwindowtitle('Message from the Sub Ring Environment')
                        }
                ")
        ring_state_delete(pState)

ring_state_new() と ring_state_mainfile() 関数

ring_state_new() と ring_state_mainfile() 関数は Ring プログラムから別の Ring プログラムを実行します。

ring_state_main() 関数とは異なり、こちらは Ring ステートの削除時に制御できます！

これは GUI プログラムから別の GUI プログラムを実行するときに重要です。

この場合の理由は GUI ライブラリ (RingQt) を共有しており、

呼び出し元は qApp.Exec() を呼び出すからです。

よって、下位プログラムを停止せずにメインプログラムへ戻ります。

ここで下位プログラムのステートを削除してしまうと、下位プログラムのイベント実行時に問題が発生します。

ステートを保持することは、下位 GUI プログラムの収容先となっている GUI プログラムでは重要です。

用例:

load "guilib.ring"

func main
        new qApp {
                win = new qWidget() {
                        setWindowTitle("Test ring_state_mainfile()")
                        resize(400,400) move(100,100)
                        btn = new qPushButton(Win) {
                                settext("test")
                                setclickevent("mytest()")
                        }
                        show()
                }
                exec()
        }

func mytest
        pState = ring_state_new()
        ring_state_mainfile(pState,"runprogram.ring")
        # ここで GUI アプリケーションを実行する場合はステートを削除しないでください。
        # なお GUI アプリケーションのイベントを実行できます。
                // ring_state_delete(pState)

この機能を使用する場合は、前述の用例を基にアプリケーションで必要な更新をすることを覚えておいてください。

この時点で ring_state_delete() 関数を呼び出すとメモリリークを回避できます！

Ring へ Ring を組み込んだときのランタイムエラーについて

Ring 1.8 から Ring へ Ring を組み込んだときに、

ゲスト環境でエラーが発生してもホストは異常終了しなくなりました。

用例:

? "Start the test!"

pState = ring_state_init()

ring_state_runcode(pState," ? 'Let us try having an error' ? x")

ring_state_delete(pState)

? ""
? "End of test!"

実行結果:

Start the test!
Let us try having an error

Line 1 Error (R24) : Using uninitialized variable : x
in file Ring_EmbeddedCode
End of test!

ring_state_filetokens() 関数

Ring 1.12 では ring_state_filetokens() 関数に対応しました。

ring_state_filetokens() 関数は Ring ソースコードファイルにあるトークンを一括取得します。

C_FILENAME      = "test_tokens.ring"
C_WIDTH         = 12

# ファイルの書き込み
        write(C_FILENAME,'
                        see "Hello, World!"
                        ? 3*2+3
                        Name = "Ring"
                        ? Name
')

# トークンの種類
        C_KEYWORD       = 0
        C_OPERATOR      = 1
        C_LITERAL       = 2
        C_NUMBER        = 3
        C_IDENTIFIER    = 4
        C_ENDLINE       = 5

# キーワードリスト
aKEYWORDS = ["IF","TO","OR","AND","NOT","FOR","NEW","FUNC",
"FROM","NEXT","LOAD","ELSE","SEE","WHILE","OK","CLASS","RETURN","BUT",
"END","GIVE","BYE","EXIT","TRY","CATCH","DONE","SWITCH","ON","OTHER","OFF",
"IN","LOOP","PACKAGE","IMPORT","PRIVATE","STEP","DO","AGAIN","CALL","ELSEIF",
"PUT","GET","CASE","DEF","ENDFUNC","ENDCLASS","ENDPACKAGE",
"CHANGERINGKEYWORD","CHANGERINGOPERATOR","LOADSYNTAX"]

pState = ring_state_new()
aList = ring_state_filetokens(pState,C_FILENAME)
PrintTokens(aList)
ring_state_delete(pState)

func PrintTokens aList
        for aToken in aList
                switch aToken[1]
                on C_KEYWORD
                        ? Width("Keyword",C_WIDTH) + ": "  + aKeywords[0+aToken[2]]
                on C_OPERATOR
                        ? Width("Operator",C_WIDTH)  + ": " + aToken[2]
                on C_LITERAL
                        ? Width("Literal",C_WIDTH)  + ": " + aToken[2]
                on C_NUMBER
                        ? Width("Number",C_WIDTH)  + ": " + aToken[2]
                on C_IDENTIFIER
                        ? Width("Identifier",C_WIDTH)  + ": " + aToken[2]
                on C_ENDLINE
                        ? "EndLine"
                off
        next

func Width cText,nWidth
        return cText+copy(" ",nWidth-len(cText))

実行結果:

EndLine
Keyword     : SEE
Literal     : Hello, World!
EndLine
Operator    : ?
Number      : 3
Operator    : *
Number      : 2
Operator    : +
Number      : 3
EndLine
Identifier  : name
Operator    : =
Literal     : Ring
EndLine
Operator    : ?
Identifier  : name
EndLine

Stdlib 関数

stdlib.ring 関数の用法です。

この関数の使用前に stdlib.ring ライブラリを読み込みます。

load "stdlib.ring"

stdlibcore.ring (StdLib 関数) も使えます (クラスはありません)。

これはスタンドアローン型のコンソールアプリケーションを作成する場合に便利です。

stdlib.ring (関数とクラス) は RingLibCurl, RingOpenSSL などのライブラリを読み込みます。

Puts() 関数

値を表示後に改行 (nl) を表示します。

文法:

puts(式)

用例:

Load "stdlib.ring"

Puts("Hello, World!")

Print() 関数

文字列の表示 - \n, \t および \r に対応しています。

#{変数名} で変数の値を挿入します。

文法:

print(文字列) ---> 文字列

用例:

print("\nHello, World\n\nHow are you? \t\t I'm fine!\n")
x=10 y=20
print("\nx value = #{x} , y value = #{y} \n")

Print2Str() 関数

文法:

print2Str(文字列) ---> 文字列

用例:

world = "World!"
mystring = print2str("Hello, #{world} \nIn Year \n#{2000+17} \n")

see mystring + nl

実行結果:

Hello, World!
In Year
2017

GetString() 関数

キーボードからの標準入力を取得します。 - 返値は文字列です。

getstring() ---> 文字列

GetNumber() 関数

キーボードからの標準入力を取得します。 - 返値は数値です。

getnumber() ---> 数値

AppPath() 関数

アプリケーションフォルダのパスを取得します。

文法:

AppPath() ---> パスの文字列

用例:

Load "stdlib.ring"

# アプリケーションのパス
Puts("Test AppPath()")
See AppPath() + nl

JustFilePath() 関数

ファイル名を除去したファイルパスを返します。

文法:

JustFilePath(cFile) ---> 文字列はパスです。

用例:

load "stdlib.ring"

see  justfilePath("c:\ring\applications\rnote\rnote.ring")

実行結果:

c:\ring\applications\rnote\

JustFileName() 関数

ファイルパスを除去したファイル名を返します。

文法:

JustFileName(cFile) ---> 文字列はファイル名です。

用例:

load "stdlib.ring"

see justfileName("c:\ring\applications\rnote\rnote.ring")

実行結果:

rnote.ring

Value() 関数

リストまたはオブジェクトからコピーを作成します。

文法:

value(リスト) ---> 新しいリスト

用例:

Load "stdlib.ring"

aList = 1:10
del(value(aList), 1) # 最初のリストを削除
see aList            # 1 ～ 10 までの数値を表示します。

Times() 関数

関数を nCount 回実行します。

文法:

Times(nCount, 関数)

用例:

Load "stdlib.ring"

Puts("Test Times()")
Times ( 3 , func { see "Hello, World!" + nl } )

Map() 関数

リストの項目ごとに関数を実行します。

文法:

Map(alist,function) ---> リスト

用例:

Load "stdlib.ring"

Puts("Test Map()")
See Map( 1:10, func x { return x*x } )

Filter() 関数

項目を篩い分けるために各リストの項目へ関数を実行します。

文法:

Filter(alist,function) ---> リスト

用例:

Load "stdlib.ring"

Puts("Test Filter()")
See Filter( 1:10 , func x { if x <= 5 return true else return false ok } )

Split() 関数

文字列の語からリスト項目へ変換します。

文法:

Split(cstring, 区切り文字) ---> リスト

用例:

Load "stdlib.ring"

Puts("Test Split()")
See Split("one two three four five"," ")

SplitMany() 関数

文字列の語からリスト項目へ変換します。いろいろな区切り文字を使うことができます。

文法:

SplitMany(cstring, 文字列またはリスト形式による区切り文字) --> リスト

用例:

Load "stdlib.ring"

Puts("Test SplitMany()")
See SplitMany("one,two,three,four and five"," ,")

Capitalized() 関数

一文字目を大文字へ変換した文字列のコピーを返します。

文法:

Capitalized(文字列) ---> 文字列

用例:

Load "stdlib.ring"

Puts("Test Capitalized()")
See capitalized("welcome to the Ring Programming Language")

IsSpecial() 関数

文字が特殊文字か確認します。

文法:

IsSpecial(char) ---> True/False

用例:

Load "stdlib.ring"

Puts("Test Isspecial()")
See "Isspecial  = " + isSpecial("%") + nl

IsVowel() 関数

文字が母音か確認します。

文法:

IsVowel(char) ---> True/False

用例:

Load "stdlib.ring"

Puts("Test Isvowel()")
See "Isvowel = " + isVowel("c") + nl

LineCount() 関数

テキストファイルの行数を返します。

文法:

LineCount(cFileName) ---> 行数

用例:

Load "stdlib.ring"

Puts("Test Linecount()")
See "the number of lines = " + lineCount("test.ring")

Factorial() 関数

累乗数を返します。

文法:

Factorial(number) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Factorial()")
see "6 factorial is : " + Factorial(6)

Fibonacci() 関数

フィボナッチ数を返します。

文法:

Fibonacci(number) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Fibonacci()")
see "6 Fibonacci is : " + Fibonacci(6)

IsPrime() 関数

数値が素数か返します。

文法:

isprime(number) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Isprime()")
if isPrime(16) see "16 is a prime number"
else see "16 is not a prime number" ok

Sign() 関数

数値の符号を示した整数の値を返します。

文法:

Sign(number) ---> 数値 ( -1 = 負数 , 0 , 1 (整数) )

用例:

Load "stdlib.ring"

Puts("Test Sign()")
see "sign of 12 is = " + sign(12) + nl

List2File() 関数

リスト項目をテキストファイルへ書き出します (項目ごとに改行されます)。

文法:

List2File(aList, cFileName)

用例:

Load "stdlib.ring"

# List2File のテスト
Puts("Test List2File()")
list2file(1:100,"myfile.txt")

File2List() 関数

テキストファイルを読み取って行をリスト項目へ変換します。

文法:

File2List(cFileName) ---> リスト

用例:

Load "stdlib.ring"

# File2List のテスト
Puts("Test File2List()")
see len(file2list("myfile.txt"))

StartsWith() 関数

指定された文字列が指定された部分文字列で始まるならば true を返します。

先頭の空白文字は無視されます。

文法:

StartsWith(string, substring) ---> True/False

用例:

Load "stdlib.ring"

Puts("Test Startswith()")
see Startswith("CalmoSoft", "Calmo") + nl

EndsWith() 関数

指定された文字列が指定された部分文字列で終わるならば true を返します。

末尾の空白文字は無視されます。

文法:

Endswith(string, substring) ---> True/False

用例:

Load "stdlib.ring"

Puts("Test Endswith()")
see endsWith("CalmoSoft", "Soft") + nl

GCD() 関数

二つの整数における最大公約数 (Greatest Common Divisor) を計算します。

文法:

Gcd(number,number) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Gcd()")
see gcd (24, 32) + nl

LCM() 関数

二つの整数における最小公約数 (Least Common Multiple) を計算します。

文法:

lcm(number,number) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Lcm()")
see Lcm(24,36) + nl

SumList() 関数

整数のリストにおける総和を計算します。

文法:

sumlist(リスト) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Sumlist()")
aList = [1,2,3,4,5]
see Sumlist(aList) + nl

ProdList() 関数

整数リストの積を計算します。

文法:

prodlist(リスト) ---> 数値

用例:

Load "stdlib.ring"

Puts("Test Prodlist()")
aList = [1,2,3,4,5]
see Prodlist(aList) + nl

EvenOrOdd() 関数

整数が奇数か偶数かテストします。

テストの結果は (1 = 奇数、2 = 偶数) です。

文法:

evenorodd(number) ---> 1 (奇数) または 2 (偶数)

用例:

Load "stdlib.ring"

Puts("Test Evenorodd()")
nr = 17
see Evenorodd(nr) + nl

Factors() 関数

整数の素因数分解を計算をします。

文法:

factors(number) ---> リスト

用例:

Load "stdlib.ring"

Puts("Test Factors()")
n = 45
aList = factors(n)
see "Factors of " + n + " = "
for i = 1 to len(aList)
    see "" + aList[i] + " "
next

IsPalindrome() 関数

文字列が回文か確認します。

文法:

IsPalindrome(String) ---> True/False

用例:

Load "stdlib.ring"

Puts("Test IsPalindrome()")
cString = "radar"
see IsPalindrome(cString)

注釈

Ring 1.9 以前は Palindrome() 関数として使用可能でした。

IsLeapYear() 関数

指定された年がグレコリオ暦における閏年か確認します。

文法:

Isleapyear(number) ---> True/False

用例:

Load "stdlib.ring"

Puts("Test Isleapyear()")
year = 2016
if Isleapyear(year) see "" + year + " is a leap year."
else see "" + year + " is not a leap year." ok

BinaryDigits() 関数

非負整数値を指定することで二進数配列の計算をします。

文法:

binarydigits(number) ---> 文字列

用例:

Load "stdlib.ring"

Puts("Test Binarydigits()")
b = 35
see "Binary digits of " + b + " = " + Binarydigits(b)

MatrixMulti() 関数

行列同士を掛け合わせます。

文法:

Matrixmulti(List,List) ---> リスト

用例:

Load "stdlib.ring"

# 行列同士を掛け合わせます。
Puts("Test Matrixmulti()")
A = [[1,2,3], [4,5,6], [7,8,9]]
B = [[1,0,0], [0,1,0], [0,0,1]]
see Matrixmulti(A, B)

MatrixTrans() 関数

サイズ指定による矩形行列の変換を行います。

文法:

Matrixtrans(リスト) ---> リスト

用例:

Load "stdlib.ring"

# サイズ指定による矩形行列の変換を行います。
Puts("Test Matrixtrans()")
matrix = [[78,19,30,12,36], [49,10,65,42,50], [30,93,24,78,10], [39,68,27,64,29]]
see Matrixtrans(matrix)

DayOfWeek() 関数

指定された日付 (西暦四桁-月-日) における曜日を返します。

文法:

dayofweek(文字列) ---> 文字列

用例:

Load "stdlib.ring"

# 指定された日付における曜日を返します。
Puts("Test Dayofweek()")
date = "2016-04-24"
see "Data : " + date + " - Day : " + Dayofweek(date) + nl

Permutation() 関数

n 個の異なる数値における配列を全て生成します。

文法:

permutation(リスト)

用例:

Load "stdlib.ring"

# n 個の異なる数値における配列を全て生成します。
Puts("Test Permutation()")
list = [1, 2, 3, 4]
for perm = 1 to 24
        for i = 1 to len(list)
                see list[i] + " "
        next
        see nl
        Permutation(list)
next

ReadLine() 関数

ファイルから一行読み取ります。

文法:

readline(fp) ---> 文字列

用例:

Load "stdlib.ring"

# ファイルから一行ずつ読み取ります。
Puts("Test Readline()")
fp = fopen("test.ring","r")
while not feof(fp)
See Readline(fp) end
fclose(fp)

SubString() 関数

文字列の指定位置を始点とした部分文字の位置を返します。

文法:

Substring(str,substr,npos) ---> 文字列

用例:

Load "stdlib.ring"

# 文字列の指定位置を始点とした部分文字の位置を返します。
Puts("Test Substring()")
a = "abcxyzqweabc"
b = "abc"
i = 4
see substring(a,b,i)

ChangeString() 関数

部分文字列を指定位置から別の部分文字の指定位置へ変更します。

文法:

Changestring(cString, nPos1, nPos2, cSubstr) ---> cString

用例:

Load "stdlib.ring"

# 部分文字列を指定位置から別の部分文字の指定位置へ変更します。
Puts("Test Changestring()")
see Changestring("Rmasdg",2,5,"in")     # Ring

Sleep() 関数

指定された秒数まで休止します。

文法:

sleep(nSeconds)

用例:

Load "stdlib.ring"

Puts("Test Sleep()")
see "Wait 3 Seconds!"
Sleep(3)
see nl

IsMainSourceFile() 関数

現在のファイルがメインソースファイルか確認します。

文法:

IsMainSourceFile() ---> True/False

用例:

Load "stdlib.ring"

if ismainsourcefile()
        # コード
ok

MakeDir() 関数

ディレクトリを作成します。

文法:

MakeDir(文字列)

用例:

Load "stdlib.ring"

# ディレクトリの作成
puts("create Directory : myfolder")
makedir("myfolder")

Fsize() 関数

ファイルサイズをバイト単位で返します。

文法:

FSize(ファイルのハンドル) ---> 数値  (バイト単位によるファイルサイズ)

TrimAll() 関数

文字列から空白とタブ文字を全て除去します。

文法:

TrimAll(cString) ---> cString # 空白とタブを除去します。

TrimLeft() 関数

文字列の左側にある空白とタブ文字を全て除去します。

文法:

TrimLeft(cString) ---> cString # 左側から空白とタブを除去します。

TrimRight() 関数

文字列の右側にある空白とタブ文字を全て除去します。

文法:

TrimRight(cString) ---> cString # 右側から空白とタブを除去します。

EpochTime() 関数

エポック時間を返します。

文法:

EpochTime(cDate,cTime) ---> エポック時間

用例:

see EpochTime( Date(), Time() )

SystemCmd() 関数

SystemCmd() 関数は変数を出力してシステムコマンドを実行します。

文法:

SystemCmd(cCommand)

用例:

cYou  = SystemCmd("whoami")        # 記録されたユーザ名は変数へ出力されます。
cThem = SystemCmd("dir c:\Users")  # ディレクトリのリストは変数へ出力されます。

ListAllFiles() 関数

ListAllFiles() 関数でフォルダにあるファイルのグループ、およびそのサブフォルダを手軽に処理できます。

文法:

ListAllFiles(cFolder,cExtension) ---> ファイルのリスト

用例:

aList = ListAllFiles("c:/ring/ringlibs","ring") # *.ring のみ
aList = sort(aList)
see aList

用例:

see listallfiles("b:/ring/libraries/weblib","") # 全てのファイル

SystemSilent() 関数

SystemSilent() 関数は実行結果を表示せずにシステムコマンドを実行します。

文法:

SystemSilent(cCommand)

OSCreateOpenFolder() 関数

フォルダの作成後に、現在のフォルダを作成したフォルダへ変更します。

文法:

OSCreateOpenFolder(cCommand)

OSCopyFolder() 関数

現在のフォルダへフォルダをコピーします。

引数 : 親フォルダ (cParentFolder) のパス、およびコピー先のフォルダ名 (cFolderName)

文法:

OSCopyFolder(cParentFolder,cFolderName)

用例:

現在のフォルダへ c:\ring\ringlibs\stdlib フォルダをコピーするには

OSCopyFolder("c:\ring\ringlibs\","stdlib")

OSDeleteFolder() 関数

現在のディレクトリにあるフォルダを削除します。

文法:

OSDeleteFolder(cFolderName)

OSCopyFile() 関数

現在のディレクトリへファイルをコピーします。

文法:

OSCopyFile(cFileName)

OSDeleteFile() 関数

ファイルを削除します。

文法:

OSDeleteFile(cFileName)

OSRenameFile() 関数

ファイル名を変更します。

文法:

OSRenameFile(cOldFileName,cNewFileName)

List2Code() 関数

この関数は Ring リストを実行中に Ring ソースコードへ変換することでソースファイルを保存できるようにします。

リストは文字列、数値または部分リストから構成されます。

用例:

load "stdlibcore.ring"
aList = 1:10
? list2Code(aList)

実行結果:

[
        1,2,3,4,5,6,7,8,9,10
]

Str2ASCIIList() 関数

各項目が 1 バイト ASCII コードとなる文字列表現のバイト文字列を数値リストへ変換します。

文法:

Str2ASCIIList(文字列) ---> 数値リスト

ASCIIList2Str() 関数

各項目が 1 バイト ASCII コード表現となる数値リストをバイト文字列へ変換します。

文法:

ASCIIList2Str(数値リスト) ---> 文字列

用例:

load "stdlibcore.ring"

cStr = "MmMm"

aList = Str2ASCIILIST(cStr)
? aList

cStr2 = ASCIIList2Str(aList)
? cStr2
? len(cStr2)

実行結果:

77
109
77
109

MmMm
4

IsListContainsItems() 関数

文法:

IsListContainsItems(aParent,aChild) ----> True/False

用例:

load "stdlibcore.ring"
aList1 = "a":"z"
aList2 = [:h,:l,:p,:u]
? IsListContainsItems(aList1,aList2)

IsBetween() 関数

文法:

IsBetween(nNumber,nMin,nMax) ----> True/False

用例:

load "stdlibcore.ring"
? isBetween(1,3,4)
? isBetween(1,-3,4)
? isBetween(4,1,6)
? isBetween(4,3,4)

TimeInfo() 関数

文法:

TimeInfo(cInformation) ----> 文字列

cInformation の値はこのようになります。

:hour_24
:hour_12
:minutes
:seconds
:time
:day_short
:day_long
:month_short
:month_long
:date_time
:day
:day_year
:month_year
:am_pm
:week_year
:day_week
:date
:year_century
:year
:time_zone
:percent_sign

用例:

load "stdlibcore.ring"
? timeInfo(:date)
? timeInfo(:time)
? timeInfo(:hour_12)

Stdlib クラス

stdlib.ring のクラスです。

StdBase クラス

String クラス

List クラス

Stack クラス

Queue クラス

HashTable クラス

Tree クラス

Math クラス

DateTime クラス

File クラス

System クラス

Debug クラス

DataType クラス

Conversion クラス

ODBC クラス

MySQL クラス

SQLite クラス

PostgreSQL クラス

Security クラス

Internet クラス

StdBase クラス

属性:

vValue : オブジェクトの値

メソッド:

メソッド

説明・実行結果

Init(x)

vValue 属性へ x の値を設定します。

Print()

PvValue を表示します。

PrintLn()

vValue を表示後に改行します。

Size()

vValue のサイズを数値表現で返します。

Value()

vValue を返します。

Set(x)

Init(x) を呼び出します。

String クラス

親クラス : StdBase クラス

メソッド:

メソッド

説明・実行結果

Init(文字列|数値|リスト)

Lower()

新しい文字列 - 小文字へ変換

Upper()

新しい文字列 - 大文字へ変換

Left(x)

新しい文字列 - 左側から x 文字を取得

Right(x)

新しい文字列 - 右側から x 文字を取得

Lines()

数値 - 行数

Trim()

新しい文字列 - 空白文字の除去

Copy(x)

新しい文字列 - 文字列を x 回反復コピー

strcmp(cString)

文字列を cString と比較

tolist()

リスト - 文字列の行から文字列の項目へ変換します。

tofile(cFileName)

文字列をファイルへ書き込む

mid(nPos1,nPos2)

新しい文字列 - nPos1 から nPos2 までを切り出し

getfrom(nPos1)

新しい文字列 - nPos1 から文字列の末尾まで切り出し

replace(cStr1,cStr2,lCase)

新しい文字列 - cStr1 を cStr2 へ置換。 lCase (True = 英数大小文字)

split()

リスト - 各語からリスト項目へ変換します。

startswith(substring)

開始位置が部分文字列で始まるならば true を返します。

endswith(substring)

開始位置が部分文字列で終わるならば true を返します。

用例:

Load "stdlib.ring"

See "Testing the String Class" + nl
oString = new string("Hello, World!")
oString.println()
oString.upper().println()
oString.lower().println()
oString.left(5).println()
oString.right(6).println()
oString = new string("Hi" + nl + "Hello" )
See oString.lines() + nl
oString = new string("    Welcome    ")
oString.println()
oString.trim().println()
oString = new string("Hello! ")
oString.copy(3).println()
see oString.strcmp("Hello! ") + nl
see oString.strcmp("Hello ") + nl
see oString.strcmp("Hello!! ") + nl
oString = new string(["one","two","three"])
oString.print()
see oString.lines() + nl
oString = new String(1234)
oString.println()
oString = new String("one"+nl+"two"+nl+"three")
aList = oString.tolist()
see "List Items" + nl See aList
oString = new String( "Welcome to the Ring programming language")
See "the - position : " + oString.pos("the") + nl
oString = oString.getfrom(oString.pos("Ring"))
oString.println()
oString.mid(1,4).println()
oString = oString.replace("Ring","***Ring***",true)
oString.println()
oString = oString.replace("ring","***Ring***",false)
oString.println()
oString1 = new string("First")
oString2 = new string("Second")
oString = oString1 + oString2
oString.println()
oString = oString1 * 3
oString.println()
for t in ostring see t next
oString.tofile("test.txt")
oString = new string("one two three")
see nl
see ostring.split()
oString {
        set("Hello") println()
        set("How are you?") println()
}

実行結果:

Testing the String Class
Hello, World!
HELLO, WORLD!
hello, world!
Hello
World!
2
        Welcome
Welcome
Hello! Hello! Hello!
0
1
-1
one
two
three
4
1234
List Items
one
two
three
the - position : 12
Ring programming language
Ring
***Ring*** programming language
******Ring****** programming language
FirstSecond
FirstFirstFirst
FirstFirstFirst
one
two
three
Hello
How are you?

List クラス

親クラス : StdBase クラス

メソッド:

メソッド

説明・実行結果

Init(文字列|リスト)

Add(値)

リストへ項目を追加

Delete(nIndex)

リストから項目を削除

Item(nIndex)

リストから項目を取得

First()

リストから最初の項目を取得

Last()

リストから最後の項目を取得

Set(nIndex,値)

項目の値を設定

FindInColumn(nCol,値)

列にある項目を検索

Sort()

項目の整列 - 新しいリストを返す

Reverse()

項目の反転 - 新しいリストを返す

Insert(nIndex,値)

nIndex の後に項目を挿入

用例:

Load "stdlib.ring"

oList = new list ( [1,2,3] )
oList.Add(4)
oList.print()
see oList.item(1) + nl
oList.delete(4)
oList.print()
see oList.first() + nl
see oList.last() + nl
oList { set(1,"one") set(2,"two") set(3,"three") print() }
see oList.find("two") + nl
oList.sort().print()
oList.reverse().print()
oList.insert(2,"nice")
oList.print()
oList = new list ( [ [1,"one"],[2,"two"],[3,"three"] ] )
see copy("*",10) + nl
oList.print()
see "Search two : " + oList.findincolumn(2,"two") + nl
see "Search 1 : " + oList.findincolumn(1,1) + nl
oList = new list ( [ "Egypt" , "USA" , "KSA" ] )
for x in oList
        see x + nl
next
oList =  new list ( [1,2,3,4] )
oList + [5,6,7]
oList.print()
oList = new list ( ["one","two"] )
oList2 = new list ( ["three","four"] )
oList + oList2
oList.print()

実行結果:

1
2
3
4
1
1
2
3
1
3
one
two
three
2
one
three
two
three
two
one
one
two
nice
three
**********
1
one
2
two
3
three
Search two : 2
Search 1 : 1
Egypt
USA
KSA
1
2
3
4
5
6
7
one
two
three
four

Stack クラス

親クラス : List クラス

メソッド:

メソッド

説明・実行結果

Init(文字列|数値|リスト)

Push(値)

項目をスタックへ退避します。

Pop()

項目をスタックへ復帰します。

Print()

スタックの項目を表示します。

用例:

Load "stdlib.ring"

oStack = new Stack
oStack.push(1)
oStack.push(2)
oStack.push(3)
see oStack.pop() + nl
see oStack.pop() + nl
see oStack.pop() + nl
oStack.push(4)
see oStack.pop() + nl
oStack { push("one") push("two") push("three") }
oStack.print()

実行結果:

3
2
1
4
three
two
one

Queue クラス

親クラス : List クラス

メソッド:

メソッド

説明・実行結果

Init(文字列|数値|リスト)

Remove()

キューから項目を削除します。

用例:

Load "stdlib.ring"

oQueue = new Queue
oQueue.add(1)
oQueue.add(2)
oQueue.add(3)
see oQueue.remove() + nl
see oQueue.remove() + nl
see oQueue.remove() + nl
oQueue.add(4)
see oQueue.remove() + nl
oQueue { add("one") add("two") add("three") }
oQueue.print()

実行結果:

1
2
3
4
one
two
three

HashTable クラス

親クラス : List クラス

メソッド:

メソッド

説明・実行結果

Init(リスト)

Add(cKey,値)

ハッシュテーブルへ項目を追加。

Set(cKey,値)

キーで項目の値を設定します。

GetValue(cKey)

キーで項目の値を取得します。

Contains(cKey)

キーでハッシュテーブルに項目があるか確認します。

Index(cKey)

キーでインデックスの項目を取得します。

用例:

Load "stdlib.ring"

ohashtable = new hashtable
See "Test the hashtable Class Methods" + nl
ohashtable {
        Add("Egypt","Cairo")
        Add("KSA","Riyadh")
        see self["Egypt"] + nl
        see self["KSA"] + nl
        see contains("Egypt") + nl
        see contains("USA") + nl
        see index("KSA")  + NL
        print()
        delete(index("KSA"))
        see copy("*",60) + nl
        print()
}

実行結果:

Test the hashtable Class Methods
Cairo
Riyadh
1
0
2
Egypt
Cairo
KSA
Riyadh
************************************************************
Egypt
Cairo

Tree クラス

データ:

属性

説明

Data

ノード値

Children

子のリスト

メソッド:

メソッド

説明・実行結果

set(値)

ノード値を設定します。

value()

ノード値を取得します。

Add(値)

新しい子を追加します。

parent()

親ノードを取得します。

print()

ノードツリーを表示します。

用例:

Load "stdlib.ring"

otree = new tree
See "Test the tree Class Methods" + nl
otree {
        set("The first step")   # ルートのノード値を設定します。
        see value() + nl
        Add("one")
        Add("two")
        Add("three") {
                Add("3.1")
                Add("3.2")
                Add("3.3")
                see children
        }
        see children
        oTree.children[2] {
                Add("2.1") Add("2.2") Add("2.3") {
                        Add("2.3.1") Add("2.3.2") Add("test")
                }
        }
        oTree.children[2].children[3].children[3].set("2.3.3")
}
see copy("*",60) + nl
oTree.print()

実行結果:

Test the tree Class Methods
The first step
data: 3.1
parent: List...
children: List...
data: 3.2
parent: List...
children: List...
data: 3.3
parent: List...
children: List...
data: one
parent: List...
children: List...
data: two
parent: List...
children: List...
data: three
parent: List...
children: List...
************************************************************
one
two
2.1
2.2
2.3
2.3.1
2.3.2
2.3.3
three
3.1
3.2
3.3

Math クラス

メソッド:

メソッド

説明・実行結果

sin(x)

ラジアン x のサイン角度を返します。

cos(x)

ラジアン x のコサイン角度を返します。

tan(x)

ラジアン x のタンジェント角度を返します。

asin(x)

ラジアン表記によるアークサインの x の主値を返します。

acos(x)

ラジアン表記によるアークコサインの x の主値を返します。

atan(x)

ラジアン表記によるアークタンジェントの x の主値を返します。

atan2(y,x)

ラジアン [-pi,+pi] の区間にある、ラジアン表記によるアークタンジェントの x の主値を返します。

sinh(x)

ラジアン x の双曲線サインを返します。

cosh(x)

ラジアン x の双曲線コサインを返します。

tanh(x)

ラジアン x の双曲線タンジェントを返します。

exp(x)

e の x 乗値を返します。

log(x)

x の常用対数を返します。

log10(x)

x の常用対数を返します (基数 10 の対数)。

ceil(x)

x 以上の最短整数値を返します。

floor(x)

x 以下の最大整数値を返します。

fabs(x)

x の絶対値を返します。

pow(x,y)

x に対する y の累乗を返します。

sqrt(x)

x の平方根を返します。

random(x)

[0,x] の範囲による乱数を返します。

unsigned(n,n,c)

符号なし数値で演算を実行します。

decimals(n)

浮動小数点数、倍精度数の小数点の後にある小数点以下の数値を決定します。

用例:

Load "stdlib.ring"

oMath = new Math

See "Test the Math Class Methods" + nl
See "Sin(0) = " + oMath.sin(0) + nl
See "Sin(90) radians = " + oMath.sin(90) + nl
See "Sin(90) degree = " + oMath.sin(90*3.14/180) + nl

See "Cos(0) = " + oMath.cos(0) + nl
See "Cos(90) radians = " + oMath.cos(90) + nl
See "Cos(90) degree = " +oMath. cos(90*3.14/180) + nl

See "Tan(0) = " + oMath.tan(0) + nl
See "Tan(90) radians = " + oMath.tan(90) + nl
See "Tan(90) degree = " + oMath.tan(90*3.14/180) + nl

See "asin(0) = " + oMath.asin(0) + nl
See "acos(0) = " + oMath.acos(0) + nl
See "atan(0) = " + oMath.atan(0) + nl
See "atan2(1,1) = " +oMath. atan2(1,1) + nl

See "sinh(0) = " + oMath.sinh(0) + nl
See "sinh(1) = " + oMath.sinh(1) + nl
See "cosh(0) = " + oMath.cosh(0) + nl
See "cosh(1) = " + oMath.cosh(1) + nl
See "tanh(0) = " + oMath.tanh(0) + nl
See "tanh(1) = " + oMath.tanh(1) + nl

See "exp(0) = " + oMath.exp(0) + nl
See "exp(1) = " + oMath.exp(1) + nl
See "log(1) = " + oMath.log(1) + nl
See "log(2) = " + oMath.log(2) + nl
See "log10(1) = " + oMath.log10(1) + nl
See "log10(2) = " + oMath.log10(2) + nl
See "log10(10) = " + oMath.log10(10) + nl

See "Ceil(1.12) = " + oMath.Ceil(1.12) + nl
See "Ceil(1.72) = " + oMath.Ceil(1.72) + nl

See "Floor(1.12) = " + oMath.floor(1.12) + nl
See "Floor(1.72) = " + oMath.floor(1.72) + nl

See "fabs(1.12) = " + oMath.fabs(1.12) + nl
See "fabs(1.72) = " + oMath.fabs(1.72) + nl

See "pow(2,3) = " + oMath.pow(2,3) + nl

see "sqrt(16) = " + oMath.sqrt(16) + nl

for x = 1 to 20
                see "Random number Max (100) : " + oMath.random(100) + nl
next

x = 1.1234567890123
for d = 0 to 14
        oMath.decimals(d)
        see x + nl
next

cKey = "hello"

h = 0
for x in cKey
        h = oMath.unsigned(h,ascii(x),"+")
        h = oMath.unsigned(h,oMath.unsigned(h,10,"<<"),"+")
        r = oMath.unsigned(h,6,">>")
        h = oMath.unsigned(h, r,"^")
next
h = oMath.unsigned(h,oMath.unsigned(h,3,"<<"),"+")
h = oMath.unsigned(h,oMath.unsigned(h,11,">>"),"^")
h = oMath.unsigned(h,oMath.unsigned(h,15,"<<"),"+")

see "Hash : " + h

実行結果:

Test the Math Class Methods
Sin(0) = 0
Sin(90) radians = 0.89
Sin(90) degree = 1.00
Cos(0) = 1
Cos(90) radians = -0.45
Cos(90) degree = 0.00
Tan(0) = 0
Tan(90) radians = -2.00
Tan(90) degree = 1255.77
asin(0) = 0
acos(0) = 1.57
atan(0) = 0
atan2(1,1) = 0.79
sinh(0) = 0
sinh(1) = 1.18
cosh(0) = 1
cosh(1) = 1.54
tanh(0) = 0
tanh(1) = 0.76
exp(0) = 1
exp(1) = 2.72
log(1) = 0
log(2) = 0.69
log10(1) = 0
log10(2) = 0.30
log10(10) = 1
Ceil(1.12) = 2
Ceil(1.72) = 2
Floor(1.12) = 1
Floor(1.72) = 1
fabs(1.12) = 1.12
fabs(1.72) = 1.72
pow(2,3) = 8
sqrt(16) = 4
Random number Max (100) : 87
Random number Max (100) : 49
Random number Max (100) : 99
Random number Max (100) : 58
Random number Max (100) : 15
Random number Max (100) : 46
Random number Max (100) : 37
Random number Max (100) : 64
Random number Max (100) : 73
Random number Max (100) : 35
Random number Max (100) : 89
Random number Max (100) : 80
Random number Max (100) : 20
Random number Max (100) : 33
Random number Max (100) : 44
Random number Max (100) : 89
Random number Max (100) : 82
Random number Max (100) : 94
Random number Max (100) : 83
Random number Max (100) : 68
1
1.1
1.12
1.123
1.1235
1.12346
1.123457
1.1234568
1.12345679
1.123456789
1.1234567890
1.12345678901
1.123456789012
1.1234567890123
1.12345678901230
Hash : 3372029979.00000000000000

DateTime クラス

メソッド:

メソッド

説明・実行結果

clock()

プログラム開始時からのクロック・ティック数

time()

システム時刻を取得。

date()

日付を取得します。

timelist()

日付と時刻の情報を有するリスト。

adddays(cDate,nDays)

cDate から nDays 後の日付を返します。

diffdays(cDate1,cDate2)

日数 (Date1 - Date2) を返します。

用例:

Load "stdlib.ring"

oDateTime = new datetime

See "Test the datetime Class Methods" + nl

See "Calculate performance" + nl
t1 = oDateTime.clock()
for x = 1 to 1000000 next
see oDateTime.clock() - t1 + nl

See "Time : " + oDateTime.time() + nl

See "Date : " + oDateTime.date() + nl

See oDateTime.TimeList()

See "Month Name : " + oDateTime.TimeList()[4]

cDate = oDateTime.date()
see cDate + nl
cDate = oDateTime.adddays(cDate,10)
see cDate + nl

cDate1 = oDateTime.date()
see cDate1 + nl
cDate2 = oDateTime.adddays(cDate1,10)
see cDate2 + nl
see "DiffDays = " + oDateTime.diffdays(cDate1,cDate2) + nl
see "DiffDays = " + oDateTime.diffdays(cDate2,cDate1) + nl

実行結果:

Test the datetime Class Methods
Calculate performance
85
Time : 02:53:35
Date : 31/08/2016
Wed
Wednesday
Aug
August
08/31/16 02:53:35
31
02
02
244
08
53
AM
35
35
3
08/31/16
02:53:35
16
2016
Arab Standard Time
%
Month Name : August31/08/2016
10/09/2016
31/08/2016
10/09/2016
DiffDays = -10
DiffDays = 10

File クラス

メソッド:

メソッド

説明・実行結果

read(cFileName)

ファイルの内容を読み取ります。

write(cFileName,cStr)

文字列をファイルへ書き込みます。

dir(cFolderPath)

フォルダの内容 (ファイルとサブフォルダ) を取得します。

rename(cOld,cNew)

Rename() 関数はファイルの名称変更をします。

remove(cFileName)

Remove() 関数はファイルの削除をします。

open(cFileName,cMode)

Fopen() 関数はファイルを開きます。

close()

ファイルを閉じます。

flush()

ストリームの出力バッファを追い出します。

reopen(cFileName,cMode)

同じファイルハンドルで別のファイルを開きます。

tempfile()

一時作業用ファイルを作成します (バイナリ形式)。

seek(noffset,nwhence)

ストリームにおけるファイル位置を設定します。

tell()

ストリームにおける現在のファイル位置を検出します

rewind()

ファイルの位置をファイルの先頭へ設定します。

getpos()

ハンドルにおける現在のファイル位置を取得します。

setpos(poshandle)

現在のファイルの位置を設定します。

clearerr()

EOF エラーとエラーインジケーターをストリームから消去します。

eof()

EOF (ファイル終端) インジケーターのテストがします。

error()

エラーインジケーターをテストします。

perror(cErrorMessage)

標準出力エラーへエラーメッセージを表示します。

getc()

ストリームから次の文字を取得します。

gets(nsize)

ストリームから新しい行を読み取ります。

putc(cchar)

文字をストリームへ書き込みます。

puts(cStr)

文字列をストリームへ書き込みます。

ungetc(cchar)

文字をストリームへプッシュします。

fread(nsize)

データをストリームへ読み込みます。

fwrite(cString)

データをストリームへ書き込みます。

exists(cFileName)

ファイルの存在を確認します。

用例:

Load "stdlib.ring"

ofile = new file

See "Test the file Class Methods" + nl
see ofile.read(filename())

see nl
ofile.open(filename(),"r")
see ofile.gets(100) + nl
ofile.close()

System クラス

メソッド:

メソッド

説明・実行結果

system()

システムコマンドを実行します。

sysget()

環境変数を取得します。

ismsdos()

オペレーティングシステムが MS-DOS か確認します。

iswindows()

オペレーティングシステムが Windows か確認します。

iswindows64()

オペレーティングシステムが 64bit 版の Windows か確認します。

isunix()

オペレーティングシステムが UNIX か確認します。

ismacosx()

オペレーティングシステムが macOS か確認します。

islinux()

オペレーティングシステムが Linux か確認します。

isfreebsd()

オペレーティングシステムが FreeBSD か確認します。

isandroid()

オペレーティングシステムが Android か確認します。

windowsnl()

Windows の改行文字を取得します。

sysargv()

コマンドライン引数を Ring スクリプトへ渡します。

filename()

現在使用中のソースファイル名を取得します。

用例:

Load "stdlib.ring"

oSystem = new System

See "Test the System Class Methods" + nl

oSystem.system("dir")
see oSystem.sysget("path") + nl
see oSystem.ismsdos() + nl
see oSystem.iswindows() + nl
see oSystem.iswindows64() + nl
see oSystem.isunix() + nl
see oSystem.ismacosx() + nl
see oSystem.islinux() + nl
see oSystem.isfreebsd() + nl
see oSystem.isandroid() + nl
see oSystem.windowsnl() + nl
see oSystem.sysargv() + nl
see oSystem.filename() + nl

Debug クラス

メソッド:

メソッド

説明・実行結果

eval(cCode)

実行時に文字列からコードを実行します。

raise(cError)

例外を発生させます。

assert(cCondition)

コードの実行前に条件をテストします。

用例:

Load "stdlib.ring"

oDebug = new Debug
See "Test the Debug Class Methods" + nl
oDebug.eval("see 'Hello'+nl")
try
        x = 10
        oDebug.assert(x=11)
catch see "assert" + nl done
raise("Error!")

DataType クラス

メソッド:

メソッド

説明・実行結果

isstring(vValue)

値が文字列か検査します。

isnumber(vValue)

値が数値か検査します。

islist(vValue)

値がリストか検査します。

type(vValue)

値の型を検査します。

isnull(vValue)

値が null か検査します。

isalnum(vValue)

値が数字または文字ならば 1 を、そうでなければ 0 です。

isalpha(vValue)

値が文字ならば 1 を、そうでなければ 0 です。

iscntrl(vValue)

値が制御文字 (表示不能) ならば 1 を、そうでなければ 0 です。

isdigit(vValue)

値が数字ならば 1 を、そうでなければ 0 です。

isgraph(vValue)

値が表示可能 (空白文字を除く) であれば 1 を、そうでなければ 0 を返します。

islower(vValue)

値が英数小文字ならば 1 を、そうでなければ 0 です。

isprint(vValue)

値が表示可能であれば 1 を、そうでなければ 0 です。

ispunct(vValue)

値が句読記号文字ならば 1 を、そうでなければ 0 です。

isspace(vValue)

値が空白文字ならば 1 を、そうでなければ 0 です。

isupper(vValue)

値が英数大文字ならば 1 を、そうでなければ 0 です。

isxdigit(vValue)

値が十六進数文字ならば 1 をそうでなければ 0 です。

用例:

Load "stdlib.ring"

oDataType = new DataType
See "Test the DataType Class Methods" + nl
see oDataType.isstring("test") + nl
see oDataType.isnumber(1) + nl
see oDataType.islist(1:3) + nl
see oDataType.type("test") + nl
see oDataType.isnull(null) + nl
see oDataType.isalnum("Hello") + nl +              # 1 を表示
oDataType.isalnum("123456") + nl +                 # 1 を表示
oDataType.isalnum("ABCabc123") + nl +              # 1 を表示
oDataType.isalnum("How are you")  + nl             # 空なので 0 を表示
see oDataType.isalpha("Hello") + nl +              # 1 を表示
        oDataType.isalpha("123456") + nl +             # 0 を表示
oDataType.isalpha("ABCabc123") + nl +              # 0 を表示
oDataType.isalpha("How are you")  + nl             # 0 を表示
See oDataType.iscntrl("hello") + nl +              # 0 を表示
oDataType.iscntrl(nl)                              # 1 を表示
see oDataType.isdigit("0123456789") + nl +         # 1 を表示
oDataType.isdigit("0123a") + nl
see oDataType.isgraph("abcdef") + nl +             # 1 を表示
oDataType.isgraph("abc def")   + nl                # 0 を表示
see oDataType.islower("abcDEF") + nl +             # 0 を表示
oDataType.islower("ghi") + nl                      # 1 を表示
see oDataType.isprint("Hello") + nl +              # 1 を表示
oDataType.isprint("Nice to see you") + nl +        # 1 を表示
oDataType.isprint(nl)    + nl                      # 0 を表示
see oDataType.isprint("Hello") + nl                # 1 を表示
see oDataType.isupper("welcome") + nl +            # 0 を表示
oDataType.isupper("WELCOME")  + nl                 # 1 を表示
see oDataType.isxdigit("0123456789abcdef") + nl +  # 1 を表示
oDataType.isxdigit("123z")                         # 0 を表示

実行結果:

Test the DataType Class Methods
1
1
1
STRING
1
1
1
1
0
1
0
0
0
0
11
0
1
0
0
1
1
1
0
1
0
1
1
0

Conversion クラス

メソッド:

メソッド

説明・実行結果

number(vValue)

文字列を数値へ変換します。

string(vValue)

数値を文字列へ変換します。

ascii(vValue)

文字から ASCII コードを取得します。

char(vValue)

ASCII コードを文字へ変換します。

hex(vValue)

十進数から十六進数へ変換します。

dec(vValue)

十六進数から十進数へ変換します。

str2hex(vValue)

文字列の文字を十六進数文字へ変換します。

hex2str(vValue)

十六進数文字を文字列へ変換します。

用例:

Load "stdlib.ring"

oConversion = new conversion
See "Test the conversion Class Methods" + nl
See oConversion.number("3") + 5  + nl
See oConversion.string(3) + "5" + nl
See oConversion.Ascii("m") + nl
See oConversion.char(77) + nl
see oConversion.hex(162) + nl
see oConversion.dec("a2") + nl
cHex = oConversion.str2hex("Hello")
see cHex + nl
see oConversion.hex2str(cHex) + nl

実行結果:

Test the conversion Class Methods
8
35
109
M
a2
162
48656c6c6f
Hello

ODBC クラス

メソッド:

メソッド

説明・実行結果

drivers()

ODBC ドライバのリストを取得します。

datasources()

ODBC データソースのリストを取得します。

close()

リソースを解放します。

connect(cConString)

データベースへ接続します。

disconnect()

データベースへの接続を閉じます。

execute(cSQL)

SQL ステートメントを実行します。

colcount()

クエリの結果にあるカラム数を取得します。

fetch()

クエリ結果から列をフェッチします。

getdata(nCol)

フェッチ済みの列からカラム値を取得します。

tables()

テーブル内にあるテーブルのリストを取得します。

columns(cTableName)

テーブル内にあるカラムのリストを取得します。

autocommit(lStatus)

自動コミット機能の有効または無効化します。

commit()

データベースのコミット更新をします。

rollback()

データベースのロールバック更新をします。

用例:

Load "stdlib.ring"

oodbc = new odbc
See "Test the odbc Class Methods" + nl
oODBC {
        see drivers()
        see datasources()
        See "Connect to database" + nl
        see connect("DBQ=test.mdb;Driver={Microsoft Access Driver (*.mdb)}") + nl
        See "Select data" + nl
        see execute("select * from person") + nl
        nMax = colcount()
        See "Columns Count : " + nMax + nl
        while fetch()
                See "Row data:" + nl
                for x = 1 to nMax
                        see getdata(x) + " - "
                next
        end
        See "Close database..." + nl
        disconnect()
        close()
}

MySQL クラス

メソッド:

メソッド

説明・実行結果

info()

MySQL クライアントのバージョンを文字列を返します。

error()

MySQL クライアントからエラーメッセージを取得します。

connect(cServer,cUser,cPass,cDatabase)

MySQL データベースサーバーへ接続します。

close()

MySQL データベースへの接続を閉じます。

query(cQuery)

SQL クエリーの実行。

insert_id()

挿入された列の ID を取得します。

result()

クエリの結果 (カラム名を除くデータ) を取得します。

next_result()

次のクエリの結果を移動します。

columns()

カラム名のリストを取得します。

result2()

カラム名を全て取得した後にクエリの結果を一つのリストにします。

escape_string(cStr)

バイナリデータと特殊文字をデータベースへ格納する前に処理を行います。

autocommit(lStatus)

自動コミット機能の有効または禁止。

commit()

データベースのコミット更新。

rollback()

データベースのロールバック更新。

用例:

Load "stdlib.ring"

omysql = new mysql
See "Test the MySQL Class Methods" + nl
omysql {
        see info() + nl
        connect("localhost", "root", "root","mahdb")
        see "Execute Query" + nl
        query("SELECT * FROM Employee")
        see "Print Result" + nl
        see result2()
        see "Close database" + nl
        close()
}

実行結果:

Test the MySQL Class Methods
5.5.30
Execute Query
Print Result
Id
Name
Salary
1
Mahmoud
15000
2
Samir
16000
3
Fayed
17000
Close database

SQLite クラス

メソッド:

メソッド

説明・実行結果

open(cDatabase)

データベースを開きます。

close()

データベースを閉じます。

errormessage()

エラーメッセージを取得します。

execute(cSQL)

クエリーを実行します。

用例:

Load "stdlib.ring"

osqlite = new sqlite
See "Test the sqlite Class Methods" + nl
osqlite {
        open("test.db")
        sql = "CREATE TABLE COMPANY("  +
                "ID INT PRIMARY KEY     NOT NULL," +
                 "NAME           TEXT    NOT NULL," +
                 "AGE            INT     NOT NULL," +
                 "ADDRESS        CHAR(50)," +
                 "SALARY         REAL );"

        execute(sql)

        sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
                 "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "     +
                 "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
                 "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"

        execute(sql)

        aResult =  execute("select * from COMPANY")
        for x in aResult
                for t in x
                        see t[2] + nl
                next
        next
        see copy("*",50)  + nl
        for x in aResult
                see x["name"] + nl
        next
        close()
}

実行結果:

Test the sqlite Class Methods
1
Mahmoud
29
Jeddah
20000.0
2
Ahmed
27
Jeddah
15000.0
3
Mohammed
31
Egypt
20000.0
4
Ibrahim
24
Egypt
65000.0
**************************************************
Mahmoud
Ahmed
Mohammed
Ibrahim

PostgreSQL クラス

メソッド:

メソッド

説明・実行結果

init(cConString)

データベースを開きます。

close()

データベースを閉じます。

execute(cSQL)

クエリーを実行します。

用例:

load "stdlib.ring"

oPostgreSQL = new PostgreSQL("user=postgres password=sa dbname = mahdb")

See "Test the PostgreSQL Class Methods" + nl

oPostgreSQL {

        sql = "CREATE TABLE COMPANY_TEST("  +
                "ID INT PRIMARY KEY     NOT NULL," +
                 "NAME           TEXT    NOT NULL," +
                 "AGE            INT     NOT NULL," +
                 "ADDRESS        CHAR(50)," +
                 "SALARY         REAL );"

        execute(sql)

        sql = "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
                 "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY) "  +
                 "VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "     +
                 "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
                 "INSERT INTO COMPANY_TEST (ID,NAME,AGE,ADDRESS,SALARY)" +
                 "VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"

        execute(sql)

        ?  execute("select * from COMPANY_TEST")

        ? copy("*",50)

        close()
}

実行結果:

Test the PostgreSQL Class Methods
id
name
age
address
salary
1
Mahmoud
29
Jeddah
20000
2
Ahmed
27
Jeddah
15000
3
Mohammed
31
Egypt
20000
4
Ibrahim
24
Egypt
65000

**************************************************

Security クラス

メソッド:

メソッド

説明・実行結果

md5(cString)

MD5 ハッシュを計算します。

sha1(cString)

SHA1 ハッシュを計算します。

sha256(cString)

SHA256 ハッシュを計算します。

sha512(cString)

SHA512 ハッシュを計算します。

sha384(cString)

SHA384 ハッシュを計算します。

sha224(cString)

SHA224 ハッシュを計算します。

encrypt(cString,cKey,cIV)

Blowfish アルゴリズムでデータを暗号化します。

decrypt(cString,cKey,cIV)

Encrypt() メソッドで暗号化されたデータを復号化します。

randbytes(nSize)

擬似乱数バイトの文字列を生成します。

用例:

Load "stdlib.ring"

oSecurity = new security
See "Test the security Class Methods" + nl
oSecurity {
        see md5("hello") + nl +
        sha1("hello") + nl + sha256("hello") + nl +
        sha512("hello") + nl + sha384("hello") + nl +
        sha256("hello") + nl
        list = 0:15  cKey=""   for x in list cKey += char(x) next
        list = 1:8   cIV = ""   for x in list cIV += char(x) next
        cCipher = encrypt("hello",cKey,cIV)
        see cCipher + nl + decrypt(cCipher,cKey,cIV) + nl
}

Internet クラス

メソッド:

download(cURL)

sendemail(cSMTPServer,cEmail,cPassword,cSender,cReceiver,cCC,cTitle,cContent)

用例:

Load "stdlib.ring"

ointernet = new internet
See "Test the internet Class Methods" + nl
ointernet {
        see download("www.ring-lang.sf.net")
}

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

Ring アプリケーション (デスクトップ、 WebAssembly とモバイル) 開発における Qt フレームワーククラスの用法です。

はじめての GUI アプリケーション

この用例では、彼氏、彼女の名前を質問するアプリケーションを作成します。ユーザがテキストボックスへ名前を入力して “Say Hello” ボタンをクリックした後に、 “Hello ” を名前へ追加することでテキストボックスの値を更新します。

Load "guilib.ring"

oApp = New qApp {

        win1 = new qWidget() {

                setwindowtitle("Hello World")
                setGeometry(100,100,370,250)

                label1 = new qLabel(win1) {
                        settext("What is your name ?")
                        setGeometry(10,20,350,30)
                        setalignment(Qt_AlignHCenter)
                }

                btn1 = new qpushbutton(win1) {
                        setGeometry(10,200,100,30)
                        settext("Say Hello")
                        setclickevent("pHello()")
                }

                btn1 = new qpushbutton(win1) {
                        setGeometry(150,200,100,30)
                        settext("Close")
                        setclickevent("pClose()")
                }

                lineedit1 = new qlineedit(win1) {
                        setGeometry(10,100,350,30)
                }

                show()
        }

        exec()
}

Func pHello
        lineedit1.settext( "Hello " + lineedit1.text())

Func pClose
        oApp.quit()

プログラムの実行結果:

最初にテキストボックスへ名前を入力します。

そして Say Hello ボタンをクリックします。

イベントループ

qApp クラスから exec() メソッドを呼び出すときは Qt はイベント駆動とイベントループで制御します。

一度でも exec() を呼び出すと、イベントループを開始し、ウィジェットは様々なイベントへの応答を開始します (マウス、キーボード、タイマーなど)。

イベントが発行されてコールバック関数が呼び出されるときは再び制御を戻します。

コールバック関数の実行完了後、制御をイベントループへ再び戻します。

覚えていると便利なことは

ほとんどの作業は標準イベントで行います (イベントは各種ウィジェットで用意されています)。

イベントフィルタを使うとウィジェットにイベントを追加できます。

タイマーを使うと制御を戻します。これにより、各種検査を簡単にできます。

コールバック関数で処理時間がかかり、ビジー状態であるとき、 GUI の停止を回避するために qApp クラスで ProcessEvents() メソッドを呼び出せます。

oApp.processevents()

exec() メソッドを呼び出さずに、メインループを作成することもできます。

この方法は非推奨であり、選択肢の一つに過ぎません。

# exec() メソッドを呼び出さない方法
        while true
                oApp.processevents()    # GUI イベントへの応答
                # さらにコードを追加することで、制御を行います！
                # .....
        end

レイアウトの用法

この用例は、前述のアプリケーションで垂直レイアウトを使用するように更新したものです。

Load "guilib.ring"

MyApp = New qApp {

        win1 = new qWidget() {

                setwindowtitle("Hello World")
                setGeometry(100,100,400,130)
                label1 = new qLabel(win1) {
                        settext("What is your name ?")
                        setGeometry(10,20,350,30)
                        setalignment(Qt_AlignHCenter)
                }
                btn1 = new qpushbutton(win1) {
                        setGeometry(10,200,100,30)
                        settext("Say Hello")
                        setclickevent("pHello()")
                }
                btn2 = new qpushbutton(win1) {
                        setGeometry(150,200,100,30)
                        settext("Close")
                        setclickevent("pClose()")
                }
                lineedit1 = new qlineedit(win1) {
                        setGeometry(10,100,350,30)
                }
                layout1 = new qVBoxLayout() {
                        addwidget(label1)
                        addwidget(lineedit1)
                        addwidget(btn1)
                        addwidget(btn2)
                }
                win1.setlayout(layout1)
                show()
        }

        exec()

}

Func pHello
        lineedit1.settext( "Hello " + lineedit1.text())

Func pClose
        MyApp.quit()

実行中のアプリケーション！

QTextEdit クラスの用法

QTextEdit クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qWidget() {

                setwindowtitle("QTextEdit Class")
                setGeometry(100,100,500,500)

                new qtextedit(win1) {
                        setGeometry(10,10,480,480)

                }

                show()
        }

        exec()
}

実行中は qtextedit へリッチテキストを貼り付けることができます。

QListWidget クラスの用法

QListWidget クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qWidget() {

                setGeometry(100,100,400,400)

                list1 = new qlistwidget(win1) {
                        setGeometry(150,100,200,200)
                        alist = ["one","two","three","four","five"]
                        for x in alist additem(x) next
                        setcurrentrow(3,2)
                        win1.setwindowtitle("Items Count : " + count() )
                }

                btn1 = new qpushbutton(win1) {
                        setGeometry(10,200,100,30)
                        settext("selected item")
                        setclickevent("pWork()")
                }

                btn2 = new qpushbutton(win1) {
                        setGeometry(10,240,100,30)
                        settext("Delete item")
                        setclickevent("pWork2()")
                }

                show()
        }

        exec()
}

func pWork
        btn1.settext(string(list1.currentrow()))

func pWork2
        list1 {
               takeitem(currentrow())
        }

実行中のアプリケーション

別の用例:

Load "guilib.ring"

New qApp {

        win1 = new qWidget() {

                setGeometry(100,100,500,400)

                list1 = new qlistwidget(win1) {
                        setGeometry(150,100,200,200)
                        alist = ["one","two","three","four","five"]
                        for x in alist additem(x) next

                        setcurrentrow(3,2)
                        win1.setwindowtitle("Items Count : " + count() )
                }

                btn1 = new qpushbutton(win1) {
                        setGeometry(10,200,100,30)
                        settext("selected item")
                        setclickevent("pWork()")
                }

                btn2 = new qpushbutton(win1) {
                        setGeometry(10,240,100,30)
                        settext("Delete item")
                        setclickevent("pWork2()")
                }

                show()
        }

        exec()
}

func pWork

        nbrOfItems = list1.count()
        curItemNbr = list1.currentrow()
        curValue   = list1.item(list1.currentrow()).text()

        win1.setwindowtitle( "After Select - NbrOfItems: " + nbrOfItems +
                " CurItemNbr: " + curItemNbr + " CurValue: " + curValue )

        btn1.settext( string(list1.currentrow() ) + " --- " +
                      list1.item(list1.currentrow()).text() )

func pWork2
        list1 {
                takeitem(currentrow())

                nbrOfItems = count()
                curItemNbr = currentrow()
                curValue   = item(currentrow()).text()

                win1.setwindowtitle("After Delete - NbrOfItems: " + nbrOfItems +
                        " CurItemNbr: " + curItemNbr +" CurValue: " + curValue )
        }

QTreeView および QFileSystemModel の用法

この用例は QTreeView ウィジェットでファイルシステムを表示します。

Load "guilib.ring"

New qApp {

        win1 = New qWidget() {

                setwindowtitle("Using QTreeView and QFileSystemModel")
                setGeometry(100,100,500,400)

                New qtreeview(win1) {
                        setGeometry(00,00,500,400)
                        oDir = new QDir()
                        ofile = new QFileSystemModel()
                        ofile.setrootpath(oDir.currentpath())
                        setmodel(ofile)
                }

                show()
        }

        exec()
}

実行中のアプリケーション

QTreeWidget と QTreeWidgetItem の用法

QTreeWidget および QTreeWidgetItem クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qWidget() {

                setwindowtitle("TreeWidget")
                setGeometry(100,100,400,400)

                layout1 = new qvboxlayout()

                tree1 = new qtreewidget(win1) {
                        setGeometry(00,00,400,400)
                        setcolumncount(1)
                        myitem = new qtreewidgetitem()
                        myitem.settext(0,"The First Step")
                        addtoplevelitem(myitem)
                        for  x = 1 to 10
                                myitem2 = new qtreewidgetitem()
                                myitem2.settext(0,"hello"+x)
                                myitem.addchild(myitem2)
                                for  y = 1 to 10
                                        myitem3 = new qtreewidgetitem()
                                        myitem3.settext(0,"hello"+x)
                                        myitem2.addchild(myitem3)
                                next
                        next
                        setheaderlabel("Steps Tree")
                }

                layout1.addwidget(tree1)
                setlayout(layout1)

                show()
        }

        exec()
}

実行中のアプリケーション

QComboBox クラスの用法

QComboBox クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qWidget() {

                setwindowtitle("Using QComboBox")
                setGeometry(100,100,400,400)

                New QComboBox(win1) {
                        setGeometry(150,100,200,30)
                        alist = ["one","two","three","four","five"]
                        for x in aList additem(x,0) next
                }

                show()
        }

        exec()
}

実行中のアプリケーション

メニューバーの作成方法

QMenuBar クラスの用例です。

Load "guilib.ring"

MyApp = New qApp {

        win1 = new qWidget() {

                setwindowtitle("Using QMenubar")
                setGeometry(100,100,400,400)

                menu1 = new qmenubar(win1) {
                        sub1 = addmenu("File")
                        sub2 = addmenu("Edit")
                        sub3 = addmenu("Help")
                        sub1 {
                                oAction = new qAction(win1) {
                                        settext("New")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Open")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Save")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Save As")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qaction(win1) {
                                        settext("Exit")
                                        setclickevent("myapp.quit()")
                                }
                                addaction(oAction)
                        }
                        sub2 {
                                oAction = new qAction(win1) {
                                        settext("Cut")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Copy")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Paste")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        settext("Select All")
                                }
                                addaction(oAction)
                        }
                        sub3 {
                                oAction = new qAction(win1) {
                                        settext("Reference")
                                }
                                addaction(oAction)
                                sub4 = addmenu("Sub Menu")
                                sub4 {
                                        oAction = new qAction(win1) {
                                                settext("Website")
                                        }
                                        addaction(oAction)
                                        oAction = new qAction(win1) {
                                                settext("Forum")
                                        }
                                        addaction(oAction)
                                        oAction = new qAction(win1) {
                                                settext("Blog")
                                        }
                                        addaction(oAction)
                                }
                                addseparator()
                                        oAction = new qAction(win1) {
                                                settext("About")
                                        }
                                        addaction(oAction)
                        }
                }
                show()
        }
        exec()
}

実行中のアプリケーション

コンテキストメニュー

用例:

load "guilib.ring"

new qApp {
        win = new qwidget() {
                setwindowtitle("Context Menu")
                resize(400,400)
                myfilter = new qAllEvents(win) {
                        setContextmenuEvent("mymenu()")
                }
                installeventfilter(myfilter)
                show()
        }
        exec()
}

func mymenu

        new qMenu(win) {
                oAction = new qAction(win) {
                        settext("new")
                        SetCLickevent("See :New")
                }
                addaction(oAction)
                oAction = new qAction(win) {
                        settext("open")
                        SetCLickevent("See :Open")
                }
                addaction(oAction)
                oAction = new qAction(win) {
                        settext("save")
                        SetCLickevent("See :Save")
                }
                addaction(oAction)
                oAction = new qAction(win) {
                        settext("close")
                        SetCLickevent("See :Close")
                }
                addaction(oAction)
                oCursor  = new qCursor()
                exec(oCursor.pos())
        }

ツールバーの作成方法

QToolBar クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("Using QToolbar")
                setGeometry(100,100,600,400)

                abtns = [
                                new qpushbutton(win1) { settext("Add") } ,
                                new qpushbutton(win1) { settext("Edit") } ,
                                new qpushbutton(win1) { settext("Find") } ,
                                new qpushbutton(win1) { settext("Delete") } ,
                                new qpushbutton(win1) { settext("Exit")
                                                        setclickevent("win1.close()") }
                        ]

                tool1 = new qtoolbar(win1) {
                        for x in abtns addwidget(x) addseparator() next
                        setmovable(true)
                        setGeometry(0,0,500,30)
                        setFloatable(true)
                }

                show()
        }

        exec()
}

実行中のアプリケーション

ステータスバーの作成方法

QStatusBar クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("Using QStatusbar")
                setGeometry(100,100,400,400)

                status1 = new qstatusbar(win1) {
                        showmessage("Ready!",0)
                }

                setstatusbar(status1)
                show()
        }

        exec()
}

実行中のアプリケーション

QDockWidget の用法

QDockWidget クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("QDockWidget")
                setGeometry(100,100,400,400)

                label1 = new qlabel(win1) {
                        settext("Hello")
                        setGeometry(300,300,100,100)
                }

                label2 = new qlabel(win1) {
                        settext("How are you ?")
                        setGeometry(100,100,100,100)
                }

                dock1 = new qdockwidget(win1,0) {
                        setwidget(label1)
                        SetAllowedAreas(1)
                }

                dock2 = new qdockwidget(win1,0) {
                        setwidget(label2)
                        SetAllowedAreas(2)
                }

                adddockwidget(Qt_LeftDockWidgetArea,dock1,Qt_Horizontal)
                adddockwidget(Qt_LeftDockWidgetArea,dock2,Qt_Vertical)

                show()
        }
        exec()
}

実行中のアプリケーション

QTabWidget の用法

QTabWidget クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("Using QTabWidget")
                setGeometry(100,100,400,400)

                page1 = new qwidget() {
                        new qpushbutton(page1) {
                                settext("The First Page")
                        }
                }

                page2 = new qwidget() {
                        new qpushbutton(page2) {
                                settext("The Second Page")
                        }
                }

                page3 = new qwidget() {
                        new qpushbutton(page3) {
                                settext("The Third Page")
                        }
                }

                tab1 = new qtabwidget(win1) {
                        inserttab(0,page1,"Page 1")
                        inserttab(1,page2,"Page 2")
                        inserttab(2,page3,"Page 3")
                        setGeometry(100,100,400,400)
                }

                status1 = new qstatusbar(win1) {
                        showmessage("Ready!",0)
                }

                setstatusbar(status1)
                showMaximized()
        }

        exec()
}

実行中のアプリケーション

QTableWidget の用法

QTableWidget クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setGeometry(100,100,1100,370)
                setwindowtitle("Using QTableWidget")

                Table1 = new qTableWidget(win1) {

                        setrowcount(10) setcolumncount(10)
                        setGeometry(0,0,800,400)
                        setselectionbehavior(QAbstractItemView_SelectRows)

                        for x = 1 to 10
                                for y = 1 to 10
                                        item1 = new qtablewidgetitem("R"+X+"C"+Y)
                                        setitem(x-1,y-1,item1)
                                next
                        next

                }

                setcentralwidget(table1)
                show()

        }

        exec()
}

実行中のアプリケーション

QProgressBar の用法

QProgressBar クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {

                setGeometry(100,100,600,150)
                setwindowtitle("Using QProgressBar")

                for x = 10 to 100 step 10
                        new qprogressbar(win1) {
                                setGeometry(100,x,350,30)
                                setvalue(x)
                        }
                next

                show()
        }
        exec()
}

実行中のアプリケーション

QSpinBox の用法

QSpinBox クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setGeometry(100,100,450,260)
                setwindowtitle("Using QSpinBox")
                        new qspinbox(win1) {
                                setGeometry(50,100,350,30)
                                setvalue(50)
                        }
                show()
        }
        exec()
}

実行中のアプリケーション

QSlider の用法

QSlider クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setGeometry(100,100,500,400)
                setwindowtitle("Using QSlider")

                new qslider(win1) {
                        setGeometry(100,100,50,130)
                        settickinterval(50)
                }

                new qslider(win1) {
                        setGeometry(100,250,250,30)
                        settickinterval(50)
                        setorientation(Qt_Horizontal)
                }

                show()

        }

        exec()
}

実行中のアプリケーション

QDateEdit の用法

QDateEdit クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("Using QDateEdit")
                setGeometry(100,100,250,100)
                new qdateedit(win1) {
                        setGeometry(20,40,220,30)
                }
                show()
        }
        exec()
}

実行中のアプリケーション

QDial の用法

QDial クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setGeometry(100,100,450,500)
                setwindowtitle("Using QDial")
                new qdial(win1) {
                        setGeometry(100,100,250,300)
                }
                show()
        }
        exec()
}

実行中のアプリケーション

その他の用例:

Load "guilib.ring"

New qApp {
                 win1 = new qMainWindow()
                {
                        setGeometry(100,100,450,500)
                        setwindowtitle("Using QDial")
                        button1 = new QPushButton(win1){
                                setGeometry(100,350,100,30)
                                settext("Increment")
                                setClickEvent("pIncrement()")
                        }

                        button2 = new QPushButton(win1){
                                setGeometry(250,350,100,30)
                                settext("Decrement")
                                setClickEvent("pDecrement()")
                        }
                        pdial = new qdial(win1) {
                                setGeometry(100,50,250,300)
                                setNotchesVisible(true)
                                setValue(50)
                                SetValueChangedEvent("pDialMove()")
                        }
                        lineedit1 = new qlineedit(win1) {
                                setGeometry(200,400,50,30)
                                setalignment(Qt_AlignHCenter)
                                settext(string(pdial.value()))
                                setreturnPressedEvent("pPress()")
                        }
                        show()
                  }
        exec()
}

func pIncrement
        pdial{val=value()}
        pdial.setvalue(val+1)
        lineedit1{settext(string(val+1))}

func pDecrement
        pdial{val=value()}
        pdial.setvalue(val-1)
        lineedit1{settext(string(val-1))}

func pPress
        lineedit1{val=text()}
        pdial.setvalue(number(val))

func pDialMove
        lineedit1.settext(""+pdial.value())

QWebView の用法

QWebView クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("QWebView")
                myweb = new qwebview(win1) {
                        setGeometry(10,10,600,600)
                        loadpage(new qurl("http://google.com"))
                }
                setcentralwidget(myweb)
                showMaximized()
        }
        exec()
}

実行中のアプリケーション

QCheckBox の用法

QCheckBox クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("Using QCheckBox")
                new qcheckbox(win1) {
                        setGeometry(100,100,100,30)
                        settext("New Customer!")
                }
                showMaximized()
        }
        exec()
}

実行中のアプリケーション

その他の用例:

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setGeometry(100,100,400,300)
                setwindowtitle("Using QCheckBox")

                ### 0: チェックされていない。  1: チェックされた。

                CheckBox = new qcheckbox(win1) {
                        setGeometry(100,100,160,30)
                        settext("New Customer!")
                        setclickedEvent("HandleClickEvent()")
                }

                show()
        }
        exec()
}

Func HandleClickEvent

    if CheckBox.isChecked() = 1
        CheckBox.settext("New Customer. Check 1-ON")
    else
        CheckBox.settext("New Customer. Check 0-OFF")
    ok

QRadioButton と QButtonGroup の用法

QRadioButton および QButtonGroup クラスの用例です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("Using QRadioButton")

                new qradiobutton(win1) {
                        setGeometry(100,100,100,30)
                        settext("One")
                }
                new qradiobutton(win1) {
                        setGeometry(100,150,100,30)
                        settext("Two")
                }
                new qradiobutton(win1) {
                        setGeometry(100,200,100,30)
                        settext("Three")
                }

                group2  = new qbuttongroup(win1) {
                        btn4 = new qradiobutton(win1) {
                                setGeometry(200,150,100,30)
                                settext("Four")
                        }
                        btn5 = new qradiobutton(win1) {
                                setGeometry(200,200,100,30)
                                settext("Five")
                        }
                        addbutton(btn4,0)
                        addbutton(btn5,0)

                }

                showMaximized()

        }
        exec()
}

実行中のアプリケーション

QLabel へハイパーリンクを追加するには

QLabel クラスでハイパーリンクを作成する方法です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("QLabel - Hyperlink")
                new qlabel(win1) {
                        setGeometry(100,100,100,30)
                        setopenexternallinks(true)
                        settext('<a href="http://google.com">Google</a>')
                }
                showMaximized()
        }
        exec()
}

実行中のアプリケーション

QVideoWidget と QMediaPlayer

QVideoWidget および QMediaPlayer クラスで動画のグループを異なる位置から同時再生する方法です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("QVideoWidget")

                btn1 = new qpushbutton(win1)    {
                        setGeometry(0,0,100,30)
                        settext("play")
                        setclickevent("player.play() player2.play()
                                                   player3.play() player4.play()")
                }

                videowidget = new qvideowidget(win1) {
                        setGeometry(50,50,600,300)
                        setstylesheet("background-color: black")
                }

                videowidget2 = new qvideowidget(win1) {
                        setGeometry(700,50,600,300)
                        setstylesheet("background-color: black")
                }

                videowidget3 = new qvideowidget(win1) {
                        setGeometry(50,370,600,300)
                        setstylesheet("background-color: black")
                }

                videowidget4 = new qvideowidget(win1) {
                        setGeometry(700,370,600,300)
                        setstylesheet("background-color: black")
                }

                player = new qmediaplayer() {
                        setmedia(new qurl("1.mp4"))
                        setvideooutput(videowidget)
                        setposition(35*60*1000)

                }

                player2 = new qmediaplayer() {
                        setmedia(new qurl("2.mp4"))
                        setvideooutput(videowidget2)
                        setposition(23*60*1000)
                }

                player3 = new qmediaplayer() {
                        setmedia(new qurl("3.mp4"))
                        setvideooutput(videowidget3)
                        setposition(14.22*60*1000)
                }

                player4 = new qmediaplayer() {
                        setmedia(new qurl("4.avi"))
                        setvideooutput(videowidget4)
                        setposition(8*60*1000)
                }

                showfullscreen()

        }

        exec()

}

実行中のアプリケーション

QFrame の用法

QFrame クラスの用例です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("Using QFrame")
                for x = 0 to 10
                        frame1 = new qframe(win1,0) {
                                setGeometry(100,20+50*x,400,30)
                                setframestyle(QFrame_Raised | QFrame_WinPanel)
                        }
                next
                showMaximized()
        }
        exec()
}

実行中のアプリケーション

QLabel による画像の表示方法

QLabel ウイジェットによる画像の表示方法です。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("QLabel - Display image")
                new qlabel(win1) {
                        image = new qpixmap("b:/mahmoud/photo/advice.jpg")
                        setpixmap(image)
                        setGeometry(0,0,image.width(),image.height())
                }
                showMaximized()
        }
        exec()
}

実行中のアプリケーション

メニューバーとスタイルシートの用例

メニューバーの作成、およびウィンドウのスタイルシートの設定方法です。

Load "guilib.ring"

New qApp {

        win1 = new qMainWindow() {

                setwindowtitle("Menubar")

                menu1 = new qmenubar(win1) {
                        sub1 = addmenu("File")
                        sub1 {
                                oAction = new qAction(win1) {
                                        settext("New")
                                        setenabled(false)
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Open")
                                        setcheckable(true)
                                        setchecked(true)
                                        setstatustip("open new file")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Save")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        settext("Save As")
                                }
                                addaction(oAction)

                                addseparator()
                                oAction = new qaction(win1)
                                oAction.settext("Exit")
                                oAction.setclickevent("myapp.quit()")
                                addaction(oAction)
                        }

                }
                status1 = new qstatusbar(win1) {
                        showmessage("Ready!",0)
                }
                setmenubar(menu1)
                setmousetracking(true)
                setstatusbar(status1)
                setStyleSheet("color: black; selection-color: black;
                selection-background-color:white ;
                background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1,
                stop: 0 #eef, stop: 1 #ccf);")
                showmaximized()
        }
        exec()
}

実行中のアプリケーション

QLineEdit イベントと QMessageBox

QLineEdit イベントの用法、およびメッセージボックスの表示方法です。

Load "guilib.ring"

MyApp = New qApp {

        win1 = new qWidget() {

                setwindowtitle("Welcome")
                setGeometry(100,100,400,300)

                label1 = new qLabel(win1) {
                        settext("What is your name ?")
                        setGeometry(10,20,350,30)
                        setalignment(Qt_AlignHCenter)
                }

                btn1 = new qpushbutton(win1) {
                        setGeometry(10,200,100,30)
                        settext("Say Hello")
                        setclickevent("pHello()")
                }

                btn1 = new qpushbutton(win1) {
                        setGeometry(150,200,100,30)
                        settext("Close")
                        setclickevent("pClose()")
                }

                lineedit1 = new qlineedit(win1) {
                        setGeometry(10,100,350,30)
                        settextchangedevent("pChange()")
                        setreturnpressedevent("penter()")
                }

                show()
        }

        exec()
}

Func pHello
        lineedit1.settext( "Hello " + lineedit1.text())

Func pClose
        MyApp.quit()

Func pChange
        win1 { setwindowtitle( lineedit1.text() ) }

Func pEnter
        new qmessagebox(win1) {
                setwindowtitle("Thanks")
                settext("Hi " + lineedit1.text() )
                setstylesheet("background-color : white")
                show()
        }

実行中のアプリケーション

そのほかのウイジェットイベント

各 Qt シグナルは RingQt で使えます。シグナル名の接頭辞に Set を追加、およびイベントの後にシグナル名で取得するメソッドを追加ことで使用するイベントのコードを決定します。

例えば QProgressBar クラスにはシグナル名である valueChanged() があります。これは setValueChangedEvent() 関数で使用します。

用例:

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {

                setwindowtitle("QProgressBar valueChanged Event")

                progress1 = new qprogressbar(win1) {
                        setGeometry(100,100,350,30)
                        setvalue(10)
                        setvaluechangedevent("pChange()")
                }

                new qpushbutton(win1) {
                        setGeometry(10,10,100,30)
                        settext("increase")
                        setclickevent("pIncrease()")
                }

                showMaximized()

        }

        exec()
}

func pIncrease
        progress1 { setvalue(value()+1)  }

func pchange
        win1.setwindowtitle("value : " + progress1.value() )

実行中のアプリケーション

別の用例は QCheckBox クラスの stateChanged イベントです。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setwindowtitle("QCheckBox")
                new qcheckbox(win1) {
                        setGeometry(100,100,100,30)
                        settext("New Customer!")
                        setstatechangedevent("pchange()")
                }
                showMaximized()
        }
        exec()
}

Func pChange

        new qMessageBox(Win1) {
                setWindowTitle("Checkbox")
                settext("State Changed!")
                show()
        }

実行中のアプリケーション

QTimer クラスの用法

QTimer クラスの用例です。

Load "guilib.ring"

new qApp {
        win1 = new qwidget() {
                setgeometry(100,100,200,70)
                setwindowtitle("Timer")
                label1 = new qlabel(win1) {
                        setgeometry(10,10,200,30)
                        settext(thetime())
                }
                new qtimer(win1) {
                        setinterval(1000)
                        settimeoutevent("pTime()")
                        start()
                }
                show()
        }
        exec()
}

func ptime
        label1.settext(thetime())

Func thetime
        return "Time : " + Time()

実行中のアプリケーション

QProgressBar およびタイマーの用法

“アニメーション”つきの QProgressBar クラスとタイマーの用例です。

###------------------------------------
### プログレスバーとタイマーの用例

Load "guilib.ring"

new qApp
{
    win1 = new qwidget()
    {
        setgeometry(100,100,400,100)
        setwindowtitle("Timer and ProgressBar")

        LabelMan = new qlabel(win1)
        {
            setgeometry(10,10,200,30)
            settext(theTime())          ### ==>> 関数
        }

        TimerMan = new qtimer(win1)
        {
            setinterval(1000)
            settimeoutevent("pTime()")  ### ==>> 関数
            start()
        }

        BarMan = new qprogressbar(win1)
        {
            setGeometry(100,50,300,10)  ###  X, Y 位置、長さ、チックネス
            setvalue(0)                 ###  パーセントが塗りつぶされた
        }

        show()
    }
    exec()
}

func pTime
        LabelMan.settext(theTime())     ### ==>> 関数

        Increment = 10
        if BarMan.value() >= 100        ### プログレスバーの開始後.
            BarMan.setvalue(0)
        ok
        BarMan{ setvalue(value() + Increment) }

Func theTime
        return "Time : " + Time()

QLabel による寸法変更画像の表示方法

この例では QLabel ウィジェットで“アニメーションつき”の画像を表示して寸法を変更する方法です。

Load "guilib.ring"

#----------------------------------------------------
# 必携: image = "C:\RING\bin\stock.jpg"

# imageStock: 伸張する画像の開始寸法

imageW = 200 ;  imageH = 200 ; GrowBy = 4

###----------------------------------------------------
### ウィンドウと箱の大きさの寸法

WinWidth = 1280 ; WinHeight = 960
BoxWidth = WinWidth -80 ; BoxHeight = WinHeight -80

###----------------------------------------------------

New qapp {

        win1 = new qwidget() {

                setgeometry(50,50, WinWidth,WinHeight)
                setwindowtitle("Animated Image - Display Image Scaled and Resized")

                imageStock = new qlabel(win1) {

                        image = new qpixmap("C:\RING\bin\stock.jpg")
                        AspectRatio = image.width() / image.height()

                        imageW = 200
                        imageH = imageH / AspectRatio

                        ### 水平寸法、垂直寸法、アスペクト比、変形
                        setpixmap(image.scaled(imageW , imageH ,0,0))

                        PosLeft = (BoxWidth  - imageW ) / 2
                        PosTop  = (BoxHeight - imageH ) / 2
                        setGeometry(PosLeft,PosTop,imageW,imageH)

                }

                TimerMan = new qtimer(win1) {
                        setinterval(100)            ### 100 ミリ秒間隔です。
                        settimeoutevent("pTime()")  ### ==>> 関数
                        start()
                }

                show()
        }
exec()
}

###------------------------------------------------------
### TimerMan 関数: 100 ミリ秒間隔で呼び出します。

func pTime

        ### 画像の大きさがウィンドウ領域に達したときにタイマーを停止します。
        if imageW > BoxWidth
                TimerMan.stop()
                imageStock.clear()      ### 画像の消去
        ok

        ## 画像の伸張
        imageW += GrowBy
        imageH  = imageW / AspectRatio

        ### 画像の寸法変更: 水平寸法、垂直寸法、アスペクト比、変形
        imageStock.setpixmap(image.scaled(imageW , imageH ,0,0))

        ### 画像を中央へ
        PosLeft = (WinWidth  - imageW ) / 2
        PosTop  = (WinHeight - imageH ) / 2
        imageStock.setGeometry(PosLeft,PosTop,imageW,imageH)

QFileDialog クラスの用法

用例:

Load "guilib.ring"

New qapp {
        win1 = new qwidget() {
                setwindowtitle("open file")
                setgeometry(100,100,400,400)
                new qpushbutton(win1) {
                        setgeometry(10,10,200,30)
                        settext("open file")
                        setclickevent("pOpen()")
                }
                show()
        }
        exec()
}

Func pOpen
        new qfiledialog(win1) {
                cName = getopenfilename(win1,"open file","c:\","source files(*.ring)")
                win1.setwindowtitle(cName)
        }

実行中のアプリケーション

QPainter による描画方法

QPainter クラスによる描画方法の用例です。

Load "guilib.ring"
New qapp {
        win1 = new qwidget() {
                setwindowtitle("Drawing using QPainter")
                setgeometry(100,100,500,500)
                label1 = new qlabel(win1) {
                        setgeometry(10,10,400,400)
                        settext("")
                }
                new qpushbutton(win1) {
                        setgeometry(200,400,100,30)
                        settext("draw")
                        setclickevent("draw()")
                }

                show()
        }
        exec()
}

Func draw
                p1 = new qpicture()
                color = new qcolor() {
                        setrgb(0,0,255,255)
                }
                pen = new qpen() {
                        setcolor(color)
                        setwidth(10)
                }
                new qpainter() {
                        begin(p1)
                        setpen(pen)
                        drawline(500,150,950,450)
                        drawline(950,550,500,150)
                        endpaint()
                }
                label1 { setpicture(p1) show() }

実行中のアプリケーション

QPrinter による印刷方法

QPrinter から PDF ファイルを印刷する方法です。

Load "guilib.ring"
new qApp {
        win1 = new qwidget() {
                setwindowtitle("Printer")
                setgeometry(100,100,500,500)
                myweb = new qwebview(win1) {
                        setgeometry(100,100,1000,500)
                        loadpage(new qurl("http://google.com"))
                }
                new qpushbutton(win1) {
                        setGeometry(20,20,100,30)
                        settext("Print")
                        setclickevent("print()")
                }
                showmaximized()
        }
        exec()
}

func print
        printer1 = new qPrinter(0) {
                setoutputformat(1)      # 1 = pdf
                setoutputfilename("test.pdf")
                painter = new qpainter() {
                        begin(printer1)
                        myfont = new qfont("Times",50,-1,0)
                        setfont(myfont)
                        drawtext(100,100,"test")
                        printer1.newpage()
                        drawtext(100,100,"test2")
                        endpaint()
                }
        }

        printer1 = new qPrinter(0) {
                setoutputformat(1)
                setoutputfilename("test2.pdf")
                myweb.print(printer1,' system("test2.pdf") ')
                myweb.show()
        }

        system ("test.pdf")

QPrintPreviewDialog の用法

QPrintPreviewDialog クラスの用例です。

用例:

load "guilib.ring"

new qApp {
        win1 = new qwidget() {
                setwindowtitle("Printer Preview Dialog")
                setgeometry(100,100,800,880)
                printer1 = new qPrinter(0)
                show()
                oPreview = new qPrintPreviewDialog(printer1) {
                        setParent(win1)
                        move(10,10)
                        setPaintrequestedevent("printPreview()")
                        exec()
                }
        }
        exec()
}

func printPreview
        printer1  {
                painter = new qpainter() {
                        begin(printer1)
                        myfont = new qfont("Times",50,-1,0)
                        setfont(myfont)
                        drawtext(100,100,"Test - Page (1)")
                        printer1.newpage()
                        drawtext(100,100,"Test - Page (2)")
                        printer1.newpage()
                        myfont2 = new qfont("Times",14,-1,0)
                        setfont(myfont2)
                        for x = 1 to 30
                                drawtext(100,100+(20*x),"Number : " + x)
                        next
                        endpaint()
                }
        }

スクリーンショット:

複数ウィンドウの作成方法

この用例は、複数ウィンドウの作成をするためのデモです。

Load "guilib.ring"
app1 = new qapp {
        win1 = new qwidget() {
                setwindowtitle("First")
                setgeometry(100,100,500,500)

                new qpushbutton(win1) {
                        setgeometry(100,100,100,30)
                        settext("close")
                        setclickevent("app1.quit()")
                }

                new qpushbutton(win1) {
                        setgeometry(250,100,100,30)
                        settext("Second")
                        setclickevent("second()")
                }

                showmaximized()
        }
        exec()
}

func second
        win2 = new qwidget() {
                setwindowtitle("Second")
                setgeometry(100,100,500,500)
                setwindowflags(Qt_dialog)
                show()
        }

実行中のアプリケーション

音声の再生

用例:

Load "guilib.ring"
new qapp {
        win1 = new qwidget() {
                setwindowtitle("play sound!") show()
        }
        new qmediaplayer()      {
                setmedia(new qurl("footstep.wav"))
                setvolume(50) play()
        }
        exec()
}

QColorDialog クラスの用法

用例:

Load "guilib.ring"

oApp = new myapp { start() }

Class MyApp

        oColor  win1

        Func start

                myapp = new qapp

                win1 = new qMainWindow() {
                        setwindowtitle("Color Dialog")
                        setgeometry(100,100,400,400)
                }

                new qpushbutton(win1) {
                        setgeometry(10,10,100,30)
                        settext("Get Color")
                        setclickevent("oApp.pColor()")
                }

                win1.show()
                myapp.exec()

        Func pColor
                myobj = new qcolordialog()
                aColor = myobj.GetColor()
                r=acolor[1] g=acolor[2] b=acolor[3]
                win1.setstylesheet("background-color: rgb("+r+", " + g+ "," + b + ")")

実行中のアプリケーション

qLCDNumber クラスの用法

qLCDNumber クラスの用例です。

Load "guilib.ring"

New qApp
{
        win1 = new qWidget()
        {
                setwindowtitle("LCD Number")
                setgeometry(100,100,250,120)

                new qLCDNumber(win1)
                {
                        setgeometry(10,10,100,40)
                        display(100)

                }

                new qLCDNumber(win1)
                {
                        setgeometry(10,60,100,40)
                        display(80)

                }

                show()
        }

        exec()
}

実行中のアプリケーション

移動可能ラベルの用例

Load "guilib.ring"

new qApp {

        win1 = new qWidget()
        {

                label1 = new qLabel(win1)
                {
                        setText("Welcome")
                        setgeometry(10,10,200,50)
                        setstylesheet("color: purple ; font-size: 30pt;")
                }

                new qTimer(win1)
                {
                        setInterVal(10)
                        setTimeOutEvent("pMove()")
                        start()
                }

                setWindowTitle("Movable Label")
                setgeometry(100,100,600,80)
                setStyleSheet("background-color: white;")
                show()

        }

        exec()
}

Func pMove
        label1
        {
                move(x()+1,y())
                if x() > 600
                        move(10,y())
                ok
        }

実行中のアプリケーション

QMessagebox の用例

メッセージ・ボックスの出力を確認する方法です。

Load "guilib.ring"

new qApp {
        win1 = new qWidget()
        {
                label1 = new qpushbutton(win1)
                {
                        setText("Test")
                        setgeometry(10,10,200,50)
                        setstylesheet("color: purple ; font-size: 30pt;")
                        setclickevent("pWork()")
                }
                setWindowTitle("Messagebox")
                setgeometry(100,100,600,80)
                setStyleSheet("background-color: white;")
                show()
        }
        exec()
}

func pWork
        new qmessagebox(win1)
        {
                setwindowtitle("messagebox title")
                settext("messagebox text")
                setInformativeText("Do you want to save your changes?")
                setstandardbuttons(QMessageBox_Yes | QMessageBox_No | QMessageBox_Close)
                result = exec()
                win1 {
                        if result = QMessageBox_Yes
                                setwindowtitle("Yes")
                        but result = QMessageBox_No
                                setwindowtitle("No")
                        but result = QMessageBox_Close
                                setwindowtitle("Close")
                        ok
                }
        }

実行中のアプリケーション

QInputDialog クラスの用法

QInputDialog クラスの用例です。

Load "guilib.ring"

New QApp {

        Win1 = New QWidget () {

                SetGeometry(100,100,400,400)
                SetWindowTitle("Input Dialog")

                New QPushButton(win1)
                {

                        SetText ("Input Dialog")
                        SetGeometry(100,100,100,30)
                        SetClickEvent("pWork()")
                }

                Show()
        }

        exec()
}

Func pWork
        oInput = New QInputDialog(win1)
        {
                setwindowtitle("What is your name?")
                setgeometry(100,100,400,50)
                setlabeltext("User Name")
                settextvalue("Mahmoud")
                lcheck = exec()
                if lCheck win1.setwindowtitle(oInput.textvalue()) ok
        }

実行中のアプリケーション

ダイアログ関数

この関数があります。

SetDialogIcon(cIconFile)
MsgInfo(cTitle,cMessage)
ConfirmMsg(cTitle,cMessage) --> lResult
InputBox(cTitle,cMessage) --> cValue
InputBoxInt(cTitle,cMessage) --> nValue
InputBoxNum(cTitle,cMessage) --> nValue
InputBoxPass(cTitle,cMessage) --> cValue

用例

load "guilib.ring"

new qApp
{
        SetDialogIcon("notepad.png")
        msginfo(:Ring,:Welcome)
        see confirmMsg(:Ring,"Are you sure?") + nl
        see InputBoxNum(:Ring,"Enter Number(double) :") + nl
        see InputBox(:Ring,"Enter Value :") + nl
        see InputBoxInt(:Ring,"Enter Number(int)") + nl
        see InputBoxPass(:Ring,"Enter Password") +nl
}

キー入力とマウス移動イベント

この用例はキー入力とマウス移動イベントをイベントフィルタで検知する方法です。

Load "guilib.ring"

new qApp {

        win1 = new qWidget()
        {
                setWindowTitle("Test using Event Filter!")
                setGeometry(100,100,400,400)
                setmousetracking(true)
                myfilter = new qallevents(win1)
                myfilter.setKeyPressEvent("pWork()")
                myfilter.setMouseButtonPressevent("pClick()")
                myfilter.setmousemoveevent("pMove()")

                installeventfilter(myfilter)

                show()
        }

        exec()
}

func pWork
        win1.setwindowtitle('KeyPress! : ' + myfilter.getkeycode())

func pClick
        new qmessagebox(win1) {
                setgeometry(100,100,400,100)
                setwindowtitle("click event!")
                settext("x : " + myfilter.getx() +
                        " y : " + myfilter.gety() + " button : " +
                         myfilter.getbutton() )
                show()
        }

func pMove
        win1.setwindowtitle("Mouse Move , X : " + myfilter.getx() +
                            " Y : " + myfilter.gety() )

実行中のアプリケーション

マウスによるオブジェクトの移動方法

オブジェクトのプログラム方法です。

Load "guilib.ring"

lPress = false
nX = 0
nY = 0

new qApp {

        win1 = new qWidget()
        {

                setWindowTitle("Move this label!")
                setGeometry(100,100,400,400)
                setstylesheet("background-color:white;")

                Label1 = new qLabel(Win1){
                        setGeometry(100,100,200,50)
                        setText("Welcome")
                        setstylesheet("font-size: 30pt")
                        myfilter = new qallevents(label1)
                        myfilter.setEnterevent("pEnter()")
                        myfilter.setLeaveevent("pLeave()")
                        myfilter.setMouseButtonPressEvent("pPress()")
                        myfilter.setMouseButtonReleaseEvent("pRelease()")
                        myfilter.setMouseMoveEvent("pMove()")
                        installeventfilter(myfilter)
                }

                show()
        }

        exec()
}

Func pEnter
        Label1.setStyleSheet("background-color: purple; color:white;font-size: 30pt;")

Func pLeave
        Label1.setStyleSheet("background-color: white; color:black;font-size: 30pt;")

Func pPress
        lPress = True
        nX = myfilter.getglobalx()
        ny = myfilter.getglobaly()

Func pRelease
        lPress = False
        pEnter()

Func pMove
        nX2 = myfilter.getglobalx()
        ny2 = myfilter.getglobaly()
        ndiffx = nX2 - nX
        ndiffy = nY2 - nY
        if lPress
                Label1 {
                        move(x()+ndiffx,y()+ndiffy)
                        setStyleSheet("background-color: Green;
                                 color:white;font-size: 30pt;")
                        nX = nX2
                        ny = nY2
                }

        ok

実行中のアプリケーション

GUI クラスからの継承

用例:

Load "guilib.ring"

New MyWindow()

new qApp { exec() }

class mywindow from qwidget
        Func init
                super.init()
                setwindowtitle("First Window")
                setgeometry(100,100,400,400)
                setstylesheet("background-color: purple;")
                settooltip("my first window!")
                show()

実行中のアプリケーション

QDesktopWidget クラスの用法

QDesktopWidget の用例です。

Load "guilib.ring"

New qApp {
        win1 = New qWidget()
        {
                resize(400,400)
                btn1 = new qPushbutton(win1)
                {
                        setText("Center")
                        move(100,100)
                        resize(100,30)
                        setClickEvent("pCenter()")
                }

                Show()
        }

        exec()
}

Func pCenter
        oDesktop  = new qDesktopWidget()
        oRect = oDesktop.screenGeometry( oDesktop.primaryScreen()  )
        win1.move((oRect.width()-win1.width()) /2 , (oRect.Height()-win1.Height())/2 )
        win1.show()

実行中のアプリケーション

テキストの回転

タイマーでテキストを回転する用例です。

Load "guilib.ring"

nAngle  = 0

New qapp {
        win1 = new qwidget() {
                setwindowtitle("Rotate Text")
                resize(800,600)
                label1 = new qlabel(win1) {
                        settext("")
                        myfilter = new qallevents(win1)
                        myfilter.setMouseButtonPressevent("pClick()")
                        installeventfilter(myfilter)
                }
                new qtimer(win1) {
                        setinterval(50)
                        settimeoutevent("pTime()")
                        start()
                }
                pDraw()
                L1 = new qVBoxLayout() { AddWidget(Label1) } SetLayout(L1)
                showMaximized()
        }
        exec()
}

Func pDraw
        p1 = new qpicture()
        color = new qcolor() {
                setrgb(0,0,255,255)
        }
        pen = new qpen() {
                setcolor(color)
                setwidth(50)
        }
        painter = new qpainter() {
                begin(p1)
                        setpen(pen)
                        myfont = font()
                        myfont.setpointsize(50)
                        setfont(myfont)
                        rotate(nAngle)
                        drawtext(350,0*nAngle,"welcome")
                        drawtext(0,0*nAngle,"welcome")
                endpaint()
                  }
        label1 {
                setpicture(p1)
                show()
        }

Func pClick
        win1 { setwindowtitle("Click Event") }

Func pTime
        nAngle++
        if nAngle = 90
                nAngle = 10
        ok
        pDraw()

実行中のアプリケーション

フォーカスの変更

ENTER キーでフォーカスを変更する用例です。

load "guilib.ring"

new qApp {
        win = new qWidget() {
                resize(600,600)
                SetWindowTitle("Change Focus")
                text1 = new qLineEdit(win)
                text2 = new qLineEdit(win)
                text3 = new qLineEdit(win)
                text4 = new qLineEdit(win)
                layout1 = new qVBoxLayout() {
                        AddWidget(text1)
                        AddWidget(text2)
                        AddWidget(text3)
                        AddWidget(text4)

                }
                setLayout(Layout1)
                aList = [text1,text2,text3,text4]
                oFilter = new qallevents(win)
                oFilter.setKeyPressEvent("pWork()")
                installeventfilter(oFilter)
                show()
        }
        exec()
}

func pWork
        nCode =  oFilter.getkeycode()
        if nCode = 16777220     # ENTER キー
                for x=1 to len(aList)
                        if aList[x].HasFocus()
                                t = x+1
                                if t > len(aList) t=1 ok
                                aList[t].SetFocus(0)
                                exit
                        ok
                next
        ok

正規表現

正規表現クラスの用例です。

load "guilib.ring"

new qApp
{
        see "Using Regular Expressions" + nl

        exp = new qregularexpression() {
                setPattern("\d\d \w+")
                see pattern() + nl
                match = match("33 one",0,0,0)
                see match.hasmatch() + nl
                match = match("3 one",0,0,0)
                see match.hasmatch() + nl
                match = match("welcome 11 one",0,0,0)
                see match.hasmatch() + nl
                matched = match.captured(0)
                see matched + nl
        }
        exp = new qregularexpression() {
                setPattern("^(\d\d)/(\d\d)/(\d\d\d\d)$")
                see pattern() + nl
                match = match("08/12/1985",0,0,0)
                see match.hasmatch() + nl
                day = match.captured(1)
                month = match.captured(2)
                year = match.captured(3)
                see day + nl + month + nl + year + nl
                see  "(" + match.capturedStart(1) + "," + match.capturedEnd(1)+ ")" + nl
                see  "(" + match.capturedStart(2) + "," + match.capturedEnd(2)+ ")" + nl
                see  "(" + match.capturedStart(3) + "," + match.capturedEnd(3)+ ")" + nl
        }

}

実行結果:

Using Regular Expressions
\d\d \w+
1
0
1
11 one
^(\d\d)/(\d\d)/(\d\d\d\d)$
1
08
12
1985
(0,2)
(3,5)
(6,10)

シンプルなクライアントとサーバーの用例

この用例はシンプルなクライアントとサーバーアプリケーションの作成方法です。

Load "guilib.ring"

new qApp {
        oClient = new Client { client() }
        oServer = new Server { server() }
        exec()
}

Class Client

        win1 lineedit1  cOutput=""
        oTcpSocket

        func client

                win1 = new qwidget()

                new qpushbutton(win1) {
                        setgeometry(50,50,100,30)
                        settext("connect")
                        setclickevent("oClient.Connect()")
                }

                lineedit1 = new qtextedit(win1) {
                        setGeometry(150,50,200,300)
                }

                win1 {
                        setwindowtitle("client")
                        setgeometry(10,100,400,400)
                        show()
                }

        func connect
                cOutput = "Connect to host 127.0.0.1 port 9999" + nl
                lineedit1.settext(cOutput)
                oTcpSocket = new qTcpSocket(win1) {
                        setconnectedevent("oClient.pConnected()")
                        setreadyreadevent("oClient.pRead()")
                        connecttohost("127.0.0.1",9999,3,0)
                        waitforconnected(5000)
                }

        func pConnected

                cOutput += "Connected!" + nl
                lineedit1.settext(cOutput)

        func pRead

                cOutput += "Ready Read!" + nl
                lineedit1.settext(cOutput)
                cOutput += oTcpSocket.readall().data() + nl
                lineedit1.settext(cOutput)

Class Server

        win1 lineedit1
        oTcpServer oTcpClient
        cOutput = ""

        func server

                win1 = new qwidget()

                lineedit1 = new qtextedit(win1) {
                        setGeometry(150,50,200,300)
                }

                win1 {
                        setwindowtitle("Server")
                        setgeometry(450,100,400,400)
                        show()
                }

                oTcpServer = new qTcpServer(win1) {
                        setNewConnectionEvent("oServer.pNewConnection()")
                        oHostAddress = new qHostAddress()
                        oHostAddress.SetAddress("127.0.0.1")
                        listen(oHostAddress,9999)
                }
                cOutput = "Server Started" + nl +
                           "listen to port 9999" + nl

                lineedit1.settext(cOutput)

        Func pNewConnection

                oTcpClient = oTcpServer.nextPendingConnection()
                cOutput += "Accept Connection" + nl
                lineedit1.settext(cOutput)
                oTcpClient {
                        cStr ="Hello from server to client!"+char(13)+char(10)
                        write(cStr,len(cStr))
                        flush()
                        waitforbyteswritten(300000)
                        close()
                }

実行中のアプリケーション

動的オブジェクト

実行時にオブジェクトの作成を行い、ウィンドウへオブジェクトを追加します。

用例:

load "guilib.ring"

oFormDesigner = new FormDesigner { start("oFormDesigner") }

Class FormDesigner

        winToolBox  winForm

        aObjects = []

        func start cObjectName

                oApp = new qApp

                winToolBox = new qWidget()
                winToolBox.setWindowTitle("ToolBox")
                winToolBox.move(10,10)
                winToolBox.resize(300,600)

                btn = new qPushButton(winToolBox)
                btn.resize(300,30)
                btn.setText("Create Button")
                btn.setClickEvent(cObjectName+".pCreateButton()")
                btn.show()

                winToolBox.show()

                winForm = new qWidget() {
                        move(400,50)
                        setWindowTitle("Form Designer")
                        resize(600,600)
                        show()
                }

                oApp.exec()

        func pCreateButton

                nCount = len(aObjects)

                aObjects + new MyButton(winForm)
                {
                        nIndex = nCount + 1
                        setText("Button"+ nIndex)
                        Move(30*nIndex,30*nIndex)
                        resize(100,30)
                        show()
                }

Class MyButton from qPushButton
        nIndex = 0

Weight History アプリケーション

このサンプルは体重の記録で役に立ちます (日付、時刻と体重)。

Load "guilib.ring"

MyApp = new qApp
{
  $ApplicationObject = "oApp"   # イベントを呼び出すときに使用します。
  oApp = new App
  exec()
  oApp.CloseDatabase()
}

class App

  cDir = currentdir() + "/"
  oCon
  aIDs = []

  win1 = new qWidget()
  {
        setWindowTitle("Weight History")
        resize(600,600)
        layoutButtons = new qhboxlayout()
        {
          label1 = new qLabel(win1) { setText("Weight") }
          text1 = new qlineedit(win1)
          btnAdd = new qpushbutton(win1) {
                  setText("Add")
                  setClickEvent($ApplicationObject+".AddWeight()")
          }
          btnDelete = new qpushbutton(win1) {
                  setText("Delete")
                  setClickEvent($ApplicationObject+".Deleteweight()")
          }
          addwidget(label1)
          addwidget(text1)
          addwidget(btnAdd)
          addwidget(btnDelete)
        }
        layoutData  = new qhboxlayout()
        {
          Table1 = new qTableWidget(win1) {
                setrowcount(0)
                setcolumncount(3)
                setselectionbehavior(QAbstractItemView_SelectRows)
                setHorizontalHeaderItem(0, new QTableWidgetItem("Date"))
                setHorizontalHeaderItem(1, new QTableWidgetItem("Time"))
                setHorizontalHeaderItem(2, new QTableWidgetItem("Weight"))
                setitemChangedEvent($ApplicationObject+".ItemChanged()")
                                   setAlternatingRowColors(true)
                                   horizontalHeader().setStyleSheet("color: blue")
                                   verticalHeader().setStyleSheet("color: red")
          }
          addWidget(Table1)
        }
        layoutClose = new qhboxlayout()
        {
          btnclose = new qpushbutton(win1) {
            setText("Close")
            setClickEvent("MyApp.Quit()")
          }
          addwidget(btnClose)
        }
        layoutMain = new qvboxlayout()
        {
          addlayout(layoutButtons)
          addLayout(LayoutData)
          addLayout(layoutClose)
        }
        setlayout(layoutMain)
        self.OpenDatabase()
        self.ShowRecords()
        show()
  }

  Func OpenDatabase
        lCreate = False
        if not fexists(cDir + "weighthistory.db")
          lCreate = True
        ok
        new QSqlDatabase() {
          this.oCon = addDatabase("QSQLITE") {
                setDatabaseName("weighthistory.db")
                Open()
          }
        }
        if lCreate
          new QSqlQuery( ) {
                exec("create table weighthistory (id integer primary key,"+
                     " f_date varchar(10),"+
                     " f_time varchar(8), f_weight varchar(8) );")
                delete()
          }
        ok

  Func CloseDatabase
        oCon.Close()

  Func AddWeight
        cWeight = text1.text()
        AddRecord(cWeight)

  Func DeleteWeight
        Table1 {
           nRow = CurrentRow()
          if nRow >= 0
                nID = this.aIDs[nROW+1]
                new QSqlQuery( ) {
                  exec("delete from weighthistory where id = " + nID )
                }
                Del(this.aIDs,nRow+1)
                removerow(nRow)
                selectrow(nRow)
          ok
        }

  Func AddRecord cWeight
        new QSqlQuery( ) {
          cStr = "insert into weighthistory (f_date,f_time,f_weight) values"+
          " ('%f1','%f2','%f3')"
          cDate = Date()
          cTime = Time()
          cStr = substr(cStr,"%f1",cDate)
          cStr = substr(cStr,"%f2",cTime)
          cStr = substr(cStr,"%f3",cWeight)
          exec(cStr)
          delete()
        }
        ShowRecords()
        Table1.selectrow(table1.rowcount()-1)

  Func ShowRecords
        table1.setitemChangedEvent("")
        aIDs = []
        query = new QSqlQuery() {
          exec("select * from weighthistory")
          nRows = 0
          this.Table1.setrowcount(0)
          while movenext()
                this.table1 {
                  insertRow(nRows)
                  this.aIDs + query.value(0).tostring()
                  for x = 1 to 3
                        cStr = query.value(x).tostring()
                        item = new qTableWidgetItem(cStr)
                        setItem(nRows,x-1,item)
                  next
                }
                nRows++
          end
          delete()
        }
        table1.setitemChangedEvent($ApplicationObject+".ItemChanged()")

  Func ItemChanged
        nRow =  table1.currentrow()
        if nRow >= 0
          myitem = Table1.item(table1.currentrow(),0)
          cDate = myitem.text()
          myitem = Table1.item(table1.currentrow(),1)
          cTime = myitem.text()
          myitem = Table1.item(table1.currentrow(),2)
          cWeight = myitem.text()
          new QSqlQuery( ) {
                cStr = "update weighthistory set f_date ='%f1' , f_time = '%f2' , "+
                "f_weight ='%f3' where id = " +  this.aIDs[nROW+1]
                cStr = substr(cStr,"%f1",cDate)
                cStr = substr(cStr,"%f2",cTime)
                cStr = substr(cStr,"%f3",cWeight)
                exec(cStr)
                delete()
          }
        ok

このスクリーンショットはアプリケーション実行中のものです。

Notepad アプリケーション

この用例は RingQt を使用してシンプルな Notepad を開発したものです。

Load "guilib.ring"

cActiveFileName = ""
aTextColor = [0,0,0]
aBackColor = [255,255,255]
cFont = "MS Shell Dlg 2,14,-1,5,50,0,0,0,0,0"
cWebsite = "http://www.google.com"

oSearch = NULL
oSearchValue = NULL
oSearchCase = NULL
oSearchFilter = NULL
oReplaceValue = NULL

lAskToSave = false

MyApp = New qApp {
        win1 = new qMainWindow() {

                setwindowtitle("Ring Notepad")
                setGeometry(100,100,400,400)
                aBtns = [
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/new.png")
                                        setclickevent("pNew()")
                                        settooltip("New File")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/open.png")
                                        setclickevent("pOpen()")
                                        settooltip("Open File")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/save.png")
                                        setclickevent("pSave()")
                                        settooltip("Save")
                                 } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/saveas.png")
                                        setclickevent("pSaveAs()")
                                        settooltip("Save As")
                                 } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/cut.png")
                                        setclickevent("pCut()")
                                        settooltip("Cut")
                                 } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/copy.png")
                                        setclickevent("pCopy()")
                                        settooltip("Copy")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/paste.png")
                                        setclickevent("pPaste()")
                                        settooltip("Paste")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/font.png")
                                        setclickevent("pFont()")
                                        settooltip("Font")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/colors.jpg")
                                        setclickevent("pColor()")
                                        settooltip("Text Color")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/search.png")
                                        setclickevent("pFind()")
                                        settooltip("Find and Replace")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/print.png")
                                        setclickevent("pPrint()")
                                        settooltip("Print")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/debug.png")
                                        setclickevent("pDebug()")
                                        settooltip("Debug (Run then wait!)")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/run.png")
                                        setclickevent("pRun()")
                                        settooltip("Run the program")
                                } ,
                                new qpushbutton(win1) {
                                        setbtnimage(self,"image/close.png")
                                        setclickevent("pQuit()")
                                        settooltip("Quit")
                                }
                        ]

                tool1 = addtoolbar("files")  {
                        for x in aBtns addwidget(x) addseparator() next
                }

                menu1 = new qmenubar(win1) {
                        sub1 = addmenu("File")
                        sub2 = addmenu("Edit")
                        sub3 = addmenu("View")
                        sub4 = addmenu("Help")
                        sub1 {
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+n"))
                                        setbtnimage(self,"image/new.png")
                                        settext("New")
                                        setclickevent("pNew()")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+o"))
                                        setbtnimage(self,"image/open.png")
                                        settext("Open")
                                        setclickevent("pOpen()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+s"))
                                        setbtnimage(self,"image/save.png")
                                        settext("Save")
                                        setclickevent("pSave()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+e"))
                                        setbtnimage(self,"image/saveas.png")
                                        settext("Save As")
                                        setclickevent("pSaveAs()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+p"))
                                        setbtnimage(self,"image/print.png")
                                        settext("Print to PDF")
                                        setclickevent("pPrint()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+d"))
                                        setbtnimage(self,"image/debug.png")
                                        settext("Debug (Run then wait!)")
                                        setclickevent("pDebug()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+r"))
                                        setbtnimage(self,"image/run.png")
                                        settext("Run")
                                        setclickevent("pRun()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+F5"))
                                        setbtnimage(self,"image/run.png")
                                        settext("Run GUI Application (No Console)")
                                        setclickevent("pRunNoConsole()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qaction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+q"))
                                        setbtnimage(self,"image/close.png")
                                        settext("Exit")
                                        setstatustip("Exit")
                                        setclickevent("pQuit()")
                                }
                                addaction(oAction)
                        }
                        sub2 {
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+x"))
                                        setbtnimage(self,"image/cut.png")
                                        settext("Cut")
                                        setclickevent("pCut()")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+c"))
                                        setbtnimage(self,"image/copy.png")
                                        settext("Copy")
                                        setclickevent("pCopy()")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+v"))
                                        setbtnimage(self,"image/paste.png")
                                        settext("Paste")
                                        setclickevent("pPaste()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+i"))
                                        setbtnimage(self,"image/font.png")
                                        settext("Font")
                                        setclickevent("pFont()")
                                }
                                addseparator()
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+t"))
                                        setbtnimage(self,"image/colors.jpg")
                                        settext("Text Color")
                                        setclickevent("pColor()")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+b"))
                                        setbtnimage(self,"image/colors.jpg")
                                        settext("Back Color")
                                        setclickevent("pColor2()")
                                }
                                addaction(oAction)
                                addseparator()
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+g"))
                                        settext("Go to line")
                                        setclickevent("pGoto()")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+f"))
                                        setbtnimage(self,"image/search.png")
                                        settext("Find and Replace")
                                        setclickevent("pFind()")
                                }
                                addaction(oAction)
                        }
                        sub3 {
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+p"))
                                        setbtnimage(self,"image/project.png")
                                        settext("Project Files")
                                        setclickevent("pProject()")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+u"))
                                        setbtnimage(self,"image/source.png")
                                        setclickevent("pSourceCode()")
                                        settext("Source Code")
                                }
                                addaction(oAction)
                                oAction = new qAction(win1) {
                                        setShortcut(new QKeySequence("Ctrl+w"))
                                        setbtnimage(self,"image/richtext.png")
                                        setclickevent("pWebBrowser()")
                                        settext("Web Browser")
                                }
                                addaction(oAction)
                        }
                        sub4 {
                                sub5 = addmenu("Development Tools")
                                sub5 {

                                        oAction = new qAction(win1) {
                                                settext("Programming Language")
                                                setclickevent("pLang()")
                                        }
                                        addaction(oAction)
                                        oAction = new qAction(win1) {
                                                settext("GUI Library")
                                                setclickevent("pGUI()")
                                        }
                                        addaction(oAction)
                                }
                                addseparator()
                                        oAction = new qAction(win1) {
                                                settext("About")
                                                setclickevent("pAbout()")
                                        }
                                        addaction(oAction)
                        }
                }

                setmenubar(menu1)

                status1 = new qstatusbar(win1) {
                        showmessage("Ready!",0)
                }

                setstatusbar(status1)

                tree1 = new qtreeview(win1) {
                        setclickedevent("pChangeFile()")
                        setGeometry(00,00,200,400)
                        oDir = new QDir()
                        ofile = new QFileSystemModel() {
                                setrootpath(oDir.currentpath())
                                myfiles = new qstringlist()
                                myfiles.append("*.ring")
                                myfiles.append("*.rh")
                                setnamefilters(myfiles)
                                setNameFilterDisables(false)
                        }
                        setmodel(ofile)
                        myindex = ofile.index(oDir.currentpath(),0)
                        for x = 1 to ofile.columncount()
                                hidecolumn(x)
                        next
                        setcurrentindex(myindex)
                        setexpanded(myindex,true)
                        header().hide()
                }

                oDock1 = new qdockwidget(win1,0) {
                        setGeometry(00,00,200,200)
                        setwindowtitle("Project Files")
                        setwidget(tree1)
                }

                textedit1 = new qtextedit(win1) {
                        setCursorPositionChangedevent("pCursorPositionChanged()")
                        setLineWrapMode(QTextEdit_NoWrap)
                        setAcceptRichText(false)
                        setTextChangedEvent("lAskToSave = true")
                }

                oDock2 = new qdockwidget(win1,0) {
                        setwidget(textedit1)
                        setwindowtitle("Source Code")
                }

                oWebBrowser = new qWidget() {
                        setWindowFlags(Qt_SubWindow)
                        oWBLabel = new qLabel(win1) {
                                setText("Website: ")
                        }
                        oWBText = new qLineEdit(win1) {
                                setText(cWebSite)
                                setReturnPressedEvent("pWebGo()")
                        }
                        oWBGo = new qPushButton(win1) {
                                setText("Go")
                                setClickEvent("pWebGo()")
                        }
                        oWBBack = new qPushButton(win1) {
                                setText("Back")
                                setClickEvent("pWebBack()")
                        }
                        oWBLayout1 = new qHBoxLayout() {
                                addWidget(oWBLabel)
                                addWidget(oWBText)
                                addWidget(oWBGo)
                                addWidget(oWBBack)
                        }
                        oWebView = new qWebView(win1) {
                                loadpage(new qurl(cWebSite))
                        }
                        oWBlayout2 = new qVBoxLayout() {
                                addLayout(oWBLayout1)
                                addWidget(oWebView)
                        }
                        setLayout(oWBLayout2)
                }

                oDock3 = new qdockwidget(win1,0) {
                        setwidget(oWebBrowser)
                        setwindowtitle("Web Browser")
                        setFeatures(QDockWidget_DocWidgetClosable)
                }

                adddockwidget(1,oDock1,1)
                adddockwidget(2,oDock2,2)
                adddockwidget(2,oDock3,1)

                setwinicon(self,"image/notepad.png")

                showmaximized()
        }
        RestoreSettings()
        exec()
}

func pWebGo
        cWebsite = oWBText.text()
        oWebView.LoadPage( new qurl( cWebSite ) )

func pWebBack
        oWebView.Back()

func pProject
        oDock1.Show()

func pSourceCode
        oDock2.Show()

func pWebBrowser
        oDock3.Show()

func pChangeFile
        myitem = tree1.currentindex()
        if ofile.isdir(myitem)
                return
        ok
        cActiveFileName = ofile.filepath(myitem)
        textedit1.settext(read(cActiveFileName))
        textedit1.setfocus(0)
        pCursorPositionChanged()
        pSetActiveFileName()

func pSetActiveFileName
        oDock2.setWindowTitle("Source Code : " + cActiveFileName)

func pCursorPositionChanged
        status1.showmessage(" Line : "+(textedit1.textcursor().blocknumber()+1)+
                        " Column : " +(textedit1.textcursor().columnnumber()+1) +
                        " Total Lines : " + textedit1.document().linecount() ,0)

func pGoto
        oInput = New QInputDialog(win1)
        {
                setwindowtitle("Enter the line number?")
                setgeometry(100,100,400,50)
                setlabeltext("Line")
                settextvalue("1")
                exec()
                nLine = 0 + oInput.textvalue()
                oBlock = textedit1.document().findBlockByLineNumber(nLine-1)
                oCursor = textedit1.textcursor()
                oCursor.setposition(oBlock.position(),0)
                textedit1.settextcursor(oCursor)
        }

func pFind
        if isobject(oSearch)
                oSearch.activatewindow()
                return
        ok
        oSearch = new qWidget()
        {
                new qLabel(oSearch)
                {
                        setText("Find What : ")
                        setgeometry(10,10,50,30)
                }
                oSearchValue = new qlineedit(oSearch)
                {
                        setgeometry(80,10,460,30)
                        setReturnPressedEvent("pFindValue()")
                }
                new qLabel(oSearch)
                {
                        setText("Replace with ")
                        setgeometry(10,45,80,30)
                }
                oReplaceValue = new qlineedit(oSearch)
                {
                        setgeometry(80,45,460,30)
                }
                oSearchCase = new qCheckbox(oSearch)
                {
                        setText("Case Sensitive")
                        setgeometry(80,85,100,30)
                }
                new qPushButton(oSearch)
                {
                        setText("Find/Find Next")
                        setgeometry(80,120,100,30)
                        setclickevent("pFindValue()")
                }
                new qPushButton(oSearch)
                {
                        setText("Replace")
                        setgeometry(200,120,100,30)
                        setclickevent("pReplace()")
                }
                new qPushButton(oSearch)
                {
                        setText("Replace All")
                        setgeometry(320,120,100,30)
                        setclickevent("pReplaceAll()")
                }
                new qPushButton(oSearch)
                {
                        setText("Close")
                        setgeometry(440,120,100,30)
                        setclickevent("pSearchClose()")
                }

                setwinicon(oSearch,"image/notepad.png")
                setWindowTitle("Find/Replace")
                setStyleSheet("background-color:white;")
                setFixedsize(550,160)
                setwindowflags( Qt_CustomizeWindowHint |
                                Qt_WindowTitleHint | Qt_WindowStaysOnTopHint)

                oSearchFilter = new qallevents(oSearch)
                oSearchFilter.setKeyPressEvent("pSearchKeyPress()")
                installeventfilter(oSearchFilter)

                show()
        }

Func pReplace
        oCursor = textedit1.textCursor()
        if oCursor.HasSelection() = false
                new qMessagebox(oSearch)
                {
                        SetWindowTitle("Replace")
                        SetText("No Selection")
                        show()
                }
                return false
        ok
        cValue = oSearchValue.text()
        cSelected = oCursor.SelectedText()
        if oSearchCase.checkState() = Qt_Unchecked
                cValue = lower(cValue)
                cSelected = lower(cSelected)
        ok
        if cSelected != cValue
                new qMessagebox(oSearch)
                {
                        SetWindowTitle("Replace")
                        SetText("No Match")
                        show()
                }
                return false
        ok
        cValue = oReplaceValue.text()
        nStart = oCursor.SelectionStart()
        nEnd = oCursor.SelectionEnd()
        cStr = textedit1.toPlainText()
        cStr = left(cStr,nStart)+cValue+substr(cStr,nEnd+1)
        textedit1.setText(cStr)
        return pFindValue()

Func pReplaceAll
        cStr = textedit1.toPlainText()
        cOldValue = oSearchValue.text()
        cNewValue = oReplaceValue.text()
        if oSearchCase.checkState() = Qt_Unchecked
                # 英数大小文字非同一視
                cStr = SubStr(cStr,cOldValue,cNewValue,true)
        else
                # 英数大小文字同一視
                cStr = SubStr(cStr,cOldValue,cNewValue)
        ok
        textedit1.setText(cStr)
        new qMessagebox(oSearch)
        {
                SetWindowTitle("Replace All")
                SetText("Operation Done")
                show()
        }

Func pSearchClose
        oSearch.close()
        oSearch = NULL

func pSearchKeyPress
        if oSearchFilter.getKeyCode() = Qt_Key_Escape
                pSearchClose()
        ok

func pFindValue
        oCursor = textedit1.textcursor()
        nPosStart = oCursor.Position() + 1
        cValue = oSearchValue.text()
        cStr = textedit1.toplaintext()
        cStr = substr(cStr,nPosStart)
        if oSearchCase.checkState() = Qt_Unchecked
                cStr = lower(cStr)  cValue = lower(cValue)
        ok
        nPos = substr(cStr,cValue)
        if nPos > 0
                nPos += nPosStart - 2
                oCursor = textedit1.textcursor()
                oCursor.setposition(nPos,0)
                textedit1.settextcursor(oCursor)
                oCursor = textedit1.textcursor()
                oCursor.setposition(nPos+len(cValue),1)
                textedit1.settextcursor(oCursor)
                return true
        else
                new qMessagebox(oSearch)
                {
                        SetWindowTitle("Search")
                        SetText("Cannot find :" + cValue)
                        show()
                }
                return false
        ok

func pNofileopened
        New qMessageBox(win1) {
                setWindowTitle("Sorry")
                setText("Save the file first!")
                show()
        }

func pDebug
        if cActiveFileName = Null return pNofileopened() ok
        cCode = "start run " + cActiveFileName + nl
        system(cCode)

func pRun
        if cActiveFileName = Null return pNofileopened() ok
        cCode = "start ring " + cActiveFileName + nl
        system(cCode)

func pRunNoConsole
        if cActiveFileName = Null return pNofileopened() ok
        cCode = "start /b ring " + cActiveFileName + nl
        system(cCode)

func pSave
        if cActiveFileName = NULL return pSaveAs() ok
        writefile(cActiveFileName,textedit1.toplaintext())
        status1.showmessage("File : " + cActiveFileName + " saved!",0)
        lAskToSave = false

func pSaveAs
        new qfiledialog(win1) {
                cName = getsavefilename(win1,"Save As","","source files(*.ring)")
                if cName != NULL
                        cActiveFileName = cName
                        writefile(cActiveFileName,textedit1.toplaintext())
                        status1.showmessage("File : " + cActiveFileName + " saved!",0)
                        pSetActiveFileName()
                        lAskToSave = false
                ok
        }

func pPrint
        status1.showmessage("Printing to File : RingDoc.pdf",0)
        printer1 = new qPrinter(0) {
                setoutputformat(1)      # 1 = pdf
                setoutputfilename("RingDoc.pdf")
                textedit1.print(printer1)
        }
        status1.showmessage("Done!",0)
        system("RingDoc.pdf")

func pCut
        textedit1.cut()
        status1.showmessage("Cut!",0)

func pCopy
        textedit1.copy()
        status1.showmessage("Copy!",0)

func pPaste
        textedit1.paste()
        status1.showmessage("Paste!",0)

func pFont
        oFontDialog = new qfontdialog() {
                aFont = getfont()
        }
        textedit1.selectall()
        cFont = aFont[1]
        pSetFont()

Func pSetFont
        myfont = new qfont("",0,0,0)
        myfont.fromstring(cFont)
        textedit1.setcurrentfont(myfont)

Func pColor
        new qcolordialog() { aTextColor = GetColor() }
        pSetColors()

Func pColor2
        new qcolordialog() { aBackColor = GetColor() }
        pSetColors()

Func pSetColors
        textedit1.setstylesheet("color: rgb(" + aTextColor[1] + "," + aTextColor[2] +
                                "," + aTextColor[3] + ");" + "background-color: rgb(" +
                                aBackColor[1] + "," + aBackColor[2] + "," +
                                aBackColor[3] + ")")

func pOpen
        new qfiledialog(win1) {
                cName = getopenfilename(win1,"open file","c:\","source files(*.ring)")
                if cName != NULL
                        cActiveFileName = cName
                        textedit1.settext(read(cActiveFileName))
                ok
        }

func pNew
        new qfiledialog(win1) {
                cName = getsavefilename(win1,"New file","","source files(*.ring)")
                if cName != NULL
                        write(cName,"")
                        cActiveFileName = cName
                        textedit1.settext(read(cActiveFileName))

                ok
        }

Func WriteFile cFileName,cCode
        aCode = str2list(cCode)
        fp = fopen(cFileName,"wb")
        for cLine in aCode
                fwrite(fp,cLine+char(13)+char(10))
        next
        fclose(fp)

Func MsgBox cTitle,cMessage
        new qMessagebox(win1) {
                setwindowtitle(cTitle)
                setText(cMessage)
                show()
        }

Func pLang
        MsgBox("Programming Language",
                "This application developed using the Ring programming language")

Func pGUI
        MsgBox("GUI Library",
                "This application uses the Qt GUI Library through RingQt")

Func pAbout
        MsgBox("About",
                "2016, Mahmoud Fayed <msfclipper@yahoo.com>")

Func pSaveSettings
        cSettings = "aTextColor = ["+aTextColor[1]+","+aTextColor[2]+
                        ","+aTextColor[3]+"]" + nl +
                        "aBackColor = ["+aBackColor[1]+","+aBackColor[2]+
                        ","+aBackColor[3]+"]" + nl +
                        "cFont = '" + cFont + "'" + nl +
                        "cWebSite = '" + cWebsite + "'" + nl
        cSettings = substr(cSettings,nl,char(13)+char(10))
        write("ringnotepad.ini",cSettings)
        if lAsktoSave
                new qmessagebox(win1)
                {
                        setwindowtitle("Save Changes?")
                        settext("Some changes are not saved!")
                        setInformativeText("Do you want to save your changes?")
                        setstandardbuttons(QMessageBox_Yes |
                                           QMessageBox_No | QMessageBox_Cancel)
                        result = exec()
                        win1 {
                        if result = QMessageBox_Yes
                                pSave()
                        but result = QMessageBox_Cancel
                                return false
                        ok
                }
        }
        ok
        return true

Func pSetWebsite
        oWebView { loadpage(new qurl(cWebSite)) }
        oWBText  { setText(cWebSite) }

Func RestoreSettings
        eval(read("ringnotepad.ini"))
        pSetColors()
        pSetFont()
        pSetWebsite()

Func pQuit
        if pSaveSettings()
                myapp.quit()
        ok

実行中のアプリケーション

このスクリーンショットは “ファイル” メニューのデモです。

このウィンドウは “検索と置換”です。

このスクリーンショットはアプリケーションのメインウィンドウのデモです。

注釈

前述のサンプルにある pDebug(), pRun() および pRunNoConsole() 関数は移植性がありません！このサンプルは MS-Windows 専用のため、ほかのオペレーティングシステムで動かすには改訂が必要です。

Cards ゲーム

この用例は RingQt で開発したシンプルなカードゲームです。

各プレイヤーは五枚のカードを取得しますが、カードの中身は誰にもわかりません。プレイヤーは毎回カードを確認するためにカードを一枚クリックします。カードが別のカードと同じ番号ならば各カードのポイントを取得します。カードの番号が “5” ならば、すべての可視状態のカードのポイントを取得します。

Load "guilib.ring"

nScale = 1

app1 = new qApp

mypic = new QPixmap("cards.jpg")

mypic2 = mypic.copy(0,(124*4)+1,79,124)
Player1EatPic = mypic.copy(80,(124*4)+1,79,124)
Player2EatPic= mypic.copy(160,(124*4)+1,79,124)

aMyCards = []
aMyValues = []
for x1 = 0 to 3
        for y1 = 0 to 12
          temppic = mypic.copy((79*y1)+1,(124*x1)+1,79,124)
                  aMyCards + temppic
                  aMyValues + (y1+1)
        next
next

nPlayer1Score = 0   nPlayer2Score=0

do
        Page1 = new Game
        Page1.Start()
again Page1.lnewgame

mypic.delete()
mypic2.delete()
Player1EatPic.delete()
Player2EatPic.delete()

for t in aMyCards
          t.delete()
next

func gui_setbtnpixmap pBtn,pPixmap
        pBtn {
                setIcon(new qicon(pPixmap.scaled(width(),height(),0,0)))
                setIconSize(new QSize(width(),height()))
        }

Class Game

        nCardsCount = 10
        win1 layout1 label1 label2 layout2 layout3 aBtns aBtns2
        aCards nRole=1 aStatus = list(nCardsCount) aStatus2 = aStatus
        aValues        aStatusValues = aStatus  aStatusValues2 = aStatus
        Player1EatPic   Player2EatPic
        lnewgame = false
        nDelayEat = 0.5
        nDelayNewGame = 1

        func start

                win1 = new qWidget() {
                        setwindowtitle("Five")
                        setstylesheet("background-color: White")
                        showfullscreen()
                }

                layout1 = new qvboxlayout()

                label1 = new qlabel(win1) {
                        settext("Player (1) - Score : " + nPlayer1Score)
                        setalignment(Qt_AlignHCenter | Qt_AlignVCenter)
                        setstylesheet("color: White; background-color: Purple;
                                         font-size:20pt")
                        setfixedheight(200)
                }

                closebtn = new qpushbutton(win1)  {
                        settext("Close Application")
                        setstylesheet("font-size: 18px ; color : white ;
                                         background-color: black ;")
                        setclickevent("Page1.win1.close()")
                }

                aCards = aMyCards
                aValues = aMyValues

                layout2 = new qhboxlayout()

                aBtns = []

                for x = 1 to nCardsCount
                        aBtns + new qpushbutton(win1)
                        aBtns[x].setfixedwidth(79*nScale)
                        aBtns[x].setfixedheight(124*nScale)
                        gui_setbtnpixmap(aBtns[x],mypic2)
                        layout2.addwidget(aBtns[x])
                        aBtns[x].setclickevent("Page1.Player1click("+x+")")
                next

                layout1.addwidget(label1)
                layout1.addlayout(layout2)

                label2 = new qlabel(win1) {
                        settext("Player (2) - Score : " + nPlayer2Score)
                        setalignment(Qt_AlignHCenter | Qt_AlignVCenter)
                        setstylesheet("color: white; background-color: red;
                                         font-size:20pt")
                        setfixedheight(200)
                }

                layout3 = new qhboxlayout()

                aBtns2 = []
                for x = 1 to nCardsCount
                        aBtns2 + new qpushbutton(win1)
                        aBtns2[x].setfixedwidth(79*nScale)
                        aBtns2[x].setfixedheight(124*nScale)
                        gui_setbtnpixmap(aBtns2[x],mypic2)
                        layout3.addwidget(aBtns2[x])
                        aBtns2[x].setclickevent("Page1.Player2click("+x+")")
                next

                layout1.addwidget(label2)
                layout1.addlayout(layout3)
                layout1.addwidget(closebtn)

                win1.setlayout(layout1)

                app1.exec()

        Func Player1Click x
                if nRole = 1 and aStatus[x] = 0
                        nPos = ((random(100)+clock())%(len(aCards)-1)) + 1
                        gui_setbtnpixmap(aBtns[x],aCards[nPos])
                        del(aCards,nPos)
                        nRole = 2
                        aStatus[x] = 1
                        aStatusValues[x] = aValues[nPos]
                        del(aValues,nPos)
                        Player1Eat(x,aStatusValues[x])
                        checknewgame()
                ok

        Func Player2Click x
                if nRole = 2 and aStatus2[x] = 0
                        nPos = ((random(100)+clock())%(len(aCards)-1)) + 1
                        gui_setbtnpixmap(aBtns2[x],aCards[nPos])
                        del(aCards,nPos)
                        nRole = 1
                        aStatus2[x] = 1
                        aStatusValues2[x] = aValues[nPos]
                        del(aValues,nPos)
                        Player2Eat(x,aStatusValues2[x])
                        checknewgame()
                ok

        Func Player1Eat nPos,nValue

                 app1.processEvents()

                 delay(nDelayEat)
                 lEat = false
                 for x = 1 to nCardsCount
                         if aStatus2[x] = 1 and (aStatusValues2[x] = nValue or nValue=5)
                                aStatus2[x] = 2
                                gui_setbtnpixmap(aBtns2[x],Player1EatPic)
                                lEat = True
                                nPlayer1Score++
                         ok
                         if (x != nPos) and (aStatus[x] = 1) and
                                (aStatusValues[x] = nValue or nValue=5)
                                aStatus[x] = 2
                                gui_setbtnpixmap(aBtns[x],Player1EatPic)
                                lEat = True
                                nPlayer1Score++
                         ok
                 next
                 if lEat
                                nPlayer1Score++
                                gui_setbtnpixmap(aBtns[nPos],Player1EatPic)
                                aStatus[nPos] = 2
                                label1.settext("Player (1) - Score : " + nPlayer1Score)
                 ok

        Func Player2Eat nPos,nValue

                 app1.processEvents()

                 delay(nDelayEat)
                 lEat = false
                 for x = 1 to  nCardsCount
                         if aStatus[x] = 1 and (aStatusValues[x] = nValue or nValue = 5)
                                aStatus[x] = 2
                                gui_setbtnpixmap(aBtns[x],Player2EatPic)
                                lEat = True
                                nPlayer2Score++
                         ok

                         if (x != nPos) and (aStatus2[x] = 1) and
                                (aStatusValues2[x] = nValue or nValue=5 )
                                aStatus2[x] = 2
                                gui_setbtnpixmap(aBtns2[x],Player2EatPic)
                                lEat = True
                                nPlayer2Score++
                         ok
                 next
                 if lEat
                                nPlayer2Score++
                                gui_setbtnpixmap(aBtns2[nPos],Player2EatPic)
                                aStatus2[nPos] = 2
                                label2.settext("Player (2) - Score : " + nPlayer2Score)
                 ok

        Func checknewgame
                if isnewgame()
                                  lnewgame = true

                                  if nPlayer1Score > nPlayer2Score
                                         label1.settext("Player (1) Wins!!!")
                                  ok
                                  if nPlayer2Score > nPlayer1Score
                                         label2.settext("Player (2) Wins!!!")
                                  ok

                                  app1.processEvents()
                                  delay(nDelayNewGame)

                                  win1.delete()
                                  app1.quit()
                ok

        Func isnewgame
                for t in aStatus
                        if t = 0
                                return false
                        ok
                next
                for t in aStatus2
                        if t = 0
                                return false
                        ok
                next
                return true

        Func delay x
        nTime = x * 1000
        oTest = new qTest
        oTest.qsleep(nTime)

実行中のアプリケーション

注釈

前述のスクリーンショットではプレイヤーが‘5’番のカードを入手していますがスコアは加算されていません。これはほかのカードが不可視状態のときに‘5’番のカードを開いたからです！

このスクリーンショットはモバイル機器 (Android) でゲームを実行しています。

注釈

Qt を使うと同じアプリケーションをほかのモバイルシステムで実行できます。

クラスとメソッドでデフォルトのイベントを使うには

この表ではクラス名、およびメソッドで使用するデフォルトのイベントについて説明しています。

クラス名

メソッドで使用するデフォルトのイベント

QPushButton

SetClickEvent()

QAction

SetClickEvent()

QLineEdit

SetTextChangedEvent()

SetCursorPositionChangedEvent()

SetEditingFinishedEvent()

SetReturnPressedEvent()

SetSelectionChangedEvent()

SetTextEditedEvent()

QTextEdit

SetCopyAvailableEvent()

SetCurrentCharFormatChangedEvent()

SetCursorPositionChangedEvent()

SetRedoAvailableEvent()

SetSelectionChangedEvent()

SetTextChangedEvent()

SetUndoAvailableEvent()

QListWidget

SetCurrentItemChangedEvent()

SetCurrentRowChangedEvent()

SetCurrentTextChangedEvent()

SetItemActivatedEvent()

SetItemChangedEvent()

SetItemClickedEvent()

SetItemDoubleClickedEvent()

SetItemEnteredEvent()

SetItemPressedEvent()

SetItemSelectionChangedEvent()

QTreeView

SetCollapseEvent()

SetExpandedEvent()

SetActivatedEvent()

SetClickedEvent()

SetDoubleClickedEvent()

SetEnteredEvent()

SetPressedEvent()

SetViewportEnteredEvent()

QTreeWidget

SetCollapsedEvent()

SetExpandedEvent()

SetActivatedEvent()

SetClickedEvent()

SetDoubleClickedEvent()

SetEnteredEvent()

SetPressedEvent()

SetViewportEnteredEvent()

SetCurrentItemChangedEvent()

SetItemActivatedEvent()

SetItemChangedEvent()

SetItemClickedEvent()

SetItemCollapsedEvent()

SetItemDoubleClickedEvent()

SetItemEnteredEvent()

SetItemExpandedEvent()

SetItemPressedEvent()

SetItemSelectionChangedEvent()

QComboBox

SetActivatedEvent()

SetCurrentIndexChangedEvent()

SetEditTextChangedEvent()

SetHighlightedEvent()

QTabWidget

SetCurrentChangedEvent()

SetTabCloseRequestedEvent()

QTableWidget

SetCellActivatedEvent()

SetCellChangedEvent()

SetCellClickedEvent()

SetCellDoubleClickedEvent()

SetCellEnteredEvent()

SetCellPressedEvent()

SetCurrentCellChangedEvent()

SetCurrentItemChangedEvent()

SetItemActivatedEvent()

SetItemChangedEvent()

SetItemClickedEvent()

SetItemDoubleClickedEvent()

SetItemEnteredEvent()

SetItemPressedEvent()

SetItemSelectionChangedEvent()

QProgressBar

SetValueChangedEvent()

QSpinBox

SetValueChangedEvent()

QSlider

SetActionTriggeredEvent()

SetRangeChangedEvent()

SetSliderMovedEvent()

SetSliderPressedEvent()

SetSliderReleasedEvent()

SetValueChangedEvent()

QDial

SetActionTriggeredEvent()

SetRangeChangedEvent()

SetSliderMovedEvent()

SetSliderPressedEvent()

SetSliderReleasedEvent()

SetValueChangedEvent()

QWebView

SetLoadFinishedEvent()

SetLoadProgressEvent()

SetLoadStartedEvent()

SetSelectionChangedEvent()

SetTitleChangedEvent()

SetUrlChangedEvent()

QCheckBox

SetStateChangedEvent()

SetClickedEvent()

SetPressedEvent()

SetReleasedEvent()

SetToggledEvent()

QRadioButton

SetClickedEvent()

SetPressedEvent()

SetReleasedEvent()

SetToggledEvent()

QButtonGroup

SetButtonClickedEvent()

SetButtonPressedEvent()

SetButtonReleasedEvent()

QVideoWidget

SetBrightnessChangedEvent()

SetContrastChangedEvent()

SetFullScreenChangedEvent()

SetHueChangedEvent()

SetSaturationChangedEvent()

QTimer

SetTimeoutEvent()

QTcpServer

SetAcceptErrorEvent()

SetNewConnectionEvent()

QIODevice

SetAboutToCloseEvent()

SetBytesWrittenEvent()

SetReadChannelFinishedEvent()

SetReadyReadEvent()

QAbstractSocket

SetConnectedEvent()

SetDisconnectedEvent()

SetErrorEvent()

SetHostFoundEvent()

SetProxyAuthenticationRequiredEvent()

SetStateChangedEvent()

QTcpSocket

SetConnectedEvent()

SetDisconnectedEvent()

SetErrorEvent()

SetHostFoundEvent()

SetProxyAuthenticationRequiredEvent()

SetStateChangedEvent()

SetAboutToCloseEvent()

SetBytesWrittenEvent()

SetReadChannelFinishedEvent()

SetReadyReadEvent()

QColorDialog

SetColorSelectedEvent()

SetCurrentColorChangedEvent()

QNetworkAccessManager

SetFinishedEvent()

QThread

SetStartedEvent()

SetFinishedEvent()

イベントでイベントフィルタによるメソッド

RingQt はイベントフィルタを使うことで、新しいクラス QAllEvents を定義しています。

この表は利用可能なメソッドです。

メソッドで取得する仮引数

クラス名

getKeyCode() --> Number

QAllEvents

getx() --> Number

gety() --> Number

getglobalx() --> Number

getglobaly() --> Number

getbutton() --> Number

getbuttons() --> Number

この表はイベントで使用するメソッドを解説しています。

メソッド名

クラス名

setKeyPressEvent(cEvent)

QAllEvents

setMouseButtonPressEvent(cEvent)

setMouseButtonReleaseEvent(cEvent)

setMouseButtonDblClickEvent(cEvent)

setMouseMoveEvent(cEvent)

setCloseEvent(cEvent)

setContextMenuEvent(cEvent)

setDragEnterEvent(cEvent)

setDragLeaveEvent(cEvent)

setDragMoveEvent(cEvent)

setDropEvent(cEvent)

setEnterEvent(cEvent)

setFocusInEvent(cEvent)

setFocusOutEvent(cEvent)

setKeyReleaseEvent(cEvent)

setLeaveEvent(cEvent)

setNonClientAreaMouseButtonDblClickEvent(cEvent)

setNonClientAreaMouseButtonPressEvent(cEvent)

setNonClientAreaMouseButtonReleaseEvent(cEvent)

setNonClientAreaMouseMoveEvent(cEvent)

setMoveEvent(cEvent)

setResizeEvent(cEvent)

setWindowActivateEvent(cEvent)

setWindowBlockedEvent(cEvent)

setWindowDeactivateEvent(cEvent)

setWindowStateChangeEvent(cEvent)

setWindowUnblockedEvent(cEvent)

Qt と RingQt の違い

RingQt ではイベントの実行用コードを設定するために単純なメソッドを使用します。

文法:

Set<Event_Name>Event(cEventCode)

RingQt では Ring キーワードとの衝突を回避するためにメソッド名を変更しています。

この表は変更点の解説です。

クラス名

Qt メソッド名

RingQt メソッド名

QWebView

load

loadpage

QMediaPlaylist

load

loadfile

QMediaPlaylist

next

movenext

QPainter

end

endpaint

QPicture

load

loadfile

QLineEdit

end

endtext

QDialog

done

donedialog

QTextDocument

end

enddoc

QTextBlock

next

nextblock

QSqlQuery

next

movenext

QImage

load

loadimage

QNetworkAccessManager

get

getvalue

QNetworkAccessManager

put

putvalue

QThread

exit

exitfromthread

QRegularExpressionMatchIterator

next

nextitem

QCamera

load

loadcamera

RingQt クラスおよび Qt の取扱説明書

Qt 取扱説明書 : http://doc.qt.io/qt-5/classes.html

対応しているクラスとメソッドについては “RingQt クラスとメソッドのリファレンス” の章を参照してください。

新しいクラス名 - 1 からインデックスを開始

RingQt には新しいクラスが追加されています - 別バージョンのクラス名は小文字 “q” で開始されません。また GUI コントロールなど扱うときにインデックスが 1 から開始するようにメソッドを更新してあります。

ComboBox

ListWidget

TableWidget

TreeWidget

前述のクラスは guilib.ring の System.GUI パッケージに実装されています:

用法

load "guilib.ring"

import System.GUI

これは以前のコードに一切影響を与えません。つまり Ring の規則と整合性がある優れたコードへの第三の選択です。

また、フォームデザイナーは、クラス間で「インデックスを 0 から開始」、あるいは「インデックスを 1 から開始」を選べるようなりました。

用例 (フォームデザイナーを使用)

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/indexstart/indexstartView.ring

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/indexstart/indexstartController.ring

WebLib および GUILib によるレポートの作成方法

WebLib には HtmlPage クラスがあります。

このクラスにより WebLib と GUILib で手軽にレポートを作成できます。

用例:

load "stdlib.ring"
load "weblib.ring"
load "guilib.ring"

import System.Web
import System.GUI

new qApp {
        open_window(:CustomersReportController)
        exec()
}

class CustomersReportController from WindowsControllerParent

        oView = new CustomersReportView

        func Start
                CreateReport()

        func CreateReport
                mypage = new HtmlPage {
                        h1 { text("Customers Report") }
                        Table
                        {
                                style = stylewidth("100%") + stylegradient(4)
                                TR
                                {
                                        TD { WIDTH="10%"
                                                text("Customers Count : " )  }
                                        TD { text (100) }
                                }
                        }
                        Table
                        {
                                style = stylewidth("100%") + stylegradient(26)
                                TR
                                {
                                        style = stylewidth("100%") +
                                                stylegradient(24)
                                        TD { text("Name " )  }
                                        TD { text("Age" ) }
                                        TD { text("Country" ) }
                                        TD { text("Job" ) }
                                        TD { text("Company" ) }
                                }
                                for x =  1 to 100
                                        TR
                                        {
                                                TD { text("Test" )  }
                                                TD { text("30" ) }
                                                TD { text("Egypt" ) }
                                                TD { text("Sales" ) }
                                                TD { text("Future" ) }
                                        }
                                next
                        }
                }
                write("report.html",mypage.output())

        func PrintEvent
                printer1 = new qPrinter(0) {
                        setoutputformat(1)
                        setoutputfilename("report.pdf")
                }
                oView {
                        web.print(printer1, Method( :OpenPDF ) )
                        web.show()
                }

        func OpenPDF
                new QDesktopServices {
                        OpenURL(new qURL("report.pdf") )
                }

class CustomersReportView

                win = new window() {
                                setwindowtitle("Report Window")
                                setgeometry(100,100,500,500)
                                web = new webview(win) {
                                        setgeometry(100,100,1000,500)
                                        loadpage(new qurl("file:///"+
                                        currentdir()+"/report.html"))
                                }
                                new pushbutton(win) {
                                                setGeometry(100,20,100,30)
                                                settext("Print")
                                                setclickevent(Method(:PrintEvent))
                                }
                                showMaximized()
                        }

スクリーンショット:

フォームデザイナーの用法

フォームデザイナーの用法です。

Ring ノートパッドからフォームデザイナーを実行できます。

Ring ノートパッドのメニューバーから → 表示メニュー → フォームデザイナーを選択するとフォームデザイナーのウィンドウを表示、または非表示にできます。

また、別のウィンドウからフォームデザイナーを実行することもできます。

Ring ノートパッドからツールメニュー → フォームデザイナーを選択します。

フォームデザイナーのウィンドウ

ツールボックス (Toolbox) : ウィンドウへ追加するコントロールを選択します。

プロパティ (Properties) : アクティブなウィンドウ、またはコントロールのプロパティを設定します。

デザイン領域 (Design Region) : ウィンドウとコントロールの選択、移動、サイズを変更します。

ツールボックス

このようなボタンがあります。

ロック (Lock) : 同じ種類の様々なコントロールを描画するために使えます。

選択 (Select) : デザイン領域のコントロールを選択します。

コントロールボタン (Controls Buttons) : ウィンドウへ追加するコントロールを選択します。

プロパティ

ウィンドウ、またはコントロールの選択時に、選択したオブジェクトには、プロパティ (Properties) があります。

また、プロパティのウィンドウには、アクティブなコントロールを選択するためのコンボボックスがあります。

プロパティの一部では、プロパティ値の隣にボタンがあります。ボタンをクリックすると追加のオプションがあります。

コントロールを複数選択した時は、複数のオプションがあります。

フォームの実行

フォームデザイナーは、フォームファイル (*.rform) の保存時に二種類の Ring ファイルを作成します。

Controller クラス

View クラス

例えば、フォームファイルが helloworld.rform ならば、

フォームデザイナーはファイルを二つ生成します。

helloworldcontroller.ring

helloworldview.ring

プログラムを実行するには、 Controller クラスのファイルを開いた後に Run ボタン (Ctrl+F5) をクリックします。

ちなみに

Ring ノートパッドでフォームを開いた時は自動的に Controller クラスが開かれます。そのまま実行するには (Ctrl+F5) を打鍵、またはフォームデザイナーのウィンドウがアクティブな時に Run ボタンをクリックしてください。

イベントのコード

イベントプロパティに、メソッド名を入力します。

次に、 Controller クラスへメソッドのコードを記述します。

この用例での記述は

func CloseWindow
        oView.win.close()

Controller クラスの内側では、 oView オブジェクトからフォームへアクセスします。

その他の用例:

イベントのコード

func SayHello
        oView {
                LineEdit2.setText("Hello "+ LineEdit1.text() )
        }

キーボードショートカット

コントロールを複数選択後に、

カーソルキー (上、下、左、右) で移動します。

Shift + カーソルキー (上、下、左、右) でコントロールのサイズを変更します。

Del キーでコントロールを削除します。

Ctrl + Shift + V でコントロールを複製します。

メニューバーデザイナー

ウィンドウのプロパティからメニューバーデザイナーを開けます。

ウィンドウフラグ

ウィンドウのプロパティからウィンドウフラグのウィンドウを開けます。

項目の入力

List ウィジェットなどのコントロールでは、項目をコンマ‘,’で区切って入力できます。

レイアウトの用法

レイアウトを使うには、まずウィンドウへ Layout コントロールを追加します。

ウィンドウの “レイアウトの設定” プロパティからメインレイアウトを決定します。

Layout プロパティから、コントロールとレイアウトの種類を決定します。

その他のサンプルとテスト

フォルダをご確認ください : ring/samples/UsingFormDesigner

オンライン版 : https://github.com/ring-lang/ring/tree/master/samples/UsingFormDesigner

Qt3D によるグラフィックスプログラミング

各種用例による Qt3D の用法です。

立方体の描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(2)
                setYextent(2)
                setZextent(3)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(3, 3, 3))

        oCubeMaterial = new QPhongMaterial(oCube)
        oCubeMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Cube")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

トーラスの描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oTorus = new  QTorusMesh(oRootEntity)
                oTorus.setRadius(1.0)
                oTorus.setMinorRadius(0.4)
                oTorus.setRings(100)
                oTorus.setSlices(20)

        oTorusTransform = new  QTransform(oTorus)
        oTorusTransform.setScale(2)
        oTorusTransform.setTranslation(new QVector3D(3, 3, 3))

        oTorusMaterial = new QPhongMaterial(oTorus)
        oTorusMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

        oTorusEntity = new QEntity(oRootEntity)
        oTorusEntity.addComponent(oTorus)
        oTorusEntity.addComponent(oTorusMaterial)
        oTorusEntity.addComponent(oTorusTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Torus")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

球体の描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oSphere = new  QSphereMesh(oRootEntity)
                oSphere.setRadius(1.0)
                oSphere.setRings(100)
                oSphere.setSlices(20)

        oSphereTransform = new  QTransform(oSphere)
        oSphereTransform.setScale(2)
        oSphereTransform.setTranslation(new QVector3D(3, 3, 3))

        oSphereMaterial = new QPhongMaterial(oSphere)
        oSphereMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

        oSphereEntity = new QEntity(oRootEntity)
        oSphereEntity.addComponent(oSphere)
        oSphereEntity.addComponent(oSphereMaterial)
        oSphereEntity.addComponent(oSphereTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Sphere")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

円柱の描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oCylinder = new  QCylinderMesh(oRootEntity)
                oCylinder.setRadius(1)
                oCylinder.setRings(100)
                oCylinder.setSlices(20)
        oCylinder.setLength(5)

        oCylinderTransform = new  QTransform(oCylinder)
        oCylinderTransform.setScale(2)
        oCylinderTransform.setTranslation(new QVector3D(1, 0, 3))

        oCylinderMaterial = new QPhongMaterial(oCylinder)
        oCylinderMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

        oCylinderEntity = new QEntity(oRootEntity)
        oCylinderEntity.addComponent(oCylinder)
        oCylinderEntity.addComponent(oCylinderMaterial)
        oCylinderEntity.addComponent(oCylinderTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Cylinder")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

円錐の描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oCone = new  QConeMesh(oRootEntity)
                oCone.setRings(100)
                oCone.setSlices(20)
        oCone.setLength(5)

        oConeTransform = new  QTransform(oCone)
        oConeTransform.setScale(2)
        oConeTransform.setTranslation(new QVector3D(1, 0, 3))

        oConeMaterial = new QPhongMaterial(oCone)
        oConeMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

        oConeEntity = new QEntity(oRootEntity)
        oConeEntity.addComponent(oCone)
        oConeEntity.addComponent(oConeMaterial)
        oConeEntity.addComponent(oConeTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Cone")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

平面の描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oPlane = new  QPlaneMesh(oRootEntity)
        oPlane.setHeight(5)
        oPlane.setWidth(5)
        oPlane.setmeshresolution(new qSize(10,10))

        oPlaneTransform = new  QTransform(oPlane)
        oPlaneTransform.setScale(2)
        oPlaneTransform.setTranslation(new QVector3D(0, -4, 4))

        oPlaneMaterial = new QPhongMaterial(oPlane)
        oPlaneMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

        oPlaneEntity = new QEntity(oRootEntity)
        oPlaneEntity.addComponent(oPlane)
        oPlaneEntity.addComponent(oPlaneMaterial)
        oPlaneEntity.addComponent(oPlaneTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Plane")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

テクスチャ

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(2)
                setYextent(2)
                setZextent(3)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(3, 3, 3))

        oTextureLoader = new  QTextureLoader(oCube);
        oTextureLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
        oCubeMaterial = new QTextureMaterial(oCube)
        oCubeMaterial.setTexture(oTextureLoader)

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Adding Texture")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

キー入力

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

                oFilter = new qallevents(oView)
                oFilter.setKeyPressEvent("pKeyPress()")
                oView.installeventfilter(oFilter)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)
        oCamController.setEnabled(False)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(2)
                setYextent(2)
                setZextent(3)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(3, 3, 3))

        oTextureLoader = new  QTextureLoader(oCube);
        oTextureLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
        oCubeMaterial = new QTextureMaterial(oCube)
        oCubeMaterial.setTexture(oTextureLoader)

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Moving Cube using the Keyboard")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        oContainer.setfocus(0)

        exec()
}

func pKeyPress
        nKey = oFilter.getkeycode()
        oX = oCubeTransform.translation().x()
        oY = oCubeTransform.translation().y()
        oZ = oCubeTransform.translation().z()
        switch nKey
                on Qt_Key_Right
                        oX++
                on Qt_Key_Left
                        oX--
                on Qt_Key_Up
                        oY++
                on Qt_Key_Down
                        oY--
        off
        oCubeTransform.setTranslation(new QVector3D(oX, oY, oZ))

オブジェクト・ピッカー

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

                oFilter = new qallevents(oView)
                oFilter.setKeyPressEvent("pKeyPress()")
                oView.installeventfilter(oFilter)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)
        oCamController.setEnabled(False)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(2)
                setYextent(2)
                setZextent(3)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(3, 3, 3))

        oTextureLoader = new  QTextureLoader(oCube);
        oTextureLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
        oCubeMaterial = new QTextureMaterial(oCube)
        oCubeMaterial.setTexture(oTextureLoader)

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        oPicker = new qObjectPicker(oCube) {
                setclickedevent("pClick()")
        }
        oCubeEntity.addComponent(oPicker)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Object Picker - Click on the Cube")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        oContainer.setfocus(0)

        exec()
}

func pKeyPress
        nKey = oFilter.getkeycode()
        oX = oCubeTransform.translation().x()
        oY = oCubeTransform.translation().y()
        oZ = oCubeTransform.translation().z()
        switch nKey
                on Qt_Key_Right
                        oX++
                on Qt_Key_Left
                        oX--
                on Qt_Key_Up
                        oY++
                on Qt_Key_Down
                        oY--
        off
        oCubeTransform.setTranslation(new QVector3D(oX, oY, oZ))

func pClick
        msginfo("Event","Click")
        oContainer.setfocus(0)

フレームアクション

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)
        oCamController.setEnabled(False)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(1)
                setYextent(1)
                setZextent(1)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(-5, -5, -5))

        oTextureLoader = new  QTextureLoader(oCube);
        oTextureLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
        oCubeMaterial = new QTextureMaterial(oCube)
        oCubeMaterial.setTexture(oTextureLoader)

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        nAngle=0        nSpeed=0.1
        oFrameAction = new qFrameAction(oRootEntity) {
                settriggeredevent("pEvent()")
        }

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Frame Action")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

func pEvent

        # 立方体の移動
                oX = oCubeTransform.translation().x()
                oY = oCubeTransform.translation().y()
                oZ = oCubeTransform.translation().z()
                if oX >= 4
                        nSpeed=-0.1
                but oX <= -10
                        nSpeed=0.1
                ok
                oCubeTransform.setTranslation(
                        new QVector3D(oX+nSpeed, oY+nSpeed, oZ+nSpeed))

        # 立方体の回転
                nAngle+=5  if nAngle=360  nAngle=0 ok
                oQ = new QQuaternion(0,0,0,0)
                oCubeTransform.setRotation(
                        oQ.fromAxisAndAngle(new QVector3D(0, 1, 0), nAngle))

2Dテキスト

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oView.defaultframegraph().setclearcolor(new QColor() {setRGB(100,250,150,255)})

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(2)
                setYextent(2)
                setZextent(3)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(0, 3, 4))

        oTextureLoader = new  QTextureLoader(oCube);
        oTextureLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/ring.bmp") )
        oCubeMaterial = new QTextureMaterial(oCube)
        oCubeMaterial.setTexture(oTextureLoader)

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        oText2DEntity = new  QText2DEntity(oRootEntity) {
                setText("Ring programming language")
                setWidth(400) setHeight(40)
                setColor(new QColor() {setRGB(128,128,128,255)})
        }

        oText2DTransform = new  QTransform(oText2DEntity)
        oText2DTransform.setScale(0.1)
        oText2DTransform.setTranslation(new QVector3D(-10.5, -5, 0))

        oText2DEntity.addComponent(oText2DTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Text2D")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

テキストの押し出し

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oView.defaultframegraph().setclearcolor(new QColor() {setRGB(100,250,150,255)})

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oCube = new  QCuboidMesh(oRootEntity) {
                setXextent(2)
                setYextent(2)
                setZextent(3)
        }

        oCubeTransform = new  QTransform(oCube)
        oCubeTransform.setScale(2)
        oCubeTransform.setTranslation(new QVector3D(0, 3, 4))

        oTextureLoader = new  QTextureLoader(oCube);
        oTextureLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/ring.bmp") )
        oCubeMaterial = new QTextureMaterial(oCube)
        oCubeMaterial.setTexture(oTextureLoader)

        oCubeEntity = new QEntity(oRootEntity)
        oCubeEntity.addComponent(oCube)
        oCubeEntity.addComponent(oCubeMaterial)
        oCubeEntity.addComponent(oCubeTransform)

        oTextEntity = new QEntity(oRootEntity)

        oTextMesh = new  QExtrudedTextMesh(oTextEntity) {
                setText("Ring")
        }

        oTextTransform = new  QTransform(oTextEntity)
        oTextTransform.setScale(3)
        oTextTransform.setTranslation(new QVector3D(-5.5, -4, 3))

        oTextMaterial = new QPhongMaterial(oTextEntity);
        oTextMaterial.setDiffuse(new QColor() {setRGB(0,0,255,255)})

        oTextEntity.addComponent(oTextMesh)
        oTextEntity.addComponent(oTextTransform)
        oTextEntity.addComponent(oTextMaterial)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Extruded Text")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

モデル

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oModel = new qmesh(oRootEntity)

        oModel.setsource(
                new qURL("file:///"+currentdir()+"/assets/model/lucky_cat.obj") )

        oModelTransform = new  QTransform(oModel)
        oModelTransform.setScale(0.1)
        oModelTransform.setTranslation(new QVector3D(0, 0, 0))
        oQ = new QQuaternion(0,0,0,0)
        oModelTransform.setRotation(oQ.fromAxisAndAngle(new QVector3D(0, 1, 0), 180))

        oModelMaterial = new QPhongMaterial(oModel)
        oModelMaterial.setDiffuse(new QColor() {setRGB(0,255,128,255)})

        oModelEntity = new QEntity(oRootEntity)
        oModelEntity.addComponent(oModel)
        oModelEntity.addComponent(oModelmaterial)
        oModelEntity.addComponent(oModelTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Model (Obj File)")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

モデルテクスチャ

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 25, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oModel = new qmesh(oRootEntity)

        oModel.setsource(
                new qURL("file:///"+currentdir()+"/assets/model/Robot.obj") )

        oModelTransform = new  QTransform(oModel)
        oModelTransform.setScale(0.5)
        oModelTransform.setTranslation(new QVector3D(0, 12, 4))

        oLoader = new  QTextureLoader(oModel)
        oModelMaterial = new QTextureMaterial(oModel)
        oLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/Robot.jpg") )
        oModelMaterial.setTexture(oLoader)

        oModelEntity = new QEntity(oRootEntity)
        oModelEntity.addComponent(oModel)
        oModelEntity.addComponent(oModelMaterial)
        oModelEntity.addComponent(oModelTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Model Texture")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

事務所の描画

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 0, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oModel = new qmesh(oRootEntity)

        oModel.setsource(
                new qURL("file:///"+currentdir()+"/assets/model/Reception_Table.obj") )

        oModelTransform = new  QTransform(oModel)
        oModelTransform.setScale(1)
        oModelTransform.setTranslation(new QVector3D(0, -2.5, 16))

        oModelMaterial = new QPhongMaterial(oModel)
        oModelMaterial.setDiffuse(new QColor() {setRGB(0,255,128,255)})

        oModelEntity = new QEntity(oRootEntity)
        oModelEntity.addComponent(oModel)
        oModelEntity.addComponent(oModelmaterial)
        oModelEntity.addComponent(oModelTransform)

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Model (Obj File) - Office")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

複数オブジェクト

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 20, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oModel = new qmesh(oRootEntity)
        oModel.setsource(
                new qURL("file:///"+currentdir()+"/assets/model/Robot.obj") )

        oModelTransform = new  QTransform(oModel)
        oModelTransform.setScale(0.2)
        oModelTransform.setTranslation(new QVector3D(0, 10, 10))

        oModelMaterial = new QPhongMaterial(oModel)
        oModelMaterial.setDiffuse(new QColor() {setRGB(0,100,0,0)})

        oModelEntity = new QEntity(oRootEntity)
        oModelEntity.addComponent(oModel)

        oLoader = new  QTextureLoader(oModel);
        oModelMaterial = new QTextureMaterial(oModel)
        oLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
        oModelMaterial.setTexture(oLoader)

        oModelEntity.addComponent(oModelMaterial)
        oModelEntity.addComponent(oModelTransform)

        for n = 1 to 10

                oTorus = new  QTorusMesh(oRootEntity)
                        oTorus.setRadius(1.0*n)
                        oTorus.setMinorRadius(0.4*n)
                        oTorus.setRings(100)
                        oTorus.setSlices(20)

                oTorusTransform = new  QTransform(null)
                oTorusTransform.setScale(2)
                oTorusTransform.setTranslation(new QVector3D(5.0*n, 4.0*n, 0.0))

                oTorusMaterial = new QPhongMaterial(null);
                oTorusMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

                oTorusEntity = new QEntity(oRootEntity)
                oTorusEntity.addComponent(oTorus)

                oLoader = new  QTextureLoader(oTorus);
                oTorusMaterial = new QTextureMaterial(oTorus)
                oLoader.setSource(
                        new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
                oTorusMaterial.setTexture(oLoader)

                oTorusEntity.addComponent(oTorusMaterial)
                oTorusEntity.addComponent(oTorusTransform)
        next

        oView.setRootEntity(oRootEntity)

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)

        oWidget {
                setwindowtitle("Using Qt3D - Many Objects")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

カメラ

load "guilib.ring"

new qApp {

        oView = new Qt3dwindow()

        oWidget = new QWidget()
        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000.0)
                oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(0, 20, 0))

        oLightEntity = new QEntity(oRootEntity)
                oLight = new QPointLight(oLightEntity)
        oLight.setColor(new QColor() { setRGB(255,255,255,255) })
        oLight.setIntensity(1)
        oLightEntity.addComponent(oLight)

        oLightTransform = new QTransform(oLightEntity)
        oLightTransform.setTranslation(oCameraEntity.position())
        oLightEntity.addComponent(oLightTransform)

        oCamController = new  QFirstPersonCameraController(oRootEntity)
                oCamController.setCamera(oCameraEntity)

        oModel = new qmesh(oRootEntity)
        oModel.setsource(
                new qURL("file:///"+currentdir()+"/assets/model/Robot.obj") )

        oModelTransform = new  QTransform(oModel)
        oModelTransform.setScale(0.2)
        oModelTransform.setTranslation(new QVector3D(0, 10, 10))

        oModelMaterial = new QPhongMaterial(oModel)
        oModelMaterial.setDiffuse(new QColor() {setRGB(0,100,0,0)})

        oModelEntity = new QEntity(oRootEntity)
        oModelEntity.addComponent(oModel)

        oLoader = new  QTextureLoader(oModel);
        oModelMaterial = new QTextureMaterial(oModel)
        oLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
        oModelMaterial.setTexture(oLoader)

        oModelEntity.addComponent(oModelMaterial)
        oModelEntity.addComponent(oModelTransform)

        for n = 1 to 10

                oTorus = new  QTorusMesh(oRootEntity)
                        oTorus.setRadius(1.0*n)
                        oTorus.setMinorRadius(0.4*n)
                        oTorus.setRings(100)
                        oTorus.setSlices(20)

                oTorusTransform = new  QTransform(null)
                oTorusTransform.setScale(2)
                oTorusTransform.setTranslation(new QVector3D(5.0*n, 4.0*n, 0.0))

                oTorusMaterial = new QPhongMaterial(null);
                oTorusMaterial.setDiffuse(new QColor() {setRGB(200,100,100,100)})

                oTorusEntity = new QEntity(oRootEntity)
                oTorusEntity.addComponent(oTorus)

                oLoader = new  QTextureLoader(oTorus);
                oTorusMaterial = new QTextureMaterial(oTorus)
                oLoader.setSource(
                        new QUrl("file:///"+currentdir()+"/assets/texture/gold.jpg") )
                oTorusMaterial.setTexture(oLoader)

                oTorusEntity.addComponent(oTorusMaterial)
                oTorusEntity.addComponent(oTorusTransform)
        next

        oView.setRootEntity(oRootEntity)

        btn1 = new qPushButton(oWidget) {
                setText("Move the Camera and the Robot") setClickEvent("pMove()")
        }

        oLayout = new QVBoxLayout()
        oLayout.AddWidget(oContainer)
        oLayout.AddWidget(btn1)

        oWidget {
                setwindowtitle("Using Qt3D - Camera")
                resize(800,600)
                setLayout(oLayout)
                showMaximized()
        }

        exec()
}

func pMove

        oCameraEntity.setPosition(new QVector3D(0, 0, 20.0))
                oCameraEntity.setUpVector(new QVector3D(0, 1, 0))
                oCameraEntity.setViewCenter(new QVector3D(20, 15, 20))

        oModelTransform.setTranslation(new QVector3D(20, 15, 20))
        oQ = new QQuaternion(0,0,0,0)
        oModelTransform.setRotation(oQ.fromAxisAndAngle(new QVector3D(1, 1, 0), 270))

シーン

load "guilib.ring"

new qApp {

        oWidget = new QWidget()

        oView = new Qt3DWindow()
        oView.defaultFrameGraph().setClearColor(new QColor() {setRGB(0,0,0,255)})

        oContainer = oWidget.createWindowContainer(oView,oWidget,0)

        oRootEntity = new QEntity(oContainer)

        oInput = new QInputAspect(oRootEntity)
                oView.registerAspect(oInput)

        oCameraEntity = oView.Camera()

        oCameraEntity.lens().setPerspectiveProjection(45.0, 16.0/9.0, 0.1, 1000)
        oCameraEntity.setPosition(new QVector3D(-13.34, -6.43, 16.47))
                oCameraEntity.setUpVector(new QVector3D(0.02, 0, 1))
                oCameraEntity.setViewCenter(new QVector3D(-13.34, 17.05, 15.42))

        oCameraController = new  QFirstPersonCameraController(oRootEntity)
        oCameraController.setCamera(oCameraEntity)
        oCameraController.setEnabled(False)

        oLongRoomEntity = new QEntity(oRootEntity)

        oLongRoomModel = new QMesh(oLongRoomEntity)

        oLongRoomModel.setSource(
                new qURL("file:///"+CurrentDir()+"/assets/model/Long_Room.obj") )

        oLongRoomTransform = new  QTransform(oLongRoomEntity)
        oLongRoomTransform.setScale(1)
        oLongRoomTransform.setTranslation(new QVector3D(5, 0, 15))

        oLongRoomLoader = new  QTextureLoader(oLongRoomModel)
        oLongRoomMaterial = new QTextureMaterial(oLongRoomModel)
        oLongRoomLoader.setSource(
                new QUrl("file:///"+currentdir()+"/assets/texture/croc.jpg") )
        oLongRoomMaterial.setTexture(oLongRoomLoader)

        oLongRoomEntity.addComponent(oLongRoomModel)
        oLongRoomEntity.addComponent(oLongRoomMaterial)
        oLongRoomEntity.addComponent(oLongRoomTransform)

        oTableEntity = new QEntity(oRootEntity)

        oTableModel = new QMesh(oTableEntity)
        oTableModel.setSource(
                new qURL("file:///"+CurrentDir()+"/assets/model/Reception_Table.obj") )

        oTableTransform = new  QTransform(oTableEntity)
        oTableTransform.setScale(0.3)
        oTableTransform.setTranslation(new QVector3D(5, 0, 15))
        oQ = new QQuaternion(0,0,0,0)
        oTableTransform.setRotation(oQ.fromAxisAndAngle(new QVector3D(0, 1, 1), -180))

        oTableModelMaterial = new QPhongMaterial(oTableEntity)
        oTableModelMaterial.setDiffuse(new QColor() {setRGB(255,255,255,255)})

        oTableEntity.addComponent(oTableModel)
        oTableEntity.addComponent(oTableModelmaterial)
        oTableEntity.addComponent(oTableTransform)

        oFirstLightEntity = new QEntity(oRootEntity)

                oFirstLight = new QPointLight(oFirstLightEntity)
        oFirstLight.setColor(new qColor() { setRGB(128,128,128,128) })
        oFirstLight.setIntensity(1)

        oFirstLightTransform = new QTransform(oFirstLightEntity)
        oFirstLightTransform.setTranslation(new QVector3D(5, 0, 20))

        oFirstLightEntity.addComponent(oFirstLight)
        oFirstLightEntity.addComponent(oFirstLightTransform)

        aCats = list(5)
        for n = 1 to 5
        v = n * 0.1
        aCats[n] = []
        aCats[n][:oCatModelEntity] = new QEntity(oRootEntity)
        aCats[n][:oCatModel] = new QMesh(aCats[n][:oCatModelEntity])
        aCats[n][:oCatModel].setSource(
                new qURL("file:///"+CurrentDir()+"/assets/model/Lucky_Cat.obj") )
        aCats[n][:oCatModelMaterial] = new QPhongMaterial(aCats[n][:oCatModel])
        aCats[n][:oCatModelMaterial].setDiffuse(
                new QColor() {setRGB(255,255,255,255)})
        aCats[n][:oCatModelTransform] = new  QTransform(aCats[n][:oCatModelEntity])
        aCats[n][:oCatModelTransform].setScale(0.01)
        aCats[n][:oCatModelTransform].setTranslation(
                new QVector3D(-5*(v+v), 1, 15.2))
        oQ = new QQuaternion(0,0,0,0)
        aCats[n][:oCatModelTransform].setRotation(
                oQ.fromAxisAndAngle(
                        new QVector3D(0, 1, 1), 180))
        aCats[n][:oCatModelEntity].addComponent(aCats[n][:oCatModel])
        aCats[n][:oCatModelEntity].addComponent(aCats[n][:oCatModelmaterial])
        aCats[n][:oCatModelEntity].addComponent(aCats[n][:oCatModelTransform])
        next

        oSecondLightEntity = new QEntity(oRootEntity)

        oSecondLight = new QPointLight(oSecondLightEntity)
        oSecondLight.setColor(new qColor() { setRGB(255,255,255,255) })
        oSecondLight.setIntensity(1)

        oSecondLightTransform = new QTransform(oSecondLightEntity)
        oSecondLightTransform.setTranslation(new QVector3D(-5, 1, 15.5))

        oSecondLightEntity.addComponent(oSecondLight)
        oSecondLightEntity.addComponent(oSecondLightTransform)

        oRobotEntity = new QEntity(oRootEntity)

        oRobotModel = new QMesh(oRobotEntity)
        oRobotModel.setSource(
                new qURL("file:///"+CurrentDir()+"/assets/model/Fat_Robot.obj") )
        oRobotTransform = new  QTransform(oRobotEntity)
        oRobotTransform.setScale(0.006)

        robotX = -15
        robotY = -2
        robotZ = 15

        oRobotTransform.setTranslation(new QVector3D(-15, -2, 15))
        oQ = new QQuaternion(0,0,0,0)
        oRobotTransform.setRotation(
                oQ.fromAxisAndAngle(new QVector3D(0, 1, 1), 170))

        oRobotMaterial = new QPhongMaterial(oRobotEntity)
        oRobotMaterial.setDiffuse(new QColor() {setRGB(128,128,128,255)})

        oRobotEntity.addComponent(oRobotModel)
        oRobotEntity.addComponent(oRobotTransform)
        oRobotEntity.addComponent(oRobotMaterial)

        oView.setRootEntity(oRootEntity)

        oWidget {
                setwindowtitle("Using Qt3D - Scene")
                showfullscreen()
        }

        oContainer.resize(oWidget.width(),oWidget.height())

                oFilter = new QAllEvents(oView)
                oFilter.setKeyPressEvent("pKeyPress()")
                oView.installeventfilter(oFilter)
        oContainer.setfocus(0)

        exec()

}

func pKeyPress

        nKey    = oFilter.getKeyCode()
        nSpeed  = 0.1
        cX      = oCameraEntity.position().x()
        CY      = oCameraEntity.position().y()
        cZ      = oCameraEntity.position().z()
        cVCx    = oCameraEntity.viewCenter().x()
        cVCy    = oCameraEntity.viewCenter().y()
        cVCz    = oCameraEntity.viewCenter().z()

        switch nKey
                on Qt_Key_Right
                        if cX < 4.8
                                robotX+= nSpeed
                                oCameraEntity.setPosition(
                                        new QVector3D(cX+0.1, cY, cZ))
                                oCameraEntity.setViewCenter(
                                        new QVector3D(cVCx+nSpeed, cVCy, cVCz))
                                oRobotTransform.setRotation(
                                        oQ.fromAxisAndAngle(new QVector3D(0, 1, 1), 170))
                        ok
                on Qt_Key_Left
                        if cX > - 13.8
                                robotX-= nSpeed
                                oCameraEntity.setPosition(
                                  new QVector3D(cX-0.1, cY, cZ))
                                oCameraEntity.setViewCenter(
                                  new QVector3D(cVCx-nSpeed, cVCy, cVCz))
                                oRobotTransform.setRotation(
                                  oQ.fromAxisAndAngle(new QVector3D(0, 1, 1), 160))
                        ok
                on Qt_Key_Down
                        if robotY > -3.5
                                robotY-= nSpeed
                                oCameraEntity.setPosition(
                                  new QVector3D(cX, cY, cZ))
                                oRobotTransform.setRotation(
                                  oQ.fromAxisAndAngle(new QVector3D(0, 1, 1), 190))
                        ok
                on Qt_Key_Up
                        if robotY < 2
                                robotY+= nSpeed
                                oCameraEntity.setPosition(
                                  new QVector3D(cX, cY, cZ))
                                oRobotTransform.setRotation(
                                  oQ.fromAxisAndAngle(new QVector3D(0, 1, 1), 180))
                        ok
                on Qt_Key_Escape
                        oWidget.close()
        off

        oRobotTransform.setTranslation(new QVector3D(robotX, robotY, robotZ))

RingQt アプリケーション用のオブジェクトライブラリ

オブジェクトライブラリと GUI アプリケーションの作成方法です。

ウィンドウオブジェクトへのグローバル変数の使用、およびオブジェクト名でイベントをオブジェクトへ接続するのではなく、このライブラリは GUI オブジェクトのリストを管理します。また、同一クラスから複数ウィンドウを手軽に作成するために、普遍的な API を実装しています。

さらにオブジェクトライブラリでは、イベントが発行されたときに実行されるメソッドを手軽に設定する方法があります。同様に子またはサブウィンドウ、あるいはそれ以外の関連する方法により、親または呼び出し元のウィンドウを手軽に使える違和感のないインタフェースを実装しています。

オブジェクトライブラリは MVC デザインパターンで設計しています。

オブジェクトライブラリはリフレクションとメタプログラミングで実装しており Controller クラスへ新規メソッドを追加するとクラス間の通信方法が簡単になります。

オブジェクトライブラリは GUILib から自動的に呼び出されます。

次のコマンドにより単独で呼び出せます。

load "objectslib.ring"

ObjectsLib には openObject(), lastObject() などの関数とクラスから呼び出される ObjectsParent があります。

GUILib には openWindow(), lastWindow() などの GUI アプリケーションに特化した斬新な機能があります。

GUI アプリケーションによるライブラリの用法

openWindow(cWindowControllerClassName) 関数で新しいウィンドウを開きます。

最低でも Controller と View のクラス二本をウィンドウごとに作成してください。

WindowsControllerParent クラスから各 Controller クラスを作成します。

WindowsViewParent クラスから各 View クラスを作成します。

lastWindow() 関数は最後に作成されたウィンドウのオブジェクト (Controller オブジェクト) を取得します。

サブウィンドウを呼び出すときは SetParentObject() メソッドの使用、および Self オブジェクトを渡します。

View クラスでは、イベントメソッドを決定するために Method(cMethodName) 関数を使用します。

Method(cMethodName) 関数を実行することで Controller クラスでメソッドを決定します。

各 Controller クラスはデフォルトで CloseAction() クラスがあり、呼び出すことでウィンドウを閉じます。

ウィンドウごとの Show() メソッドの呼び出しは不要です。 openWindow() の使用時に呼び出します。

View クラスでは GUI ウィンドウオブジェクトを win 属性で定義します。

openWindowNoShow() 関数はウィンドウを非表示にします。

openWindowAndLink() を使うとメソッドからウィンドウへ手軽にアクセスできます。

用例

この用例では、二種類のウィンドウを作成します。

メインウィンドウにはボタンがあります。ユーザがボタンをクリックしたときにサブウィンドウが開かれます。

ユーザは複数のサブウィンドウを開くためにボタンを何回もクリックできます。

サブウィンドウごとに二つのボタンがあります。

最初のボタンはサブウィンドウにありメイン、およびサブウィンドウのタイトルのタイトルを変更します。

次のボタンはサブウィンドウにありサブウィンドウを閉じます。

load "guilib.ring"

new qApp {
        openWindow( :MainWindowController )
        exec()
}

class MainWindowController from WindowsControllerParent
        oView = new MainWindowView
        func SubWindowAction
                openWindow( :SubWindowController )
                lastWindow().SetParentObject(self)

class MainWindowView from WindowsViewParent
        win = new qWidget() {
                SetWindowTitle("Main Window")
                btnSub = new qPushButton(win) {
                        setText("Sub Window")
                        setClickEvent( Method( :SubWindowAction ) )
                }
                resize(400,400)
        }

class SubWindowController from WindowsControllerParent
        oView = new SubWindowView
        func SetMainWindowTitleAction
                Parent().oView.win.SetWindowTitle("Message from the Sub Window")
                oView.win.SetWindowTitle("Click Event Done!")

class SubWindowView from WindowsViewParent
        win = new qWidget() {
                SetWindowTitle("Sub Window")
                btnMsg = new qPushButton(win) {
                        setText("Set Main Window Title")
                        setClickEvent( Method( :SetMainWindowTitleAction ) )
                }
                btnClose = new qPushButton(win) {
                        Move(200,0)
                        setText("Close")
                        setClickEvent( Method( :CloseAction ) )
                }
                resize(400,400)
        }

このスクリーンショットはサブウィンドウを三枚作成しています。

このスクリーンショットはサブウィンドウごとにボタンをクリックしています。

openWindowAndLink() 関数

openWindowAndLink() 関数はアプリケーションウィンドウとの間を接続することにより、オブジェクトとの間でメッセージ (メッセージの呼び出し) を渡せます。

この関数は、ほかのウィンドウの作成で動的オブジェクトを使うために、メタプログラミングによる呼び出し元クラスで動的メソッドの定義で使用します。

用例 : (フォームデザイナーを使用しています)

最初のウィンドウ

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/twowindowspart5/firstwindowView.ring

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/twowindowspart5/firstwindowController.ring

次のウィンドウ

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/twowindowspart5/secondwindowView.ring

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/twowindowspart5/secondwindowController.ring

このコードの用例では (FirstWindowController.ring より引用)

openWindowAndLink() は SecondWindowController クラスからオブジェクトを作成します。

そして FirstWindowController クラスへ SecondWindow(), IsSecondWindow() メソッドを追加します。

さらに SecondWindowController クラスへ FirstWindow() と IsFirstWindow() メソッドを追加します。

これにより FirstWindowController クラスにある SendMessage() メソッドは SecondWindow() メソッドでオブジェクトにアクセスするために使えます。

これは lastWindow(), Parent() および SetParentObject() メソッドを使用するよりも簡単です。

class firstwindowController from windowsControllerParent

    oView = new firstwindowView

    func OpenSecondWindow
        openWindowAndLink(:SecondWindowController,self)

    func SendMessage
        if IsSecondWindow()
            SecondWindow().setMessage("Message from the first window")
        ok

    func setMessage cMessage
        oView.Label1.setText(cMessage)

openWindowInPackages() 関数

openWindowInPackages() 関数は openWindow() と同じですが、ウィンドウを開く前にインポートを行うパッケージの追加リストを決定します。

文法:

openWindowInPackages(cClassName,aPackagesList)

用例:

この用例はフォームデザイナーのソースコードからの引用です。 openWindowInPackages() 関数でウィンドウフラグのウィンドウを開きます。

クラス名 “WindowFlagsController” とパッケージの名前を決定します。

ウィンドウフラグのウィンドウでは FormDesigner および System.GUI パッケージを使用しています。

openWindowInPackages(:WindowFlagsController,[
        "formdesigner",
        "System.GUI"
])

オブジェクトライブラリのソースコード

ライブラリのソースコードは非常に単純です。ソースコードファイルを確認できます。

オブジェクトライブラリのソースコード (GUILib なしで使用可能)

https://github.com/ring-lang/ring/blob/master/libraries/objectslib/objects.ring

https://github.com/ring-lang/ring/blob/master/libraries/objectslib/objectslib.ring

GUILib における MVC クラスのソースコード

https://github.com/ring-lang/ring/blob/master/libraries/guilib/mvc/controllerparent.ring

https://github.com/ring-lang/ring/blob/master/libraries/guilib/mvc/viewparent.ring

多国語アプリケーション

多国語 Ring アプリケーションの実装方法は多種多様です！

String2Constant ツールの用法です。

String2Constant の用法

Ring 1.8 より String2Constant アプリケーションがあります。

このツールは ring/tools/string2constant フォルダにあります。

このツールは文字列リテラルではなく、定数を用いたソースコードへ変換します。

これにより、定数を様々な言語を翻訳して言語ごとにソースコードのファイルへ格納できます。

Arabic.ring, English.ring, Japanese.ring など言語ごとに特殊なファイルを扱うことができます。

このツールの採用事例としては、アラビア語へ翻訳したフォームデザイナーがあります。

フォームデザイナーの翻訳

フォームデザイナーのアプリケーションは ring/applications/formdesigner フォルダにあります。

翻訳用のファイルは ring/applications/formdesinger/translation フォルダにあります。

三種類のファイルがあります。

Arabic.ring

English.ring

Japanese.ring

定数定義の考えかたを理解するには前述のファイルを確認します。

これは Japanese.ring ファイルからの引用です。

T_LANGUAGE = "english"
T_LAYOUTDIRECTION = 0                   # 左から右へ

T_FORMDESIGNER_FORMDESIGNER     = "フォームデザイナー"
T_FORMDESIGNER_FORMTITLE                = "Form1"

T_FORMDESIGNER_FILE                     = "ファイル(&F)"
T_FORMDESIGNER_NEW                              = "新規作成(&N)"
T_FORMDESIGNER_OPEN                     = "開く(&O)"
T_FORMDESIGNER_SAVE                     = "保存(&S)"
T_FORMDESIGNER_SAVEAS                   = "名前を付けて保存(&A)"
T_FORMDESIGNER_CLOSE                    = "閉じる(&C)"

フォームデザイナーのソースコードのファイルでは、文字列リテラル型ではなく定数を使用しています。

これは formdesigner/mainwindow/formdesignerview.ring ファイルからの引用です。

# メインウィンドウの作成と MDI 領域の使用
        win = new qMainwindow() {
                setWindowTitle(T_FORMDESIGNER_FORMDESIGNER) # "Form Designer"
                setcentralWidget(this.oArea)
                setLayoutDirection(T_LAYOUTDIRECTION)
        }

コメントで文字列リテラルを記述すると、コードの可読性向上になります。

setLayoutDirection() メソッドで、ウィンドウの方向を左から右へ設定できます。

使用する翻訳ファイルをLoad 命令で指定します。

フォームの翻訳

フォームデザイナーでフォームを作成した後に View クラスが生成されます。

View クラスの修正は行わずに Controller クラスから翻訳を追加します。

例えば、このようなフォームファイルがあります : ring/formdesigner/selobjects/selobjects.rform

このコードを使って Controller クラスから翻訳を追加します。

そして、定数は Arabic.ring, English.ring と Japanese.ring で定義します。

class selobjectsController from windowsControllerParent

        oView = new selobjectsView  {
                ListObjects.setselectionmode(QAbstractItemView_MultiSelection)
                win.setwindowmodality(2)
                # 翻訳
                        win.setWindowTitle(T_FORMDESIGNER_SELOBJECTS_TITLE)
                        win.setLayoutDirection(T_LAYOUTDIRECTION)
                        labelobjects.setText(T_FORMDESIGNER_SELOBJECTS_OBJECTS)
                        btnSelect.setText(T_FORMDESIGNER_SELOBJECTS_SELECT)
                        btnClose.setText(T_FORMDESIGNER_SELOBJECTS_CLOSE)
        }

モバイル用 RingQt アプリケーションのビルド方法

モバイル用 RingQt アプリケーションのビルド方法です。

開発環境のダウンロード

このリンクをご確認ください : http://doc.qt.io/qt-5/androidgs.html

ダウンロード

Android SDK ツール

https://developer.android.com/sdk/index.html

Android NDK (android-ndk-r21 で検証済み)

http://developer.android.com/tools/sdk/ndk/index.html

Java SE Development Kit (JDK) v6 以降

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Android SDK の更新

開発で必要な API および、ツールのパッケージを得るには Android SDK を更新します。

Android 4.4.2 (API 19) で検証済み。

Windows では - 愛用のシステムに合わせて環境変数を定義します。

JAVA_HOME

用例 : C:\Program Files (x86)\Java\jdk1.8.0_05

ANDROID_HOME

用例 : C:\JavaAndroid\AndroidSDK

Qt for Android のインストール

このリンクから Qt for Android をインストールします。

https://download.qt.io/archive/qt/5.12/5.12.6/

Qt Creator を実行後に、 ツール → オプション → Android を選択して

Android NDK と SDK のパスを追加します。

http://doc.qt.io/qtcreator/creator-developing-android.html

Ring2EXE の用法

Qt プロジェクトのアプリケーションを Ring2EXE で手軽に用意できます。

用例:

ring2exe myapp.ring -dist -mobileqt

注釈

Ring ノートパッドの配布メニューからでもできます。

ちなみに

Ring2EXE (Qt プロジェクトの準備 - モバイル機器用の配布) オプションは配布メニューにあります。

Ring アプリケーション用の Qt プロジェクト

Ring2EXE または Ring ノートパッドの配布メニューを使用後に、

Qt Creator で生成された Qt プロジェクトを開きます。

フォルダ : target/mobile/qtproject

プロジェクトファイル : project.pro

Qt Creator からリソース (YourAppName.ringo) にコンパイルされた Ring アプリケーションを見つけられます。

このファイル (Ring オブジェクトファイル) は Ring コンパイラで生成します。

ring YourAppName.ring -go -norun

Qt Creator でアプリケーションをビルドします。

リソースにはアプリケーションで使う画像を追加できます。

またはテキストエディタを (Notepad など) で修正します : project.qrc

Ring アプリケーションから画像を見つけ出すには、リソースで使われているファイル名が必要です。

用例

if isandroid()
        mypic = new QPixmap(":/cards.jpg")
else
        mypic = new QPixmap("cards.jpg")
ok

Android 開発についての注釈 (RingQt)

メインのプロジェクトファイルは main.cpp です。

このファイルは Ring コンパイラ、仮想計算機 (VM) と RingQt で読み込まれます。

実行中にリソースの一時作業フォルダから Ring オブジェクトファイルを取得します。

そして Ring 仮想計算機 (VM) で Ring オブジェクトファイル (ringapp.ringo) を実行します。

main.cpp で追加 (複数のファイルから構成されているプロジェクト) することにより、リソースの一時作業フォルダから複数のファイルを抽出できます。

この Ring エディションにおいて、この関数は未実装です。

データベース (ODBC, SQLite と MySQL)

セキュリティとインターネット関数 (LibCurl と OpenSSL)

RingAllegro (Allegro ライブラリ)

RingLibSDL (LibSDL ライブラリ)

Qt クラスは RingQt から使います。

データベースのアクセスには QSqlDatabase クラスを使います。

注釈

未実装のライブラリ (LibCurl, OpenSSL および Allegro) は全て Android 用にコンパイルできますが Qt プロジェクトは収録されていません。

Android 用のコードへ動作を切り替えたい場合は isandroid() を使います。

用例:

if isandroid()
        // Android のコード
else
        // それ以外のプラットフォーム
ok

ボタンのテキスト、または画像が繰り返し描画されることがあること気づくと思います！

このコードで Qt の問題を回避できます。

if isandroid()
        setStyleSheet("
                border-style: outset;
                border-width: 2px;
                border-radius: 4px;
                border-color: black;
                padding: 6px;")
 ok

手動設定によるコントロールの位置と寸法ではなくレイアウトを必ず使います。

これはユーザインタフェースの問題回避を想定した最良の方法 (小規模、追加の寸法を有するコントロール) です。

Qt クラスを扱う場合はリソースから画像を決定できます (main.cpp で使うためのコピーは不要です)。

用例:

if isandroid()
    mypic = new QPixmap(":/cards.jpg")
else
    mypic = new QPixmap("cards.jpg")
ok

RingQt にはファイル名を決定するために AppFile() 関数があります。

用例:

mypic = new QPixmap(AppFile("cards.jpg"))  # デスクトップまたは Androrid

プロジェクトのコード更新時、 Qt プロジェクトの生成に Ring2EXE を再実行する必要はありません。

Ring ノートパッドの配布メニューからオブジェクトファイルの生成 (*.ringo) を選択します。

その後 YourAppName.ringo ファイルを target/mobile/qtproject フォルダへコピーしてファイルの置き換えに応じてください。

アプリケーションにフォルダに Qt リソースファイル (project.qrc) がある場合は、

Ring2EXE または Ring ノートパッドの配布メニュー → Ring2EXE (Qt プロジェクトの準備 - モバイル機器用の配布) を実行するとリソースファイルを使います。

用例は ring/applications/cards ゲームを参照してください。

WebAssembly 用 RingQt アプリケーションのビルド方法

WebAssembly 用 RingQt アプリケーションのビルド方法です。

ダウンロード用件

このリンクを参照してください : https://doc.qt.io/qt-5/wasm.html

検証環境

Qt (5.15.0) : https://www.qt.io/blog/qt-5.15-released

Emscripten (1.39.7) : https://emscripten.org/docs/getting_started/index.html

emsdk install sdk-fastcomp-1.39.7-64bit
emsdk activate sdk-fastcomp-1.39.7-64bit

Emscripten が正常にインストールされているか確認するには、

em++ --version

実行結果

emcc (Emscripten gcc/clang-like replacement) 1.39.7
(commit 24d88487f47629fac9d4acd231497a3a412bdee8)
Copyright (C) 2014 the Emscripten authors (see AUTHORS.txt)
This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

Ring2EXE の用法

Ring2EXE を使うとアプリケーションの Qt プロジェクトを手軽に準備できます。

用例:

ring2exe myapp.ring -dist -webassemblyqt

注釈

この作業は Ring ノートパッド の配布メニューでも行えます。

ちなみに

このオプション (WebAssembly 用の Qt プロジェクトを準備) は配布メニューにあります。

Ring アプリケーションの Qt プロジェクト

Ring2EXE の実行後、あるいは Ring ノートパッド で配布メニューをクリックした後に、

生成した Qt プロジェクトを Qt Creator で開きます。

フォルダ : target/webassembly/qtproject

プロジェクトファイル : project.pro

Qt Creator を使うことで、リソースからコンパイル済みの Ring アプリケーション (YourAppName.ringo) が使えるようになります。

このファイル (Ring オブジェクトファイル) は Ring コンパイラで生成します。

ring YourAppName.ring -go -norun

Qt Creator でもアプリケーションのビルドができます。

アプリケーションで使う画像ファイルをリソースへ追加できます。

あるいは、テキストエディタ (Notepad など) でファイルを修正します : project.qrc

To find images from your Ring アプリケーションから画像ファイルを使うには、リソースにあるファイル名を指定してください。

用例:

if isWebAssembly()
        mypic = new QPixmap(":/cards.jpg")
else
        mypic = new QPixmap("cards.jpg")
ok

WebAssembly 用 RingQt の開発における注解

メインのプロジェクトファイルは main.cpp です。

このファイルは Ring のコンパイラと仮想計算機、および RingQt を読み出します。

つぎに、実行時にリソースから Ring オブジェクトファイルを取得します。

そして、仮想計算機で Ring オブジェクトファイル (ringapp.ringo) を実行します。

main.cpp でファイルを追加すると複数のファイルを一時作業用フォルダへ展開します (複数のファイルから構成されるプロジェクトを作成します)。

必要ならば isWebAssembly() を使うことで WebAssembly 用のコードに変更できるようになります。

用例:

if isWebAssembly()
        // WebAssembly のコード
else
        // ほかのプラットフォーム
ok

Qt クラスを扱うときはリソースから画像ファイルを検出します (main.cpp の使用時はコピー不要です)。

用例:

if isWebAssembly()
    mypic = new QPixmap(":/cards.jpg")
else
    mypic = new QPixmap("cards.jpg")
ok

これにより RingQt は AppFile() 関数でファイル名を検出できるようになります。

用例:

mypic = new QPixmap(AppFile("cards.jpg"))  # Desktop, Android または WebAssembly

プロジェクトのコードを更新するときは、 Ring2EXE で Qt プロジェクトを再生成しないでください。

その代わり Ring ノートパッド の配布メニューから Ring オブジェクトファイルの生成を選択してください。

そして YourAppName.ringo ファイルを target/webassembly/qtproject へコピーしてファイルを上書きしてださい。

アプリケーションフォルダに Qt リソースファイル (project.qrc) がある場合は、

Ring2EXE または Ring ノートパッド (配布 - WebAssembly 用の Qt プロジェクトを準備) の実行後に作られたリソースファイルを使います。

用例は ring/applications/cards ゲームを参照してください。

StdLib 関数を使うときは stdlib.ring ではなく stdlibcore.ring をお使いください。

値 (1000) を打鍵するよりも ClocksPerSecond() 関数をお使いください。

多重イベントループは非対応ですので、ダイアログのイベントを使うときは代わりに exec() メソッドを呼び出してください。

Sleep() または ProcessEvents() を使うと異常動作の原因となりますので、Qt タイマーをお使いください。

アプリケーションはセキュア環境下で実行されるためファイルシステムにはアクセスできません。

ちなみに

ファイルのダウンロードやアップロード専用の関数をがあります (FileContent サンプルを参照)。

ダイアログ

参照先のフォルダ: ring/samples/UsingQtWASM

フォルダ:

ColorDialog

FontDialog

FileDialog

FileContent

オンラインアプリケーション

Hello World : https://ring-lang.github.io/web/helloworld/project.html

Matching Game : https://ring-lang.github.io/web/matching/project.html

Pairs Game : https://ring-lang.github.io/web/pairs/project.html

Othello Game : https://ring-lang.github.io/web/othello/project.html

Game of Life : https://ring-lang.github.io/web/gameoflife/project.html

Form Designer : https://ring-lang.github.io/web/formdesigner/project.html

ウェブ開発 (CGI ライブラリ)

Ring 製 CGI ライブラリによるウェブアプリケーションの開発方法です。

Apache ウェブサーバーの設定

Apache HTTP サーバーで Ring を動作させる方法を解説します。 CGI の実行に対応しているウェブサーバーでも Ring を使えます。

注釈

Ring ノートパッドでアプリケーションを開発しているのでしたら、手作業での Apache の設定は不要です。

XAMPP Apache ウェブサーバーの用法

この時点で XAMPP アプリケーションをお使いならば Apache ウェブサーバーのインストールは済んでいます。そうでなければ、こちらから XAMPP をダウンロードしてください。

XAMPP : https://www.apachefriends.org/download.html

インストール後に XAMPP アプリケーションから構成ファイルを開くか、お使いのオペレーティングシステムの種類を選んでから以下の場所を検索します。

Windows:

xampp\apache\conf\httpd.conf

Linux:

/opt/lampp/etc/httpd.conf

macOS:

/Applications/XAMPP/xamppfiles/etc/httpd.conf

この行を検索してコメントアウトされていないことを確認してください。

LoadModule cgi_module modules/mod_cgi.so

この行を検索します : AddHandler cgi-script

次に CGI 拡張機能を拡張子 ".ring" へ対応させます。

用例:

AddHandler cgi-script .cgi .ring

用例:

AddHandler cgi-script .cgi .pl .asp .ring

XAMPP の"Manage Servers" または "Services" セクションからサーバーの再起動 (Restart) か開始 (Start) をします。

Web サーバーが対応している CGI ディレクトリへウェブアプリケーションを作成します。

Windows:

xampp\htdocs\mywebapplicationfolder

Linux:

/opt/lampp/htdocs/mywebapplicationfolder

macOS:

XAMPP アプリケーションを開き "Volumes" セクションへ移動します。

"/opt/lampp" ボリュームをマウントします。

Finder (ファインダー) を開き、左側のメニュー "Locations" からマウント済みの IP アドレスを見つけます。

shebang (シェバン) 行の設定

Ring ファイルを CGI で正常に実行するためにシェバン行に Ring 実行可能ファイルの場所を指定してください。つまり、ソースコードファイル (*.ring) の先頭一行目に下記を追加します。

Windows:

#!ring -cgi

Linux:

#!/usr/bin/ring -cgi

macOS:

#!/usr/local/bin/ring -cgi

注釈

前述の行はマシンにインストールされている ring 実行可能ファイルのパスへ変更してください。

Ring ファイルの実行可能権限を許可するには

Linux と macOS オペレーティングシステムでは実行可能権限を許可しない限り CGI で Ring ソースファイルを正常に実行できません。この設定はファイルマネージャーのプロパティセクション、あるいはターミナルで行います:

sudo chmod +x ringAppFile.ring

注釈

Ring ノートパッドでアプリケーションを開発しているのでしたら、この権限は自動で設定します。

Ring CGI - Hello World プログラム

このプログラムは、 Hello World プログラムです。

#!ring -cgi

See "content-type: text/html" +nl+nl+
    "Hello World!" + nl

ウェブライブラリ版 Hello World プログラム

ウェブライブラリで手軽に CGI ウェブアプリケーションを記述できます。

用例① :

#!ring -cgi

Load "weblib.ring"

Import System.Web

New Page
{
        Text("Hello World!")
}

用例② :

#!ring -cgi

Load "weblib.ring"

Import System.Web

WebPage()
{
        Text("Hello World!")
}

ちなみに

用例①と用例②の違いは、新しいステートメントでオブジェクトを作成するのではなく、 WebPage() 関数でページオブジェクトを返すことです。

ウェブライブラリの機能

この機能は手軽にウェブアプリケーションを作成するために、ウェブライブラリに実装されています。

関数版 HTML ページ

オブジェクト版 HTML ページ

HTTP Get

HTTP Post

ファイルのアップロード

URL エンコード

テンプレート

CRUD MVC のサンプル

ユーザのロジックと登録のサンプル

HTTP Get の用例

ページのユーザインタフェース

#!ring -cgi
Load "weblib.ring"
Import System.Web
New Page
{
  Title = "Test HTTP Get"
  divstart([ :style = StyleSizeFull() ] )
  boxstart()
        text( "Test HTTP GET" )
        newline()
  boxend()
  divstart([ :style = Styledivcenter("600px","550px") +
                      StyleGradient(21) ])
  divstart([:style = stylefloatleft() + stylesize("100px","100%") +
                     stylecolor("black") + stylegradient(58)])
  formstart("ex5.ring")
        tablestart([ :style = stylesize("65%","90%") +
                              stylemarginleft("35%") +
                              stylemargintop("30%") ])
          rowstart([])
                cellstart([])
                  text ( "Name : "  )
                cellend()
                cellstart([])
                  cTextboxStyle = StyleMarginLeft("5%") +
                                  StyleWidth("250px") +
                                  StyleColor("black") +
                                  StyleBackColor("white")
                  textbox([ :name = "Name", :style = cTextboxStyle ] )
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                  text ( "Address : " )
                cellend()
                cellstart([])
                  textbox([ :name = "Address", :style = cTextboxStyle] )
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                  text ( "Phone : " )
                cellend()
                cellstart([])
                  textbox([ :name = "Phone", :style = cTextboxStyle ])
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                  text ( "Age : "  )
                cellend()
                cellstart([])
                  textbox([ :name = "Age", :style = cTextboxStyle ])
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                  text ( "City: " )
                cellend()
                cellstart([])
                  listbox([ :name = "City", :items = ["Cairo","Riyadh","Jeddah"],
                         :style = stylemarginleft("5%") + stylewidth("400px") ] )
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                  text ( "Country : " )
                cellend()
                cellstart([])
                  combobox([ :name = "Country",
                         :items = ["Egypt","Saudi Arabia","USA"],
                         :style = stylemarginleft("5%") +
                                  stylewidth("400px")+
                                  stylecolor("black")+
                                  stylebackcolor("white")+
                                  stylefontsize("14px") ])
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                  text ( "Note : " )
                cellend()
                cellstart([])
                  editbox([ :name = "Notes",
                        :style = stylemarginleft("5%") +
                                 stylesize("400px","100px")+
                                 stylecolor("black")+
                                 stylebackcolor("white") ,
                        :value = "write comments here..." ] )
                cellend()
          rowend()
          rowstart([])
                cellstart([])
                cellend()
                cellstart([])
                  submit([ :value = "Send" , :Style = stylemarginleft("5%") ])
                cellend()
          rowend()
        tableend()
  formend()
  divend()
  divend()
  divend()
}

スクリーンショット:

応答:

#!ring -cgi
Load "weblib.ring"
Import System.Web
New Page
{
 divstart([ :style = styledivcenter("800px","500px") ])
  boxstart()
        text ( "HTTP GET Response" )  newline()
  boxend()
  divstart([ :style = stylefloatleft()+stylewidth("10%")+
                      stylecolor("black")+stylegradient(58) ])
        newline()
        text ( "Name : "   )
        newline() newline()
        text ( "Address : "  )
        newline() newline()
        text ( "Phone : "   )
        newline() newline()
        text ( "Age : "   )
        newline() newline()
        text ( "City : "   )
        newline() newline()
        text ( "Country : "   )
        newline() newline()
        text ( "Note : "   )
        newline() newline()
  divend()
  divstart([ :style = stylefloatleft()+stylewidth("90%")+
                      stylecolor("black")+stylegradient(47) ])
        divstart([ :style = stylefloatleft() + stylewidth("1%") ])
          newline()
        divend()
        divstart([ :style = stylefloatleft() + stylewidth("95%") ])
          newline()
          text ( aPageVars["Name"] )
          newline() newline()
          text ( aPageVars["Address"] )
          newline() newline()
          text ( aPageVars["Phone"] )
          newline() newline()
          text (  aPageVars["Age"] )
          newline() newline()
          text ( aPageVars["City"] )
          newline() newline()
          text (aPageVars["Country"] )
          newline() newline()
          text ( aPageVars["Notes"] )
          newline() newline()
        divend()
  divend()
 divend()
}

スクリーンショット:

HTTP POST の用例

ページのユーザインタフェース

#!ring -cgi
Load "weblib.ring"
Import System.Web
New Page
{
        boxstart()
                text( "Post Test")
                newline()
        boxend()
        divstart([ :style=StyleFloatLeft()+StyleWidth("100px") ])
                newline()
                text( "Number1 : " )    newline() newline()
                text( "Number2 : " )    newline() newline()
        divend()
        formpost("ex7.ring")
                divstart([ :style = styleFloatLeft()+StyleWidth("200px") ])
                        newline()
                        textbox([ :name = "Number1" ])  newline() newline()
                        textbox([ :name = "Number2" ])  newline() newline()
                        submit([ :value = "Send" ] )
                divend()
        formend()
}

スクリーンショット:

応答:

#!ring -cgi
Load "weblib.ring"
Import System.Web
New Page
{
        boxstart()
                text( "Post Result" )
                newline()
        boxend()
        divstart([ :style = styleFloatLeft()+styleWidth("200px") ])
                newline()
                text( "Number1 : " + aPageVars["Number1"] )
                newline() newline()
                text( "Number2 : " + aPageVars["Number2"] )
                newline() newline()
                text( "Sum : " + (0 + aPageVars["Number1"] + aPageVars["Number2"] ) )
                newline()
        divend()
}

スクリーンショット:

ファイルのアップロード

ページのユーザインタフェース

#!ring -cgi
Load "weblib.ring"
Import System.Web
New page
{
        boxstart()
                text( "Upload File" )
                newline()
        boxend()
        for x = 1 to 3 newline() next
        formupload("ex9.ring")
                text( "Customer Name : " )
                textbox([ :name = "custname" ])
                newline() newline()
                divstart([ :style = styleFloatLeft() + styleWidth("90px") ])
                        uploadfile("file")  newline() newline()
                        uploadfile("file2") newline() newline()
                        submit([ :value = "Send" ])
                divend()
        formend()
}

スクリーンショット:

応答:

#!ring -cgi
Load "weblib.ring"
Import System.Web

cUploadPath = "C:/Apache2.2/htdocs/ringapp/upload/"
cUploadFolder = "/ringapp/upload/"

New page
{
        boxstart()
                text( "Upload Result" )
                newline()
        boxend()
        newline()
        divstart([ :style=  styleFloatLeft() + styleWidth("100px") ])
                text( "Name : " + aPageVars["custname"] )
                newline()
        divend()
        if aPageVars["file"] != char(13)
                getuploadedfile(self,"file")
        ok
        if aPageVars["file2"] != char(13)
                getuploadedfile(self,"file2")
        ok
}

Func getuploadedfile oObj,cFile
        # ここで object.プロパティ を使用
        # オブジェクトの代わりに { } を使うと braceend メソッドの実行を回避します。
        cFileName = cUploadPath + oObj.getfilename(aPageVars,cFile)
        write(cFileName,aPageVars[cFile])
        system("chmod a+x "+cFileName)
        oObj.newline()
        oObj.text( "File "+cFileName+ " Uploaded ..." )
        oObj.newline()
        imageURL = cUploadFolder + oObj.getfilename(aPageVars,cFile)
        oObj.link([ :url = imageURL, :title = "Download" ])
        oObj.newline()
        oObj.image( [ :url = imageURL , :alt = :image  ] )
        oObj.newline()

スクリーンショット:

Cookies (クッキー)

ページのユーザインタフェース

#!ring -cgi
Load "weblib.ring"
Import System.Web

New page
{
        boxstart()
                text( "Cookie Test" )
                newline()
        boxend()
        newline()
        link([ :url = "ex11.ring", :title = "Use Cookies" ])
        cookie("custname","Mahmoud Fayed")
        cookie("custage",28)
}

スクリーンショット:

応答:

#!ring -cgi
Load "weblib.ring"
Import System.Web

New Page
{
        boxstart()
                text( "Cookies Values" )
                newline()
        boxend()
        link([ :url = "ex10.ring", :title = "back" ])
        newline()
        divstart([:style="float:left;width:200px"])
                text( "Name : " + aPageVars["custname"] )
                newline()
                text( "Age : " + aPageVars["custage"] )
                newline()
        divend()
}

スクリーンショット:

URL エンコード

ページのユーザインタフェース

#!ring -cgi
Load "weblib.ring"
Import System.Web

New Page
{
        boxstart()
                text( "URLEncode" )
                newline()
        boxend()
        link([ :url = "ex5.ring?Name="+URLEncode("-*{Mahmoud}*-")+
                      "&Address=Egypt&Phone=123456&Age=28&Notes=Programmer",
                      :title = "Test URL Encode" ])
}

スクリーンショット:

スクリーンショット:

テンプレート

テンプレートで HTML ファイルの内側に Ring コードを記述できます。

文法:

<%= Ring 式 %>
<%  Ring ステートメント %>

HTML コード

<h1>Listing Numbers</h1>
<table>
  <tr>
    <th> <%= myheader.cColumn1 %> </th>
    <th> <%= myheader.cColumn2 %> </th>
    <th></th>
    <th></th>
    <th></th>
  </tr>
<% for x in aNumbers %>
  <tr>
    <td> <%= x.nValue  %> </td>
    <td> <%= x.nSquare %> </td>
  </tr>
<% next %>
</table>

Ring コード

#!ring -cgi
Load "weblib.ring"
Import System.Web

New NumbersController { start() }

Class NumbersController

        MyHeader aNumbers

        Func Start

                MyHeader = New Header
                {
                        cColumn1 = "Number" cColumn2 = "Square"
                }

                aNumbers = list(20)

                for x = 1 to len(aNumbers)
                        aNumbers[x] = new number
                        {
                                nValue  = x   nSquare = x*x
                        }
                next

                cTemp = Template("mynumbers.html",self)

                New Page
                {
                        boxstart()
                                text( "Test Templates" )
                                newline()
                        boxend()
                        html(cTemp)
                }

Class Header cColumn1 cColumn2
Class Number nValue   nSquare

スクリーンショット:

HTML の特殊文字

text() 関数は HTML の特殊文字を表示します。

HTML コードを記述するには html() 関数を使います。

#!ring -cgi
Load "weblib.ring"
Import System.Web

New Page
{
        boxstart()
                text("HTML Special Characters")
                newline()
        boxend()
        text('
                <html>
                        <body>
                                <p> "hello world" </p>
                        </body>
                </html>
        ')
}

スクリーンショット:

ハッシュ関数

ページのユーザインタフェース

#!ring -cgi
Load "weblib.ring"
Import System.Web

New Page
{
        boxstart()
                text( "Hash Test")
                newline()
        boxend()
        divstart([ :style = StyleFloatLeft() + StyleWidth("100px") ])
                newline()
                text( "Value : " )
                newline() newline()
        divend()
        formpost("ex16.ring")
                divstart([ :style = StyleFloatLeft() + StyleWidth("300px") ])
                        newline()
                        textbox([ :name = "Value" ])
                        newline() newline()
                        submit([ :value = "Send" ])
                divend()
        formend()
}

スクリーンショット:

応答:

#!ring -cgi
Load "weblib.ring"
Import System.Web

New Page
{
        boxstart()
                text( "Hash Result" )
                newline()
        boxend()
        divstart([ :style = styleFloatLeft() + styleWidth("100%") ])
                newline()
                text( "Value : "  + aPageVars["Value"] )
                newline()
                text( "MD5 : "    + MD5(aPageVars["Value"]) )
                newline()
                text( "SHA1 : "   + SHA1(aPageVars["Value"]) )
                newline()
                text( "SHA256 : " + SHA256(aPageVars["Value"]) )
                newline()
                text( "SHA224 : " + SHA224(aPageVars["Value"]) )
                newline()
                text( "SHA384 : " + SHA384(aPageVars["Value"]) )
                newline()
                text( "SHA512 : " + SHA512(aPageVars["Value"]) )
                newline()
        divend()
}

スクリーンショット:

画像の無作為表示

#!ring -cgi
Load "weblib.ring"
Import System.Web

cUploadPath = "C:/Apache2.2/htdocs/ringapp/upload/"

New Page
{
        boxstart()
                text( "Random Test")
                newline()
        boxend()
        divstart([ :style = styleFloatLeft() + styleWidth("400px") ])
                newline()
                aList = dir(cUploadPath)
                if len(aList) > 0
                        nIndex = random(len(aList))
                        if nindex = 0 nIndex = 1 ok
                        cItem = "upload/" + aList[nIndex][1]
                        newline()
                        image( [ :url = cItem , :alt = :image  ] )
                else
                        text("No images!") newline()
                ok
        divend()
}

スクリーンショット:

HTML のリスト

この用例では、 1 ～ 10 までの数値があるリストの内容を表示します。

そして Ring のリストからリストを表示します。

最終的にボタンのリストがあり、ボタンが押されてクリックしたときにボタンの番号に割り当てられたメッセージを取得します。

リストの開始は ulstart() 関数、リストの終了は ulend() 関数を使います。

listart() と liend() 関数でリストの項目を決定します。

#!ring -cgi
Load "weblib.ring"
Import System.Web

Func Main
        New Page
        {
                ulstart([])
                        for x = 1 to 10
                                listart([])
                                        text(x)
                                liend()
                        next
                ulend()
                list2ul(["one","two","three","four","five"])
                ulstart([])
                        for x = 1 to 10
                                listart([])
                                        cFuncName = "btn"+x+"()"
                                        button([ :onclick = cFuncName , :value = x])
                                        script(scriptfuncalert(cFuncName,string(x)))
                                liend()
                        next
                ulend()
        }

スクリーンショット:

HTML のテーブル

この用例では tablestart(), tableend(), rowstart(), rowend(),headerstart(), headerend(), cellstart() および cellend() 関数版 HTML テーブルの生成方法です。

#!ring -cgi
Load "weblib.ring"
Import System.Web

Func Main
        New Page
        {
                divstart([ :style = styledivcenter("400px","500px") ] )
                        style(styletable() + styletablerows("t01"))
                        tablestart([ :id = :t01 , :style = stylewidth("100%") ])
                                rowstart([])
                                        headerstart([]) text("Number") headerend()
                                        headerstart([]) text("square") headerend()
                                rowend()
                                for x = 1 to 10
                                        rowstart([])
                                                cellstart([]) text(x)   cellend()
                                                cellstart([]) text(x*x) cellend()
                                        rowend()
                                next
                        tableend()
                divend()
        }

スクリーンショット:

グラデーション

この用例では StyleGradient() 関数の用法です。

関数の入力としてスタイルを数値で指定します (1 から 60 までの範囲)。

#!ring -cgi
Load "weblib.ring"
Import System.Web

Func Main
        New Page
        {
                boxstart()
                        text("StyleGradient() Function")
                boxend()
                for x = 1 to 60
                        divstart([ :id = x , :align = "center" ,
                                   :style = stylefloatleft() +
                                            stylesize(string(100/60*6)+"%","50px") +
                                            stylegradient(x) ])
                                h3(x)
                        divend()
                next
        }

スクリーンショット:

オブジェクト版ページ生成

HTML ページを生成するために関数、メソッドではなくページで要素ごとのオブジェクトを使えます。

この選択をするとコードは綺麗になりますが、動作速度は遅くなります。

最も高速な方法は関数の使用、次に早いのはテンプレートの使用、そして最後にオブジェクトを使用 (低速) して HTML コードを出力することです。

#!ring -cgi
Load "weblib.ring"
Import System.Web

Func Main

  WebPage()
  {
        Title = "Using objects to create the Web Page content"
        h1 { text("welcome") }
        link
        {
          Title = "Google"
          Link  = "http://www.google.com"
        }
        div
        {
          id = "div1"
          style = stylegradient(30) + stylesize("50%","50%")
          text("Outer Div")
          div
          {
                id = "div2"
                color = "white"
                backgroundcolor = "green"
                width = "50%"
                height = "50%"
                marginleft = "5%"
                margintop = "5%"
                text("Inner Div")
          }
        }
        div
        {
          id = "div3"
          color = "black"
          backgroundcolor = "silver"
          width = "100%"
          height = "100%"
          text("Form")
          form
          {
                method = "POST"
                Action = "helloworld.ring"
                Table
                {
                  style = stylewidth("100%") + stylegradient(24)
                  TR
                  {
                        TD { WIDTH="10%" text("Name : " )  }
                        TD { Input { type = "text" } }
                  }
                  TR
                  {
                        TD { WIDTH="10%" text("Email : " ) }
                        TD { Input { type = "text" } }
                  }
                  TR
                  {
                        TD { WIDTH="10%" text("Password : " ) }
                        TD { Input { type = "password" } }
                  }
                  TR
                  {

                        TD { WIDTH="10%" text("Notes") }
                        TD { TextArea { width="100%" rows = 10  cols = 10
                                        text("type text here...") } }
                  }
                  TR
                  {
                        TD { WIDTH="10%" text("Gender") }
                        TD {
                          select
                           {
                                 width = "100%"
                                 option { text("Male") }
                                 option { text("Female") }
                           }
                        }
                  }
                  TR
                  {
                        TD {   WIDTH="10%" text("Role") }
                        TD
                        {
                          select
                          {
                                 multiple = "multiple"
                                 width    = "100%"
                                 option { text("student") }
                                 option { text("admin") }
                           }
                        }
                  }
                }
                Input { type = "submit" value = "send" }
                Image { src="upload/profile1.jpg" alt="profile"}
                Input { type = "checkbox" value = "Old Member"} text("old member")
                Input { type = "range" min=1 max=100}
                Input { type = "number" min=1 max=100}
                Input { type = "radio" color="black" name="one"
                        value = "one"} text("one")
          }
        }
        div
        {
          color = "white"
          backgroundcolor = "blue"
          width = "100%"
          UL
          {
                LI { TEXT("ONE") }
                LI { TEXT("TWO") }
                LI { TEXT("THREE") }
          }
        }
        div
        {
          audio
          {
                src = "horse.ogg"
                type = "audio/ogg"
          }

          video
          {
                 width = 320
                 height = 240
                 src = "movie.mp4"
                 type = "video/mp4"
          }

          Input
          {
                type = "color"
                value = "#ff0000"
                onchange = "clickColor(0, -1, -1, 5)"
          }
        }
  }

スクリーンショット:

HtmlPage クラス

このクラスは標準出力を経由せずに HTML ドキュメントを作成します。

ウェブアプリケーションだけで WebLib を使うときの代用になります。

また、コンソール、 GUI、モバイル用のアプリケーションでも使えます。

用例:

load "stdlib.ring"
load "weblib.ring"

import System.Web

func main

        mypage = new HtmlPage {
                h1 { text("Customers Report") }
                Table
                {
                          style = stylewidth("100%") + stylegradient(4)
                          TR
                          {
                                TD { WIDTH="10%" text("Customers Count : " )  }
                                TD { text (100) }
                          }
                }

                Table
                {
                          style = stylewidth("100%") + stylegradient(26)
                          TR
                          {
                                style = stylewidth("100%") + stylegradient(24)
                                TD { text("Name " )  }
                                TD { text("Age" ) }
                                TD { text("Country" ) }
                                TD { text("Job" ) }
                                TD { text("Company" ) }
                          }
                          for x =  1 to 100
                                TR
                                {
                                        TD { text("Test" )  }
                                        TD { text("30" ) }
                                        TD { text("Egypt" ) }
                                        TD { text("Sales" ) }
                                        TD { text("Future" ) }
                                }
                          next
                }

        }

        write("report.html",mypage.output())

関数版 Bootstrap ライブラリの用法

この用例は HTML ページ生成時に Bootstrap JavaScript ライブラリを使います。

#!ring -cgi
Load "weblib.ring"
Import System.Web

Func Main
  new BootstrapPage {
        divstart([ :class = "container" ])
           divstart([ :class = "jumbotron"  ])
                h1("Bootstrap Page")
          divend()
          divstart([ :class = :row ])
                divstart([ :class = "col-sm-4" ])
                  h3("Welcome to the Ring programming language")
                  p([ :text = "Using a scripting language is very fun!" ])
                divend()
                divstart([ :class = "col-sm-4" ])
                  h3("Welcome to the Ring programming language")
                  p([ :text = "using a scripting language is very fun!" ])
                divend()
                divstart([ :class = "col-sm-4" ])
                  h3("Welcome to the Ring programming language")
                  p([ :text = "using a scripting language is very fun!" ])
                divend()
          divend()
        divend()
  }

スクリーンショット:

オブジェクト版 Bootstrap ライブラリの用法

この用例では、 HTML ページの生成時に Bootstrap JavaScript ライブラリを使います。

HTML 要素の生成関数ではなくオブジェクトを使います。

#!ring -cgi
Load "weblib.ring"
Import System.Web

Func Main
  BootStrapWebPage()
  {
        div
        {
          classname = :container
          div
          {
                classname = :jumbotron
                H1 {   text("Bootstrap Page")   }
          }
          div
          {
                classname = :row
                for x = 1 to 3
                  div
                  {
                        classname = "col-sm-4"
                        H3 { html("Welcome to the Ring programming language") }
                        P  { html("Using a scripting language is very fun!") }
                  }
                next
          }
          div
          {
                classname = :row
                div
                {
                  classname = "col-sm-4"
                  Button
                  {
                        classname = "btn btn-info btn-lg"
                        datatoggle= "modal"
                        datatarget = "#myModal"
                        text("Open Large Modal")
                  }
                }
                div
                {
                  classname = "col-sm-4"
                  Button {  classname = "btn btn-default btn-lg" text("default") }
                  Button {  classname = "btn btn-primary btn-md" text("primary") }
                  Button {  classname = "btn btn-sucess btn-sm"  text("sucess") }
                  Button {  classname = "btn btn-info btn-xs"    text("info") }
                  Button {  classname = "btn btn-warning"        text("warning") }
                  Button {  classname = "btn btn-danger"         text("danger") }
                  Button {  classname = "btn btn-link"           text("link") }
                }
                div
                {
                  classname = "col-sm-4"
                  Button {  classname = "btn btn-default btn-block" text("default") }
                  Button {  classname = "btn btn-primary btn-block" text("primary") }
                  Button {  classname = "btn btn-sucess btn-block"  text("sucess") }
                  Button {  classname = "btn btn-info btn-block"    text("info") }
                  Button {  classname = "btn btn-warning btn-block" text("warning") }
                  Button {  classname = "btn btn-danger btn-block"  text("danger") }
                  Button {  classname = "btn btn-link btn-block"    text("link") }
                }
                div
                {
                  classname = "col-sm-4"
                  div { classname = "btn-group"
                        button {  classname="btn btn-primary" text("one") }
                        button {  classname="btn btn-primary" text("two") }
                        button {  classname="btn btn-primary" text("three") }
                  }
                }
                div
                {
                  classname = "col-sm-4"
                  div { classname = "btn-group btn-group-lg"
                        button {  classname="btn btn-primary" text("one") }
                        button {  classname="btn btn-primary" text("two") }
                        button {  classname="btn btn-primary" text("three") }
                  }
                }
                div
                {
                  classname = "col-sm-4"
                  div {
                        classname = "btn-group-vertical btn-group-lg"
                        button {  classname="btn btn-primary" text("one") }
                        button {  classname="btn btn-primary" text("two") }
                        button {  classname="btn btn-primary" text("three") }
                  }
                }
          }
          div { classname="modal fade" id="myModal" role="dialog"
                div { classname = "modal-dialog modal-lg"
                  div { classname="modal-content"
                        div { classname="modal-header"
                          button {  classname="close" datadismiss="modal"
                                html("&times")
                          }
                          h4 {  classname="modal-title"
                                text("Modal Header")
                          }
                        }
                        div { classname = "modal-body"
                          p { text("This is a large model.") }
                        }
                        div { classname="modal-footer"
                          button { classname = "btn btn-default" datadismiss="modal"
                                text("close")
                          }
                        }
                  }
                }
          }
        }
  }

スクリーンショット:

MVC 版 CRUD の用例

この用例では、 weblib.ring と datalib.ring を使います。

datalib.ring には MVC パターンでデータベースアプリケーションを作成するためのクラスがあります。

この用例では SalaryController クラスからオブジェクトを作成して Routing メソッドを呼び出します。

ページの基本的な URL を保持するために変数 website を定義します。

ModelBase クラスから SalaryModel クラスを作成する時に、テーブル salary が開かれ model クラスでカラムデータが属性として定義されます。

SalaryView クラスは、変換用の SalaryLanguageEnglish クラスからオブジェクトを作成します。

AddFuncScript メソッドはフォームへレコードデータを追加、または修正で使います。

FormViewContent メソッドはフォームへレコードを追加、または修正時にコントロールの決定で使います。

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"
Import System.Web

website = "ex24.ring"

New SalaryController { Routing() }

Class SalaryModel from ModelBase

Class SalaryController From ControllerBase

Class SalaryView From ViewBase

  oLanguage = new SalaryLanguageEnglish

  Func AddFuncScript oPage,oController
        return   oPage.scriptfuncajax("myadd",oController.cMainURL+
                 oController.cOperation+"=add","mysubpage")

  Func FormViewContent oController,oTranslation,oPage
        return [
                        [ oTranslation.aColumnsTitles[2], "textbox", "name",
                          oController.oModel.Name, oPage.stylewidth("100%")    ],
                        [ oTranslation.aColumnsTitles[3], "textbox", "salary",
                          oController.oModel.Salary, oPage.stylewidth("50%") ]
                   ]

Class SalaryLanguageEnglish
  cTitle = "Salary Table"
  cBack = "back"
  aColumnsTitles = ["ID","Name","Salary"]
  cOptions = "Options"
  cSearch = "Search"
  comboitems = ["Select Option...","Edit","Delete"]
  cAddRecord = "Add Record"
  cEditRecord = "Edit Record"
  cRecordDeleted = "Record Deleted!"
  aMovePages = ["First","Prev","Next","Last"]
  cPage = "Page"
  cOf = "of"
  cRecordsCount = "Records Count"
  cSave = "Save"
  temp = new page
  cTextAlign = temp.StyleTextRight()
  cNoRecords = "No records!"

スクリーンショット:

ユーザの登録とログイン

ユーザ名、および電子メールなど利用者のデータを扱うためにユーザクラス (Model, View および Controller) があります。

このコードは ex25_users.ring として収録しています。

Class UsersModel from ModelBase
  cSearchColumn = "username"

Class UsersController From ControllerBase
  aColumnsNames = ["id","username","email"]

  Func UpdateRecord
        oModel.id = aPageVars[cRecID]
        oModel.updatecolumn("username", aPageVars[:username] )
        oModel.updatecolumn("email", aPageVars[:email] )
        oView.UpdateView(self)

Class UsersView from ViewBase

  oLanguage = new UsersLanguageEnglish

  Func AddFuncScript oPage,oController
        return   oPage.scriptfunc("myadd",oPage.scriptredirection("ex26.ring"))

  Func FormViewContent oController,oTranslation,oPage
        return [
                        [oTranslation.aColumnsTitles[2],"textbox","username",
                        oController.oModel.UserName,oPage.stylewidth("100%")],
                        [oTranslation.aColumnsTitles[3],"textbox","email",
                        oController.oModel.Email,oPage.stylewidth("50%")]
                   ]

Class UsersLanguageEnglish
  cTitle = "Users Table"
  cBack = "back"
  aColumnsTitles = ["ID","User Name","Email"]
  cOptions = "Options"
  cSearch = "Search"
  comboitems = ["Select Option...","Edit","Delete"]
  cAddRecord = "Add Record"
  cEditRecord = "Edit Record"
  cRecordDeleted = "Record Deleted!"
  aMovePages = ["First","Prev","Next","Last"]
  cPage = "Page"
  cOf = "of"
  cRecordsCount = "Records Count"
  cSave = "Save"
  temp = new page
  cTextAlign = temp.StyleTextRight()
  cNoRecords = "No records!"

ファイル ex25.ring では ex25_users.ring を読み込み後に UsersController クラスからオブジェクトを作成します。

作成されたオブジェクトで routing メソッドを呼び出します。

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"
Load "ex25_users.ring"

Import System.Web
website = "ex25.ring"
New UsersController { Routing() }

スクリーンショット:

このコードは登録ページを示しています。

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"
Import System.Web

website = "ex26.ring"

new page {
  boxstart()
        text( "Register")
        newline()
  boxend()
  divstart([:style = stylegradient(6) + stylesize("100%","95%") ])
  link([ :url = website, :title = "back" , :style = stylecolor("white")])
  newline()
  divstart([ :style= styledivcenter("500","160") + stylegradient(52) ])
  formpost("ex27.ring")
        tablestart([ :Style =    stylemarginleft("2%") + stylemargintop("2%") +
                                 stylewidth("90%") ])
          rowstart([])
                cellstart([:style = stylewidth("20%") + styleheight(30)])
                  text("User Name")
                cellend()
                cellstart([ :style = stylewidth("80%")  ])
                  textbox([:name = "username", :style = stylewidth("100%")])
                cellend()
          rowend()
          rowstart([])
                cellstart([ :Style = styleheight(30)])
                  text("Password")
                cellend()
                cellstart([])
                  textbox([:name = "password" , :type = "password"])
                cellend()
          rowend()
          rowstart([])
                cellstart([ :style = styleheight(30)])
                  text("Email")
                cellend()
                cellstart([])
                  textbox([:name = "email" , :style = stylewidth("100%")])
                cellend()
          rowend()
          rowstart([])
                cellstart([ :style = styleheight(30)])
                cellend()
                cellstart([ :style = styleheight(30)])
                  submit([:value = "Register"  ])
                cellend()
          rowend()
        tableend()
  formend()
  divend()
  divend()
}

スクリーンショット:

登録ページの応答

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"
Load "ex25_users.ring"

Import System.Web

oUser = new UsersModel
oUser.Connect()
if oUser.findwith("username",aPageVars["username"])
        new page {
                text("The user name is already registered")
        }
        return
ok
if oUser.findwith("email",aPageVars["email"])
        new page {
                text("This email is already registered")
        }
        return
ok

aPageVars["salt"] = str2hex(RandBytes(32))
aPageVars["pwhash"] = sha256(aPagevars["password"]+aPageVars["salt"])
aPageVars["sessionid"] = str2hex(randbytes(32))
oUser.Insert()
new page {
        cookie("sessionid",aPageVars["sessionid"])
        text("New User Created!")
        newline()
        text("User Name : " + aPageVars["username"])
        newline()
}
oUser.Disconnect()

このコードはログインページを示しています。

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"

Import System.Web

website = "ex28.ring"

new page {
  boxstart()
        text( "Login")
        newline()
  boxend()
  divstart([:style = stylegradient(6) + stylesize("100%","95%") ])
  link([ :url = website, :title = "back" , :style = stylecolor("white")])
  newline()
  divstart([ :style= styledivcenter("500","130") + stylegradient(52) ])
  formpost("ex29.ring")
        tablestart([ :Style =   stylemarginleft("2%") + stylemargintop("2%") +
                                stylewidth("90%") ])
          rowstart([])
                cellstart([:style = stylewidth("20%") + styleheight(30)])
                  text("User Name")
                cellend()
                cellstart([ :style = stylewidth("80%") ])
                  textbox([:name = "username", :style = stylewidth("100%")])
                cellend()
          rowend()
          rowstart([])
                cellstart([ :style = styleheight(30)])
                  text("Password")
                cellend()
                cellstart([])
                  textbox([:name = "password" , :type = "password"])
                cellend()
          rowend()
          rowstart([])
                cellstart([ :style = styleheight(30) ])
                cellend()
                cellstart([])
                  submit([:value = "Login"  ])
                cellend()
          rowend()
        tableend()
  formend()
  divend()
  divend()
}

スクリーンショット:

ログインページの応答

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"
Load "ex25_users.ring"

Import System.Web

oUser = new UsersModel
oUser.Connect()
lResult = oUser.FindWith("username",aPageVars["username"])
new page {
        if lResult
                if sha256(aPagevars["password"]+oUser.Salt) = oUser.pwhash
                        text ("Correct Password!")
                        aPageVars["sessionid"] = str2hex(randbytes(32))
                        oUser.UpdateColumn("sessionid",aPageVars["sessionid"])
                        cookie("sessionid",aPageVars["sessionid"])
                else
                        text ("Bad password!")
                ok
        else
                text("Bad User Name!")
        ok
}
oUser.Disconnect()

このコードはユーザのログインが必要か確認するためのものです。

#!ring -cgi
Load "weblib.ring"
Load "datalib.ring"
Load "ex25_users.ring"

Import System.Web

oUser = new UsersModel
oUser.Connect()
lResult = oUser.FindWith("sessionid",aPageVars["sessionid"])
new page {
        if lResult
                text("User Name : " + oUser.username )
        else
                text("Please Login First!")
        ok
}
oUser.Disconnect()

Database, ModelBase と ControllerBase クラス

datalib.ring からコードの一部を示します。

このコードでは Database, ModelBase と ControllerBase クラスです。

Import System.Web

Class Database

  cServer = "localhost"
  cUserName = "root"
  cPassword = "root"
  cDatabase = "mahdb"

  Func Connect

        con = mysql_init()
        mysql_connect(con, cServer, cUserName, cPassWord,cDatabase)

  Func Disconnect

        mysql_close(con)

  Func Query cQuery

        mysql_query(con,cQuery)

  Func QueryResult

        return mysql_result(con)

  Func QueryResultWithColumns
        # カラム名＋クエリの結果を返します。
        return mysql_result2(con)

  Func QueryValue
        aResult = mysql_result(con)
        if islist(aResult) and len(aResult) >= 1
          aResult = aResult[1]
          if len(aResult) >= 1
                return aResult[1]
          ok
        ok
        return 0

  Func EscapeString x
        if isstring(x)
          return MySQL_Escape_String(con,x)
        else
          return MySQL_Escape_String(con,string(x))
        ok

  Private
        con = NULL

Class ModelBase from Database

  cTableName = ""
  cSearchColumn = "name"
  aColumns = []
  aQueryResult = []
  ID = 0

  # クラス名からテーブル名を設定します。
  classname = lower(classname(self))
  if right(classname,5) = :model
        cTablename = left(classname,len(classname)-5)
  ok

  Func Insert

        cValues = ""
        for x in aColumns
          cValues += "'" + EscapeString(aPageVars[x]) + "',"
        Next
        cValues = left(cValues,len(cValues)-1)  # 末尾のカンマを削除
        cColumns = ""
        for x in aColumns
          cColumns += x + ","
        next
        cColumns = left(cColumns,len(cColumns)-1)
        query("insert into " + cTableName + "("+cColumns+") values (" +
                 cValues + ")" )

  Func Update nID

        cStr = ""
        for x in aColumns
          cStr += x + " = '" + EscapeString(aPageVars[x]) + "' , "
        # カンマの後にスペースは必要
        Next
        cStr = left(cStr,len(cStr)-2)
        query("update " + cTableName + " set " + cStr + " where id = " + nID )

  Func UpdateColumn cColumn,cValue
        query("update " + cTableName + " set " + cColumn + " = '" +
        EscapeString(cValue) + "' where id = " + self.ID )

  Func Count cValue

        query("SELECT count(*) FROM " + cTableName +
                 " where "+cSearchColumn+" like '" + EscapeString(cValue) + "%'")
        return queryValue()

  Func Read nStart,nRecordsPerPage

        query("SELECT * FROM "+ cTableName+" limit " + EscapeString(nStart) + "," +
        EscapeString(nRecordsPerPage) )
        aQueryResult = queryResult()

  Func Search cValue,nStart,nRecordsPerPage

        query("SELECT * FROM "+ cTableName+" where "+cSearchColumn+" like '" +
        EscapeString(cValue) + "%'" +
          " limit " + EscapeString(nStart) + "," + EscapeString(nRecordsPerPage) )
        aQueryResult = queryResult()

  Func Find nID

        query("select * from " + cTableName + " where id = " + EscapeString(nID) )
        aResult = queryResult()[1]
        # オブジェクトの属性から配列へ結果を移動
        ID = nID
        cCode = ""
        for x = 2 to len(aResult)
          cCode += aColumns[x-1] + " = hex2str('" + str2hex(aResult[x]) + "')" + nl
        next
        eval(cCode)

  Func FindWith cColumn,cValue

        query("select * from " + cTableName + " where "+cColumn+" = '" +
        EscapeString(cValue) + "'" )
        aResult = queryResult()
        if len(aResult) > 0
          aResult = aResult[1]
        else
          return 0
        ok
        # オブジェクトの属性から配列へ結果を移動
        ID = aResult[1]
        cCode = ""
        for x = 2 to len(aResult)
          cCode += aColumns[x-1] + " = hex2str('" + str2hex(aResult[x]) + "')" + nl
        next
        eval(cCode)
        return 1

  Func Delete ID

        query("delete from " + cTableName + " where id = " + EscapeString(ID) )

  Func Clear

        cCode = ""
        for x in aColumns
          cCode += x + ' = ""' + nl
        next
        eval(cCode)

  Func LoadModel

        # カラム配列の作成
        query("SELECT * FROM "+ cTableName + " limit 0,1")
        aQueryResult = QueryResultWithColumns()[1]
        for x = 2 to len(aQueryResult)
          aColumns + lower(trim(aQueryResult[x]))
        next

        # カラムごとの属性を作成
        for x in aColumns
          addattribute(self,x)
        next

  Func Connect

        Super.Connect()
        if nLoadModel = 0
          nLoadModel = 1
          LoadModel()
        ok

  private

        nLoadModel = 0

Class ControllerBase

  nRecordsPerPage = 5
  nRecordsCount = 0
  nPagesCount = 0
  nActivePage = 0

  # oView = new tablenameView と oModel = new tablename.Model の動的生成
  classname = lower(classname(self))
  if right(classname,10)  = :controller
        tablename = left(classname,len(classname)-10)
        cCode = "oView = new " + tablename+"View" + nl
        cCode += "oModel = new " + tablename+"Model" + nl
        eval(cCode)
        oModel.connect()
  ok

  cSearchName = "searchname"
  cPart = "part"
  cPageError = "The page number is not correct"
  cLast = "last"
  cOperation = "operation"
  cRecID = "recid"

  aColumnsNames = ["id"]
  for t in oModel.aColumns
        aColumnsNames + t
  next

  cMainURL = website + "?"

  func Routing

        switch      aPageVars[cOperation]
        on NULL     showtable()
        on :add     addrecord()
        on :save    saverecord()
        on :delete  deleterecord()
        on :edit    editrecord()
        on :update  updaterecord()
        off

  func ShowTable

        nRecordsCount = oModel.Count( aPageVars[cSearchName] )

        nPagesCount = ceil(nRecordsCount / nRecordsPerPage)

        if aPageVars[cPart] = cLast
          aPageVars[cPart] = string(nPagesCount)
        ok

        nActivePage = number(aPageVars[cPart])
        if nActivePage = 0 nActivePage = 1 ok

        if ( nActivePage > nPagesCount ) and nRecordsCount > 0
          ErrorMsg(cPageError)
          return
        ok

        nStart = (nActivePage-1)*nRecordsPerPage

        if aPageVars[cSearchName] = NULL
          oModel.Read( nStart,nRecordsPerPage )
        else
          oModel.Search( aPageVars[cSearchName],nStart,nRecordsPerPage )
        ok

        oView.GridView(self)

  func AddRecord

        oModel.clear()
        oView.FormViewAdd(Self,:save,false) # false ならば レコード ID はない

  func SaveRecord

        oModel.Insert()
        oView.SaveView(self)

  func EditRecord

        oModel.Find( aPageVars[cRecID] )
        oView.FormViewEdit(Self,:update,true) # true ならば レコード ID はある

  func UpdateRecord

        oModel.update( aPageVars[cRecID] )
        oView.UpdateView(self)

  func DeleteRecord

        oModel.Delete( aPageVars[cRecID] )
        oView.DeleteView()

  func braceend

        oModel.Disconnect()

WebLib API

ウェブライブラリ関数、クラスとメソッドについて示します。

関数

仮引数

解説

LoadVars

なし

aPageVars リストにリクエストの仮引数とクッキーを保存します。

WebPage

なし

WebPage クラスから新しいオブジェクトを作成します。

BootStrapWebPage

なし

BootStrapWebPage クラスから新しいオブジェクトを作成します。

HTMLSpecialChars

cString

HTML と等価な特殊文字をエンコードします。

Template

cFile,oObject

{ } で oObject へアクセス後に cFile にある Ring コードを実行します。

Alert

cMessage

cMessage を表示するために JavaScript Alert() で HTML ページを生成します。

HTML2PDF

cString

HTML 文字列 (cString) から PDF ファイルの生成と表示を行います。

このようなクラスが Package System.Web にあります。

クラス名

説明

Application

エンコーディング、デコーディング、クッキーなど様々なメソッドがあります。

Page

HTML ページを生成するためのメソッドがあります。

ScriptFunctions

JavaScript 関数を生成するためのメソッドがあります。

StyleFunctions

CSS を生成するためのメソッドがあります。

PageBuffer

HTML ページをメモリへ生成します (出力を表示しません)。

HTML2PDF

HTML コードから PDF ファイルを生成します。

BootStrapPage

BootStrap ライブラリを使います。

WebPage

各要素のオブジェクトでページを生成しますす。

HtmlPage

WebPage と同様、標準出力への出力は行いますが表示はしません。

BootStrapWebPage

BootStrap ライブラリではオブジェクトによりページを生成します。

ObjsBase

page オブジェクトの親クラスです。

NewObjectsFunctions

ページまたは要素により、新しいオブジェクトを作成するためのメソッドです。

H1

HTML H1 のラップ

H2

HTML H2 のラップ

H3

HTML H3 のラップ

H4

HTML H4 のラップ

H5

HTML H5 のラップ

H6

HTML H6 のラップ

P

HTML P のラップ

Link

HTML link のラップ

NewLine

HTML NewLine のラップ

Div

HTML Div のラップ

Form

HTML Form のラップ

Input

HTML Input のラップ

TextArea

HTML TextArea のラップ

Select

HTML Select のラップ

Option

HTML Option のラップ

Image

HTML Image のラップ

UL

HTML UL のラップ

LI

HTML LI のラップ

Table

HTML Table のラップ

TR

HTML TR のラップ

TD

HTML TD のラップ

TH

HTML TH のラップ

Audio

HTML Audio のラップ

Video

HTML Video のラップ

Nav

HTML Nav のラップ

Span

HTML Span のラップ

Button

HTML Button のラップ

Application クラス

メソッド

仮引数

説明

DecodeString

cString

リクエストの仮引数をデコードします。

Decode

cString

マルチパートまたはフォームデータのデコードをします。

GetFileName

aArray,cVar

cVarで aArray にあるファイル名を取得します。

SetCookie

name,value,expires,path,domain,secure

クッキーの設定

Cookie

name,value

name および value のみでクッキーを設定します。

GetCookies

なし

クッキーの取得

URLEncode

cString

URL エンコード

ScriptLibs

なし

BootStrap などを JavaScript ライブラリへ追加します。

Print

なし

ページの内容を出力します。

Style

cStyle

ページの CSS の内容を cStyle へ追加します。

StartHTML

なし

ページの内容に HTTP ヘッダを追加します。

DecodeString メソッドは HTTP リクエストの仮引数を取得します。

ファイルのアップロードは Decode および GetFileName メソッドです。

クッキーの追加と読み取りは SetCookie, Cookie および GetCookies メソッドです。

StartHTML, ScriptsLibs, Style と Print メソッドはページの構造、および JavaScript/CSS の対応で使います。

HTML ページで使う URL のエンコードは URLEncode メソッドです。

Page クラス

メソッド

仮引数

説明

text

x

ページの内容へ HTMLSpecialChars(x) を追加します (文字列と数値を受け入れます)。

html

cString

ページの内容に HTML コードを追加します。

h1

x

<h1> ～ </h1> の間にページの内容 x を追加します。

h2

x

<h2> ～ </h2> の間にページの内容 x を追加します。

h3

x

<h3> ～ </h3> の間にページの内容 x を追加します。

h4

x

<h4> ～ </h4> の間にページの内容 x を追加します。

h5

x

<h5> ～ </h5> の間にページの内容 x を追加します。

h6

x

<h6> ～ </h6> の間にページの内容 x を追加します。

p

aPara

HTML <p> </p> の属性を取得するために aPara リストをハッシュとして使います。

NewLine

なし

ページの内容に <br /> を追加します。

AddAttributes

aPara

HTML の要素属性を aPara リストのハッシュとして変換します。

Link

aPara

HTML <a href> および </a> の属性を取得するために aPara リストをハッシュとして使います。

Image

aPara

HTML <img> の属性を取得するために aPara リストをハッシュとして使います。

Button

aPara

HTML <input type=”button”> の属性を取得するために aPara リストをハッシュとして使います。

ButtonLink

aPara

HTML <input type=”button”> は、リンク属性によりリンクをナビゲートするために使います。

Textbox

aPara

HTML <input type=”text”> の属性を取得するために aPara リストをハッシュとして使います。

Editbox

aPara

HTML <textarea> および </textarea> の属性を取得するために aPara を使います。

Combobox

aPara

HTML <select> は <option> でリスト項目の属性として使います。

Listbox

aPara

HTML <select multiple=’multiple’> は <option> で項目の属性として使います。

ulstart

aPara

HTML <ul>

ulend

aPara

HTML </ul>

listart

aPara

HTML <li>

liend

aPara

HTML </li>

List2UL

aList

Ring のリスト項目から項目をインクルードして HTML <ul> を生成します。

DivStart

aPara

HTML <div> の属性を取得するために aPara リストをハッシュとして使います。

NavStart

aPara

HTML <nav> の属性を取得するために aPara リストをハッシュとして使います。

SpanStart

aPara

HTML <span> の属性を取得するために aPara リストをハッシュとして使います。

BoxStart

なし

ページのヘッダとして使用するために黒色の背景の Div を生成します。

DivEnd

なし

HTML </div>

NavEnd

なし

HTML </nav>

SpanEnd

なし

HTML </span>

BoxEnd

なし

HTML </div> であり divend() と同じです。

FormStart

cAction

HTML <form> は cAction の action 属性または空値です。

FormPost

cAction

HTML <form method=”post”> は cAction の action 属性です。

FormEnd

なし

HTML </form>

Submit

aPara

HTML <input type=”submit”>

Hidden

cName,cValue

HTML <input type=”hidden”>

FormUpload

x

HTML のフォームであり、 method=”post” enctype=”multipart/form-data” および x = action

UploadFile

x

HTML <input type=”file”> および name = x

Video

aPara

HTML <video>

Audio

aPara

HTML <audio>

GetColor

aPara

配色の選択

Radio

aPara

HTML <input type=”radio”>

Checkbox

aPara

HTML <input type=”checkbox”>

Spinner

aPara

HTML <input type=”number”>

Slider

aPara

HTML <input type=”range”>

TableStart

aPara

HTML <table>

TableEnd

なし

HTML </table>

RowStart

aPara

HTML <tr>

RowEnd

なし

HTML </tr>

CellStart

aPara

HTML <td>

CellEnd

なし

HTML </td>

HeaderStart

aPara

HTML <th>

HeaderEnd

なし

HTML </th>

aPara にある page メソッドは属性と値を有するリストです。 aPara で下記の属性値を設定できます。

classname id name align style dir value onclick oncontextmenu ondblclick
onmousedown onmouseenter onmouseleave onmousemove onmouseover onmouseout
onmouseup onkeydown onkeypress onkeyup onabort onbeforeunload onerror
onhashchange onload onpageshow onpagehide onresize onscroll onunload
onblur onchange onfocus onfocusin onfocusout oninput oninvalid onreset
onsearch onselect onsubmit ondrag ondragend ondragenter ondragleave
ondragover ondragstart ondrop oncopy oncut onpaste onafterprint
onbeforeprint oncanplay oncanplaythrough ondurationchange onemptied
onended onloadeddata onloadedmetadata onloadstart onpause onplay
onplaying onprogress onratechange onseeked onseeking onstalled onsuspend
ontimeupdate onvolumechange onwaiting animationend animationiteration
animationstart transitionend onmessage onopen onmousewheel ononline
onoffline onpostate onshow onstorage ontoggle onwheel ontouchcancel
ontouchend ontouchmove ontouchstart color opacity background backgroundattachment
backgroundcolor backgroundimage backgroundposition backgroundrepeat backgroundclip
backgroundorigin backgroundsize border borderbottom borderbottomcolor
borderbottomleftradius borderbottomrightradius borderbottomstyle borderbottomwidth
bordercolor borderimage borderimageoutset borderimagerepeat borderimageslice
borderimagesource borderimagewidth borderleft borderleftcolor borderleftstyle
borderleftwidth borderradius borderright  borderrightcolor borderrightstyle
borderrightwidth borderstyle bordertop bordertopcolor bordertopleftradius
bordertoprightradius bordertopstyle bordertopwidth borderwidth boxdecorationbreak
boxshadow bottom clear clip display float height left margin marginbottom marginleft
marginright margintop maxheight maxwidth minheight minwidth overflow overflowx
overflowy padding paddingbottom paddingleft paddingright paddingtop position
right top visibility width verticalalign zindex aligncontent alignitems alignself
flex flexbasis flexdirection flexflow flexgrow flexshrink flexwrap justifycontent
order hangingpunctuation hyphens letterspacing linebreak lineheight overflowwrap
tabsize textalign textalignlast textcombineupright textindent textjustify
texttransform whitespace wordbreak wordspacing wordwrap textdecoration
textdecorationcolor textdecorationline textdecorationstyle textshadow
textunderlineposition @fontface @fontfeaturevalues font fontfamily fontfeaturesettings
fontkerning fontlanguageoverride fontsize fontsizeadjust fontstretch fontstyle
fontsynthesis fontvariant fontvariantalternates fontvariantcaps fontvarianteastasian
fontvariantligatures fontvariantnumeric fontvariantposition fontweight direction
textorientation unicodebidi writingmode bordercollapse borderspacing captionside
emptycells tablelayout counterincrement counterreset liststyle liststyleimage
liststyleposition liststyletype @keyframes animation animationdelay animationdirection
animationduration animationfillmode animationiterationcount animationname
animationplaystate animationtimingfunction backfacevisibility perspective
perspectiveorigin transform transformorigin transformstyle transition
transitionproperty transitionduration transitiontimingfunction transitiondelay
boxsizing content cursor imemode navdown navindex navleft navright navup
outline outlinecolor outlineoffset outlinestyle outlinewidth resize textoverflow
breakafter breakbefore breakinside columncount columnfill columngap columnrule
columnrulecolor columnrulestyle columnrulewidth columnspan columnwidth columns
widows orphans pagebreakafter pagebreakbefore pagebreakinside marks quotes
filter imageorientation imagerendering imageresolution objectfit objectposition
mask masktype mark markafter markbefore phonemes rest restafter restbefore
voicebalance voiceduration voicepitch voicepitchrange voicerate voicestress
voicevolume marqueedirection marqueeplaycount marqueespeed marqueestyle datatoggle
dataride datatarget dataslideto dataslide datadismiss dataplacement datacontent
datatrigger dataspy dataoffset dataoffsettop

ScriptFunctions クラス

このクラスには生成されたウェブページへ JavaScript コードを追加するためのメソッドがあります。

このクラスは Page クラスへ統合されており、このメソッドから page オブジェクトを使えます。

メソッド

仮引数

説明

Script

cCode

<script> ～ </script> の間に文字列として cCode を追加します。

ScriptRedirection

cURL

cURL へ window.location を設定します。

ScriptFunc

cFuncName,cCode

cCode を有する cFuncName 関数を定義します。

ScriptFuncAlert

cFuncName,cMsg

alert() 関数で cMsg を出力する cFuncName 関数を定義します。

ScriptFuncAjax

cFuncName,cLink,cDiv

cDiv へ cLink を読み込みために cFuncName 関数を定義します。

ScriptFuncClean

cFuncName,cDiv cDiv

を消去するために cFuncName 関数を定義します。

ScriptFuncSelect

cF,aL,cD,cR,cGR,cFC,nTO,cL1,cL2

グリッドレコードの編集・削除で使います。

ScriptScrollFixed

cDiv,nSize

Size = nSize で Div を固定するために cDiv を設定します。

StyleFunctions クラス

このクラスには生成されたウェブページへ CSS を追加するためのメソッドがあります。

ScriptFunctions など StyleFunctions クラスのメソッドは Page クラスへ統合されており、このメソッドから page オブジェクトを使えます。

メソッド

仮引数

説明

StyleFloatLeft

なし

float: left ; を返します。

StyleFloatRight

なし

float: right ; を返します。

StyleSizeFull

なし

width: 100% ; height: 100% ; を返します。

Stylecolor

x

“ color: ” + x + ” ; “ を返します。

Stylebackcolor

x

“ background-color: ” + x + ” ;” を返します。

StyleTextCenter

なし

“ text-align: center ;” を返します。

StyleTextRight

なし

“text-align: right ;” を返します。

StyleTextLeft

なし

“text-align: left ;” を返します。

StyleSize

x,y

“ width: ” + x + ” ; height: ” + y + ” ;” を返します。

StyleWidth

x

“ width: ” + x + ” ;” を返します。

StyleHeight

x

“ height: ” + x + ” ;” を返します。

StyleTop

x

“ top: ” + x + ” ;” を返します。

StyleLeft

x

“ Left: ” + x + ” ;” を返します。

StylePos

x,y

“ top: ” + x + ” ;” + ” Left: ” + y + ” ;” を返します。

StyleHorizontalCenter

なし

“ margin-right:auto ; margin-left:auto; “ を返します。

StyleMarginTop

x

“ margin-top: ” + x + ” ;” を返します。

StyleMarginRight

x

“ margin-right: ” + x + ” ;” を返します。

StyleMarginLeft

x

“ margin-left: ” + x + ” ;” を返します。

StyleDivCenter

nWidth,nHeight

ページの中央に Div を作成します。

StyleAbsolute

なし

“ position:absolute ;” を返します。

StyleFixed

なし

“ position:fixed ;” を返します。

StyleZIndex

x

“ z-index: ” + x + ” ;” を返します。

StyleFontSize

x

“ font-size: ” + x + ” ;” を返します。

StyleGradient

x

グラデーションの生成 (x の値は 1 から 60 まで)

StyleTable

なし

テーブルの属性を設定します。

StyleTableRows

id

テーブルの偶数、および奇数の横列へ交互に異なる色を設定します。

StyleTableNoBorder

なし

“ border-style: none;” を返します。

WebPage クラス

有効な WebPage オブジェクトの属性へアクセスするには括弧を使います。

以下の属性の中からひとつ括弧で選ぶと再度新しい属性を返します。

属性

説明

H1

HTML H1 のラップ

H2

HTML H2 のラップ

H3

HTML H3 のラップ

H4

HTML H4 のラップ

H5

HTML H5 のラップ

H6

HTML H6 のラップ

P

HTML P のラップ

Link

HTML link のラップ

NewLine

HTML NewLine のラップ

Div

HTML Div のラップ

Form

HTML Form のラップ

Input

HTML Input のラップ

TextArea

HTML TextArea のラップ

Select

HTML Select のラップ

Option

HTML Option のラップ

Image

HTML Image のラップ

UL

HTML UL のラップ

LI

HTML LI のラップ

Table

HTML Table のラップ

TR

HTML TR のラップ

TD

HTML TD のラップ

TH

HTML TH のラップ

Audio

HTML Audio のラップ

Video

HTML Video のラップ

Nav

HTML Nav のラップ

Span

HTML Span のラップ

Button

HTML Button のラップ

HtmlPage クラス

WebPage クラスと同じですが、このような違いがあります。

標準出力への出力は行いません。

出力の取得用に Output メソッドがあります。

文法:

output() ---> 文字列を出力

クラウド経由でのウェブアプリケーションの配布方法

Heroku における Ring ウェブアプリケーションの配布方法です。

はじめに

これは新規プロジェクトの作成方法、およびクラウドサービスである Heroku で Ring ウェブアプリケーションを配布する方法を解説するためのチュートリアルです。

デモ : http://testring.herokuapp.com/

プロジェクト : https://github.com/ring-lang/RingWebAppOnHeroku

Heroku ウェブサイト : https://www.heroku.com/

用法

このプロジェクトを Heroku へ配布するには

Heroku アカウントを作成します

Heroku アカウントを開きアプリケーションの新規作成をします

用例 : testring

注釈

自作アプリケーションでは、必ず唯一無二の名前を選んでください。

コマンドプロンプトを開いて、新規フォルダを作成します : MyApp

md MyApp

アプリケーションのフォルダを開きます

cd MyApp

このプロジェクトを Git でクローンします (カレントディレクトリへクローンするときは、末尾にドットを付けるのをお忘れなく)

git clone https://github.com/ring-lang/RingWebAppOnHeroku .

Heroku へログインします (電子メートアドレスとパスワードを入力します)

heroku login

heroku (リモート) へ Git プロジェクトを追加します

testring から自作アプリケーションの名前へ変更します

heroku git:remote -a testring

buildpacks (ビルトパックス) を設定します (こうすることで Heroku はプロジェクトへの対応方法を認識できるようになります)

heroku buildpacks:add --index 1 https://github.com/ring-lang/heroku-buildpack-apt
heroku buildpacks:add --index 2 https://github.com/ring-lang/heroku-buildpack-ring

プロジェクトのビルトと配布をします

git push heroku master

プロジェクトのテスト (ブラウザで行います)

heroku open

Ring ソースコードファイルとパーミッション

新規 Ring スクリプトを実行可能にするには Git で実行可能ファイルのパーミッションを設定します。

例えば、 myscript.ring を作成した場合は

git update-index --chmod=+x myscript.ring
git commit -m "Update file permission"

TortoiseGit の場合は、 Windows エクスプローラでファイルを選択して

右クリック ---> プロパティ ---> Git ---> 実行 (+x)

その後、コミットと配布が行われます！

Hello World プログラム

ファイル : ringapp/helloworld.ring

実行先 : http://testring.herokuapp.com/ringapp/helloworld.ring

#!/app/runring.sh -cgi

see "content-type: text/html" +nl+nl
see "Hello, World!" + nl

ファイル : ringapp/helloworld2.ring

実行先 : http://testring.herokuapp.com/ringapp/helloworld2.ring

#!/app/runring.sh -cgi
load "weblib.ring"
import System.Web
new page {
        text("Hello, World!")
}

アプリケーションのデータベース

アプリケーションを配布をする場合、そのまますべて動作します！

変更は不要ですが、実際はデータベースを使用するために、下記のファイルを更新してください。

データベースと相互作用する 2 本のスクリプトがあります (今回のクラウドでは PostgreSQL を使います)。

別のデータベースを使用する場合は、下記のファイルに記載されている接続文字列の更新が必要です。

ファイル: ringapp/database/newdb.ring (テーブルを一括作成するにはブラウザで実行します)

ファイル: ringapp/datalib.ring (Database クラス)

実プロジェクトでは、より優れたコードを記述できます (データベースは変更可能であるため)。

また、設定ファイルを作成できます (ある場所に接続文字列を記述するために)。

データベースサービス : https://www.heroku.com/postgres

配布後の更新

Git でコミット後に heroku へ push (プッシュ) します。

ファイル: 手軽にテストができるよう build.bat には下記のコマンドが記載されています。

git add .
git commit -m "Update RingWebAppOnHeroku"
git push heroku master
heroku open

ローカルテスト

ローカルテストを行うには Windows で Ring ノートパッドを使用します (ローカルの Apache ウェブサーバーで試験実行)

ringapp/index.ring ファイルの一行目を置換します:

#!ring -cgi

そして Ring ノートパッドから実行します (Ctrl+F6)

グラフィックスと 2D ゲームプログラミング (RingAllegro)

Ring アプリケーションでの Allegro ゲームプログラミング・ライブラリの用法です。

最初に gamelib.ring ファイルで Allegro 関数接続用の DLL ライブラリを読み込みます。

Load "allegro.rh"
if iswindows()
        LoadLib("ring_allegro.dll")
but ismacosx()
        LoadLib("libringallegro.dylib")
else
        LoadLib("libringallegro.so")
ok

gamelib.ring ファイルは allegro.rh ファイル (プログラムで利用する定数を記述したソースコードファイル) を Load 命令で実行します。

そして DLL ライブラリである“ring_allegro.dll” を LoadLib() 関数で読み込みます。

可搬性のあるコードを書くには gamelib.ring の変更を行い、 DLL/so ファイルの読み込み前にプラットフォームを確認します。

描画、アニメーションと入力

この用例は Allegro ライブラリを用いて描画処理や画面上にあるオブジェクトの移動、およびキーボートとマウスの入力を取得します。

Load "gamelib.ring"

al_init()
al_init_image_addon()

display = al_create_display(640,480)

al_show_native_message_box(display, "Hello", "Welcome",
                        "Using Allegro from the Ring programming language",
                        "", 0);

al_clear_to_color(al_map_rgb(0,0,255))

BOUNCER_SIZE = 40
bouncer_x = 10
bouncer_y = 20
bouncer = al_create_bitmap(BOUNCER_SIZE, BOUNCER_SIZE)
al_set_target_bitmap(bouncer)
al_clear_to_color(al_map_rgb(255,0,255))

for x = 1 to 30
        bouncer_x += x
        bouncer_y += x
        al_set_target_bitmap(al_get_backbuffer(display))
        al_clear_to_color(al_map_rgb(0,0,0))
        al_draw_bitmap(bouncer, bouncer_x, bouncer_y, 0)
        al_draw_bitmap(bouncer, 200+bouncer_x,200+ bouncer_y, 0)
        al_flip_display()
        al_rest(0.1)
next

al_clear_to_color(al_map_rgb(255,255,255))
image = al_load_bitmap("man2.jpg")
al_draw_bitmap(image,200,200,0)
al_flip_display()
al_rest(2)

event_queue = al_create_event_queue()
al_register_event_source(event_queue, al_get_display_event_source(display))

ev = al_new_allegro_event()
timeout = al_new_allegro_timeout()
al_init_timeout(timeout, 0.06)

FPS = 60
timer = al_create_timer(1.0 / FPS)
al_register_event_source(event_queue, al_get_timer_event_source(timer))
al_start_timer(timer)
redraw = true

SCREEN_W = 640
SCREEN_H = 480
BOUNCER_SIZE = 32
bouncer_x = SCREEN_W / 2.0 - BOUNCER_SIZE / 2.0
bouncer_y = SCREEN_H / 2.0 - BOUNCER_SIZE / 2.0
bouncer_dx = -4.0
bouncer_dy = 4.0

al_install_mouse()
al_register_event_source(event_queue, al_get_mouse_event_source())

al_install_keyboard()
al_register_event_source(event_queue, al_get_keyboard_event_source())

KEY_UP = 1
KEY_DOWN = 2
KEY_LEFT = 3
KEY_RIGHT = 4
Key = [false,false,false,false]

while true
        al_init_timeout(timeout, 0.06)
        al_wait_for_event_until(event_queue, ev, timeout)
        switch al_get_allegro_event_type(ev)
        on ALLEGRO_EVENT_DISPLAY_CLOSE
                exit
        on ALLEGRO_EVENT_TIMER

                # アニメーション
                if bouncer_x < 0 or bouncer_x > SCREEN_W - BOUNCER_SIZE
                        bouncer_dx = -bouncer_dx
                ok

                if bouncer_y < 0 or bouncer_y > SCREEN_H - BOUNCER_SIZE
                        bouncer_dy = -bouncer_dy
                ok

                bouncer_x += bouncer_dx
                bouncer_y += bouncer_dy

                # キーボード
                if key[KEY_UP] and bouncer_y >= 4.0
                        bouncer_y -= 4.0
                ok
                if key[KEY_DOWN] and bouncer_y <= SCREEN_H - BOUNCER_SIZE - 4.0
                        bouncer_y += 4.0
                ok
                if key[KEY_LEFT] and bouncer_x >= 4.0
                        bouncer_x -= 4.0
                ok
                if key[KEY_RIGHT] and bouncer_x <= SCREEN_W - BOUNCER_SIZE - 4.0
                        bouncer_x += 4.0
                ok

                redraw = true

        on ALLEGRO_EVENT_MOUSE_AXES
                bouncer_x = al_get_allegro_event_mouse_x(ev)
                bouncer_y = al_get_allegro_event_mouse_y(ev)
        on ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY
                bouncer_x = al_get_allegro_event_mouse_x(ev)
                bouncer_y = al_get_allegro_event_mouse_y(ev)
        on ALLEGRO_EVENT_MOUSE_BUTTON_UP
                exit
        on ALLEGRO_EVENT_KEY_DOWN
                switch al_get_allegro_event_keyboard_keycode(ev)
                        on ALLEGRO_KEY_UP
                                key[KEY_UP] = true
                        on ALLEGRO_KEY_DOWN
                                key[KEY_DOWN] = true
                        on ALLEGRO_KEY_LEFT
                                key[KEY_LEFT] = true
                        on ALLEGRO_KEY_RIGHT
                                key[KEY_RIGHT] = true
                off
        on ALLEGRO_EVENT_KEY_UP
                switch al_get_allegro_event_keyboard_keycode(ev)
                        on ALLEGRO_KEY_UP
                                key[KEY_UP] = false
                        on ALLEGRO_KEY_DOWN
                                key[KEY_DOWN] = false
                        on ALLEGRO_KEY_LEFT
                                key[KEY_LEFT] = false
                        on ALLEGRO_KEY_RIGHT
                                key[KEY_RIGHT] = false
                        on ALLEGRO_KEY_ESCAPE
                                exit
                off
        off
        if redraw and al_is_event_queue_empty(event_queue)
                redraw = false
                al_clear_to_color(al_map_rgb(0,0,0))
                al_draw_bitmap(bouncer, bouncer_x, bouncer_y, 0)
                al_flip_display()
        ok
        callgc()
end

al_destroy_timer(timer)
al_destroy_allegro_event(ev)
al_destroy_allegro_timeout(timeout)
al_destroy_event_queue(event_queue)
al_destroy_bitmap(bouncer)
al_destroy_bitmap(image)
al_destroy_display(display)

注釈

前述の用例では While/End ループの内側で callgc() 関数 (Ring 関数) を呼び出して、強制的にガベージコレクターを実行しています。

プログラムの実行結果:

まず、プログラムでメッセージボックスを表示します。

つぎに、画面上で二個の長方形を移動します。

そして、画面上に画像を表示します。

最後に、画面上で常に移動している四角形を表示して、四角形はマウスとキーボードで操作できるようにします。

TrueType フォントの用法

この用例は Allegro 採用ゲームでの TrueType フォント (*.ttf) の用法を解説しています。

Load "gamelib.ring"

al_init()
al_init_font_addon()
al_init_ttf_addon()

display = al_create_display(800,600)

al_clear_to_color(al_map_rgb(0,0,255))
font = al_load_ttf_font("pirulen.ttf",14,0 )
al_draw_text(font, al_map_rgb(255,255,255), 10, 10,ALLEGRO_ALIGN_LEFT,
         "Welcome to the Ring programming language")
al_flip_display()
al_rest(2)

al_destroy_display(display)

スクリーンショット:

音声ファイルの再生

この用例は音声ファイルを再生します。

Load "gamelib.ring"

al_init()
al_install_audio()
al_init_acodec_addon()
al_reserve_samples(1)

sample = al_load_sample( "footstep.wav" )

sampleid = al_new_allegro_sample_id()
al_play_sample(sample, 1.0, 0.0,1.0,ALLEGRO_PLAYMODE_LOOP,sampleid)

display = al_create_display(640,480)
al_clear_to_color(al_map_rgb(0,0,255))
al_flip_display()
al_rest(10)

al_destroy_allegro_sample_id(sampleid)
al_destroy_sample(sample)
al_destroy_display(display)

al_exit()

画像の寸法変更と回転

この用例は画像の回転と表示を行います。

Load "gamelib.ring"

al_init()
al_init_image_addon()

display = al_create_display(640,480)
al_set_target_bitmap(al_get_backbuffer(display))
al_clear_to_color(al_map_rgb(255,255,255))

image = al_load_bitmap("man2.jpg")
al_draw_rotated_bitmap(image,0,0,250,250,150,0)
al_draw_scaled_bitmap(image,0,0,250,250,20,20,400,400,0)

al_flip_display()
al_rest(2)

al_destroy_bitmap(image)
al_destroy_display(display)

スクリーンショット:

透過画像の表示

この用例は画像 (白色の背景) に別の画像を重ね合わせて表示します。

Load "gamelib.ring"

al_init()
al_init_image_addon()

display = al_create_display(640,480)
imageback = al_load_bitmap("palace.jpg")
al_draw_bitmap(imageback,0,0,0)

image = al_load_bitmap("man4.png")
al_convert_mask_to_alpha(image,al_map_rgb(255,255,255))
al_draw_bitmap(image,0,0,0)
al_flip_display()
al_rest(10)

al_destroy_bitmap(image)
al_destroy_display(display)

スクリーンショット:

スレッドの用法

この用例は Allegro ライブラリにおけるスレッドの用法です。

Load "gamelib.ring"

o1 = new mythreads

Func Main
        al_init()
        for k = 1 to 5
                al_create_thread("o1.thread1()")
                al_create_thread("o1.thread2()")
                al_create_thread("o1.thread3()")
        next
        al_rest(2)

Class Mythreads

        cAppName = "Threads Application"

        Func Thread1
                for x = 1 to 5
                        see x + nl
                next
                See 'Thread(1) : Application Name : '  + cAppName + nl

        Func Thread2
                for x = 1 to 5
                        see '*****' + x + nl
                next
                See 'Thread(2) : Application Name : '  + cAppName + nl

        Func Thread3
                for x = 1 to 5
                        see '!!!!' + x + nl
                next
                See 'Thread(3) : Application Name : '  + cAppName + nl

実行結果:

1
2
3
4
5
Thread(1) : Application Name : Threads Application
*****1
*****2
*****3
*****4
*****5
Thread(2) : Application Name : Threads Application
!!!!1
!!!!2
!!!!3
!!!!4
!!!!5
Thread(3) : Application Name : Threads Application
1
2
3
4
5
Thread(1) : Application Name : Threads Application
!!!!1
!!!!2
!!!!3
!!!!4
!!!!5
Thread(3) : Application Name : Threads Application
*****1
*****2
*****3
*****4
*****5
Thread(2) : Application Name : Threads Application
*****1
*****2
*****3
*****4
*****5
Thread(2) : Application Name : Threads Application
!!!!1
!!!!2
!!!!3
!!!!4
!!!!5
Thread(3) : Application Name : Threads Application
1
2
3
4
5
Thread(1) : Application Name : Threads Application
*****1
*****2
*****3
*****1
*****4
*****2
!!!!1
*****5
*****3
1
!!!!2
Thread(2) : Application Name : Threads Application
1
*****4
!!!!1
2
!!!!3
!!!!4
*****5
!!!!2
3
2
!!!!5
Thread(2) : Application Name : Threads Application
!!!!3
4
3
Thread(3) : Application Name : Threads Application
!!!!4
5
4
!!!!5
Thread(1) : Application Name : Threads Application
5
Thread(3) : Application Name : Threads Application
Thread(1) : Application Name : Threads Application

デモプロジェクト - 2D ゲームエンジン

シンプルな 2D ゲームエンジンの作成を通じて、多種多様なプログラミングパラダイムをプロジェクトで併用する方法です。

これでデスクトップ、またはモバイル用 2D ゲームを作成できます。

プロジェクトの階層

このような階層をプロジェクトで使用しています。

ゲームの階層 (宣言型プログラミング)

ゲームエンジンのクラス (オブジェクト指向プログラミングのパラダイム)

グラフィックスライブラリへのインタフェース (手続き型プログラミング)

グラフィックスライブラリへのバインディング (RingAllegro と RingLibSDL)

グラフィックスライブラリのバインディング

Allegro ゲームプログラミング・ライブラリ用の RingAllegro と LibSDL ゲームプログラミング・ライブラリ用の RingLibSDL があります。

RingAllegro と RingLibSDL は Ring コード生成器の支援により C による拡張機能として作成されています。

RingAllegro と RingLibSDL はシンプルな設定ファイルを記述した後に生成される 10,000 行以上の C コードからなります (コード生成器による処理)。

RingAllegro と RingLibSDL の設定ファイルで関数名、構造体情報、および定数を決定後、この設定ファイルを生成器で処理して C コードと Ring コードから読み込み可能なライブラリを生成します。

RingAllegro と RingLibSDL の使用は同一関数を有する C コードから Allegro および LibSDL の使用と非常に類似していますが Ring の機能で構築できます。

RingAllegro のソースコード : https://github.com/ring-lang/ring/tree/master/extensions/ringallegro

RingLibSDL のソースコード : https://github.com/ring-lang/ring/tree/master/extensions/ringsdl

グラフィックスライブラリへのインタフェース

この階層には gl_allegro.ring および gl_libsdl.ring があります。

グラフィックスライブラリとの相互作用により、ライブラリ間で同一関数を使えます。

この階層は RingAllegro と RingLibSDL の詳細と差異を吸収します。

同一関数で Allegro と LibSDL を何時でも切り替えて使えます。

なぜですか？

Allegro は非常に単純明快であり Windows, Linux および macOS 用の 2D ゲームを手軽に作成できます。

Ring 1.0 から Allegro へ対応しました。

また LibSDL は非常に強力かつ普及しており、モバイル開発では非常に簡単に使えます。

Ring 1.1 から LibSDL へ対応しているため、モバイル用のゲームを手軽に作成できます。

注釈

このライブラリだけで、デスクトップとモバイル開発ができます。

gl_allegro.ring のソースコード : https://github.com/ring-lang/ring/blob/master/libraries/gameengine/gl_allegro.ring

gl_libsdl.ring のソースコード : https://github.com/ring-lang/ring/blob/master/libraries/gameengine/gl_libsdl.ring

ゲームエンジンのクラス

このクラスがエンジンにあります。

GameBase クラス

Resources クラス

Game クラス

GameObject クラス

Sprite クラス

Text クラス

Animate クラス

Sound クラス

Map クラス

ソースコード : https://github.com/ring-lang/ring/blob/master/ringlibs/gameengine/gameengine.ring

ゲームの階層

この階層では、ゲームエンジンのクラスを使用してゲームを作成します。

宣言型プログラミングでクラスの設計を行っています。

このクラスをゲームで使用しています。

Game クラス

Sprite クラス

Text クラス

Animate クラス

Sound クラス

Map クラス

注釈

エンジンに実装されている上記以外のクラスは、エンジンの内部処理用です。

三種類のゲームと用例を紹介します:

Stars Fighter ゲーム

Flappy Bird 3000 ゲーム

Super Man 2016 ゲーム

Game クラス

この表はクラスの属性です。

属性

説明

FPS

数値により毎秒ごとの draw() メソッドの呼び出し回数を決定します。

FixedFPS

数値により毎秒ごとの animate() メソッドの呼び出し回数を決定します。

Title

文字列によりゲームのウィンドウタイトルを決定します。

Icon

文字列によりゲームのウィンドウアイコンを決定します (ファイル名)。

aObjects

ゲーム内の全てのオブジェクトを有するリストです。

shutdown

True/False 値によりゲームのループを終了します。

この表はクラスのメソッドです。

メソッド

説明

refresh()

オブジェクトを削除します。

settitle(cTitle)

文字列による仮引数でウィンドウのタイトルを設定します。

shutdown()

アプリケーションを閉じます。

find(cName)

オブジェクト名でオブジェクトを検索します。

remove(nID)

オブジェクト ID でオブジェクトを削除します。

この表はクラスで定義されているキーワードのグループです。

キーワード

説明

sprite

新しい Sprite オブジェクトを作成後に Game オブジェクトへ追加します。

text

新しい Text オブジェクトを作成後に Game オブジェクトへ追加します。

animate

新しい Animate オブジェクトを作成後に Game オブジェクトへ追加します。

sound

新しい Sound オブジェクトを作成後に Game オブジェクトへ追加します。

map

新しい Map オブジェクトを作成後に Game オブジェクトへ追加します。

GameObject クラス

この表はクラスの属性です。

属性

説明

enabled

True/False によりオブジェクトの状態 (活動または休止) を決定します

x

オブジェクトの x 位置を数値で決定します。

y

オブジェクトの y 位置を数値で決定します。

width

オブジェクトの幅を数値で決定します。

height

オブジェクトの高さを数値で決定します。

nIndex

数値によりオブジェクトの ID を決定します。

name

文字列によりオブジェクト名を決定します。

animate

True/False によりオブジェクトのアニメーションを行うか決定します。

move

True/False によりキーボードでオブジェクトの画像を移動するか決定します。

Scaled

True/False によりオブジェクトの画像の寸法を変更するか決定します。

draw

オブジェクトの描画時に呼び出される関数です。

state

オブジェクトのアニメーションで呼び出される関数です。

keypress

キーが押し下げられた時に呼び出される関数です。

mouse

マウスイベント発生時に呼び出される関数です。

この表はクラスのメソッドです。

メソッド

説明

keyboard(oGame,nkey)

キーボードイベントを返します。

mouse(oGame,nType,aMouseList)

マウスイベントを確認します。

rgb(r,g,b)

RGB (赤色、緑色、および青色) 値で新しい色を返します。

Sprite クラス

親クラス : GameObject クラス

この表はクラスの属性です。

属性

説明

image

画像ファイル名を文字列で決定します。

point

数値によりオブジェクトにおける自動移動の制限を決定します。

direction

数値により移動方向を決定します。

nstep

数値により移動中の増分または減分を決定します。

type

数値によりゲームでのオブジェクトの種類を決定します (オプション扱い)。

transparent

True/False の値により画像の透過を決定します。

この表はクラスのメソッドです。

メソッド

説明

Draw(oGame)

オブジェクトを描画します。

Text クラス

親クラス : Sprite クラス

この表はクラスの属性です。

属性

説明

size

数値によりフォントの寸法を決定します。

font

文字列によりフォントのファイル名を決定します。

text

文字列により表示されるテキストを決定します。

color

数値により色を決定します。

この表はクラスのメソッドです。

メソッド

説明

Draw(oGame)

オブジェクトを描画します。

Animate クラス

親クラス : Sprite クラス

この表はクラスの属性です。

属性

説明

frames

数値によりフレーム数を決定します。

frame

数値により有効なフレームを決定します。

framewidth

数値によりフレームの幅を決定します。

animate

True/False によりアニメーションの使用を決定します。

scaled

True/False により画像の尺度変更を決定します。

この表はクラスのメソッドです。

メソッド

説明

Draw(oGame)

オブジェクトを描画します。

Sound クラス

親クラス : GameObject クラス

この表はクラスの属性です。

属性

説明

file

音声ファイル名を文字列で決定します。

once

True/False によりファイルを一回またはループ再生するか決定します。

この表はクラスのメソッドです。

メソッド

説明

playsound()

音声ファイルを再生します。

Map クラス

親クラス : Sprite クラス

この表はクラスの属性です。

属性

説明

aMap

数値でマップの中身をリストで決定します。

aImages

マップの各番号で使用されている画像をリストで決定します。

BlockWidth

ブロックの幅を数値で決定します (デフォルト = 32)。

BlockHeight

ブロックの高さを数値で決定します (デフォルト = 32)。

Animate

アニメーションの状態を True/False で決定します。

この表はクラスのメソッドです。

メソッド

説明

getvalue(x,y)

項目の値でマップの可視部分を返します。

ゲームエンジンの用法 - ゲームウィンドウの作成

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンから呼び出されます。

        oGame = New Game        # Game オブジェクトの作成
        {
                title = "My First Game"
        }                       # イベントループの開始

注釈

この命令でゲームエンジンに制御権を委譲します。よって、グローバル変数の定義は "gameengine.ring" を読み込む前に行う必要があります。

スクリーンショット:

ゲームエンジンの用法 - テキストの描画

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンから呼び出されます。

        oGame = New Game        # Game オブジェクトの作成
        {
                title = "My First Game"
                text {
                        x = 10  y=50
                        animate = false
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "game development using ring is very fun!"
                        color = rgb(0,0,0)
                }
        }               # イベントループの開始

スクリーンショット:

ゲームエンジンの用法 - テキストの移動

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンから呼び出されます。

        oGame = New Game        # Game オブジェクトの作成
        {
                title = "My First Game"
                text {
                        x = 10  y=50
                        animate = false
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "game development using ring is very fun!"
                        color = rgb(0,0,0)      # 配色 = 黒色
                }
                text {
                        x = 10  y=150
                        # アニメーション部分 =================================
                        animate = true                  # アニメーションの使用
                        direction = GE_DIRECTION_INCVERTICAL    # y の増分
                        point = 400                     # y=400 になるまで継続
                        nStep = 3                       # 毎回 y+= 3 を行う
                        #=====================================================
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "welcome to the real world!"
                        color = rgb(0,0,255)            # 配色 = 青色
                }
        }                                       # イベントループの開始

スクリーンショット:

ゲームエンジンの用法 - 音声の再生

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンから呼び出されます。

        oGame = New Game        # Game オブジェクトの作成
        {
                title = "My First Game"
                text {
                        x = 10  y=50
                        animate = false
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "game development using ring is very fun!"
                        color = rgb(0,0,0)      # 配色 = 黒色
                }
                text {
                        x = 10  y=150
                        # アニメーション部分 ======================================
                        animate = true                          # アニメーションの使用
                        direction = GE_DIRECTION_INCVERTICAL    # y の増分
                        point = 400             # y=400 になるまで継続
                        nStep = 3               # 毎回 y+= 3 を行う
                        #==========================================================
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "welcome to the real world!"
                        color = rgb(0,0,255)    # 配色 = 青色
                }
                Sound {                                 # 音声の再生
                        file = "sound/music1.wav"       # イベントループの開始
                }
        }                                       # イベントループの開始

ゲームエンジンの用法 - アニメーション

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンから呼び出されます。

  oGame = New Game      # Game オブジェクトの作成
  {
        title = "My First Game"

        animate {
          file = "images/fire.png"
          x = 100
          y = 200
          framewidth = 40
          height = 42
          nStep = 3      # ディレイで使用
          transparent = true
          state = func oGame,oSelf {  # エンジンの各フレームで呼び出されます
                oSelf {
                  nStep--
                  if nStep = 0
                        nStep = 3
                        if frame < 13      # 13 フレームから構成されるアニメーション
                          frame++   # 次のフレームへ移動
                        else
                          oGame.remove(oself.nIndex)   # オブジェクトの削除
                        ok
                  ok
                }
          }
         }

  }          # イベントループの開始

ゲームエンジンの用法 - アニメーションと関数

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンから呼び出されます。

  oGame = New Game      # Game オブジェクトの作成
  {
        title = "My First Game"
        for x = 70 to 700 step 50
          for y = 70 to 500 step 50
                showfire(oGame,x,y)
          next
        next

  }          # イベントループの開始

func showfire oGame,nX,nY
  oGame {
        animate {
          file = "images/fire.png"
          x = nX
          y = nY
          framewidth = 40
          height = 42
          nStep = 3      # ディレイで使用
          transparent = true
          state = func oGame,oSelf {  # エンジンの各フレームで呼び出されます
                oSelf {
                  nStep--
                  if nStep = 0
                        nStep = 3
                        if frame < 13      # 13 フレームから構成されるアニメーション
                          frame++   # 次のフレームへ移動
                        else
                          frame=1
                        ok
                  ok
                }
          }
         }
  }

ゲームエンジンの用法 - スプライト - キーボードによる自動移動

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"
                sprite
                {
                        type = GE_TYPE_PLAYER           # 用法
                        x=400 y=400 width=100 height=100
                        file = "images/player.png"
                        transparent = true
                        Animate=false
                        Move=true       # キーボードの矢印キーで移動できます。
                        Scaled=true
                }
        }                                       # イベントループの開始

ゲームエンジンの用法 - スプライト - キー入力イベント

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"
                sprite
                {
                        type = GE_TYPE_PLAYER           # 用法
                        x=400 y=400 width=100 height=100
                        file = "images/player.png"
                        transparent = true
                        Animate=false
                        Move=false                      # カスタム移動
                        Scaled=true
                        keypress = func oGame,oSelf,nKey {
                                oSelf {
                                        Switch nKey
                                        on KEY_LEFT
                                                x -= 10
                                        on KEY_RIGHT
                                                x += 10
                                        on KEY_UP
                                                y -= 10
                                        on KEY_DOWN
                                                y += 10
                                        off
                                }
                        }
                }
        }                                       # イベントループの開始

ゲームエンジンの用法 - スプライト - マウスイベント

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"
                sprite
                {
                        type = GE_TYPE_PLAYER           # 用法
                        x=400 y=400 width=100 height=100
                        file = "images/player.png"
                        transparent = true
                        Animate=false
                        Move=false                      # カスタム移動
                        Scaled=true
                        keypress = func oGame,oSelf,nKey {
                                oSelf {
                                        Switch nKey
                                        on KEY_LEFT
                                                x -= 10
                                        on KEY_RIGHT
                                                x += 10
                                        on KEY_UP
                                                y -= 10
                                        on KEY_DOWN
                                                y += 10
                                        off
                                }
                        }
                        mouse = func oGame,oSelf,nType,aMouseList {
                                if nType = GE_MOUSE_UP
                                        oSelf {
                                                x = aMouseList[GE_MOUSE_X]
                                                y = aMouseList[GE_MOUSE_Y]
                                        }
                                ok
                        }
                }
        }                                       # イベントループの開始

ゲームエンジンの用法 - スプライト - ステートイベント

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"
                sprite
                {
                        type = GE_TYPE_PLAYER           # 用法
                        x=400 y=400 width=100 height=100
                        file = "images/player.png"
                        transparent = true
                        Animate=false
                        Move=false                      # カスタム移動
                        Scaled=true
                        keypress = func oGame,oSelf,nKey {
                                oSelf {
                                        Switch nKey
                                        on KEY_LEFT
                                                x -= 10
                                        on KEY_RIGHT
                                                x += 10
                                        on KEY_UP
                                                y -= 10
                                        on KEY_DOWN
                                                y += 10
                                        off
                                }
                        }
                        mouse = func oGame,oSelf,nType,aMouseList {
                                if nType = GE_MOUSE_UP
                                        oSelf {
                                                x = aMouseList[GE_MOUSE_X]
                                                y = aMouseList[GE_MOUSE_Y]
                                        }
                                ok
                        }
                        state = func oGame,oSelf {
                                oself {
                                        if x < 0 x = 0 ok
                                        if y < 0 y = 0 ok
                                        if x > ogame.width-width
                                                x= ogame.width - width ok
                                        if y > ogame.height-height
                                                y=ogame.height - height ok
                                }
                        }
                }
        }                                       # イベントループの開始

ゲームエンジンの用法 - アニメーション - イベント

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"

                animate {

                        file = "images/fbbird.png"
                        x = 10
                        y = 10
                        framewidth = 20
                        scaled = true
                        height = 50
                        width = 50
                        nStep = 3
                        transparent = true

                        state = func oGame,oSelf {
                                oSelf {

                                        # アニメーション
                                                nStep--
                                                if nStep = 0
                                                        nStep = 3
                                                        if frame < 3
                                                                frame++
                                                        else
                                                                frame=1
                                                        ok
                                                ok

                                        # 下へ移動
                                                y += 3
                                                if y > 550 y=550 ok

                                }

                        }

                        keypress = func ogame,oself,nKey {
                                oself {
                                        if nkey = key_space
                                                y -= 55
                                                if y<=0 y=0 ok
                                        ok
                                }
                        }

                        mouse = func ogame,oself,nType,aMouseList {
                                if nType = GE_MOUSE_UP
                                        cFunc = oself.keypress
                                        call cFunc(oGame,oSelf,Key_Space)
                                ok
                        }
                }
        }                                       # イベントループの開始

スクリーンショット:

ゲームエンジンの用法 - マップ

Load "gameengine.ring"        # ゲームエンジンへ制御権を与えます。

func main          # ゲームエンジンから呼び出されます。

oGame = New Game      # Game オブジェクトの作成
{
  title = "My First Game"

  Map {

        blockwidth = 80
        blockheight = 80

        aMap = [
                [0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
                [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
                [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0],
                [0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0],
                [0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0],
                [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
                [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
                [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]
        ]

        aImages = ["images/fbwall.png",
                 "images/fbwallup.png",
                 "images/fbwalldown.png"]

        state = func oGame,oSelf {
          oSelf {
                x -= 3
                if x < - 2100  x = 0  ok
          }
        }

  }
}          # イベントループの開始

スクリーンショット:

ゲームエンジンの用法 - マップイベント

Load "gameengine.ring"        # ゲームエンジンへ制御権を与えます。

func main          # ゲームエンジンから呼び出されます。

  oGame = New Game      # Game オブジェクトの作成
  {
        title = "My First Game"

        Map {

          blockwidth = 80
          blockheight = 80

          aMap = [
                   [0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0],
                  [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
                  [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
                  [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]
          ]

          aImages = ["images/fbwall.png",
                         "images/fbwallup.png",
                         "images/fbwalldown.png"]

          state = func oGame,oSelf {
                oSelf {
                  x -= 3
                  if x < - 2100  x = 0  ok
                }
          }

          mouse = func ogame,oself,nType,aMouseList {
                if nType = GE_MOUSE_UP
                  oSelf {
                        mX = aMouseList[GE_MOUSE_X]
                        mY = aMouseList[GE_MOUSE_Y]
                        nValue = GetValue(mX,mY)
                        nRow = GetRow(mX,mY)
                        nCol = GetCol(mX,mY)
                        Switch nValue
                        On 1  aMap[nRow][nCol] = 0
                        On 2  aMap[nRow][nCol] = 0
                        On 3  aMap[nRow][nCol] = 0
                        On 0  aMap[nRow][nCol] = 1
                        Off
                  }
                ok
          }

        }
  }          # イベントループの開始

スクリーンショット:

ゲームエンジンの用法 - オブジェクトと描画処理

GameObject クラスからオブジェクトを作成するには、 Object キーワード (ゲームエンジンで定義済み) を使用します。

用例:

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"
                Object {
                        x = 0 y=300 width = 200 height=200
                        draw = func oGame,oSelf {
                                oSelf {
                                        for t = 1 to 210
                                                gl_draw_circle(x,y,t,
                                                gl_map_rgb(t*random(255),
                                                t*2,t*3),1)
                                        next
                                }
                        }
                        state = func oGame,oSelf {
                                oSelf {
                                        if x <= 800
                                                x+= 3
                                        else
                                                x=0
                                        ok
                                }
                        }
                        keypress = func oGame,oSelf,nKey {
                                oSelf {
                                        Switch nKey
                                        on KEY_LEFT
                                                x -= 10
                                        on KEY_RIGHT
                                                x += 10
                                        on KEY_UP
                                                y -= 10
                                        on KEY_DOWN
                                                y += 10
                                        off
                                }
                        }
                }

        }                                       # イベントループの開始

スクリーンショット:

用例:

Load "gameengine.ring"                          # ゲームエンジンへ制御権を与えます。

func main                                       # ゲームエンジンから呼び出されます。

        oGame = New Game                        # Game オブジェクトの作成
        {
                title = "My First Game"
                Object {
                        x = 400 y=300 width = 200 height=200
                        draw = func oGame,oSelf {
                                oSelf {
                                        for t = 1 to 210
                                                gl_draw_rectangle(x+t,y+t,
                                                x+t*2,y+t*2,
                                                gl_map_rgb(t*random(255),
                                                t*2,t*3),1)
                                                gl_draw_rectangle(x+t*2,y+t*2,
                                                x-t*2,y-t*2,
                                                gl_map_rgb(t*random(255),
                                                t*2,t*3),1)
                                        next
                                }
                        }
                        keypress = func oGame,oSelf,nKey {
                                oSelf {
                                        Switch nKey
                                        on KEY_LEFT
                                                x -= 10
                                        on KEY_RIGHT
                                                x += 10
                                        on KEY_UP
                                                y -= 10
                                        on KEY_DOWN
                                                y += 10
                                        off
                                }
                        }
                }

        }                                       # イベントループの開始

スクリーンショット:

Stars Fighter ゲーム

Stars Fighter ゲームのソースコード

# Ring 標準ライブラリ
# 2D ゲームエンジン
# 2016, Mahmoud Fayed <msfclipper@yahoo.com>

oGameState = NULL

load "gameengine.ring"

func main

  oGame = New Game

  while true

          oGameState = new GameState

          oGame {
                title = "Stars Fighter!"
                sprite
                {
                  file = "images/menu1.jpg"
                  x = 0 y=0 width=800 height = 600 scaled = true animate = false
                  keypress = func ogame,oself,nKey {
                        if nkey = key_esc or nKey = GE_AC_BACK
                          ogame.shutdown()
                        but nKey = key_space
                          oGameState.startplay=true
                          ogame.shutdown=true
                        ok
                  }
                  mouse = func ogame,oself,nType,aMouseList {
                        if nType = GE_MOUSE_UP
                          oGameState.startplay=true
                          ogame.shutdown=true
                        ok
                  }
                }
                text {
                  animate = false
                  size = 35
                  file = "fonts/pirulen.ttf"
                  text = "Stars Fighter"
                  x = 10  y=50
                }
                text {
                  animate = false
                  size = 25
                  file = "fonts/pirulen.ttf"
                  text = "Version 1.0"
                  x = 80  y=100
                }
                text {
                  animate = false
                  size = 16
                  file = "fonts/pirulen.ttf"
                  text = "(C) 2016, Mahmoud Fayed"
                  x = 45  y=140
                }

                text {
                  animate = false
                  size = 25
                  file = "fonts/pirulen.ttf"
                  text = "Press Space to start"
                  x = 190  y=470
                }
                text {
                  animate = false
                  size = 20
                  file = "fonts/pirulen.ttf"
                  text = "Press Esc to Exit"
                  x = 260  y=510
                }
                Sound {
                  file = "sound/music1.wav"
                }
          }

          if oGameState.startplay
                oGame.refresh()
                playstart(oGame)
                oGame.refresh()
          ok

  end

func playstart oGame

  oSound = New Sound {
        file = "sound/music2.wav"
  }

  while true
        play(oGame)
        if ogame.shutdown = true and oGameState.value = 0
          exit
        ok
        ogame.refresh()
  end

  oSound.Delete()

func play oGame

  oGame
  {
        FPS = 60
        FixedFPS = 120
        title = "Stars Fighter!"
        sprite
        {
          file = "images/stars.jpg"
          x = 0
          y = 0
          point = -370
          direction = ge_direction_dec
          type = ge_type_background
          state = func ogame,oself {
                  oself {
                        if x < -350
                          direction = ge_direction_inc
                          point = 370
                        but x = 0 and direction = ge_direction_inc
                          direction = ge_direction_dec
                          point = -370
                        ok
                  }
                }
        }
        sprite
        {
          file = "images/player.png"
          transparent = true
          type = ge_type_player
          x = 400 y =400 width=100 height=100
          animate=false move=true Scaled=true
          mouse = func ogame,oself,nType,aMouseList {

                if not ( aMouseList[GE_MOUSE_X] >= oSelf.x and
                                 aMouseList[GE_MOUSE_X] <= oSelf.x+oSelf.width and
                                 aMouseList[GE_MOUSE_Y] >= oself.y and
                                 aMouseList[GE_MOUSE_Y] <= oSelf.y+oSelf.height )

                  if nType = GE_MOUSE_DOWN
                        if aMouseList[1] < oSelf.X  # 左
                          oSelf.X -= 100
                        else
                          oSelf.X += 100
                        ok
                        if aMouseList[2] < oSelf.Y  # 上
                          oSelf.Y -= 100
                        else
                          oSelf.Y += 100
                        ok
                  ok

                else
                  if nType = GE_MOUSE_UP
                        cFunc = oself.keypress
                        call cFunc(oGame,oSelf,Key_Space)
                  ok
                ok
          }
          keypress = func oGame,oself,nkey {
                if nkey = key_space
                  ogame {
                        sprite {
                          type = ge_type_fire
                          file  = "images/rocket.png"
                          transparent = true
                                x = oself.x + 30
                          y = oself.y - 30
                          width = 30
                          height = 30
                          point = -30
                          nstep = 20
                          direction = ge_direction_decvertical
                          state = func oGame,oSelf {
                                for x in oGame.aObjects
                                  if x.type = ge_type_enemy
                                        if oself.x >= x.x and oself.y >= x.y and
                                          oself.x <= x.x + x.width and
                                          oself.y <= x.y + x.height
                                          showfire(oGame,x.x+40,x.y+40)
                                          ogame.remove(x.nindex)
                                          oGameState.score+=10
                                          oGameState.enemies--
                                          checkwin(oGame)
                                          exit
                                        ok
                                  ok
                                next
                          }
                        }
                  }
                but nkey = key_esc or nKey = GE_AC_BACK ogame.shutdown()
                ok
          }
          state = func oGame,oSelf {
                oself {
                  if x < 0 x = 0 ok
                  if y < 0 y = 0 ok
                  if x > ogame.screen_w-width  x= ogame.screen_w - width ok
                  if y > ogame.screen_h-height y=ogame.screen_h-height ok
                }
          }
        }
        for g = 1 to oGameState.enemies
          sprite
          {
                type = ge_type_enemy
                file = "images/enemy.png"
                transparent = true
                x = g*random(50) y =g width=100 height=100
                animate=true Scaled=true
                direction = ge_direction_random
                state = func oGame,oSelf {
                  oself {
                        if x < 0 x = 0 ok
                        if y < 0 y = 0 ok
                        if x > ogame.screen_w-width  x= ogame.screen_w - width ok
                        if y > ogame.screen_h-height y=ogame.screen_h-height ok
                  }
                  if random(100) = 1
                        ogame {
                          sprite {
                                type = ge_type_fire
                                file  = "images/rocket2.png"
                                transparent = true
                                x = oself.x + 30
                                y = oself.y + oself.height+ 30
                                width = 30
                                height = 30
                                point = ogame.screen_h+30
                                nstep = 10
                                direction = ge_direction_incvertical
                                state = func oGame,oSelf {
                                  x =  oGame.aObjects[oGameState.playerindex]
                                  if oself.x >= x.x and oself.y >= x.y and
                                         oself.x <= x.x + x.width and
                                         oself.y <= x.y + x.height
                                         if oGameState.value > 0
                                           oGameState.value-=10
                                         ok
                                         ogame.remove(oself.nindex)
                                         checkgameover(oGame)
                                  ok
                                }
                          }
                        }
                  ok
                }
          }
        next
        text {
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Destroy All Enemies!"
          nstep = 3
          color = GE_COLOR_GREEN
          x = 100  y=50
          direction = ge_direction_incvertical
          point = 500
        }
        text {
          animate = false
          point = 400
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Score : " + oGameState.score
          x = 500  y=10
          state = func oGame,oSelf { oSelf { text = "Score : " + oGameState.score } }
        }
        text {
          animate = false
          point = 400
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Energy : " + oGameState.value
          x = 500  y=50
          state = func oGame,oSelf { oSelf { text = "Energy : " + oGameState.value } }
        }
        text {
          animate = false
          point = 400
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Level : " + oGameState.level
          x = 500  y=90
        }
  }

func checkwin ogame
  if oGameState.gameresult  return ok
  if oGameState.enemies = 0
        oGameState.gameresult = true
        oGame {
          if oGameState.level < 30
          text {
                point = 400
                size = 30
                file = "fonts/pirulen.ttf"
                text = "Level Completed!"
                nStep = 3
                x = 500  y=10
                state = func ogame,oself {
                  if oself.y >= 400
                        ogame.shutdown = true
                        oGameState.level++
                        oGameState.enemies = oGameState.level
                        oGameState.gameresult = false
                  ok
                }
          }
          else
          text {
                point = 400
                size = 30
                nStep = 3
                file = "fonts/pirulen.ttf"
                text = "You Win !!!"
                x = 500  y=10
                state = func ogame,oself {
                  if oself.y >= 400
                        ogame.shutdown = true
                        oGameState.value = 0
                  ok
                }
          }
          ok
        }
  ok

func checkgameover ogame
  if oGameState.gameresult  return ok
  if oGameState.value <= 0
        oGameState.gameresult = true
        oGame {
          text {
                point = 400
                size = 30
                nStep = 3
                file = "fonts/pirulen.ttf"
                text = "Game Over !!!"
                x = 500  y=10
                state = func ogame,oself {
                  if oself.y >= 400
                        ogame.shutdown = true
                  ok
                }
          }
        }
        showfire(oGame,oGame.aObjects[oGameState.PlayerIndex].x+40,
                         oGame.aObjects[oGameState.PlayerIndex].y+40)
        oGame.aObjects[oGameState.PlayerIndex].enabled = false
        oGame.remove(oGameState.PlayerIndex)
  ok

func showfire oGame,nX,nY
  oGame {
        animate {
          file = "images/fire.png"
          x = nX
          y = nY
          framewidth = 40
          height = 42
          nStep = 3
          transparent = true
          state = func oGame,oSelf {
                oSelf {
                  nStep--
                  if nStep = 0
                        nStep = 3
                        if frame < 13
                          frame++
                        else
                          frame=1
                          oGame.remove(oself.nIndex)
                        ok
                  ok
                }
          }
        }
  }

class gamestate
  score = 0
  level = 1
  enemies = 1
  value = 100
  playerindex = 2
  gameresult = false
  startplay=false

スクリーンショット:

Flappy Bird 3000 ゲーム

Flappy Bird 3000 ゲームのソースコード

# Ring 標準ライブラリ
# 2D ゲームエンジン
# 2016, Mahmoud Fayed <msfclipper@yahoo.com>

oGameState = NULL

Load "gameengine.ring"

func main

  oGame = New Game

  while true

        oGameState = New GameState

        oGame {
          title = "Flappy Bird 3000"
          sprite
          {
                file = "images/fbback.png"
                x = 0 y=0 width=800 height = 600 scaled = true animate = false
                keypress = func ogame,oself,nKey {
                  if nkey = key_esc or nKey = GE_AC_BACK
                        ogame.shutdown()
                  but nKey = key_space
                        oGameState.startplay=true
                        ogame.shutdown=true
                  ok
                }
                mouse = func ogame,oself,nType,aMouseList {
                  if nType = GE_MOUSE_UP
                        cFunc = oself.keypress
                        call cFunc(oGame,oSelf,Key_Space)
                  ok
                }
          }
          text {
                animate = false
                size = 35
                file = "fonts/pirulen.ttf"
                text = "Flappy Bird 3000"
                x = 150  y=50
          }
          text {
                animate = false
                size = 25
                file = "fonts/pirulen.ttf"
                text = "Version 1.0"
                x = 280  y=100
          }
          text {
                animate = false
                size = 16
                file = "fonts/pirulen.ttf"
                text = "(C) 2016, Mahmoud Fayed"
                x = 245  y=140
          }

          text {
                animate = false
                size = 25
                file = "fonts/pirulen.ttf"
                text = "To Win Get Score = 3000"
                x = 150  y=270
          }

          text {
                animate = false
                size = 25
                file = "fonts/pirulen.ttf"
                text = "Press Space to start"
                x = 190  y=470
          }
          text {
                animate = false
                size = 20
                file = "fonts/pirulen.ttf"
                text = "Press Esc to Exit"
                x = 260  y=510
          }

          animate {
                file = "images/fbbird.png"
                x = 200
                y = 200
                framewidth = 20
                scaled = true
                height = 50
                width = 50
                nStep = 3
                transparent = true
                animate = true
                direction = ge_direction_random
                state = func oGame,oSelf {
                  oSelf {
                        nStep--
                        if nStep = 0
                          nStep = 3
                          if frame < 3
                                frame++
                          else
                                frame=1
                          ok
                        ok
                        if x <= 0 x=0 ok
                        if y <= 0 y=0 ok
                        if x >= 750 x= 750 ok
                        if y > 550 y=550 ok
                  }
                }
          }

          Sound {
                file = "sound/music2.wav"
          }
        }
        if oGameState.startplay
          oGame.refresh()
          playstart(oGame)
          oGame.refresh()
        ok

  end

func playstart oGame

  oGame {
        FPS = 60
        FixedFPS = 120
        Title = "Flappy Bird 3000"
        Sprite {
          file = "images/fbback.png"
          x = 0 y=0 width=800 height = 600 scaled = true animate = false
          keypress = func ogame,oself,nKey {
                if nkey = key_esc or nKey = GE_AC_BACK
                  ogame.shutdown()
                ok
          }
        }

        Map {
          blockwidth = 80
          blockheight = 80
          aMap = [
                   [0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0],
                  [0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0],
                  [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
                  [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
                  [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]
                ]
          newmap(aMap)
          aImages = ["images/fbwall.png","images/fbwallup.png",
                  "images/fbwalldown.png"]
          state = func oGame,oSelf {
                if oGameState.gameresult = false
                  px = oGame.aObjects[3].x
                  py = oGame.aObjects[3].y
                  oSelf {
                        x -=  3
                        if x < - 2100
                          x = 0
                          newmap(aMap)
                        ok
                        nCol =  getcol(px,0)
                        if nCol=11 or nCol=15 or nCol=19 or nCol=23 or nCol=27
                          if nCol != oGameState.lastcol
                                oGameState.lastcol = nCol
                                oGameState.Score += 100
                                oGame { Sound {
                                  once = true
                                  file = "sound/sfx_point.wav"
                                } }
                                checkwin(oGame)
                          ok
                        ok
                  }
                  if  oSelf.getvalue(px+40,py) != 0 or
                          oSelf.getvalue(px+40,py+40) != 0 or
                          oSelf.getvalue(px,py) != 0 or
                          oSelf.getvalue(px,py+40) != 0
                        oGameState.gameresult = true
                        oGame {
                          text {
                                point = 550
                                size = 30
                                nStep = 3
                                file = "fonts/pirulen.ttf"
                                text = "Game Over !!!"
                                x = 500  y=10
                                state = func ogame,oself {
                                  if oself.y >= 550
                                          ogame.shutdown = true
                                  ok
                                        if oself.y = 90
                                        ogame {
                                          Sound {
                                                once = true
                                                file = "sound/sfx_die.wav"
                                          }
                                        }
                                  ok
                                }
                          }
                          Sound {
                                once = true
                                file = "sound/sfx_hit.wav"
                          }
                        }
                  ok
                ok
          }
        }

        animate {
          file = "images/fbbird.png"
          x = 10
          y = 10
          framewidth = 20
          scaled = true
          height = 50
          width = 50
          nStep = 3
          transparent = true
          state = func oGame,oSelf {
                oSelf {
                  nStep--
                  if nStep = 0
                        nStep = 3
                        if frame < 3
                          frame++
                        else
                          frame=1
                        ok
                  ok
                }

                if not oGameState.playerwin
                  oGameState.down --
                  if oGameState.down = 0
                        oGameState.down = 3
                        oself {
                          y += 25
                          if y > 550 y=550 ok
                        }
                  ok
                ok

          }
          keypress = func ogame,oself,nKey {
                if oGameState.gameresult = false
                  oself {
                        if nkey = key_space
                          y -= 55
                          oGameState.down = 60
                          if y<=0 y=0 ok
                        ok
                  }
                ok
          }
          mouse = func ogame,oself,nType,aMouseList {
                if nType = GE_MOUSE_UP
                  cFunc = oself.keypress
                  call cFunc(oGame,oSelf,Key_Space)
                ok
          }
        }

        text {
          animate = false
          point = 400
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Score : " + oGameState.score
          x = 500  y=10
          state = func oGame,oSelf {
                oSelf { text = "Score : " + oGameState.score }
          }
        }

  }

func newmap aMap
  aV = [
  [1,1,3,0,0,2,1,1],
  [1,3,0,0,0,2,1,1],
  [1,1,1,3,0,2,1,1],
  [1,1,1,3,0,0,0,0],
  [0,0,0,0,2,1,1,1],
  [0,0,2,1,1,1,1,1],
  [0,0,0,2,1,1,1,1],
  [1,1,1,3,0,2,1,1],
  [1,1,1,1,1,3,0,0],
  [3,0,0,2,1,1,1,1],
  [3,0,0,2,3,0,0,2]
  ]
  for x = 10 to 24 step 4
        aVar = aV[ (random(10)+1) ]
        for y = 1 to 8
          aMap[y][x] = aVar[y]
        next
  next

func checkwin ogame
  if oGameState.score = 3000
        oGameState.gameresult = true
        oGameState.playerwin = true
        oGame {
          text {
                point = 400
                size = 30
                nStep = 3
                file = "fonts/pirulen.ttf"
                text = "You Win !!!"
                x = 500  y=10
                state = func ogame,oself {
                  if oself.y >= 400
                        ogame.shutdown = true
                        oGameState.value = 0
                  ok
                }
          }
        }
  ok

Class GameState
  down = 3
  gameresult = false
  Score = 0
  startplay=false
  lastcol = 0
  playerwin = false

スクリーンショット:

Super Man 2016 ゲーム

Super Man 2016 ゲームのソースコード

# Ring 標準ライブラリ
# 2D ゲームエンジン
# 2016, Mahmoud Fayed <msfclipper@yahoo.com>

oGameState = NULL

Load "gameengine.ring"

func main

  oGame = New Game

  while true

        oGameState = new GameState

        oGame {
          title = "Super Man 2016"
          sprite
          {
                file = "images/superman.jpg"
                x = 0 y=0 width=800 height = 600 scaled = true animate = false
                keypress = func ogame,oself,nKey {
                  if nkey = key_esc or nKey = GE_AC_BACK
                        ogame.shutdown()
                  but nKey = key_space
                        oGameState.startplay=true
                        ogame.shutdown=true
                  ok
                }
                mouse = func ogame,oself,nType,aMouseList {
                  if nType = GE_MOUSE_UP
                        oGameState.startplay=true
                        ogame.shutdown=true
                  ok
                }
                state = func ogame,oself {
                  oself {
                        if x > -500
                          x-=1
                          y-=1
                          width +=1
                          height +=4
                        ok
                  }
                }
          }
          text {
                animate = false
                size = 35
                file = "fonts/pirulen.ttf"
                text = "Super Man 2016"
                x = 20  y=30
          }
          text {
                animate = false
                size = 25
                file = "fonts/pirulen.ttf"
                text = "Version 1.0"
                x = 20  y=80
          }
          text {
                animate = false
                size = 16
                file = "fonts/pirulen.ttf"
                text = "(C) 2016, Mahmoud Fayed"
                x = 20  y=120
          }

          text {
                animate = false
                size = 25
                file = "fonts/pirulen.ttf"
                text = "Press Space to start"
                x = 190  y=470
          }
          text {
                animate = false
                size = 20
                file = "fonts/pirulen.ttf"
                text = "Press Esc to Exit"
                x = 260  y=510
          }

          animate {
                file = "images/superman.png"
                x = 200
                y = 200
                framewidth = 68
                scaled = true
                height = 86
                width = 60
                nStep = 10
                transparent = true
                animate = true
                direction = ge_direction_random
                state = func oGame,oSelf {
                  oSelf {
                        nStep--
                        if nStep = 0
                          nStep = 10
                          if frame < 1
                                frame++
                          else
                                frame=1
                          ok
                        ok
                        if x <= 0 x=0 ok
                        if y <= 0 y=0 ok
                        if x >= 750 x= 750 ok
                        if y > 550 y=550 ok
                  }
                }
          }

          Sound {
                file = "sound/music2.wav"
          }
        }
        if oGameState.startplay
          oGame.refresh()
          playstart(oGame)
          oGame.refresh()
        ok

  end

func playstart oGame

  oGame {
        FPS = 60
        FixedFPS = 15
        Title = "Super Man 2016"
        Sprite {
          file = "images/supermancity.jpg"
          x = 0 y=0 width=800 height = 600 scaled = true animate = false
        }
        Map {
          blockwidth = 80
          blockheight = 80
          aMap = [
                  [0,0,0,4,4,4,0,0,0,1,0,0,0,1,4,4,0,1,0,0,0,0,4,4,0,1,4,
4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,1,0,0,0,1,0,3,3,3,5,3,3,3,3,0],
                  [0,0,4,0,4,0,4,0,0,1,0,0,0,3,4,4,4,1,0,0,0,0,4,4,0,1,4,
4,4,0,0,4,4,4,4,4,4,4,4,4,4,4,4,1,4,1,0,0,0,1,0,0,0,1,0,4,4,4,4,4,4,4,4,0],
                  [0,0,0,4,4,4,0,0,0,1,0,0,0,4,4,4,4,1,0,0,0,0,0,0,0,3,4,
4,4,0,0,4,0,0,0,0,0,0,4,2,0,0,4,1,4,1,4,2,4,1,0,2,0,1,0,4,4,4,4,4,4,4,4,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,4,4,4,4,4,4,4,4,1,0,0,4,1,4,1,4,1,4,1,0,1,0,1,0,2,2,2,2,2,2,2,2,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,2,0,0,0,0,0,2,0,3,0,0,0,1,4,1,4,1,4,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0],
                  [0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,4,3,4,1,4,3,0,1,0,3,0,1,0,0,0,0,0,0,0,0],
                  [0,0,2,0,0,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0],
                  [0,0,1,0,0,1,0,0,1,3,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0]
                ]
          aImages = ["images/smwall.png","images/smwallup.png",
                  "images/smwalldown.png","images/smstar.png",
                  "images/smkey.png","images/smstar2.png"]
        }

        sprite {
          type = ge_type_enemy
          animate = false
          file  = "images/smhome.png"
          x = 5000
          y = 400
          width = 290
          height = 200
          transparent = true

          state = func oGame,oSelf {
                oself {
                  x = 5000 +  oGame.aObjects[2].x
                  if x < 0 or x > SCREEN_W return ok
                }
                if oGameState.gameresult or oGameState.DoorKey = false  return ok
                if oGame.aObjects[oGameState.playerindex].x > oself.x + 100 and
                  oGame.aObjects[oGameState.playerindex].y > oself.y + 50
                  oGameState.gameresult = true
                  oGame {
                        sprite {
                          file = "images/smwin.jpg"
                          x=0 y=0 width=800 height=600
                          scaled = true animate=false
                          state = func ogame,oself {
                                oself {
                                  x-=5
                                  y-=5
                                  width +=10
                                  height +=10
                                  if x = -300
                                        ogame.shutdown = true
                                  ok
                                }
                          }
                        }
                  }
                ok
          }

        }

        animate {
          file = "images/superman.png"
          x = 0
          y = 0
          framewidth = 60
          scaled = true
          height = 86
          width = 60
          nStep = 3
          transparent = true
          state = func oGame,oSelf {

                checkstarskeycol(oGame,oSelf)

                if not oGameState.playerwin
                        oself {
                          file = "images/superman.png"
                          height = 86
                          width = 60
                          for t=1 to 8
                                if checkwall2(oGame,oSelf,0,5,[2,1])
                                  y += 5
                                else
                                  exit
                                ok
                          next
                          if y > 500 y=500 ok
                        }
                ok

          }
          keypress = func ogame,oself,nKey {
                if oGameState.gameresult = false

                  oself {
                        if nkey = key_up  and checkwall(oGame,oSelf,0,-40)
                          oGameState.value -= 1
                          checkgameover(oGame)
                          file = "images/supermanup.png"
                          height = 123
                          dotransparent()
                          y -= 40
                          oGameState.down = 10
                          if y<=0 y=0 ok
                        but nkey = key_down and checkwall(oGame,oSelf,0,40)
                          file = "images/supermandown.png"
                          dotransparent()
                          y += 40
                          if y>=500 y=500 ok
                        but nKey = key_right and checkwall(oGame,oSelf,10,0)
                          file = "images/supermanright.png"
                          dotransparent()
                          x += 10
                          if x >= 440
                                if oGame.aObjects[2].x > -4500
                                  oGame.aObjects[2].x -= 50
                                  callenemystate(oGame)
                                else
                                  if x <= 750
                                        if  checkwall(oGame,oSelf,10,0)
                                          x += 10
                                        ok
                                  else
                                        if  checkwall(oGame,oSelf,-10,0)
                                          x -= 10
                                        ok
                                  ok
                                  return
                                ok
                                x=400
                          ok
                        but nKey = key_left and checkwall(oGame,oSelf,-10,0)
                          file = "images/supermanleft.png"
                          dotransparent()
                          x -= 10
                          if x <= 0
                                x += 10
                                if oGame.aObjects[2].x != 0
                                  oGame.aObjects[2].x += 50
                                  callenemystate(oGame)
                                  x += 50
                                ok
                          ok
                        but nkey = key_esc or nKey = GE_AC_BACK
                          ogame.shutdown()
                        ok
                  }
                ok
          }
          mouse = func ogame,oself,nType,aMouseList {
                if nType = GE_MOUSE_DOWN
                  oGameState.moveplayer = TRUE
                But nType = GE_MOUSE_UP
                  oGameState.moveplayer = FALSE
                ok
                if oGameState.moveplayer = TRUE
                  if aMouseList[GE_MOUSE_X] < oSelf.X  # 左
                        cFunc = oself.keypress
                        call cFunc(oGame,oSelf,Key_left)
                  else
                        cFunc = oself.keypress
                        call cFunc(oGame,oSelf,Key_right)
                  ok
                  if aMouseList[GE_MOUSE_Y] < oSelf.Y  # 上
                        cFunc = oself.keypress
                        call cFunc(oGame,oSelf,Key_up)
                  else
                        cFunc = oself.keypress
                        call cFunc(oGame,oSelf,Key_down)
                  ok
                ok
          }
        }

        addenemy(oGame,600)
        addenemy(oGame,900)
        addenemy(oGame,1550)
        addenemy(oGame,2350)
        addenemy(oGame,3350)
        addenemy(oGame,3500)
        addenemy(oGame,3670)
        addenemy(oGame,3840)

        text {
          animate = false
          point = 400
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Score : " + oGameState.score
          x = 500  y=0
          state = func oGame,oSelf {
                oSelf { text = "Score : " + oGameState.score }
          }
        }

        text {
          animate = false
          point = 400
          size = 30
          file = "fonts/pirulen.ttf"
          text = "Energy : " + oGameState.value
          x = 10  y=0
          state = func oGame,oSelf { oSelf { text = "Energy : " + oGameState.value } }
        }
  }

func inlist nValue,aList
  for x in aList
        if x = nValue
          return true
        ok
  next
  return false

func checkwall oGame,oself,diffx,diffy
  alist = [1,2,3]
  return checkwall2(oGame,oself,diffx,diffy,aList)

func checkwall2 oGame,oself,diffx,diffy,aList
  xPos = oSelf.x + diffx
  yPos = oSelf.y + diffy
  nValue = oGame.aObjects[2].getvalue(xPos,yPos)
  nValue = inlist(nValue,aList)
  nValue = not nValue
  if nValue = 0 return nValue ok

  xPos = oSelf.x + diffx
  yPos = oSelf.y + diffy + oSelf.height
  nValue = oGame.aObjects[2].getvalue(xPos,yPos)
  nValue = inlist(nValue,aList)
  nValue = not nValue
  if nValue = 0 return nValue ok

  xPos = oSelf.x + diffx + oSelf.width
  yPos = oSelf.y + diffy
  nValue = oGame.aObjects[2].getvalue(xPos,yPos)
  nValue = inlist(nValue,aList)
  nValue = not nValue
  if nValue = 0 return nValue ok

  xPos = oSelf.x + diffx + oSelf.width
  yPos = oSelf.y + diffy + oSelf.height
  nValue = oGame.aObjects[2].getvalue(xPos,yPos)
  nValue = inlist(nValue,aList)
  nValue = not nValue
  if nValue = 0 return nValue ok

  return nValue

func checkopenwall oGame
  if oGameState.score = 900
        oGame.aObjects[2].aMap[3][10] = 3
        oGame.aObjects[2].aMap[4][10] = 0
        oGame.aObjects[2].aMap[5][10] = 0
        oGame.aObjects[2].aMap[6][10] = 0
        oGame.aObjects[2].aMap[7][10] = 0
        oGame.aObjects[2].aMap[8][10] = 0
  but oGameState.score = 1800
        oGame.aObjects[2].aMap[3][18] = 3
        oGame.aObjects[2].aMap[4][18] = 0
        oGame.aObjects[2].aMap[5][18] = 0
        oGame.aObjects[2].aMap[6][18] = 0
        oGame.aObjects[2].aMap[7][18] = 0
        oGame.aObjects[2].aMap[8][18] = 0
  but oGameState.score = 5500
        oGame.aObjects[2].aMap[1][44] = 0
        oGame.aObjects[2].aMap[2][44] = 0
        oGame.aObjects[2].aMap[3][44] = 2
  ok

func checkgameover ogame
  if oGameState.gameresult  return ok
  if oGameState.value <= 0
        oGameState.value = 0
        oGameState.gameresult = true
        oGame {
          text {
                point = 400
                size = 30
                nStep = 9
                file = "fonts/pirulen.ttf"
                text = "Game Over !!!"
                x = 500  y=10
                state = func ogame,oself {
                  if oself.y >= 400
                        ogame.shutdown = true
                  ok
                }
          }
        }
        showfire(oGame,oGame.aObjects[oGameState.PlayerIndex].x+40,
                 oGame.aObjects[oGameState.PlayerIndex].y+40)
        oGame.aObjects[oGameState.PlayerIndex].enabled = false
        oGame.remove(oGameState.PlayerIndex)
  ok

func showfire oGame,nX,nY
  oGame {
        animate {
          file = "images/fire.png"
          x = nX
          y = nY
          framewidth = 40
          height = 42
          nStep = 3
          transparent = true
          state = func oGame,oSelf {
                oSelf {
                  nStep--
                  if nStep = 0
                        nStep = 3
                        if frame < 13
                          frame++
                        else
                          frame=1
                          oGame.remove(oself.nIndex)
                        ok
                  ok
                }
          }
        }
  }

func addenemy oGame,xPos
  oGame {
        lbraceend = false
        sprite {
                type = ge_type_enemy
                file = "images/smenemy.png"
                transparent = true
                x = xPos y =10 width=100 height=100
                animate=true Scaled=true
                direction = GE_DIRECTION_NOMOVE
                temp = xPos
                state = func oGame,oSelf {
                  oself {
                        x = oSelf.temp +  oGame.aObjects[2].x
                        if y < 0 y = 0 ok
                        if y > 100 y=100 ok
                        if x > SCREEN_W or x < 0 return ok
                  }

                  if random(10) = 1
                        if oGameState.gameresult return ok
                        ogame {
                          sprite {
                                type = ge_type_fire
                                file  = "images/smrocket.png"
                                scaled  = true
                                transparent = true
                                x = oself.x + 30
                                y = oself.y + oself.height+ 30
                                width = 30
                                height = 30
                                point = ogame.screen_h+30
                                nstep = 30
                                direction = ge_direction_incvertical
                                xvalue =  oGame.aObjects[2].x
                                temp = oself.x + 30 - xvalue
                                state = func oGame,oSelf {
                                  oself { x = oSelf.temp +  oGame.aObjects[2].x  }
                                  x =  oGame.aObjects[oGameState.playerindex]
                                  if oself.x >= x.x and oself.y >= x.y and
                                         oself.x <= x.x + x.width and
                                         oself.y <= x.y + x.height
                                         if oGameState.value > 0
                                           oGameState.value-=1000
                                         ok
                                         ogame.remove(oself.nindex)
                                         checkgameover(oGame)
                                  ok
                                }
                          }
                        }
                  ok
                }
          }
  }
  ogame.lbraceend = true

func checkstarskey oGame,oSelf,nValue,nRow,nCol
  switch nValue
        on 4
          oGame.aObjects[2].aMap[nRow][nCol] = 6
          oGameState.Score += 100
          checkopenwall(oGame)
          oGame { Sound {
                once = true
                file = "sound/sfx_point.wav"
          } }
        on 5
          oGame.aObjects[2].aMap[nRow][nCol] = 0
          oGameState.DoorKey = true
          oGameState.Score += 500
          checkopenwall(oGame)
          oGame { Sound {
                once = true
                file = "sound/sfx_point.wav"
          } }
  off

func checkstarskeycol oGame,oSelf
  nValue = oGame.aObjects[2].getvalue(oSelf.x,oSelf.y)
  nRow = oGame.aObjects[2].getrow(oSelf.x,oSelf.y)
  nCol = oGame.aObjects[2].getcol(oSelf.x,oSelf.y)
  checkstarskey(oGame,oSelf,nValue,nRow,nCol)

  nValue = oGame.aObjects[2].getvalue(oSelf.x+oSelf.width,oSelf.y+oSelf.height)
  nRow = oGame.aObjects[2].getrow(oSelf.x+oSelf.width,oSelf.y+oSelf.height)
  nCol = oGame.aObjects[2].getcol(oSelf.x+oSelf.width,oSelf.y+oSelf.height)
  checkstarskey(oGame,oSelf,nValue,nRow,nCol)

  nValue = oGame.aObjects[2].getvalue(oSelf.x+oSelf.width,oSelf.y)
  nRow = oGame.aObjects[2].getrow(oSelf.x+oSelf.width,oSelf.y)
  nCol = oGame.aObjects[2].getcol(oSelf.x+oSelf.width,oSelf.y)
  checkstarskey(oGame,oSelf,nValue,nRow,nCol)

  nValue = oGame.aObjects[2].getvalue(oSelf.x,oSelf.y+oSelf.height)
  nRow = oGame.aObjects[2].getrow(oSelf.x,oSelf.y+oSelf.height)
  nCol = oGame.aObjects[2].getcol(oSelf.x,oSelf.y+oSelf.height)
  checkstarskey(oGame,oSelf,nValue,nRow,nCol)

func callenemystate oGame
  for t in oGame.aObjects
        t {
          if type = GE_TYPE_ENEMY
                call state(oGame,t)
          ok
        }
  next

Class GameState

  down = 3
  gameresult = false
  Score = 0
  startplay=false
  lastcol = 0
  playerwin = false
  DoorKey = false
  playerindex = 4
  value = 1000
  moveplayer = false

スクリーンショット:

Android 用ゲームのビルド方法

モバイル用の RingLibSDL ゲームのビルド方法です。

これにより、 Ring の 2D ゲームエンジンで開発したアプリケーションのパッケージ (*.apk) を作成できます。

Android SDK の要件と更新のダウンロード

Android SDK ツール

https://developer.android.com/studio/index.html

Android NDK (android-ndk-r10c で検証済み)

https://developer.android.com/ndk/index.html

Apache Ant v1.8 以降

http://ant.apache.org/bindownload.cgi

Java SE Development Kit (JDK) v6 以降

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Android SDK を更新して開発に必要な API とツールのパッケージを入手します。

Android 4.4.2 (API 19) で検証済み

Windows の場合 - システムにより次の環境変数を定義します。

JAVA_HOME

用例 : C:\Program Files (x86)\Java\jdk1.8.0_05

ANDROID_HOME

用例 : C:\mahmoud\Tools\Java-Android\adt-bundle-windows-x86-20140702\sdk

プロジェクトのフォルダ

プロジェクトのフォルダを開きます : ring/extensions/android/ringlibsdl/project

アセットのフォルダへソースコード (*.ring) および、画像、音声ファイルを追加できます。

すぐにビルドできる Flappy Bird 3000 ゲームがあります。

start.ring ファイルから実行開始します。

load "game2.ring"

プロジェクトのビルド

ring/extensions/android/ringlibsdl/project フォルダへ移動します。

このコマンドでビルドします (一度だけ必ず実行してください)。

ndk-build

このコマンドでパッケージ (*.apk) を作成します。

ant debug

プロジェクトのビルドにバッチファイル (build.bat) を使うこともできます。

rem このバッチファイルは、お使いの開発環境に合わせて書き換えてください。

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_05
set ANDROID_HOME=C:\mahmoud\Tools\JavaAndroid\adt-bundle-windows-x86-20140702\sdk
set NDK_ROOT=C:\mahmoud\Tools\JavaAndroid\android-ndk-r10c

set path=%path%;C:\mahmoud\Tools\JavaAndroid\android-ndk-r10c
set path=%path%;C:\mahmoud\Tools\JavaAndroid\apache-ant-1.9.4\bin

ndk-build

RingRayLib によるゲーム開発

RingRayLib 拡張機能の用法です。

はじめに

RingRayLib は RayLib ゲームプログラミングライブラリ用の拡張機能です。

RayGUI 関数にも対応しています。

基本ウィンドウ

load "raylib.ring"

screenWidth     = 800
screenHeight    = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window")

SetTargetFPS(60)

while !WindowShouldClose()
        BeginDrawing()
        ClearBackground(RED)
        DrawText("Congrats! You created your first window!", 190, 200, 20, WHITE)
        EndDrawing()
end

CloseWindow()

スクリーンショット:

キー入力

load "raylib.ring"

screenWidth  = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - keyboard input")
ballPosition = Vector2(screenWidth/2, screenHeight/2)
SetTargetFPS(60)

while !WindowShouldClose()
                if IsKeyDown(KEY_RIGHT) ballPosition.x += 2 ok
                if IsKeyDown(KEY_LEFT)  ballPosition.x -= 2 ok
                if IsKeyDown(KEY_UP)    ballPosition.y -= 2 ok
                if IsKeyDown(KEY_DOWN)  ballPosition.y += 2 ok
                BeginDrawing()
                ClearBackground(RAYWHITE)
                DrawText("move the ball with arrow keys", 10, 10, 20, DARKGRAY)
                DrawCircleV(ballPosition, 50, MAROON)
                EndDrawing()
end

CloseWindow()

スクリーンショット:

マウス入力

load "raylib.ring"

screenWidth  = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - mouse input")

ballPosition    = Vector2(100, 100)
ballColor       = DARKBLUE

SetTargetFPS(60)

while ! WindowShouldClose()

                ballPosition = GetMousePosition()

                if IsMouseButtonPressed(MOUSE_LEFT_BUTTON)
                        ballColor = MAROON
                but IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)
                        ballColor = LIME
                but IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)
                        ballColor = DARKBLUE
                ok

                BeginDrawing()
                ClearBackground(BLACK)
                DrawCircleV(ballPosition, 40, ballColor)
                DrawText("move ball with mouse and click mouse button to change color",
                         10, 10, 20, YELLOW)
                EndDrawing()

end

CloseWindow()

スクリーンショット:

3Dカメラ

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera mode")

camera = Camera3D(
        0, 10, 10,              // カメラの位置
        0, 0, 0 ,               // カメラの視点位置
        0, 1, 0,                // カメラの上方向 (対象に向かい合って回転)
        45,                     // カメラの Y 視野
        CAMERA_PERSPECTIVE)     // カメラモードの型

cubePosition = Vector3(0, 0, 0)

SetTargetFPS(60)

while !WindowShouldClose()

                BeginDrawing()

                ClearBackground(RAYWHITE)

                BeginMode3D(camera)

                DrawCube(cubePosition, 2, 2, 2, RED)
                DrawCubeWires(cubePosition, 2, 2, 2, MAROON)

                DrawGrid(10, 1)

                EndMode3D()

                DrawText("Welcome to the third dimension!", 10, 40, 20, DARKGRAY)

                DrawFPS(10, 10)

                EndDrawing()

end

CloseWindow()

スクリーンショット:

3D自由視点カメラ

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free")

camera = Camera3D(
        10, 10, 10,             // カメラの位置
        0, 0, 0 ,               // カメラの視点位置
        0, 1, 0,                // カメラの上方向 (対象に向かい合って回転)
        45,                     // カメラの Y 視野
        CAMERA_PERSPECTIVE)     // カメラモードの型

cubePosition = Vector3(0, 0, 0)

SetCameraMode(camera, CAMERA_FREE)              // カメラモードを自由視点へ設定

SetTargetFPS(60)

while !WindowShouldClose()

                UpdateCamera(camera)

                if IsKeyDown("Z") camera.target = Vector3( 0, 0, 0) ok

                BeginDrawing()

                ClearBackground(RAYWHITE)

                BeginMode3D(camera)

                DrawCube(cubePosition, 2, 2, 2, RED)
                DrawCubeWires(cubePosition, 2, 2, 2, MAROON)

                DrawGrid(10, 1)

                EndMode3D()

                DrawRectangle( 10, 10, 320, 133, Fade(SKYBLUE, 0.5))
                DrawRectangleLines( 10, 10, 320, 133, BLUE)

                DrawText("Free camera default controls:", 20, 20, 10, BLACK)
                DrawText("- Mouse Wheel to Zoom in-out", 40, 40, 10, DARKGRAY)
                DrawText("- Mouse Wheel Pressed to Pan", 40, 60, 10, DARKGRAY)
                DrawText("- Alt + Mouse Wheel Pressed to Rotate", 40, 80, 10, DARKGRAY)
                DrawText("- Alt + Ctrl + Mouse Wheel Pressed for Smooth Zoom",
                         40, 100, 10, DARKGRAY)
                DrawText("- Z to zoom to (0, 0, 0)", 40, 120, 10, DARKGRAY)

                EndDrawing()
end

CloseWindow()

スクリーンショット:

マウスホイール

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - input mouse wheel")

boxPositionY = screenHeight/2 - 40
scrollSpeed = 4

SetTargetFPS(60)

while !WindowShouldClose()
        boxPositionY -= (GetMouseWheelMove()*scrollSpeed)

        BeginDrawing()

        ClearBackground(RAYWHITE)

        DrawRectangle(screenWidth/2 - 40, boxPositionY, 80, 80, MAROON)

        DrawText("Use mouse wheel to move the cube up and down!", 10, 10, 20, GRAY)
        DrawText("Box position Y: "+boxPositionY, 10, 40, 20, LIGHTGRAY)

        EndDrawing()
end

CloseWindow()

スクリーンショット:

マルチタッチ入力

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - input multitouch")

ballPosition = Vector2(-100, -100)
ballColor = BEIGE

touchCounter = 0
touchPosition = vector2(0,0)

MAX_TOUCH_POINTS = 5

SetTargetFPS(60)

while !WindowShouldClose()

        ballPosition = GetMousePosition()

        ballColor = BEIGE

        if IsMouseButtonDown(MOUSE_LEFT_BUTTON) ballColor = MAROON ok
        if IsMouseButtonDown(MOUSE_MIDDLE_BUTTON) ballColor = LIME ok
        if IsMouseButtonDown(MOUSE_RIGHT_BUTTON) ballColor = DARKBLUE ok

        if IsMouseButtonPressed(MOUSE_LEFT_BUTTON) touchCounter = 10 ok
        if IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) touchCounter = 10 ok
        if IsMouseButtonPressed(MOUSE_RIGHT_BUTTON) touchCounter = 10 ok

        if touchCounter > 0 touchCounter-- ok

        BeginDrawing()

        ClearBackground(RAYWHITE)

        for i = 0 to MAX_TOUCH_POINTS-1
                touchPosition = GetTouchPosition(i)

                if touchPosition.x >= 0 && touchPosition.y >= 0
                        DrawCircleV(touchPosition, 34, ORANGE)
                        DrawText(""+ i, touchPosition.x - 10,
                                touchPosition.y - 70, 40, BLACK)
                ok
        next

        DrawCircleV(ballPosition, 30 + (touchCounter*3), ballColor)

        DrawText("move ball with mouse and click mouse button to change color",
                         10, 10, 20, DARKGRAY)
        DrawText("touch the screen at multiple locations to get multiple balls",
                         10, 30, 20, DARKGRAY)

        EndDrawing()

end

CloseWindow()

スクリーンショット:

ファーストパーソンカメラ

load "raylib.ring"

MAX_COLUMNS = 20

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera first person")

camera = Camera3d(
        4, 2, 4,
        0, 1, 0,
        0, 1, 0,
        60,
        CAMERA_PERSPECTIVE
)

heights = list(MAX_COLUMNS)
positions = list(MAX_COLUMNS)
for item in positions item = vector3(0,0,0) next
colors = list(MAX_COLUMNS)
for item in colors item = BLACK next

for i = 1 to  MAX_COLUMNS
        heights[i] = GetRandomValue(1, 12)
        positions[i] = Vector3(GetRandomValue(-15, 15),
                         heights[i]/2, GetRandomValue(-15, 15) )
        colors[i] = RAYLibColor(GetRandomValue(20, 255),
                         GetRandomValue(10, 55), 30, 255 )
next

SetCameraMode(camera, CAMERA_FIRST_PERSON)

SetTargetFPS(60)

while !WindowShouldClose()

        UpdateCamera(camera)
        BeginDrawing()

        ClearBackground(RAYWHITE)

        BeginMode3D(camera)

        DrawPlane(Vector3( 0, 0, 0 ), Vector2(32, 32 ), LIGHTGRAY) // 地面の描画
        DrawCube(Vector3( -16, 2.5, 0 ), 1, 5, 32, BLUE)     // 青壁の描画
        DrawCube(Vector3( 16, 2.5, 0 ), 1, 5, 32, LIME)      // 緑壁の描画
        DrawCube(Vector3( 0, 2.5, 16 ), 32, 5, 1, GOLD)      // 黄壁の描画

        for i = 1 to  MAX_COLUMNS
                DrawCube(positions[i], 2, heights[i], 2, colors[i])
                DrawCubeWires(positions[i], 2, heights[i], 2, MAROON)
        next

        EndMode3D()

        DrawRectangle( 10, 10, 220, 70, Fade(SKYBLUE, 0.5f))
        DrawRectangleLines( 10, 10, 220, 70, BLUE)

        DrawText("First person camera default controls:", 20, 20, 10, BLACK)
        DrawText("- Move with keys: W, A, S, D", 40, 40, 10, DARKGRAY)
        DrawText("- Mouse move to look around", 40, 60, 10, DARKGRAY)

        EndDrawing()
end

CloseWindow()

スクリーンショット:

3Dピッキング

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d picking")

camera = Camera3D(
        10, 10, 10,
        0, 0, 0 ,
        0, 1, 0 ,
        45,
        CAMERA_PERSPECTIVE
)

cubePosition = Vector3( 0, 1, 0 )
cubeSize = Vector3( 2, 2, 2 )

ray = Ray(0,0,0,0,0,0)

collision = false

SetCameraMode(camera, CAMERA_FREE)

SetTargetFPS(60)

while !WindowShouldClose()

        UpdateCamera(camera)

        if IsMouseButtonPressed(MOUSE_LEFT_BUTTON)
                if !collision
                        ray = GetMouseRay(GetMousePosition(), camera)
                        collision = CheckCollisionRayBox(ray,
                        BoundingBox( cubePosition.x - cubeSize.x/2,
                        cubePosition.y - cubeSize.y/2, cubePosition.z - cubeSize.z/2,
                        cubePosition.x + cubeSize.x/2, cubePosition.y + cubeSize.y/2,
                        cubePosition.z + cubeSize.z/2 ) )
                else collision = false
                ok
        ok

        BeginDrawing()

        ClearBackground(RAYWHITE)

        BeginMode3D(camera)

        if collision
                DrawCube(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, RED)
                DrawCubeWires(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, MAROON)

                DrawCubeWires(cubePosition, cubeSize.x + 0.2f,
                                cubeSize.y + 0.2f, cubeSize.z + 0.2f, GREEN)
        else
                DrawCube(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, GRAY)
                DrawCubeWires(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, DARKGRAY)
        ok

        DrawRay(ray, MAROON)
        DrawGrid(10, 1)

        EndMode3D()

        DrawText("Try selecting the box with mouse!", 240, 10, 20, DARKGRAY)

        if collision  DrawText("BOX SELECTED",
                (screenWidth - MeasureText("BOX SELECTED", 30)) / 2,
                screenHeight * 0.1f, 30, GREEN) ok

        DrawFPS(10, 10)

        EndDrawing()
end

CloseWindow()

スクリーンショット:

全画面表示

load "raylib.ring"

screenWidth     = 1024
screenHeight    = 768

InitWindow(screenWidth, screenHeight, "Full Screen")
ToggleFullScreen()

SetTargetFPS(60)

while !WindowShouldClose()
        BeginDrawing()
                ClearBackground(DARKBLUE)
                DrawText("Count from 1 to 10", 190, 200, 20, Yellow)
                for t = 1 to 10
                        DrawText("Number: " + t, 190, 200+(30*t), 20, WHITE)
                next
        EndDrawing()
end

CloseWindow()

スクリーンショット:

二個の立方体

load "raylib.ring"

screenWidth  = 800
screenHeight = 450
InitWindow(screenWidth, screenHeight, "raylib [core] example - Two Cubes")

camera = Camera3D(
        10, 10, 10,
        0, 0, 0 ,
        0, 1, 0 ,
        45,
        CAMERA_PERSPECTIVE
)

cubePosition1 = Vector3( 0, 1, 4 )
cubePosition2 = Vector3( 0, 1, -4 )
cubeSize = Vector3( 2, 2, 2 )

ray = Ray(0,0,0,0,0,0)

collision1 = false
collision2 = false

SetCameraMode(camera, CAMERA_FREE)

SetTargetFPS(60)

while !WindowShouldClose()

                UpdateCamera(camera)

                if IsMouseButtonPressed(MOUSE_LEFT_BUTTON)
                        if !collision1
                                ray = GetMouseRay(GetMousePosition(), camera)

                                collision1 = CheckCollisionRayBox(ray,
                                BoundingBox( cubePosition1.x -
                                cubeSize.x/2, cubePosition1.y - cubeSize.y/2,
                                cubePosition1.z - cubeSize.z/2,
                                cubePosition1.x + cubeSize.x/2,
                                cubePosition1.y + cubeSize.y/2,
                                cubePosition1.z + cubeSize.z/2 ) )
                        else
                                collision1 = false
                        ok
                        if  !collision2
                                ray = GetMouseRay(GetMousePosition(), camera)

                                collision2 = CheckCollisionRayBox(ray,
                                BoundingBox( cubePosition2.x -
                                cubeSize.x/2, cubePosition2.y - cubeSize.y/2,
                                cubePosition2.z - cubeSize.z/2,
                                cubePosition2.x + cubeSize.x/2,
                                cubePosition2.y + cubeSize.y/2,
                                cubePosition2.z + cubeSize.z/2 ) )
                        else
                                collision2 = false
                ok
        ok

                BeginDrawing()

                        ClearBackground(RAYWHITE)

                        BeginMode3D(camera)

                                 if collision1
                                        DrawCube(cubePosition1, cubeSize.x,
                                        cubeSize.y, cubeSize.z, RED)
                                        DrawCubeWires(cubePosition1, cubeSize.x,
                                        cubeSize.y, cubeSize.z, MAROON)

                                        DrawCubeWires(cubePosition1, cubeSize.x +
                                        0.2f, cubeSize.y + 0.2f,
                                        cubeSize.z + 0.2f, GREEN)
                                        collision1 = true
                                 else
                                        DrawCube(cubePosition1, cubeSize.x,
                                        cubeSize.y, cubeSize.z, GRAY)
                                        DrawCubeWires(cubePosition1, cubeSize.x,
                                        cubeSize.y, cubeSize.z, DARKGRAY)
                                        collision1 = false
                                 ok

                                 if collision2
                                        DrawCube(cubePosition2, cubeSize.x,
                                        cubeSize.y, cubeSize.z, RED)
                                        DrawCubeWires(cubePosition2, cubeSize.x,
                                        cubeSize.y, cubeSize.z, MAROON)

                                        DrawCubeWires(cubePosition2, cubeSize.x +
                                        0.2f, cubeSize.y + 0.2f,
                                        cubeSize.z + 0.2f, GREEN)
                                        collision2 = true
                                 else
                                        DrawCube(cubePosition2, cubeSize.x,
                                        cubeSize.y, cubeSize.z, GRAY)
                                        DrawCubeWires(cubePosition2, cubeSize.x,
                                        cubeSize.y, cubeSize.z, DARKGRAY)
                                        collision2 = false
                                 ok

                                DrawRay(ray, MAROON)
                                DrawGrid(10, 1)

                        EndMode3D()

                        DrawText("Try selecting the box with mouse!", 240, 10,
                                        20, DARKGRAY)

                        if collision1 or collision2
                                DrawText("BOX SELECTED",
                                (screenWidth - MeasureText("BOX SELECTED", 30)) / 2,
                                screenHeight * 0.1f, 30, GREEN)
                        ok

                        DrawFPS(10, 10)

                EndDrawing()
end

CloseWindow()

スクリーンショット:

基本図形

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [shapes] example - basic shapes drawing")

SetTargetFPS(60)

while !WindowShouldClose()

        BeginDrawing()

        ClearBackground(RAYWHITE)

        DrawText("some basic shapes available on raylib", 20, 20, 20, DARKGRAY)

        DrawCircle(screenWidth/4, 120, 35, DARKBLUE)

        DrawRectangle(screenWidth/4*2 - 60, 100, 120, 60, RED)
        DrawRectangleLines(screenWidth/4*2 - 40, 320, 80, 60, ORANGE)
        DrawRectangleGradientH(screenWidth/4*2 - 90, 170, 180, 130, MAROON, GOLD)

        DrawTriangle(Vector2(screenWidth/4*3, 80),
                                 Vector2(screenWidth/4*3 - 60, 150),
                                 Vector2(screenWidth/4*3 + 60, 150), VIOLET)

        DrawPoly(Vector2(screenWidth/4*3, 320), 6, 80, 0, BROWN)

        DrawCircleGradient(screenWidth/4, 220, 60, GREEN, SKYBLUE)

        DrawLine(18, 42, screenWidth - 18, 42, BLACK)
        DrawCircleLines(screenWidth/4, 340, 80, DARKBLUE)
        DrawTriangleLines(Vector2(screenWidth/4*3, 160),
                        Vector2(screenWidth/4*3 - 20, 230),
                        Vector2(screenWidth/4*3 + 20, 230), DARKBLUE)
        EndDrawing()

end

CloseWindow()

スクリーンショット:

Ring の描画

load "raylib.ring"

screenWidth = 800       screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [shapes] example - draw ring")

center = Vector2((GetScreenWidth() - 300)/2, GetScreenHeight()/2 )

innerRadius = 80        outerRadius = 190
startAngle = 0          endAngle = 360          segments = 0
drawRing = true         drawRingLines = false   drawCircleLines = false

SetTargetFPS(60)

while !WindowShouldClose()

        BeginDrawing()

        ClearBackground(RAYWHITE)

        DrawLine(500, 0, 500, GetScreenHeight(), Fade(LIGHTGRAY, 0.6))
        DrawRectangle(500, 0, GetScreenWidth() - 500,
                         GetScreenHeight(), Fade(LIGHTGRAY, 0.3))

        if drawRing DrawRing(center, innerRadius, outerRadius,
                startAngle, endAngle, segments, Fade(MAROON, 0.3)) ok
        if drawRingLines DrawRingLines(center, innerRadius,
                outerRadius, startAngle, endAngle,
                 segments, Fade(BLACK, 0.4)) ok
        if drawCircleLines DrawCircleSectorLines(center, outerRadius,
                startAngle, endAngle, segments, Fade(BLACK, 0.4)) ok

        startAngle = GuiSliderBar(Rectangle( 600, 40, 120, 20 ),
                        "StartAngle", startAngle, -450, 450, true)
        endAngle = GuiSliderBar(Rectangle( 600, 70, 120, 20 ),
                        "EndAngle", endAngle, -450, 450, true)

        innerRadius = GuiSliderBar(Rectangle( 600, 140, 120, 20 ),
                        "InnerRadius", innerRadius, 0, 100, true)
        outerRadius = GuiSliderBar(Rectangle( 600, 170, 120, 20 ),
                        "OuterRadius", outerRadius, 0, 200, true)

        segments = GuiSliderBar(Rectangle( 600, 240, 120, 20 ),
                        "Segments", segments, 0, 100, true)

        drawRing = GuiCheckBox(Rectangle( 600, 320, 20, 20 ),
                        "Draw Ring", drawRing)
        drawRingLines = GuiCheckBox(Rectangle( 600, 350, 20, 20 ),
                        "Draw RingLines", drawRingLines)
        drawCircleLines = GuiCheckBox(Rectangle( 600, 380, 20, 20 ),
                        "Draw CircleLines", drawCircleLines)

        if segments >= 4
                DrawText("MODE: MANUAL", 600, 270, 10, MAROON)
        else
                DrawText("MODE: AUTO", 600, 270, 10, DARKGRAY)
        ok

        DrawFPS(10, 10)

        EndDrawing()
end

CloseWindow()

スクリーンショット:

スクリーンショット (2):

ベジェ曲線

load "raylib.ring"

screenWidth = 800
screenHeight = 450

SetConfigFlags(FLAG_MSAA_4X_HINT)
InitWindow(screenWidth, screenHeight, "raylib [shapes] example - cubic-bezier lines")

start = Vector2(0,0)
endvec = Vector2(screenWidth,screenHeight)

SetTargetFPS(60)

while (!WindowShouldClose())

        if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
                start = GetMousePosition()
        else (IsMouseButtonDown(MOUSE_RIGHT_BUTTON))
                  endvec = GetMousePosition()
        ok

        BeginDrawing()

        ClearBackground(RAYWHITE)
        DrawText("USE MOUSE LEFT-RIGHT CLICK to DEFINE LINE START and END POINTS",
                         15, 20, 20, GRAY)
        DrawLineBezier(start, endvec, 2.0, RED)

        EndDrawing()

end

CloseWindow()

スクリーンショット:

当たり判定の領域

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [shapes] example - collision area")

// ボックス A: ボックスの移動
boxA = Rectangle( 10, GetScreenHeight()/2 - 50, 200, 100 )
boxASpeedX = 4

// ボックス B: マウスで移動したボックス
boxB = Rectangle( GetScreenWidth()/2 - 30, GetScreenHeight()/2 - 30, 60, 60 )

boxCollision = GetCollisionRec(boxA, boxB)

boxCollision = Rectangle( 0,0,0,0 ) // 長方形の当たり判定

screenUpperLimit = 40      // トップメニューの制限

pause = false             // 移動の一時停止
collision = false         // 当たり判定の検出

SetTargetFPS(60)

while !WindowShouldClose()

        // 一時停止中でなければボックスを移動します
        if (not pause) boxA.x += boxASpeedX ok

        // 画面制限における X 方向のバウンスボックス
        if (((boxA.x + boxA.width) >= GetScreenWidth()) or (boxA.x <= 0))
                boxASpeedX = boxASpeedX*(-1) ok

        // プレイヤー操作のボックスを更新 (box02)
        boxB.x = GetMouseX() - boxB.width/2
        boxB.y = GetMouseY() - boxB.height/2

        // ボックス B が制限領域内から出られないようにします
        if ((boxB.x + boxB.width) >= GetScreenWidth())
                boxB.x = GetScreenWidth() - boxB.width
        else (boxB.x <= 0) boxB.x = 0 ok

        if ((boxB.y + boxB.height) >= GetScreenHeight())
                boxB.y = GetScreenHeight() - boxB.height
        else (boxB.y <= screenUpperLimit) boxB.y = screenUpperLimit ok

        // ボックスの当たり判定を確認
        collision = CheckCollisionRecs(boxA, boxB)

        // 長方形の当たり判定を取得 (当たり判定のみ)
        if (collision) boxCollision = GetCollisionRec(boxA, boxB) ok

        // ボックス A の移動を一時停止
        if (IsKeyPressed(KEY_SPACE)) pause = not pause ok

        BeginDrawing()

                ClearBackground(RAYWHITE)

                if collision = true
                   color = RED
                else
                   color = BLACK
                ok
                DrawRectangle(0, 0, screenWidth, screenUpperLimit, color)
                DrawRectangleRec(boxA, GOLD)

                boxB.x = GetMouseX() - boxB.width/2
                boxB.y = GetMouseY() - boxB.height/2
                collision = CheckCollisionRecs(boxA, boxB)
                DrawRectangleRec(boxB, BLUE)
                boxCollision = GetCollisionRec(boxA, boxB)

                if (collision) = true

                        // 当たり判定の領域を描画
                        DrawRectangleRec(boxCollision, LIME)

                        // 当たり判定のメッセージを描画
                        DrawText("COLLISION!", GetScreenWidth()/2 -
                                         MeasureText("COLLISION!", 20)/2,
                                        screenUpperLimit/2 - 10, 20, BLACK)

                        // 当たり判定の領域を描画
                        DrawText("Collision Area: " +
                                string(boxCollision.width*boxCollision.height),
                                GetScreenWidth()/2 - 100,
                                screenUpperLimit + 10, 20, BLACK)

                ok

                DrawFPS(10, 10)

        EndDrawing()

end

CloseWindow()

スクリーンショット:

視線追従

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [shapes] example - following eyes")

scleraLeftPosition = Vector2( GetScreenWidth()/2 - 100, GetScreenHeight()/2 )
scleraRightPosition = Vector2( GetScreenWidth()/2 + 100, GetScreenHeight()/2 )
scleraRadius = 80

irisLeftPosition = Vector2( GetScreenWidth()/2 - 100, GetScreenHeight()/2 )
irisRightPosition = Vector2( GetScreenWidth()/2 + 100, GetScreenHeight()/2 )
irisRadius = 24

angle = 0.0
dx = 0.0 dy = 0.0 dxx = 0.0 dyy = 0.0

SetTargetFPS(60)

while !WindowShouldClose()

        irisLeftPosition = GetMousePosition()
        irisRightPosition = GetMousePosition()

        // 左目にある強膜は確認しません
        if !CheckCollisionPointCircle(irisLeftPosition,
                scleraLeftPosition, scleraRadius - 20)
                dx = irisLeftPosition.x - scleraLeftPosition.x
                dy = irisLeftPosition.y - scleraLeftPosition.y

                angle = atan2(dy, dx)

                dxx = (scleraRadius - irisRadius)*cos(angle)
                dyy = (scleraRadius - irisRadius)*sin(angle)

                irisLeftPosition.x = scleraLeftPosition.x + dxx
                irisLeftPosition.y = scleraLeftPosition.y + dyy
        ok

        // 右目にある強膜は確認しません。
        if !CheckCollisionPointCircle(irisRightPosition,
                 scleraRightPosition, scleraRadius - 20)
                dx = irisRightPosition.x - scleraRightPosition.x
                dy = irisRightPosition.y - scleraRightPosition.y

                angle = atan2(dy, dx)

                dxx = (scleraRadius - irisRadius)*cos(angle)
                dyy = (scleraRadius - irisRadius)*sin(angle)

                irisRightPosition.x = scleraRightPosition.x + dxx
                irisRightPosition.y = scleraRightPosition.y + dyy
        ok

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawCircleV(scleraLeftPosition, scleraRadius, LIGHTGRAY)
                DrawCircleV(irisLeftPosition, irisRadius, BROWN)
                DrawCircleV(irisLeftPosition, 10, BLACK)

                DrawCircleV(scleraRightPosition, scleraRadius, LIGHTGRAY)
                DrawCircleV(irisRightPosition, irisRadius, DARKGREEN)
                DrawCircleV(irisRightPosition, 10, BLACK)

                DrawFPS(10, 10)

        EndDrawing()

end

CloseWindow()

スクリーンショット:

カラーパレット

load "raylib.ring"

MAX_COLORS_COUNT = 21          // 利用できる色値数

screenWidth = 800
screenHeight = 450
colors = list(MAX_COLORS_COUNT)
colorNames = list(MAX_COLORS_COUNT)
colorsRecs = list(MAX_COLORS_COUNT)
colorState = list(MAX_COLORS_COUNT)

InitWindow(screenWidth, screenHeight, "raylib [shapes] example - colors palette")

colors = [
        DARKGRAY, MAROON, ORANGE, DARKGREEN, DARKBLUE, DARKPURPLE, DARKBROWN,
        GRAY, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK, YELLOW,
        GREEN, SKYBLUE, PURPLE, BEIGE ]

colorNames = [
        "DARKGRAY", "MAROON", "ORANGE", "DARKGREEN", "DARKBLUE", "DARKPURPLE",
        "DARKBROWN", "GRAY", "RED", "GOLD", "LIME", "BLUE", "VIOLET", "BROWN",
        "LIGHTGRAY", "PINK", "YELLOW", "GREEN", "SKYBLUE", "PURPLE", "BEIGE" ]

for i = 1 to MAX_COLORS_COUNT
        colorsRecs[i] = new Rectangle(0,0,0,0)
next

for i = 1 to MAX_COLORS_COUNT
        colorState[i] = 0
next

// colorsRecs データで塗りつぶします (長方形ごとに)
for i = 1 to MAX_COLORS_COUNT
        colorsRecs[i].x = 20 + 100*((i-1)%7) + 10*((i-1)%7)
        colorsRecs[i].y = 80 + 100*floor((i-1)/7) + 10*floor((i-1)/7)
        colorsRecs[i].width = 100
        colorsRecs[i].height = 100
next

mousePoint = Vector2( 0.0, 0.0 )

SetTargetFPS(60)

// ゲームのメインループ
while !WindowShouldClose()

        mousePoint = GetMousePosition()

        for i = 1 to MAX_COLORS_COUNT
                if (CheckCollisionPointRec(mousePoint,
                         colorsRecs[i])) colorState[i] = 1
                else colorState[i] = 0 ok
        next

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawText("raylib colors palette", 28, 42, 20, BLACK)
                DrawText("press SPACE to see all colors",
                                 GetScreenWidth() - 180,
                                 GetScreenHeight() - 40, 10, GRAY)

                for i = 1 to MAX_COLORS_COUNT    // 長方形の描画
                        if colorState[i]
                           cstate = 0.6
                        else
                           cstate = 1.0
                        ok

                        DrawRectangleRec(colorsRecs[i], Fade(colors[i], cstate))

                        if (IsKeyDown(KEY_SPACE) || colorState[i])
                                DrawRectangle(colorsRecs[i].x,
                                colorsRecs[i].y + colorsRecs[i].height - 26,
                                colorsRecs[i].width, 20, BLACK)
                                DrawRectangleLinesEx(colorsRecs[i], 6,
                                Fade(BLACK, 0.3f))
                                DrawText(colorNames[i], colorsRecs[i].x +
                                colorsRecs[i].width - MeasureText(colorNames[i],
                                10) - 12, colorsRecs[i].y +
                                colorsRecs[i].height - 20, 10, colors[i])
                        ok
                next

        EndDrawing()

end

CloseWindow()

スクリーンショット:

長方形の拡縮

load "raylib.ring"

MOUSE_SCALE_MARK_SIZE = 12

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
                 "raylib [shapes] example - rectangle scaling mouse")

rec = Rectangle( 100, 100, 200, 80 )

mousePosition = Vector2( 0,0 )

mouseScaleReady = false
mouseScaleMode = false

SetTargetFPS(60)

while !WindowShouldClose()

        mousePosition = GetMousePosition()

        if (CheckCollisionPointRec(mousePosition, rec) and
                CheckCollisionPointRec(mousePosition,
                 Rectangle(rec.x + rec.width - MOUSE_SCALE_MARK_SIZE,
                        rec.y + rec.height - MOUSE_SCALE_MARK_SIZE,
                         MOUSE_SCALE_MARK_SIZE, MOUSE_SCALE_MARK_SIZE )))
                mouseScaleReady = true
                if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
                        mouseScaleMode = true ok
        else mouseScaleReady = false ok

        if (mouseScaleMode)

                mouseScaleReady = true

                rec.width = (mousePosition.x - rec.x)
                rec.height = (mousePosition.y - rec.y)

                if (rec.width < MOUSE_SCALE_MARK_SIZE)
                        rec.width = MOUSE_SCALE_MARK_SIZE ok
                if (rec.height < MOUSE_SCALE_MARK_SIZE)
                        rec.height = MOUSE_SCALE_MARK_SIZE ok

                if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
                        mouseScaleMode = false ok
        ok

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawText("Scale rectangle dragging from bottom-right corner!",
                                 10, 10, 20, GRAY)

                DrawRectangleRec(rec, Fade(GREEN, 0.5f))

                if (mouseScaleReady)

                        DrawRectangleLinesEx(rec, 1, RED)
                        DrawTriangle(Vector2( rec.x + rec.width -
                        MOUSE_SCALE_MARK_SIZE, rec.y + rec.height ),
                        Vector2( rec.x + rec.width, rec.y + rec.height ),
                        Vector2( rec.x + rec.width, rec.y + rec.height -
                                 MOUSE_SCALE_MARK_SIZE ), RED)
                ok

        EndDrawing()

end

CloseWindow()

スクリーンショット:

音楽のストリーミング再生

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
         "raylib [audio] example - music playing (streaming)")

InitAudioDevice()

music = LoadMusicStream("guitar_noodling.ogg")

PlayMusicStream(music)

timePlayed = 0.0
pause = false

SetTargetFPS(60)

while !WindowShouldClose()

        UpdateMusicStream(music)

        if IsKeyPressed(KEY_SPACE)
                StopMusicStream(music)
                PlayMusicStream(music)
        ok

        if IsKeyPressed(KEY_P)
                pause = !pause

                if pause
                        PauseMusicStream(music)
                else
                        ResumeMusicStream(music)
                ok
        ok

        timePlayed = GetMusicTimePlayed(music) / GetMusicTimeLength(music) *400

        if timePlayed > 400
                StopMusicStream(music)
        ok

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawText("MUSIC SHOULD BE PLAYING!", 255, 150, 20, LIGHTGRAY)

                         DrawRectangle(200, 200, 400, 12, LIGHTGRAY)
                         DrawRectangle(200, 200, timePlayed, 12, MAROON)
                DrawRectangleLines(200, 200, 400, 12, GRAY)

                DrawText("PRESS SPACE  TO RESTART MUSIC", 215, 250, 20, LIGHTGRAY)
                DrawText("PRESS P TO PAUSE/RESUME MUSIC", 208, 280, 20, LIGHTGRAY)

        EndDrawing()

end

UnloadMusicStream(music)

CloseAudioDevice()

CloseWindow()

スクリーンショット:

音声の読み込みと再生

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
                "raylib [audio] example - sound loading and playing")

InitAudioDevice()

fxWav = LoadSound("sound.wav")
fxOgg = LoadSound("tanatana.ogg")

SetTargetFPS(60)

while !WindowShouldClose()

        if IsKeyPressed(KEY_SPACE) PlaySound(fxWav)  ok
        if IsKeyPressed(KEY_ENTER) PlaySound(fxOgg)  ok

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawText("Press SPACE to PLAY the WAV sound!", 200, 180, 20, LIGHTGRAY)
                DrawText("Press ENTER to PLAY the OGG sound!", 200, 220, 20, LIGHTGRAY)

        EndDrawing()

end

UnloadSound(fxWav)
UnloadSound(fxOgg)

CloseAudioDevice()

CloseWindow()

スクリーンショット:

画像の描画

load "raylib.ring"

screenWidth  = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
                 "raylib [textures] example - image drawing")

cat = LoadImage("cat.png")

ImageCrop( cat,  Rectangle( 100, 10, 280, 380 ))
ImageFlipHorizontal( cat)
ImageResize( cat, 150, 200)

parrots = LoadImage("parrots.png")

ImageDraw( parrots, cat, Rectangle( 0, 0, cat.width, cat.height ),
                        Rectangle( 30, 40, cat.width*1.5, cat.height*1.5 ))
ImageCrop( parrots, Rectangle( 0, 50, parrots.width, parrots.height - 100 ))

UnloadImage(cat)

font = LoadFont("custom_jupiter_crash.png")

ImageDrawTextEx(parrots, Vector2( 300, 230 ), font,
                 "PARROTS & CAT", font.baseSize, -2, WHITE)
UnloadFont(font);

texture = LoadTextureFromImage(parrots)

UnloadImage(parrots)

SetTargetFPS(60)

while !WindowShouldClose()
        BeginDrawing()

        ClearBackground(RAYWHITE)

        DrawTexture(texture, screenWidth/2 - texture.width/2,
                screenHeight/2 - texture.height/2 - 40, WHITE)
        DrawRectangleLines(screenWidth/2 - texture.width/2,
                screenHeight/2 - texture.height/2 - 40,
                 texture.width, texture.height, DARKGRAY)

        DrawText("We are drawing only one texture from various images composed!",
                                240, 350, 10, DARKGRAY)
        DrawText("Source images have been cropped, scaled,"+
                        " flipped and copied one over the other.",
                                190, 370, 10, DARKGRAY)

        EndDrawing()
end

UnloadTexture(texture)

CloseWindow()

スクリーンショット:

画像生成

load "raylib.ring"

NUM_TEXTURES = 7
textures     = list(7)

screenWidth  = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
         "raylib [textures] example - procedural images generation")

verticalGradient   = GenImageGradientV(screenWidth, screenHeight, RED, BLUE)
horizontalGradient = GenImageGradientH(screenWidth, screenHeight, RED, BLUE)
radialGradient     = GenImageGradientRadial(screenWidth,
                         screenHeight, 0.0, WHITE, BLACK)
checked            = GenImageChecked(screenWidth, screenHeight,
                         32, 32, RED, BLUE)
whiteNoise         = GenImageWhiteNoise(screenWidth, screenHeight, 0.5)
perlinNoise        = GenImagePerlinNoise(screenWidth, screenHeight, 50, 50, 4.0)
cellular           = GenImageCellular(screenWidth, screenHeight, 32)

textures[NUM_TEXTURES] =  0

textures[1] = LoadTextureFromImage(verticalGradient)
textures[2] = LoadTextureFromImage(horizontalGradient)
textures[3] = LoadTextureFromImage(radialGradient)
textures[4] = LoadTextureFromImage(checked)
textures[5] = LoadTextureFromImage(whiteNoise)
textures[6] = LoadTextureFromImage(perlinNoise)
textures[7] = LoadTextureFromImage(cellular)

UnloadImage(verticalGradient)
UnloadImage(horizontalGradient)
UnloadImage(radialGradient)
UnloadImage(checked)
UnloadImage(whiteNoise)
UnloadImage(perlinNoise)
UnloadImage(cellular)

currentTexture = 1

SetTargetFPS(10)

while !WindowShouldClose()

        if IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsKeyPressed(KEY_RIGHT)
                currentTexture++
                if currentTexture > NUM_TEXTURES  currentTexture = 1 ok
        ok

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawTexture(textures[currentTexture], 0, 0, WHITE)

                DrawRectangle(30, 400, 325, 30, Fade(SKYBLUE, 0.5))
                DrawRectangleLines(30, 400, 325, 30, Fade(WHITE, 0.5))
                DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL TEXTURES",
                         40, 410, 10, WHITE)

                switch(currentTexture)
                        on 1  DrawText("VERTICAL GRADIENT", 560, 10, 20, RAYWHITE)
                        on 2  DrawText("HORIZONTAL GRADIENT", 540, 10, 20, RAYWHITE)
                        on 3  DrawText("RADIAL GRADIENT", 580, 10, 20, LIGHTGRAY)
                        on 4  DrawText("CHECKED", 680, 10, 20, RAYWHITE)
                        on 5  DrawText("WHITE NOISE", 640, 10, 20, RED)
                        on 6  DrawText("PERLIN NOISE", 630, 10, 20, RAYWHITE)
                        on 7  DrawText("CELLULAR", 670, 10, 20, RAYWHITE)
                off

        EndDrawing()

end

for i = 1 to  NUM_TEXTURES
        UnloadTexture( textures[i] )
next

CloseWindow()

スクリーンショット:

テクスチャの入力

load "raylib.ring"

screenWidth = 800
screenHeight = 800

InitWindow(screenWidth, screenHeight,
        "raylib [textures] examples - texture source and destination rectangles")

// 注意: テクスチャの読み込みは必ずウィンドウの初期化後に行ってください
// (OpenGL コンテキストが必要です)

scarfy = LoadTexture("RingLogo.png")        // テクスチャの読み込み

frameWidth = scarfy.width
frameHeight = scarfy.height

// 入力元となる長方形 (描画で使うテクスチャ部品です)
sourceRec = Rectangle( 0.0, 0.0, frameWidth, frameHeight )

// 出力先の長方形 (テクスチャ部品は画面へ長方形として描画されます)
destRec = Rectangle( screenWidth/2, screenHeight/2, frameWidth*2, frameHeight*2 )

// オリジナルのテクスチャ (回転/点の拡縮)
// つまり、出力先の長方形の相対的寸法です
origin = Vector2( frameWidth, frameHeight )

rotation = 0

SetTargetFPS(60)

while !WindowShouldClose()

        rotation = rotation+1

        BeginDrawing()

                ClearBackground(RAYWHITE)

                DrawTexturePro(scarfy, sourceRec, destRec,
                                 origin, rotation, WHITE)

                DrawLine(destRec.x, 0, destRec.x, screenHeight, GRAY)
                DrawLine(0, destRec.y, screenWidth, destRec.y, GRAY)

                DrawText("(c) Scarfy sprite by Eiden Marsal",
                         screenWidth - 200, screenHeight - 20, 10, GRAY)

        EndDrawing()

end

UnloadTexture(scarfy)        // テクスチャの解放

CloseWindow()

スクリーンショット:

幾何学的図形

load "raylib.ring"

FOVY_PERSPECTIVE   =  45.0
WIDTH_ORTHOGRAPHIC =  10.0

screenWidth  = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
         "raylib [models] example - geometric shapes")

camera = Camera3D(  0.0, 10.0, 10.0,
                                0.0, 0.0, 0.0,
                                0.0, 1.0, 0.0,
                                FOVY_PERSPECTIVE, CAMERA_PERSPECTIVE
                        )

SetTargetFPS(60)

while !WindowShouldClose()

        if IsKeyPressed(KEY_SPACE)

                if camera.type = CAMERA_PERSPECTIVE

                        camera.fovy = WIDTH_ORTHOGRAPHIC
                        camera.type = CAMERA_ORTHOGRAPHIC

                else

                        camera.fovy = FOVY_PERSPECTIVE
                        camera.type = CAMERA_PERSPECTIVE
                ok
        ok

        BeginDrawing()

        ClearBackground(RAYWHITE)

        BeginMode3D(camera)

        DrawCube(Vector3(-4.0, 0.0,  2.0), 2.0, 5.0, 2.0, RED)
        DrawCubeWires(Vector3(-4.0, 0.0,  2.0), 2.0, 5.0, 2.0, GOLD)
        DrawCubeWires(Vector3(-4.0, 0.0, -2.0), 3.0, 6.0, 2.0, MAROON)

        DrawSphere(Vector3(-1.0, 0.0, -2.0), 1.0, GREEN)
        DrawSphereWires(Vector3( 1.0, 0.0,  2.0), 2.0, 16, 16, LIME)

        DrawCylinder(Vector3(4.0, 0.0, -2.0), 1.0, 2.0, 3.0, 4, SKYBLUE)
        DrawCylinderWires(Vector3(4.0, 0.0, -2.0), 1.0, 2.0, 3.0, 4, DARKBLUE)
        DrawCylinderWires(Vector3(4.5, -1.0, 2.0), 1.0, 1.0, 2.0, 6, BROWN)

        DrawCylinder(Vector3(1.0, 0.0, -4.0), 0.0, 1.5, 3.0, 8, GOLD)
        DrawCylinderWires(Vector3(1.0, 0.0, -4.0), 0.0, 1.5, 3.0, 8, PINK)

        DrawGrid(10, 1.0)

        EndMode3D()

        DrawText("Press Spacebar to switch camera type", 10,
                         GetScreenHeight() - 30, 20, DARKGRAY)

        if camera.type = CAMERA_ORTHOGRAPHIC
                DrawText("ORTHOGRAPHIC", 10, 40, 20, BLACK)
        else
                if camera.type = CAMERA_PERSPECTIVE
                        DrawText("PERSPECTIVE", 10, 40, 20, BLACK)
                ok
        ok

        DrawFPS(10, 10)

        EndDrawing()

end

CloseWindow()

スクリーンショット:

キュービックマップ

load "raylib.ring"

screenWidth  = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight,
         "raylib [models] example - cubesmap loading and drawing")

camera = Camera3D( 16.0, 14.0, 16.0,
                                 0.0, 0.0, 0.0,
                                 0.0, 1.0, 0.0,
                                 45.0, 0 )

image    = LoadImage("cubicmap.png")
cubicmap = LoadTextureFromImage(image)

mesh     = GenMeshCubicmap(image, Vector3( 1.0, 1.0, 1.0 ))
model    = LoadModelFromMesh(mesh)

texture  = LoadTexture("cubicmap_atlas.png")

setmodelmaterialtexture(model,0,MAP_DIFFUSE,texture)

mapPosition = Vector3( -16.0, 0.0, -8.0 )

UnloadImage(image)
SetCameraMode(camera, CAMERA_ORBITAL)
SetTargetFPS(60)

while !WindowShouldClose()

        UpdateCamera(camera)

        BeginDrawing()

                ClearBackground(RAYWHITE)
                BeginMode3D(camera)
                        DrawModel(model, mapPosition, 1.0, WHITE)
                EndMode3D()

                DrawTextureEx(cubicmap, Vector2( screenWidth -
                                 cubicmap.width*4 - 20, 20 ),
                                                0.0, 4.0, WHITE)
                DrawRectangleLines(screenWidth - cubicmap.width*4 -
                                 20, 20, cubicmap.width*4,
                                cubicmap.height*4, GREEN)

                DrawText("cubicmap image used to", 658,  90, 10, GRAY)
                DrawText("generate map 3d model",  658, 104, 10, GRAY)
                DrawFPS(10, 10)

        EndDrawing()

end

UnloadTexture(cubicmap)
UnloadTexture(texture)
UnloadModel(model)

CloseWindow()

スクリーンショット:

関数

void InitWindow(int width, int height, const char *title)
bool WindowShouldClose(void)
void CloseWindow(void)
bool IsWindowReady(void)
bool IsWindowMinimized(void)
bool IsWindowResized(void)
bool IsWindowHidden(void)
void ToggleFullscreen(void)
void UnhideWindow(void)
void HideWindow(void)
void SetWindowIcon(Image image)
void SetWindowTitle(const char *title)
void SetWindowPosition(int x, int y)
void SetWindowMonitor(int monitor)
void SetWindowMinSize(int width, int height)
void SetWindowSize(int width, int height)
void *GetWindowHandle(void)
int GetScreenWidth(void)
int GetScreenHeight(void)
int GetMonitorCount(void)
int GetMonitorWidth(int monitor)
int GetMonitorHeight(int monitor)
int GetMonitorPhysicalWidth(int monitor)
int GetMonitorPhysicalHeight(int monitor)
const char *GetMonitorName(int monitor)
const char *GetClipboardText(void)
void SetClipboardText(const char *text)
void ShowCursor(void)
void HideCursor(void)
bool IsCursorHidden(void)
void EnableCursor(void)
void DisableCursor(void)
void ClearBackground(Color color)
void BeginDrawing(void)
void EndDrawing(void)
void BeginMode2D(Camera2D camera)
void EndMode2D(void)
void BeginMode3D(Camera3D camera)
void EndMode3D(void)
void BeginTextureMode(RenderTexture2D target)
void EndTextureMode(void)
Ray GetMouseRay(Vector2 mousePosition, Camera3D camera)
Vector2 GetWorldToScreen(Vector3 position, Camera3D camera)
Matrix GetCameraMatrix(Camera3D camera)
void SetTargetFPS(int fps)
int GetFPS(void)
float GetFrameTime(void)
double GetTime(void)
int ColorToInt(Color color)
Vector4 ColorNormalize(Color color)
Vector3 ColorToHSV(Color color)
Color ColorFromHSV(Vector3 hsv)
Color GetColor(int hexValue)
Color Fade(Color color, float alpha)
void SetConfigFlags(unsigned char flags)
void SetTraceLogLevel(int logType)
void SetTraceLogExit(int logType)
void SetTraceLogCallback(TraceLogCallback callback)
void TraceLog(int logType, const char *text)
void TakeScreenshot(const char *fileName)
int GetRandomValue(int min, int max)
bool FileExists(const char *fileName)
bool IsFileExtension(const char *fileName, const char *ext)
const char *GetExtension(const char *fileName)
const char *GetFileName(const char *filePath)
const char *GetFileNameWithoutExt(const char *filePath)
const char *GetDirectoryPath(const char *fileName)
const char *GetWorkingDirectory(void)
char **GetDirectoryFiles(const char *dirPath, int *count)
void ClearDirectoryFiles(void)
bool ChangeDirectory(const char *dir)
bool IsFileDropped(void)
char **GetDroppedFiles(int *count)
void ClearDroppedFiles(void)
long GetFileModTime(const char *fileName)
void StorageSaveValue(int position, int value)
int StorageLoadValue(int position)
void OpenURL(const char *url)
bool IsKeyPressed(int key)
bool IsKeyDown(int key)
bool IsKeyReleased(int key)
bool IsKeyUp(int key)
int GetKeyPressed(void)
void SetExitKey(int key)
bool IsGamepadAvailable(int gamepad)
bool IsGamepadName(int gamepad, const char *name)
const char *GetGamepadName(int gamepad)
bool IsGamepadButtonPressed(int gamepad, int button)
bool IsGamepadButtonDown(int gamepad, int button)
bool IsGamepadButtonReleased(int gamepad, int button)
bool IsGamepadButtonUp(int gamepad, int button)
int GetGamepadButtonPressed(void)
int GetGamepadAxisCount(int gamepad)
float GetGamepadAxisMovement(int gamepad, int axis)
bool IsMouseButtonPressed(int button)
bool IsMouseButtonDown(int button)
bool IsMouseButtonReleased(int button)
bool IsMouseButtonUp(int button)
int GetMouseX(void)
int GetMouseY(void)
Vector2 GetMousePosition(void)
void SetMousePosition(int x, int y)
void SetMouseOffset(int offsetX, int offsetY)
void SetMouseScale(float scaleX, float scaleY)
int GetMouseWheelMove(void)
int GetTouchX(void)
int GetTouchY(void)
Vector2 GetTouchPosition(int index)
void SetGesturesEnabled(unsigned int gestureFlags)
bool IsGestureDetected(int gesture)
int GetGestureDetected(void)
int GetTouchPointsCount(void)
float GetGestureHoldDuration(void)
Vector2 GetGestureDragVector(void)
float GetGestureDragAngle(void)
Vector2 GetGesturePinchVector(void)
float GetGesturePinchAngle(void)
void SetCameraMode(Camera3D camera, int mode)
void UpdateCamera(Camera3D *camera)
void SetCameraPanControl(int panKey)
void SetCameraAltControl(int altKey)
void SetCameraSmoothZoomControl(int szKey)
void SetCameraMoveControls(int frontKey, int backKey, int rightKey, int leftKey,
         int upKey, int downKey)
void DrawPixel(int posX, int posY, Color color)
void DrawPixelV(Vector2 position, Color color)
void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color)
void DrawLineV(Vector2 startPos, Vector2 endPos, Color color)
void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color)
void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color)
void DrawLineStrip(Vector2 *points, int numPoints, Color color)
void DrawCircle(int centerX, int centerY, float radius, Color color)
void DrawCircleSector(Vector2 center, float radius, int startAngle, int endAngle,
         int segments, Color color)
void DrawCircleSectorLines(Vector2 center, float radius, int startAngle,
        int endAngle, int segments, Color color)
void DrawCircleGradient(int centerX, int centerY, float radius,
        Color color1, Color color2)
void DrawCircleV(Vector2 center, float radius, Color color)
void DrawCircleLines(int centerX, int centerY, float radius, Color color)
void DrawRing(Vector2 center, float innerRadius, float outerRadius,
         int startAngle, int endAngle, int segments, Color color)
void DrawRingLines(Vector2 center, float innerRadius, float outerRadius,
         int startAngle, int endAngle, int segments, Color color)
void DrawRectangle(int posX, int posY, int width, int height, Color color)
void DrawRectangleV(Vector2 position, Vector2 size, Color color)
void DrawRectangleRec(Rectangle rec, Color color)
void DrawRectanglePro(Rectangle rec, Vector2 origin,
        float rotation, Color color)
void DrawRectangleGradientV(int posX, int posY, int width,
        int height, Color color1, Color color2)
void DrawRectangleGradientH(int posX, int posY, int width,
        int height, Color color1, Color color2)
void DrawRectangleGradientEx(Rectangle rec, Color col1,
        Color col2, Color col3, Color col4)
void DrawRectangleLines(int posX, int posY, int width,
        int height, Color color)
void DrawRectangleLinesEx(Rectangle rec, int lineThick, Color color)
void DrawRectangleRounded(Rectangle rec, float roundness,
        int segments, Color color)
void DrawRectangleRoundedLines(Rectangle rec, float roundness,
        int segments, int lineThick, Color color)
void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color)
void DrawTriangleLines(Vector2 v1, Vector2 v2, Vector2 v3, Color color)
void DrawTriangleFan(Vector2 *points, int numPoints, Color color)
void DrawPoly(Vector2 center, int sides, float radius,
        float rotation, Color color)
void SetShapesTexture(Texture2D texture, Rectangle source)
bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2)
bool CheckCollisionCircles(Vector2 center1, float radius1,
        Vector2 center2, float radius2)
bool CheckCollisionCircleRec(Vector2 center, float radius,
        Rectangle rec)
Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2)
bool CheckCollisionPointRec(Vector2 point, Rectangle rec)
bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius)
bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1,
        Vector2 p2, Vector2 p3)
Image LoadImage(const char *fileName)
Image LoadImageEx(Color *pixels, int width, int height)
Image LoadImagePro(void *data, int width, int height, int format)
Image LoadImageRaw(const char *fileName, int width, int height,
        int format, int headerSize)
void ExportImage(Image image, const char *fileName)
void ExportImageAsCode(Image image, const char *fileName)
Texture2D LoadTexture(const char *fileName)
Texture2D LoadTextureFromImage(Image image)
TextureCubemap LoadTextureCubemap(Image image, int layoutType)
RenderTexture2D LoadRenderTexture(int width, int height)
void UnloadImage(Image image)
void UnloadTexture(Texture2D texture)
void UnloadRenderTexture(RenderTexture2D target)
Color *GetImageData(Image image)
Vector4 *GetImageDataNormalized(Image image)
int GetPixelDataSize(int width, int height, int format)
Image GetTextureData(Texture2D texture)
Image GetScreenData(void)
void UpdateTexture(Texture2D texture, const void *pixels)
Image ImageCopy(Image image)
void ImageToPOT(Image *image, Color fillColor)
void ImageFormat(Image *image, int newFormat)
void ImageAlphaMask(Image *image, Image alphaMask)
void ImageAlphaClear(Image *image, Color color, float threshold)
void ImageAlphaCrop(Image *image, float threshold)
void ImageAlphaPremultiply(Image *image)
void ImageCrop(Image *image, Rectangle crop)
void ImageResize(Image *image, int newWidth, int newHeight)
void ImageResizeNN(Image *image, int newWidth,int newHeight)
void ImageResizeCanvas(Image *image, int newWidth, int newHeight,
        int offsetX, int offsetY, Color color)
void ImageMipmaps(Image *image)
void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp)
Color *ImageExtractPalette(Image image, int maxPaletteSize, int *extractCount)
Image ImageText(const char *text, int fontSize, Color color)
Image ImageTextEx(Font font, const char *text, float fontSize,
        float spacing, Color tint)
void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec)
void ImageDrawRectangle(Image *dst, Rectangle rec, Color color)
void ImageDrawRectangleLines(Image *dst, Rectangle rec, int thick, Color color)
void ImageDrawText(Image *dst, Vector2 position, const char *text,
        int fontSize, Color color)
void ImageDrawTextEx(Image *dst, Vector2 position, Font font,
        const char *text, float fontSize, float spacing, Color color)
void ImageFlipVertical(Image *image)
void ImageFlipHorizontal(Image *image)
void ImageRotateCW(Image *image)
void ImageRotateCCW(Image *image)
void ImageColorTint(Image *image, Color color)
void ImageColorInvert(Image *image)
void ImageColorGrayscale(Image *image)
void ImageColorContrast(Image *image, float contrast)
void ImageColorBrightness(Image *image, int brightness)
void ImageColorReplace(Image *image, Color color, Color replace)
Image GenImageColor(int width, int height, Color color)
Image GenImageGradientV(int width, int height, Color top, Color bottom)
Image GenImageGradientH(int width, int height, Color left, Color right)
Image GenImageGradientRadial(int width, int height, float density,
        Color inner, Color outer)
Image GenImageChecked(int width, int height, int checksX, int checksY,
        Color col1, Color col2)
Image GenImageWhiteNoise(int width, int height, float factor)
Image GenImagePerlinNoise(int width, int height, int offsetX,
        int offsetY, float scale)
Image GenImageCellular(int width, int height, int tileSize)
void GenTextureMipmaps(Texture2D *texture)
void SetTextureFilter(Texture2D texture, int filterMode)
void SetTextureWrap(Texture2D texture, int wrapMode)
void DrawTexture(Texture2D texture, int posX, int posY, Color tint)
void DrawTextureV(Texture2D texture, Vector2 position, Color tint)
void DrawTextureEx(Texture2D texture, Vector2 position,
        float rotation, float scale, Color tint)
void DrawTextureRec(Texture2D texture, Rectangle sourceRec,
        Vector2 position, Color tint)
void DrawTextureQuad(Texture2D texture, Vector2 tiling, Vector2 offset,
        Rectangle quad, Color tint)
void DrawTexturePro(Texture2D texture, Rectangle sourceRec,
        Rectangle destRec, Vector2 origin, float rotation, Color tint)
void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo,
        Rectangle destRec, Vector2 origin, float rotation, Color tint)
Font GetFontDefault(void)
Font LoadFont(const char *fileName)
Font LoadFontEx(const char *fileName, int fontSize,
        int *fontChars, int charsCount)
Font LoadFontFromImage(Image image, Color key, int firstChar)
CharInfo *LoadFontData(const char *fileName, int fontSize,
        int *fontChars, int charsCount, int type)
Image GenImageFontAtlas(CharInfo *chars, int charsCount,
        int fontSize, int padding, int packMethod)
void UnloadFont(Font font)
void DrawFPS(int posX, int posY)
void DrawText(const char *text, int posX, int posY, int fontSize, Color color)
void DrawTextEx(Font font, const char *text, Vector2 position,
        float fontSize, float spacing, Color tint)
void DrawTextRec(Font font, const char *text, Rectangle rec,
        float fontSize, float spacing, bool wordWrap, Color tint)
void DrawTextRecEx(Font font, const char *text, Rectangle rec,
        float fontSize, float spacing, bool wordWrap, Color tint,
        int selectStart, int selectLength, Color selectText, Color selectBack)
int MeasureText(const char *text, int fontSize)
Vector2 MeasureTextEx(Font font, const char *text,
        float fontSize, float spacing)
int GetGlyphIndex(Font font, int character)
int GetNextCodepoint(const char *text, int *count)
bool TextIsEqual(const char *text1, const char *text2)
unsigned int TextLength(const char *text)
unsigned int TextCountCodepoints(const char *text)
const char *TextFormat(const char *text)
const char *TextSubtext(const char *text, int position, int length)
const char *TextReplace(char *text, const char *replace, const char *by)
const char *TextInsert(const char *text, const char *insert, int position)
const char *TextJoin(const char **textList, int count, const char *delimiter)
const char **TextSplit(const char *text, char delimiter, int *count)
void TextAppend(char *text, const char *append, int *position)
int TextFindIndex(const char *text, const char *find)
const char *TextToUpper(const char *text)
const char *TextToLower(const char *text)
const char *TextToPascal(const char *text)
int TextToInteger(const char *text)
void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color)
void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis,
float rotationAngle, Color color)
void DrawCube(Vector3 position, float width, float height, float length, Color color)
void DrawCubeV(Vector3 position, Vector3 size, Color color)
void DrawCubeWires(Vector3 position, float width, float height,
        float length, Color color)
void DrawCubeWiresV(Vector3 position, Vector3 size, Color color)
void DrawCubeTexture(Texture2D texture, Vector3 position,
        float width, float height, float length, Color color)
void DrawSphere(Vector3 centerPos, float radius, Color color)
void DrawSphereEx(Vector3 centerPos, float radius, int rings,
        int slices, Color color)
void DrawSphereWires(Vector3 centerPos, float radius, int rings,
        int slices, Color color)
void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom,
        float height, int slices, Color color)
void DrawCylinderWires(Vector3 position, float radiusTop,
        float radiusBottom, float height, int slices, Color color)
void DrawPlane(Vector3 centerPos, Vector2 size, Color color)
void DrawRay(Ray ray, Color color)
void DrawGrid(int slices, float spacing)
void DrawGizmo(Vector3 position)
Model LoadModel(const char *fileName)
Model LoadModelFromMesh(Mesh mesh)
void UnloadModel(Model model)
Mesh *LoadMeshes(const char *fileName, int *meshCount)
void ExportMesh(Mesh mesh, const char *fileName)
void UnloadMesh(Mesh *mesh)
Material *LoadMaterials(const char *fileName, int *materialCount)
Material LoadMaterialDefault(void)
void UnloadMaterial(Material material)
void SetMaterialTexture(Material *material, int mapType, Texture2D texture)
void SetModelMeshMaterial(Model *model, int meshId, int materialId)
ModelAnimation *LoadModelAnimations(const char *fileName, int *animsCount)
void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
void UnloadModelAnimation(ModelAnimation anim)
bool IsModelAnimationValid(Model model, ModelAnimation anim)
Mesh GenMeshPoly(int sides, float radius)
Mesh GenMeshPlane(float width, float length, int resX, int resZ)
Mesh GenMeshCube(float width, float height, float length)
Mesh GenMeshSphere(float radius, int rings, int slices)
Mesh GenMeshHemiSphere(float radius, int rings, int slices)
Mesh GenMeshCylinder(float radius, float height, int slices)
Mesh GenMeshTorus(float radius, float size, int radSeg, int sides)
Mesh GenMeshKnot(float radius, float size, int radSeg, int sides)
Mesh GenMeshHeightmap(Image heightmap, Vector3 size)
Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize)
BoundingBox MeshBoundingBox(Mesh mesh)
void MeshTangents(Mesh *mesh)
void MeshBinormals(Mesh *mesh)
void DrawModel(Model model, Vector3 position, float scale, Color tint)
void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis,
        float rotationAngle, Vector3 scale, Color tint)
void DrawModelWires(Model model, Vector3 position, float scale, Color tint)
void DrawModelWiresEx(Model model, Vector3 position,
        Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint)
void DrawBoundingBox(BoundingBox box, Color color)
void DrawBillboard(Camera3D camera, Texture2D texture,
        Vector3 center, float size, Color tint)
void DrawBillboardRec(Camera3D camera, Texture2D texture,
        Rectangle sourceRec, Vector3 center, float size, Color tint)
bool CheckCollisionSpheres(Vector3 centerA, float radiusA,
        Vector3 centerB, float radiusB)
bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2)
bool CheckCollisionBoxSphere(BoundingBox box, Vector3 centerSphere, float radiusSphere)
bool CheckCollisionRaySphere(Ray ray, Vector3 spherePosition, float sphereRadius)
bool CheckCollisionRaySphereEx(Ray ray, Vector3 spherePosition,
        float sphereRadius, Vector3 *collisionPoint)
bool CheckCollisionRayBox(Ray ray, BoundingBox box)
RayHitInfo GetCollisionRayModel(Ray ray, Model *model)
RayHitInfo GetCollisionRayTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3)
RayHitInfo GetCollisionRayGround(Ray ray, float groundHeight)
char *LoadText(const char *fileName)
Shader LoadShader(const char *vsFileName, const char *fsFileName)
Shader LoadShaderCode(char *vsCode, char *fsCode)
void UnloadShader(Shader shader)
Shader GetShaderDefault(void)
Texture2D GetTextureDefault(void)
int GetShaderLocation(Shader shader, const char *uniformName)
void SetShaderValue(Shader shader, int uniformLoc,
        const void *value, int uniformType)
void SetShaderValueV(Shader shader, int uniformLoc,
        const void *value, int uniformType, int count)
void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat)
void SetShaderValueTexture(Shader shader, int uniformLoc, Texture2D texture)
void SetMatrixProjection(Matrix proj)
void SetMatrixModelview(Matrix view)
Matrix GetMatrixModelview(void)
Texture2D GenTextureCubemap(Shader shader, Texture2D skyHDR, int size)
Texture2D GenTextureIrradiance(Shader shader, Texture2D cubemap, int size)
Texture2D GenTexturePrefilter(Shader shader, Texture2D cubemap, int size)
Texture2D GenTextureBRDF(Shader shader, int size)
void BeginShaderMode(Shader shader)
void EndShaderMode(void)
void BeginBlendMode(int mode)
void EndBlendMode(void)
void BeginScissorMode(int x, int y, int width, int height)
void EndScissorMode(void)
void InitVrSimulator(void)
void CloseVrSimulator(void)
void UpdateVrTracking(Camera3D *camera)
void SetVrConfiguration(VrDeviceInfo info, Shader distortion)
bool IsVrSimulatorReady(void)
void ToggleVrMode(void)
void BeginVrDrawing(void)
void EndVrDrawing(void)
void InitAudioDevice(void)
void CloseAudioDevice(void)
bool IsAudioDeviceReady(void)
void SetMasterVolume(float volume)
Wave LoadWave(const char *fileName)
Wave LoadWaveEx(void *data, int sampleCount, int sampleRate,
        int sampleSize, int channels)
Sound LoadSound(const char *fileName)
Sound LoadSoundFromWave(Wave wave)
void UpdateSound(Sound sound, const void *data, int samplesCount)
void UnloadWave(Wave wave)
void UnloadSound(Sound sound)
void ExportWave(Wave wave, const char *fileName)
void ExportWaveAsCode(Wave wave, const char *fileName)
void PlaySound(Sound sound)
void PauseSound(Sound sound)
void ResumeSound(Sound sound)
void StopSound(Sound sound)
bool IsSoundPlaying(Sound sound)
void SetSoundVolume(Sound sound, float volume)
void SetSoundPitch(Sound sound, float pitch)
void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels)
Wave WaveCopy(Wave wave)
void WaveCrop(Wave *wave, int initSample, int finalSample)
float *GetWaveData(Wave wave)
Music LoadMusicStream(const char *fileName)
void UnloadMusicStream(Music music)
void PlayMusicStream(Music music)
void UpdateMusicStream(Music music)
void StopMusicStream(Music music)
void PauseMusicStream(Music music)
void ResumeMusicStream(Music music)
bool IsMusicPlaying(Music music)
void SetMusicVolume(Music music, float volume)
void SetMusicPitch(Music music, float pitch)
void SetMusicLoopCount(Music music, int count)
float GetMusicTimeLength(Music music)
float GetMusicTimePlayed(Music music)
AudioStream InitAudioStream(unsigned int sampleRate,
        unsigned int sampleSize, unsigned int channels)
void UpdateAudioStream(AudioStream stream, const void *data, int samplesCount)
void CloseAudioStream(AudioStream stream)
bool IsAudioBufferProcessed(AudioStream stream)
void PlayAudioStream(AudioStream stream)
void PauseAudioStream(AudioStream stream)
void ResumeAudioStream(AudioStream stream)
bool IsAudioStreamPlaying(AudioStream stream)
void StopAudioStream(AudioStream stream)
void SetAudioStreamVolume(AudioStream stream, float volume)
void SetAudioStreamPitch(AudioStream stream, float pitch)
void GuiEnable(void)
void GuiDisable(void)
void GuiLock(void)
void GuiUnlock(void)
void GuiState(int state)
void GuiFont(Font font)
void GuiFade(float alpha)
void GuiSetStyle(int control, int property, int value)
int GuiGetStyle(int control, int property)
bool GuiWindowBox(Rectangle bounds, const char *text)
void GuiGroupBox(Rectangle bounds, const char *text)
void GuiLine(Rectangle bounds, const char *text)
void GuiPanel(Rectangle bounds)
Rectangle GuiScrollPanel(Rectangle bounds, Rectangle content, Vector2 *scroll)
void GuiLabel(Rectangle bounds, const char *text)
bool GuiButton(Rectangle bounds, const char *text)
bool GuiLabelButton(Rectangle bounds, const char *text)
bool GuiImageButton(Rectangle bounds, Texture2D texture)
bool GuiImageButtonEx(Rectangle bounds, Texture2D texture,
        Rectangle texSource, const char *text)
bool GuiToggle(Rectangle bounds, const char *text, bool active)
int GuiToggleGroup(Rectangle bounds, const char *text, int active)
bool GuiCheckBox(Rectangle bounds, const char *text, bool checked)
int GuiComboBox(Rectangle bounds, const char *text, int active)=
bool GuiDropdownBox(Rectangle bounds, const char *text,
        int *active, bool editMode)
bool GuiSpinner(Rectangle bounds, int *value, int minValue,
        int maxValue, bool editMode)
bool GuiValueBox(Rectangle bounds, int *value, int minValue,
        int maxValue, bool editMode)
bool GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode)
bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
float GuiSlider(Rectangle bounds, const char *text, float value,
        float minValue, float maxValue, bool showValue)
float GuiSliderBar(Rectangle bounds, const char *text, float value,
        float minValue, float maxValue, bool showValue)
float GuiProgressBar(Rectangle bounds, const char *text, float value,
        float minValue, float maxValue, bool showValue)
void GuiStatusBar(Rectangle bounds, const char *text)
void GuiDummyRec(Rectangle bounds, const char *text)
int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue)
Vector2 GuiGrid(Rectangle bounds, float spacing, int subdivs)
bool GuiListView(Rectangle bounds, const char *text, int *active,
        int *scrollIndex, bool editMode)
bool GuiListViewEx(Rectangle bounds, const char **text, int count,
        int *enabled, int *active, int *focus, int *scrollIndex, bool editMode)
int GuiMessageBox(Rectangle bounds, const char *windowTitle,
        const char *message, const char *buttons)
int GuiTextInputBox(Rectangle bounds, const char *windowTitle,
        const char *message, char *text, const char *buttons)
Color GuiColorPicker(Rectangle bounds, Color color)
void GuiLoadStyle(const char *fileName)
void GuiLoadStyleProps(const int *props, int count)
void GuiLoadStyleDefault(void)
void GuiUpdateStyleComplete(void)
const char *GuiIconText(int iconId, const char *text)

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingOpenGL と RingFreeGLUT の用法です。

サンプルソース (作者)

この C チュートリアルを参考に本章のサンプルを記述しました。

出典元:

http://www.lighthouse3d.com/tutorials/glut-tutorial/

http://www.wikihow.com/Make-a-Cube-in-OpenGL

RingOpenGL とは？

RingOpenGL は Ring 付属の OpenGL ライブラリのバインディングです。

こちらから OpenGL について学べます : https://www.opengl.org/

RingOpenGL は下記のバージョンに対応しています。

OpenGL 1.1

OpenGL 1.2

OpenGL 1.3

OpenGL 1.4

OpenGL 1.5

OpenGL 2.0

OpenGL 2.1

OpenGL 3.0

OpenGL 3.2

OpenGL 3.3

OpenGL 4.0

OpenGL 4.1

OpenGL 4.2

OpenGL 4.3

OpenGL 4.4

OpenGL 4.5

OpenGL 4.6

OpenGL 2.1 の場合は RingOpenGL 2.1 ライブラリを読み込みます。

load "opengl21lib.ring"

RingFreeGLUT とは？

RingFreeGLUT は Ring 付属の FreeGLUT ライブラリのバインディングです。

このサイトで FreeGLUT について学べます : http://freeglut.sourceforge.net/

RingFreeGLUT の使用前に freeglut.ring ライブラリを読み込みます。

load "freeglut.ring"

RingFreeGLUT によるはじめてのウィンドウ

用例:

load "freeglut.ring"

func main
        glutInit()
        glutInitDisplayMode(GLUT_SINGLE)
        glutInitWindowSize(800, 600)
        glutInitWindowPosition(100, 10)
        glutCreateWindow("RingFreeGLUT - Test 1")
        glutDisplayFunc(:displayCode)
        glutMainLoop()

func displaycode

スクリーンショット:

RingOpenGL での描画

用例:

load "freeglut.ring"
load "opengl21lib.ring"

func main
        glutInit()
        glutInitDisplayMode(GLUT_SINGLE)
        glutInitWindowSize(800, 600)
        glutInitWindowPosition(100, 10)
        glutCreateWindow("RingFreeGLUT - Test 2")
        glutDisplayFunc(:displayCode)
        glutMainLoop()

func displaycode
        glClear(GL_COLOR_BUFFER_BIT)
        glColor3f(0,255,0)
        glBegin(GL_POLYGON)
                glVertex3f(0.0, 0.0, 0.0)
                glVertex3f(0.5, 0.0, 0.0)
                glVertex3f(0.5, 0.5, 0.0)
                glVertex3f(0.0, 0.5, 0.0)
        glEnd()
        glColor3f(255,0,0)
        glBegin(GL_POLYGON)
                glVertex3f(0.0, 0.0, 0.0)
                glVertex3f(0.5, 0.0, 0.0)
                glVertex3f(-0.5,- 1, 0.0)
                glVertex3f(0.0, -1, 0.0)
        glEnd()
        glColor3f(0,0,255)
        glBegin(GL_POLYGON)
               glVertex3f(0.0, 0.0, 0.0)
                glVertex3f(-0.5, 0.0, 0.0)
                glVertex3f(-0.5,- 0.5, 0.0)
                glVertex3f(0.0, -0.5, 0.0)
        glEnd()

        glFlush()

スクリーンショット:

はじめての三角形

用例:

load "freeglut.ring"
load "opengl21lib.ring"

func main
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowSize(320,320)
        glutInitWindowPosition(100, 10)
        glutCreateWindow("RingFreeGLUT - Test 3")
        glutDisplayFunc(:renderScene)
        glutMainLoop()

func renderScene

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        glBegin(GL_TRIANGLES)
                glVertex3f(-0.5,-0.5,0.0)
                glVertex3f(0.5,0.0,0.0)
                glVertex3f(0.0,0.5,0.0)
        glEnd()

        glutSwapBuffers()

スクリーンショット:

ウィンドウの大きさ変更イベント

用例:

load "freeglut.ring"
load "opengl21lib.ring"

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 4")

        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)

        glutMainLoop()

func renderScene

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        glBegin(GL_TRIANGLES)
                glVertex3f(-2,-2,-5.0)
                glVertex3f(2,0.0,-5.0)
                glVertex3f(0.0,2,-5.0)
        glEnd()

        glutSwapBuffers()

func changesize

        h = glutEventHeight()
        w = glutEventWidth()

                // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if (h = 0)
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45,ratio,1,100)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

三角形の回転

用例:

load "freeglut.ring"
load "opengl21lib.ring"

angle = 0

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 5")

        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutMainLoop()

func renderScene

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()
        // カメラの設定
        gluLookAt(      0.0, 0.0, 10.0,
                                0.0, 0.0,  0.0,
                                0.0, 1.0,  0.0)

        glRotatef(angle, 0.0, 1.0, 0.0)

        glBegin(GL_TRIANGLES)
                glVertex3f(-2.0,-2.0, 0.0)
                glVertex3f( 2.0, 0.0, 0.0)
                glVertex3f( 0.0, 2.0, 0.0)
        glEnd()

        angle+=0.1

        glutSwapBuffers();

func changesize

        h = glutEventHeight()
        w = glutEventWidth()

                // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if (h = 0)
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45,ratio,1,100)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

スクリーンショット:

キーボードイベントと配色

用例:

load "freeglut.ring"
load "opengl21lib.ring"

angle = 0

red=1.0
blue=1.0
green=1.0

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 6")

        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        // これは新しいエントリーです。
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:processSpecialKeys)

        glutMainLoop()

func renderScene

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()
        // カメラの設定
        gluLookAt(      0.0, 0.0, 10.0,
                                0.0, 0.0,  0.0,
                                0.0, 1.0,  0.0)

        glRotatef(angle, 0.0, 1.0, 0.0)

        glColor3f(red,green,blue);

        glBegin(GL_TRIANGLES)
                glVertex3f(-2.0,-2.0, 0.0)
                glVertex3f( 2.0, 0.0, 0.0)
                glVertex3f( 0.0, 2.0, 0.0)
        glEnd()

        angle+=0.1

        glutSwapBuffers();

func changesize

        h = glutEventHeight()
        w = glutEventWidth()

                // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if (h = 0)
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45,ratio,1,100)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func processNormalKeys
        key = GLUTEventKey()
        if key = 27
                shutdown()
        ok

func processSpecialKeys

        key = GLUTEventKey()

        switch key
                on GLUT_KEY_F1
                                red = 1.0
                                green = 0.0
                                blue = 0.0
                on GLUT_KEY_F2
                                red = 0.0
                                green = 1.0
                                blue = 0.0
                on GLUT_KEY_F3
                                red = 0.0
                                green = 0.0
                                blue = 1.0
        off

スクリーンショット:

カメラ

用例:

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle=0.0
// 実際のベクトルはカメラ方向を表しています。
lx=0.0
lz=-1.0
// カメラの XZ 位置
x=0.0
z=5.0

func drawSnowMan

        glColor3f(1.0, 1.0, 1.0)

// 体の描画
        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

// 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

// 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)

        glPopMatrix()

// 鼻の描画
        glColor3f(1.0, 0.5 , 0.5)
        glutSolidCone(0.08,0.5,10,2)

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0  / h

                // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

                // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45.0, ratio, 0.1, 100.0);

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func processNormalKeys
        key = glutEventKey()

        if key = 27
                shutdown()
        ok

func renderScene

        // 配色と深度バッファの消去

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()
        // カメラの設定
        gluLookAt(      x, 1.0, z,
                        x+lx, 1.0,  z+lz,
                        0.0, 1.0,  0.0)

                // 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

                // 36 体の雪だるまを描画
        for i = -3 to 2
                for  j=-3 to 2
                        glPushMatrix()
                        glTranslatef(i*10.0,0,j * 10.0)
                        drawSnowMan()
                        glPopMatrix()
                next
        next
        glutSwapBuffers()

func processSpecialKeys

        key = glutEventKey()

        fraction = 0.1

        switch key
                on GLUT_KEY_LEFT
                        angle -= 0.01
                        lx = sin(angle)
                        lz = -cos(angle)
                on GLUT_KEY_RIGHT
                        angle += 0.01
                        lx = sin(angle)
                        lz = -cos(angle)
                on GLUT_KEY_UP
                        x += lx * fraction
                        z += lz * fraction
                on GLUT_KEY_DOWN
                        x -= lx * fraction
                        z -= lz * fraction
        off

func main

        // GLUT の初期化とウィンドウの作成

        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)

        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 7")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:processSpecialKeys)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

スクリーンショット:

その他の用例:

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle = 0.0

// 実際のベクトルはカメラ方向を表しています。
lx=0.0 lz=-1.0

// カメラの XZ 位置
x=0.0 z=5.0
// キーの状態
// キーを押していない時は変数は 0 です。
deltaAngle = 0.0
deltaMove = 0

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45.0, ratio, 0.1, 100.0)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func drawSnowMan

        glColor3f(1.0, 1.0, 1.0)

// 体の描画

        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

// 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

// 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)
        glPopMatrix()

// 鼻の描画
        glColor3f(1.0, 0.5 , 0.5)
        glRotatef(0.0,1.0, 0.0, 0.0)
        glutSolidCone(0.08,0.5,10,2)

func computePos deltaMove

        x += deltaMove * lx * 0.1
        z += deltaMove * lz * 0.1

func computeDir deltaAngle

        angle += deltaAngle
        lx = sin(angle)
        lz = -cos(angle)

func renderScene

        if deltaMove
                computePos(deltaMove)
        ok

        if deltaAngle
                computeDir(deltaAngle)
        ok

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()
        // カメラの設定
        gluLookAt(      x, 1.0, z,
                                x+lx, 1.0,  z+lz,
                                0.0, 1.0,  0.0)

// 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

// 36 体の雪だるまを描画

        for i = -3 to 2
                for j=-3 to 2
                        glPushMatrix()
                        glTranslatef(i*10.0,0,j * 10.0)
                        drawSnowMan()
                        glPopMatrix()
                next
        next
        glutSwapBuffers()

func pressKey
        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on GLUT_KEY_LEFT
                         deltaAngle = -0.01
                on GLUT_KEY_RIGHT
                         deltaAngle = 0.01
                on GLUT_KEY_UP
                         deltaMove = 0.5
                on GLUT_KEY_DOWN
                        deltaMove = -0.5
        off

func releaseKey

        key = glutEventKey()

        switch key
                on GLUT_KEY_LEFT
                        deltaAngle = 0.0
                on GLUT_KEY_RIGHT
                        deltaAngle = 0.0
                on GLUT_KEY_UP
                        deltaMove = 0
                on GLUT_KEY_DOWN
                        deltaMove = 0
        off

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 8")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutSpecialFunc(:pressKey)

        // これは新しいエントリーです。
        glutIgnoreKeyRepeat(1)
        glutSpecialUpFunc(:releaseKey)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

マウスイベント

用例:

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle = 0.0

// 実際のベクトルはカメラ方向を表しています。
lx=0.0 lz=-1.0

// カメラの XZ 位置
x=0.0  z=5.0

// キーの状態
// キーを押していない時は変数は 0 です。
deltaAngle = 0.0
deltaMove = 0.0
xOrigin = -1

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45.0, ratio, 0.1, 100.0)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func drawSnowMan

        glColor3f(1.0, 1.0, 1.0)

        // 体の描画
        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

        // 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

        // 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)
        glPopMatrix()

        // 鼻の描画
        glColor3f(1.0, 0.5 , 0.5)
        glRotatef(0.0,1.0, 0.0, 0.0)
        glutSolidCone(0.08,0.5,10,2)

func computePos deltaMove

        x += deltaMove * lx * 0.1
        z += deltaMove * lz * 0.1

func renderScene

        if deltaMove
                computePos(deltaMove)
        ok

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()
        // カメラの設定
        gluLookAt(      x, 1.0, z,
                        x+lx, 1.0,  z+lz,
                        0.0, 1.0,  0.0)

        // 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

        // 36 体の雪だるまを描画

        for i = -3 to 2
                for  j=-3 to 2
                                         glPushMatrix()
                                         glTranslatef(i*10.0,0,j * 10.0)
                                         drawSnowMan()
                                         glPopMatrix()
                 next
        next
        glutSwapBuffers()

func processNormalKeys

        key  = glutEventKey()

                if key = 27
                         shutdown()
                ok

func pressKey
        key  = glutEventKey()

           switch key
                         on GLUT_KEY_UP
                                deltaMove = 0.5
                         on GLUT_KEY_DOWN
                                 deltaMove = -0.5
           off

func releaseKey
        key  = glutEventKey()
                switch key
                         on GLUT_KEY_UP
                                deltaMove = 0
                         on GLUT_KEY_DOWN
                                deltaMove = 0
                off

func mouseMove
        xx = glutEventX()
        yy = glutEventY()
                // これは左ボタンを押したときのみ true になります。
                if xOrigin >= 0

                // deltaAngle の更新
                deltaAngle = (xx - xOrigin) * 0.001

                // カメラ方向の更新
                lx = sin(angle + deltaAngle)
                lz = -cos(angle + deltaAngle)
        ok

func mouseButton

        button  = glutEventButton()
        state = glutEventState()
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ動作開始になります。
        if button = GLUT_LEFT_BUTTON
                // ボタンを離したとき
                if state = GLUT_UP
                        angle += deltaAngle
                        xOrigin = -1
                else
                        // state = GLUT_DOWN
                        xOrigin = xx
                ok
                fflush(stdout)
        ok

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 9")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutIgnoreKeyRepeat(1)
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:pressKey)
        glutSpecialUpFunc(:releaseKey)

         // ここには二つの新しい関数があります。
        glutMouseFunc(:mouseButton)
        glutMotionFunc(:mouseMove)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

メニューイベント

用例:

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle = 0.0

// 実際のベクトルはカメラ方向を表しています。
lx=0.0 lz=-1.0

// カメラの XZ 位置
x=0.0  z=5.0

// キーの状態
// キーを押していない時は変数は 0 です。
deltaAngle = 0.0
deltaMove = 0
xOrigin = -1

// メニューを定義するための定数

// RingFreeGLUT では - メニューの項目ごとに異なる ID を指定してください。
C_RED = 1
C_GREEN = 2
C_BLUE  = 3
C_ORANGE = 4

C_FILL = 5
C_LINE = 6

C_SHRINK = 7
C_NORMAL = 8

// ポップアップメニューの定義
fillMenu= 0
shrinkMenu= 0
mainMenu=0
colorMenu=0

// 鼻の配色
red = 1.0  blue=0.5  green=0.5

// 雪だるまの大きさ
scale = 1.0

// メニューの状態
menuFlag = 0

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45.0, ratio, 0.1, 100.0)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func drawSnowMan

        glScalef(scale, scale, scale)
        glColor3f(1.0, 1.0, 1.0)

// 体の描画
        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

// 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

// 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)
        glPopMatrix()

// 鼻の描画
        glColor3f(red, green, blue)
        glRotatef(0.0,1.0, 0.0, 0.0)
        glutSolidCone(0.08,0.5,10,2)

        glColor3f(1.0, 1.0, 1.0)

func computePos deltaMove

        x += deltaMove * lx * 0.1
        z += deltaMove * lz * 0.1

func renderScene

        if deltaMove
                computePos(deltaMove)
        ok

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()
        // カメラの設定
        gluLookAt(      x, 1.0, z,
                        x+lx, 1.0,  z+lz,
                        0.0, 1.0,  0.0)

// 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

// 36 体の雪だるまを描画

        for  i = -3 to 2
                for  j = -3 to 2
                        glPushMatrix()
                        glTranslatef(i*10.0, 0.0, j * 10.0)
                        drawSnowMan()
                        glPopMatrix()
                next
        next
        glutSwapBuffers()

// -----------------------------------
//             キーボード
// -----------------------------------

func processNormalKeys
        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        glutSetMenu(mainMenu)
        switch key
                on 27
                        glutDestroyMenu(mainMenu)
                        glutDestroyMenu(fillMenu)
                        glutDestroyMenu(colorMenu)
                        glutDestroyMenu(shrinkMenu)
                        shutdown()

                on 's'
                        if not menuFlag
                          glutChangeToSubMenu(2,"Shrink",shrinkMenu)
                        ok
                on 'c'
                        if not menuFlag
                                glutChangeToSubMenu(2,"Color",colorMenu)
                        ok
        off
        if key = 27
                shutdown()
        ok

func pressKey

        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on GLUT_KEY_UP
                         deltaMove = 0.5
                on GLUT_KEY_DOWN
                        deltaMove = -0.5
        off

func releaseKey

        key = glutEventKey()

        switch key
                on GLUT_KEY_UP
                        deltaMove = 0
                on GLUT_KEY_DOWN
                        deltaMove = 0
        off

// -----------------------------------
//             マウス
// -----------------------------------

func mouseMove
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ true になります。
        if xOrigin >= 0

                // deltaAngle の更新
                deltaAngle = (xx - xOrigin) * 0.001

                // カメラ方向の更新
                lx = sin(angle + deltaAngle)
                lz = -cos(angle + deltaAngle)
        ok

func mouseButton

        button = glutEventButton()
        state = glutEventState()
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ動作開始になります。
        if button = GLUT_LEFT_BUTTON
                // ボタンを離したとき
                if state = GLUT_UP
                        angle += deltaAngle
                        xOrigin = -1
                else
                        // state = GLUT_DOWN
                        xOrigin = xx
                ok
        ok

// -----------------------------------
//             メニュー
// -----------------------------------

func processMenuStatus

        status = glutEventStatus()
        xx = glutEventX()
        yy = glutEventY()

        if  status = GLUT_MENU_IN_USE
                menuFlag = 1
        else
                menuFlag = 0
        ok

func processMainMenu

        // ここにはなにもありません。
        // 動作は全てサブメニューから行います。

func processFillMenu

        option = glutEventValue()

        switch option

                on C_FILL
                         glPolygonMode(GL_FRONT, GL_FILL)
                on C_LINE
                         glPolygonMode(GL_FRONT, GL_LINE)
        off

func processShrinkMenu

        option = glutEventValue()

        switch option

                on C_SHRINK
                        scale = 0.5
                on C_NORMAL
                         scale = 1.0
        off

func processColorMenu

        option = glutEventValue()

        switch option
                on C_RED
                        red = 1.0
                        green = 0.0
                        blue = 0.0
                on C_GREEN
                        red = 0.0
                        green = 1.0
                        blue = 0.0
                on C_BLUE
                        red = 0.0
                        green = 0.0
                        blue = 1.0
                on C_ORANGE
                        red = 1.0
                        green = 0.5
                        blue = 0.5
        off

func createPopupMenus

        shrinkMenu = glutCreateMenu(:processShrinkMenu)

        glutAddMenuEntry("Shrink",C_SHRINK)
        glutAddMenuEntry("NORMAL",C_NORMAL)

        fillMenu = glutCreateMenu(:processFillMenu)

        glutAddMenuEntry("Fill",C_FILL)
        glutAddMenuEntry("Line",C_LINE)

        colorMenu = glutCreateMenu(:processColorMenu)
        glutAddMenuEntry("Red",C_RED)
        glutAddMenuEntry("Blue",C_BLUE)
        glutAddMenuEntry("Green",C_GREEN)
        glutAddMenuEntry("Orange",C_ORANGE)

        mainMenu = glutCreateMenu(:processMainMenu)

        glutAddSubMenu("Polygon Mode", fillMenu)
        glutAddSubMenu("Color", colorMenu)
         // 右ボタンでメニューへ接続
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        // これでアクティブなメニューか検知できるようにします。
        glutMenuStatusFunc(:processMenuStatus)

// -----------------------------------
//             メイン
// -----------------------------------

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 10")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutIgnoreKeyRepeat(1)
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:pressKey)
        glutSpecialUpFunc(:releaseKey)

         // ここには二つの新しい関数があります。
        glutMouseFunc(:mouseButton)
        glutMotionFunc(:mouseMove)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)
        glEnable(GL_CULL_FACE)

        // メニューの初期化
        createPopupMenus()

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

スクリーンショット:

フォントの用法

用例:

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle = 0.0

// 実際のベクトルはカメラ方向を表しています。
lx=0.0 lz=-1.0

// カメラの XZ 位置
x=0.0  z=5.0

// キーの状態
// キーを押していない時は変数は 0 です。
deltaAngle = 0.0
deltaMove = 0
xOrigin = -1

// メニューを定義するための定数
C_RED  = 1
C_GREEN = 2
C_BLUE = 3
C_ORANGE = 4

C_FILL = 5
C_LINE = 6

// ポップアップメニューの定義
fillMenu=NULL
fontMenu=NULL
mainMenu=NULL
colorMenu=NULL

// 鼻の配色
red = 1.0
blue=0.5
green=0.5

// 雪だるまの大きさ
scale = 1.0

// メニューの状態
menuFlag = 0

// デフォルトのフォント
font = GLUT_BITMAP_TIMES_ROMAN_24

C_INT_GLUT_BITMAP_8_BY_13 = 7
C_INT_GLUT_BITMAP_9_BY_15 = 8
C_INT_GLUT_BITMAP_TIMES_ROMAN_10  = 9
C_INT_GLUT_BITMAP_TIMES_ROMAN_24  = 10
C_INT_GLUT_BITMAP_HELVETICA_10  = 11
C_INT_GLUT_BITMAP_HELVETICA_12  = 12
C_INT_GLUT_BITMAP_HELVETICA_18  = 13

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45.0, ratio, 0.1, 100.0)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func drawSnowMan

        glScalef(scale, scale, scale)
        glColor3f(1.0, 1.0, 1.0)

// 体の描画
        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

// 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

// 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)
        glPopMatrix()

// 鼻の描画
        glColor3f(red, green, blue)
        glRotatef(0.0,1.0, 0.0, 0.0)
        glutSolidCone(0.08,0.5,10,2)

        glColor3f(1.0, 1.0, 1.0)

func renderBitmapString x,y,z,font,string
        glRasterPos3f(x, y,z)
        for c in string
                glutBitmapCharacter(font,ascii(c))
        next

func computePos deltaMove

        x += deltaMove * lx * 0.1
        z += deltaMove * lz * 0.1

func renderScene

        if  deltaMove
                computePos(deltaMove)
        ok

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()

        // カメラの設定
        gluLookAt(      x, 1.0, z,
                        x+lx, 1.0,  z+lz,
                        0.0, 1.0,  0.0)

        // 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

// 36 体の雪だるまを描画
        for i = -3 to 2
                for j = -3 to 2
                        glPushMatrix()
                        glTranslatef(i*10.0, 0.0, j * 10.0)
                        drawSnowMan()
                        number = (i+3)*6+(j+3)
                        renderBitmapString(0.0, 0.5, 0.0,font ,""+number)
                        glPopMatrix()
                next
        next

        glutSwapBuffers()

// -----------------------------------
//             キーボード
// -----------------------------------

func processNormalKeys
        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on 27
                        glutDestroyMenu(mainMenu)
                        glutDestroyMenu(fillMenu)
                        glutDestroyMenu(colorMenu)
                        glutDestroyMenu(fontMenu)
                        Shutdown()
        off

func pressKey

        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on GLUT_KEY_UP
                         deltaMove = 0.5
                on GLUT_KEY_DOWN
                        deltaMove = -0.5
        off

func releaseKey

        key = glutEventKey()

        switch key
                on GLUT_KEY_UP
                        deltaMove = 0
                on GLUT_KEY_DOWN
                        deltaMove = 0
        off

// -----------------------------------
//             マウス
// -----------------------------------

func mouseMove
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ true になります。
        if xOrigin >= 0

                // deltaAngle の更新
                deltaAngle = (xx - xOrigin) * 0.001

                // カメラ方向の更新
                lx = sin(angle + deltaAngle)
                lz = -cos(angle + deltaAngle)
        ok

func mouseButton

        button = glutEventButton()
        state = glutEventState()
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ動作開始になります。
        if button = GLUT_LEFT_BUTTON
                // ボタンを離したとき
                if state = GLUT_UP
                        angle += deltaAngle
                        xOrigin = -1
                else
                        // state = GLUT_DOWN
                        xOrigin = xx
                ok
        ok

// -----------------------------------
//             メニュー
// -----------------------------------

func processMenuStatus

        status = glutEventStatus()

        if status = GLUT_MENU_IN_USE
                menuFlag = 1
        else
                menuFlag = 0
        ok

func processMainMenu

        // ここにはなにもありません。
        // 動作は全てサブメニューから行います。

func processFillMenu

        option = glutEventValue()

        switch option

                on C_FILL
                        glPolygonMode(GL_FRONT, GL_FILL)
                on C_LINE
                         glPolygonMode(GL_FRONT, GL_LINE)
        off

func processFontMenu

        option = glutEventValue()

        switch (option) {
                on C_INT_GLUT_BITMAP_8_BY_13
                        font = GLUT_BITMAP_8_BY_13
                on C_INT_GLUT_BITMAP_9_BY_15
                        font = GLUT_BITMAP_9_BY_15
                on C_INT_GLUT_BITMAP_TIMES_ROMAN_10
                        font = GLUT_BITMAP_TIMES_ROMAN_10
                on C_INT_GLUT_BITMAP_TIMES_ROMAN_24
                        font = GLUT_BITMAP_TIMES_ROMAN_24
                on C_INT_GLUT_BITMAP_HELVETICA_10
                        font = GLUT_BITMAP_HELVETICA_10
                on C_INT_GLUT_BITMAP_HELVETICA_12
                        font = GLUT_BITMAP_HELVETICA_12
                on C_INT_GLUT_BITMAP_HELVETICA_18
                        font = GLUT_BITMAP_HELVETICA_18
        off

func processColorMenu

        option = glutEventValue()

        switch option
                on C_RED
                        red = 1.0
                        green = 0.0
                        blue = 0.0
                on C_GREEN
                        red = 0.0
                        green = 1.0
                        blue = 0.0
                on C_BLUE
                        red = 0.0
                        green = 0.0
                        blue = 1.0
                on C_ORANGE
                        red = 1.0
                        green = 0.5
                        blue = 0.5
        off

func createPopupMenus

        fontMenu = glutCreateMenu(:processFontMenu)

        glutAddMenuEntry("BITMAP_8_BY_13 ",C_INT_GLUT_BITMAP_8_BY_13 )
        glutAddMenuEntry("BITMAP_9_BY_15",C_INT_GLUT_BITMAP_9_BY_15 )
        glutAddMenuEntry("BITMAP_TIMES_ROMAN_10 ",C_INT_GLUT_BITMAP_TIMES_ROMAN_10  )
        glutAddMenuEntry("BITMAP_TIMES_ROMAN_24",C_INT_GLUT_BITMAP_TIMES_ROMAN_24  )
        glutAddMenuEntry("BITMAP_HELVETICA_10 ",C_INT_GLUT_BITMAP_HELVETICA_10  )
        glutAddMenuEntry("BITMAP_HELVETICA_12",C_INT_GLUT_BITMAP_HELVETICA_12  )
        glutAddMenuEntry("BITMAP_HELVETICA_18",C_INT_GLUT_BITMAP_HELVETICA_18  )

        fillMenu = glutCreateMenu(:processFillMenu)

        glutAddMenuEntry("Fill",C_FILL)
        glutAddMenuEntry("Line",C_LINE)

        colorMenu = glutCreateMenu(:processColorMenu)
        glutAddMenuEntry("Red",C_RED);
        glutAddMenuEntry("Blue",C_BLUE);
        glutAddMenuEntry("Green",C_GREEN);
        glutAddMenuEntry("Orange",C_ORANGE);

        mainMenu = glutCreateMenu(:processMainMenu)

        glutAddSubMenu("Polygon Mode", fillMenu)
        glutAddSubMenu("Color", colorMenu)
        glutAddSubMenu("Font",fontMenu)
         // 右ボタンでメニューへ接続
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        // これでアクティブなメニューか検知できるようにします。
        glutMenuStatusFunc(:processMenuStatus)

// -----------------------------------
//             メイン
// -----------------------------------

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test 11")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutIgnoreKeyRepeat(1)
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:pressKey)
        glutSpecialUpFunc(:releaseKey)

         // ここには二つの新しい関数があります。
        glutMouseFunc(:mouseButton)
        glutMotionFunc(:mouseMove)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)
        glEnable(GL_CULL_FACE)

        // メニューの初期化
        createPopupMenus()

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

スクリーンショット:

一秒あたりのフレーム数

用例:

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle = 0.0

// 実際のベクトルはカメラ方向を表しています。
lx=0.0 lz=-1.0

// カメラの XZ 位置
x=0.0  z=5.0

// キーの状態
// キーを押していない時は変数は 0 です。
deltaAngle = 0.0
deltaMove = 0
xOrigin = -1

// メニューを定義するための定数
C_RED  = 1
C_GREEN = 2
C_BLUE = 3
C_ORANGE = 4

C_FILL = 5
C_LINE = 6

// ポップアップメニューの定義
fillMenu=NULL
fontMenu=NULL
mainMenu=NULL
colorMenu=NULL

// 鼻の配色
red = 1.0
blue=0.5
green=0.5

// 雪だるまの大きさ
scale = 1.0

// メニューの状態
menuFlag = 0

// デフォルトのフォント
font = GLUT_BITMAP_TIMES_ROMAN_24

C_INT_GLUT_BITMAP_8_BY_13 = 7
C_INT_GLUT_BITMAP_9_BY_15 = 8
C_INT_GLUT_BITMAP_TIMES_ROMAN_10  = 9
C_INT_GLUT_BITMAP_TIMES_ROMAN_24  = 10
C_INT_GLUT_BITMAP_HELVETICA_10  = 11
C_INT_GLUT_BITMAP_HELVETICA_12  = 12
C_INT_GLUT_BITMAP_HELVETICA_18  = 13

// ウィンドウの幅と高さ
h = 0
w = 0

// 一秒あたりのフレーム数を計算するための変数
frame=0
time=0
timebase=0
s = ""

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

         // 正しい遠近法の設定
        gluPerspective(45.0, ratio, 0.1, 100.0)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func drawSnowMan

        glScalef(scale, scale, scale)
        glColor3f(1.0, 1.0, 1.0)

// 体の描画
        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

// 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

// 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)
        glPopMatrix()

// 鼻の描画
        glColor3f(red, green, blue)
        glRotatef(0.0,1.0, 0.0, 0.0)
        glutSolidCone(0.08,0.5,10,2)

        glColor3f(1.0, 1.0, 1.0)

func renderBitmapString x,y,z,font,string
        glRasterPos3f(x, y,z)
        for c in string
                glutBitmapCharacter(font,ascii(c))
        next

func renderStrokeFontString x,y,z,font,string
        glPushMatrix()
        glTranslatef(x, y,z)
        glScalef(0.002, 0.002, 0.002)
        for c in string
                glutStrokeCharacter(font, Ascii(c));
        next
        glPopMatrix()

func restorePerspectiveProjection

        glMatrixMode(GL_PROJECTION)
        // 以前の投射行列へ復帰
        glPopMatrix()

        // Modelview モードの復帰
        glMatrixMode(GL_MODELVIEW)

func setOrthographicProjection

        // 投射モードの切り替え
        glMatrixMode(GL_PROJECTION)

        // 透視図の設定を有する
        // 以前の行列を保存します。
        glPushMatrix()

        // 行列のリセット
        glLoadIdentity()

        // 2D 正投射の設定
        gluOrtho2D(0, w, h, 0)

        // modelview モードへ復帰切り替え
        glMatrixMode(GL_MODELVIEW)

func computePos deltaMove

        x += deltaMove * lx * 0.1
        z += deltaMove * lz * 0.1

func renderScene

        if  deltaMove
                computePos(deltaMove)
        ok

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()

        // カメラの設定
        gluLookAt(      x, 1.0, z,
                        x+lx, 1.0,  z+lz,
                        0.0, 1.0,  0.0)

        // 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

// 9 体の雪だるまを描画
        for i = -3 to -1
                for j = -3 to -1
                        glPushMatrix()
                        glTranslatef(i*10.0, 0.0, j * 10.0)
                        drawSnowMan()
                        number = (i+3)*3+(j+3)
                        renderBitmapString(0.0, 0.5, 0.0,font ,""+number)
                        glPopMatrix()
                next
        next

        // 一秒あたりのフレーム数を計算するためのコード
        frame++

        time=glutGet(GLUT_ELAPSED_TIME)
        if time - timebase > 1000
                s = "RingFreeGLUT - FPS: " + (frame*1000.0/(time-timebase))
                timebase = time
                frame = 0
        ok

        // ビットマップフォントで文字列 (fps) を表示するためのコード
        setOrthographicProjection()

        glPushMatrix()
        glLoadIdentity()
        renderBitmapString(5,30,0,GLUT_BITMAP_HELVETICA_18,s)
        glPopMatrix()

        restorePerspectiveProjection()

        glutSwapBuffers()

// -----------------------------------
//             キーボード
// -----------------------------------

func processNormalKeys
        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on 27
                        glutDestroyMenu(mainMenu)
                        glutDestroyMenu(fillMenu)
                        glutDestroyMenu(colorMenu)
                        glutDestroyMenu(fontMenu)
                        Shutdown()
        off

func pressKey

        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on GLUT_KEY_UP
                         deltaMove = 0.5
                on GLUT_KEY_DOWN
                        deltaMove = -0.5
        off

func releaseKey

        key = glutEventKey()

        switch key
                on GLUT_KEY_UP
                        deltaMove = 0
                on GLUT_KEY_DOWN
                        deltaMove = 0
        off

// -----------------------------------
//             マウス
// -----------------------------------

func mouseMove
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ true になります。
        if xOrigin >= 0

                // deltaAngle の更新
                deltaAngle = (xx - xOrigin) * 0.001

                // カメラ方向の更新
                lx = sin(angle + deltaAngle)
                lz = -cos(angle + deltaAngle)
        ok

func mouseButton

        button = glutEventButton()
        state = glutEventState()
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ動作開始になります。
        if button = GLUT_LEFT_BUTTON
                // ボタンを離したとき
                if state = GLUT_UP
                        angle += deltaAngle
                        xOrigin = -1
                else
                        // state = GLUT_DOWN
                        xOrigin = xx
                ok
        ok

// -----------------------------------
//             メニュー
// -----------------------------------

func processMenuStatus

        status = glutEventStatus()

        if status = GLUT_MENU_IN_USE
                menuFlag = 1
        else
                menuFlag = 0
        ok

func processMainMenu

        // ここにはなにもありません。
        // 動作は全てサブメニューから行います。

func processFillMenu

        option = glutEventValue()

        switch option

                on C_FILL
                        glPolygonMode(GL_FRONT, GL_FILL)
                on C_LINE
                         glPolygonMode(GL_FRONT, GL_LINE)
        off

func processFontMenu

        option = glutEventValue()

        switch (option) {
                on C_INT_GLUT_BITMAP_8_BY_13
                        font = GLUT_BITMAP_8_BY_13
                on C_INT_GLUT_BITMAP_9_BY_15
                        font = GLUT_BITMAP_9_BY_15
                on C_INT_GLUT_BITMAP_TIMES_ROMAN_10
                        font = GLUT_BITMAP_TIMES_ROMAN_10
                on C_INT_GLUT_BITMAP_TIMES_ROMAN_24
                        font = GLUT_BITMAP_TIMES_ROMAN_24
                on C_INT_GLUT_BITMAP_HELVETICA_10
                        font = GLUT_BITMAP_HELVETICA_10
                on C_INT_GLUT_BITMAP_HELVETICA_12
                        font = GLUT_BITMAP_HELVETICA_12
                on C_INT_GLUT_BITMAP_HELVETICA_18
                        font = GLUT_BITMAP_HELVETICA_18
        off

func processColorMenu

        option = glutEventValue()

        switch option
                on C_RED
                        red = 1.0
                        green = 0.0
                        blue = 0.0
                on C_GREEN
                        red = 0.0
                        green = 1.0
                        blue = 0.0
                on C_BLUE
                        red = 0.0
                        green = 0.0
                        blue = 1.0
                on C_ORANGE
                        red = 1.0
                        green = 0.5
                        blue = 0.5
        off

func createPopupMenus

        fontMenu = glutCreateMenu(:processFontMenu)

        glutAddMenuEntry("BITMAP_8_BY_13 ",C_INT_GLUT_BITMAP_8_BY_13 )
        glutAddMenuEntry("BITMAP_9_BY_15",C_INT_GLUT_BITMAP_9_BY_15 )
        glutAddMenuEntry("BITMAP_TIMES_ROMAN_10 ",C_INT_GLUT_BITMAP_TIMES_ROMAN_10  )
        glutAddMenuEntry("BITMAP_TIMES_ROMAN_24",C_INT_GLUT_BITMAP_TIMES_ROMAN_24  )
        glutAddMenuEntry("BITMAP_HELVETICA_10 ",C_INT_GLUT_BITMAP_HELVETICA_10  )
        glutAddMenuEntry("BITMAP_HELVETICA_12",C_INT_GLUT_BITMAP_HELVETICA_12  )
        glutAddMenuEntry("BITMAP_HELVETICA_18",C_INT_GLUT_BITMAP_HELVETICA_18  )

        fillMenu = glutCreateMenu(:processFillMenu)

        glutAddMenuEntry("Fill",C_FILL)
        glutAddMenuEntry("Line",C_LINE)

        colorMenu = glutCreateMenu(:processColorMenu)
        glutAddMenuEntry("Red",C_RED);
        glutAddMenuEntry("Blue",C_BLUE);
        glutAddMenuEntry("Green",C_GREEN);
        glutAddMenuEntry("Orange",C_ORANGE);

        mainMenu = glutCreateMenu(:processMainMenu)

        glutAddSubMenu("Polygon Mode", fillMenu)
        glutAddSubMenu("Color", colorMenu)
        glutAddSubMenu("Font",fontMenu)
         // 右ボタンでメニューへ接続
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        // これでアクティブなメニューか検知できるようにします。
        glutMenuStatusFunc(:processMenuStatus)

// -----------------------------------
//             メイン
// -----------------------------------

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test - 9 SnowMan")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutIgnoreKeyRepeat(1)
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:pressKey)
        glutSpecialUpFunc(:releaseKey)

         // ここには二つの新しい関数があります。
        glutMouseFunc(:mouseButton)
        glutMotionFunc(:mouseMove)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)
        glEnable(GL_CULL_FACE)

        // メニューの初期化
        createPopupMenus()

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

スクリーンショット:

一枚目のスクリーンショット:

二枚目のスクリーンショット:

RingOpenGL と RingFreeGLUT による立方体の作例

用例:

load "freeglut.ring"
load "opengl21lib.ring"

// ----------------------------------------------------------
// グローバル変数
// ----------------------------------------------------------
rotate_y=0
rotate_x=0

// ----------------------------------------------------------
// display() コールバック関数
// ----------------------------------------------------------
func display

  // 画面と Z バッファの消去
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

  // 変換のリセット
  glLoadIdentity()

  // rotate_x および rotate_y のユーザによる変更をリセットします。
  glRotatef( rotate_x, 1.0, 0.0, 0.0 )
  glRotatef( rotate_y, 0.0, 1.0, 0.0 )

  // 多色面 - 前
  glBegin(GL_POLYGON)

  glColor3f( 1.0, 0.0, 0.0 )     glVertex3f(  0.5, -0.5, -0.5 )      # P1 is red
  glColor3f( 0.0, 1.0, 0.0 )     glVertex3f(  0.5,  0.5, -0.5 )      # P2 is green
  glColor3f( 0.0, 0.0, 1.0 )     glVertex3f( -0.5,  0.5, -0.5 )      # P3 is blue
  glColor3f( 1.0, 0.0, 1.0 )     glVertex3f( -0.5, -0.5, -0.5 )      # P4 is purple

  glEnd()

  // 白面 - 後
  glBegin(GL_POLYGON)
  glColor3f(   1.0,  1.0, 1.0 )
  glVertex3f(  0.5, -0.5, 0.5 )
  glVertex3f(  0.5,  0.5, 0.5 )
  glVertex3f( -0.5,  0.5, 0.5 )
  glVertex3f( -0.5, -0.5, 0.5 )
  glEnd()

  // 紫面 - 右
  glBegin(GL_POLYGON)
  glColor3f(  1.0,  0.0,  1.0 )
  glVertex3f( 0.5, -0.5, -0.5 )
  glVertex3f( 0.5,  0.5, -0.5 )
  glVertex3f( 0.5,  0.5,  0.5 )
  glVertex3f( 0.5, -0.5,  0.5 )
  glEnd()

  // 緑面 - 左
  glBegin(GL_POLYGON)
  glColor3f(   0.0,  1.0,  0.0 )
  glVertex3f( -0.5, -0.5,  0.5 )
  glVertex3f( -0.5,  0.5,  0.5 )
  glVertex3f( -0.5,  0.5, -0.5 )
  glVertex3f( -0.5, -0.5, -0.5 )
  glEnd()

  // 青面 - 上
  glBegin(GL_POLYGON)
  glColor3f(   0.0,  0.0,  1.0 )
  glVertex3f(  0.5,  0.5,  0.5 )
  glVertex3f(  0.5,  0.5, -0.5 )
  glVertex3f( -0.5,  0.5, -0.5 )
  glVertex3f( -0.5,  0.5,  0.5 )
  glEnd()

  // 赤面 - 下
  glBegin(GL_POLYGON)
  glColor3f(   1.0,  0.0,  0.0 )
  glVertex3f(  0.5, -0.5, -0.5 )
  glVertex3f(  0.5, -0.5,  0.5 )
  glVertex3f( -0.5, -0.5,  0.5 )
  glVertex3f( -0.5, -0.5, -0.5 )
  glEnd()

  glFlush()
  glutSwapBuffers()

// ----------------------------------------------------------
// specialKeys() コールバック関数
// ----------------------------------------------------------
func specialKeys

        key = glutEventKey()

  // 右矢印 - 回転を五度増分します。
        switch Key

        on GLUT_KEY_RIGHT
                rotate_y += 5

        // 左矢印 - 回転を五度減分します。
        on GLUT_KEY_LEFT
                rotate_y -= 5

        on GLUT_KEY_UP
                rotate_x += 5

        on GLUT_KEY_DOWN
                rotate_x -= 5

        off

  //  更新の要求
  glutPostRedisplay()

// ----------------------------------------------------------
// main() 関数
// ----------------------------------------------------------
func main

  // GLUT の初期化とユーザ仮引数の処理
  glutInit()

  // トゥルーカラーのウィンドウのために Z-バッファによるダブルバッファを要求します。
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)

  // ウィンドウの作成
  glutCreateWindow("Awesome Cube")

  // Z バッファの深度テストを有効にします。
  glEnable(GL_DEPTH_TEST)

  // コールバック関数
  glutDisplayFunc(:display)
  glutSpecialFunc(:specialKeys)

  // イベントに関する GLUT への制御を渡します。
  glutMainLoop()

  // OS へ戻ります。

スクリーンショット:

RingOpenGL と RingAllegro の用法 (3D グラフィックス)

RingOpenGL と RingAllegro の用法です。

3D 立方体とテクスチャ

ソースコード:

# ライブラリの読み込み
        load "gamelib.ring"             # RingAllegro ライブラリ
        load "opengl21lib.ring"         # RingOpenGL  ライブラリ

#==============================================================
# macOS への対応
        al_run_main()
        func al_game_start      # al_run_main() から呼び出されます。
                main()          # main 関数本体を呼び出します。
#==============================================================

func main

        new GraphicsApp {
                start()
        }

class GraphicsApp from GraphicsAppBase

        TITLE = "Ring Cube"

        bitmap texture

        xrot = 0.0
        yrot = 0.0
        zrot = 0.0

        func loadresources

                bitmap = al_load_bitmap("ring.bmp")
                texture = al_get_opengl_texture(bitmap)

        func destroyResources

                al_destroy_bitmap(bitmap)

        func drawScene

                w = 800 h = 600
                ratio =  w / h

                glViewport(0, 0, w, h)
                glMatrixMode(GL_PROJECTION)
                glLoadIdentity()

                gluPerspective(45,ratio,1,100)
                glMatrixMode(GL_MODELVIEW)
                glLoadIdentity()

                glEnable(GL_TEXTURE_2D)
                glShadeModel(GL_SMOOTH)
                glClearColor(0.0, 0.0, 0.0, 0.5)
                glClearDepth(1.0)
                glEnable(GL_DEPTH_TEST)
                glEnable(GL_CULL_FACE)
                glDepthFunc(GL_LEQUAL)
                glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)

                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
                glLoadIdentity()
                glTranslatef(0.0,0.0,-5.0)

                glRotatef(xrot,1.0,0.0,0.0)
                glRotatef(yrot,0.0,1.0,0.0)
                glRotatef(zrot,0.0,0.0,1.0)

                glBindTexture(GL_TEXTURE_2D, texture)

                glBegin(GL_QUADS)
                        // 前面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        // 背面
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        // 上面
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        // 底面
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        // 右面
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        // 左面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                glEnd()

                xrot += 0.3
                yrot += 0.2
                zrot += 0.4

class GraphicsAppBase

        display event_queue ev timeout
        timer  redraw   = true

        FPS             = 60

        SCREEN_W        = 800
        SCREEN_H        = 600

        KEY_UP          = 1
        KEY_DOWN        = 2
        KEY_LEFT        = 3
        KEY_RIGHT       = 4

        Key = [false,false,false,false]

        TITLE = "Graphics Application"

        func start

                SetUp()
                loadResources()
                eventsLoop()
                destroy()

        func setup

                al_init()
                al_init_image_addon()
                al_set_new_display_flags(ALLEGRO_OPENGL)
                display = al_create_display(SCREEN_W,SCREEN_H)
                al_set_Window_title(display,TITLE)
                al_clear_to_color(al_map_rgb(0,0,0))
                event_queue = al_create_event_queue()
                al_register_event_source(event_queue,
                        al_get_display_event_source(display))
                ev = al_new_allegro_event()
                timeout = al_new_allegro_timeout()
                al_init_timeout(timeout, 0.06)
                timer = al_create_timer(1.0 / FPS)
                al_register_event_source(event_queue,
                        al_get_timer_event_source(timer))
                al_start_timer(timer)
                al_install_mouse()
                al_register_event_source(event_queue,
                        al_get_mouse_event_source())
                al_install_keyboard()
                al_register_event_source(event_queue,
                        al_get_keyboard_event_source())

        func eventsLoop

                while true
                        al_init_timeout(timeout, 0.06)
                        al_wait_for_event_until(event_queue, ev, timeout)
                        switch al_get_allegro_event_type(ev)
                        on ALLEGRO_EVENT_DISPLAY_CLOSE
                                exit
                        on ALLEGRO_EVENT_TIMER
                                redraw = true
                        on ALLEGRO_EVENT_MOUSE_AXES
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_BUTTON_UP
                                exit
                        on ALLEGRO_EVENT_KEY_DOWN
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = true
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = true
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = true
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = true
                                off
                        on ALLEGRO_EVENT_KEY_UP
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = false
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = false
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = false
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = false
                                        on ALLEGRO_KEY_ESCAPE
                                                exit
                                off
                        off
                        if redraw and al_is_event_queue_empty(event_queue)
                                redraw = false
                                drawScene()
                                al_flip_display()
                        ok
                        callgc()
                end

        func destroy

                destroyResources()
                al_destroy_timer(timer)
                al_destroy_allegro_event(ev)
                al_destroy_allegro_timeout(timeout)
                al_destroy_event_queue(event_queue)
                al_destroy_display(display)
                al_exit()

        func loadresources

        func drawScene

        func destroyResources

スクリーンショット:

複数の立方体

スクリーンショット:

# ライブラリの読み込み
        load "gamelib.ring"             # RingAllegro ライブラリ
        load "opengl21lib.ring"         # RingOpenGL ライブラリ

#==============================================================
# macOS への対応
        al_run_main()
        func al_game_start      # al_run_main() により呼び出されます。
                main()          # main 関数本体を呼び出します。
#==============================================================

func main

        new GraphicsApp {
                start()
        }

class GraphicsApp from GraphicsAppBase

        TITLE = "Many Cubes"

        bitmap bitmap2 bitmap3
        texture texture2 texture3

        fps = 120
        xrot = 0.0
        yrot = 0.0
        zrot = 0.0

        nPerspective = 100

        func loadresources

                bitmap = al_load_bitmap("sky1.jpg")
                texture = al_get_opengl_texture(bitmap)

                bitmap2 = al_load_bitmap("sky2.jpg")
                texture2 = al_get_opengl_texture(bitmap2)

                bitmap3 = al_load_bitmap("sky3.jpg")
                texture3 = al_get_opengl_texture(bitmap3)

        func destroyResources

                al_destroy_bitmap(bitmap)
                al_destroy_bitmap(bitmap2)
                al_destroy_bitmap(bitmap3)

        func drawScene

                prepare()
                cubes()
                rotate()

        func Prepare
                w = 800 h = 600
                ratio =  w / h
                glViewport(0, 0, w, h)
                glMatrixMode(GL_PROJECTION)
                glLoadIdentity()
                gluPerspective(-nPerspective,ratio,1,nPerspective)
                glMatrixMode(GL_MODELVIEW)
                glLoadIdentity()
                glEnable(GL_TEXTURE_2D)
                glShadeModel(GL_SMOOTH)
                glClearColor(0.0, 0.0, 0.0, 0.5)
                glClearDepth(1.0)
                glEnable(GL_DEPTH_TEST)
                glEnable(GL_CULL_FACE)
                glDepthFunc(GL_LEQUAL)
                glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        func Cubes
                cube(5,-3.4,-5,:sky1)
                cube(0,-3,-5,:sky1)
                cube(-5,-3,-5,:sky1)
                cube(5,0.5,-5,:sky2)
                cube(0,0.5,-5,:sky2)
                cube(-5,0.5,-5,:sky2)
                cube(5,4,-5,:sky3)
                cube(0,4,-5,:sky3)
                cube(-5,4,-5,:sky3)

        func Rotate
                xrot += 0.3 * 5
                yrot += 0.2 * 5
                zrot += 0.4 * 5
                nPerspective += 0.5

        func cube(x,y,z,nTexture)
                glLoadIdentity()
                glTranslatef(x,y,z)
                glRotatef(xrot,1.0,0.0,0.0)
                glRotatef(yrot,0.0,1.0,0.0)
                glRotatef(zrot,0.0,0.0,1.0)
                drawcube(nTexture)

        func drawcube(cTexture)

                switch cTexture
                        on :sky1
                                glBindTexture(GL_TEXTURE_2D, texture)
                        on :sky2
                                glBindTexture(GL_TEXTURE_2D, texture2)
                        on :sky3
                                glBindTexture(GL_TEXTURE_2D, texture3)
                off

                glBegin(GL_QUADS)
                        // 前面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        // 背面
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        // 上面
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        // 底面
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)

                        // 右面
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)

                        // 左面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                glEnd()

class GraphicsAppBase

        display event_queue ev timeout
        timer  redraw   = true

        FPS             = 60

        SCREEN_W        = 800
        SCREEN_H        = 600

        KEY_UP          = 1
        KEY_DOWN        = 2
        KEY_LEFT        = 3
        KEY_RIGHT       = 4

        Key = [false,false,false,false]

        TITLE = "Graphics Application"

        func start

                SetUp()
                loadResources()
                eventsLoop()
                destroy()

        func setup

                al_init()
                al_init_image_addon()
                al_set_new_display_flags(ALLEGRO_OPENGL)
                display = al_create_display(SCREEN_W,SCREEN_H)
                al_set_Window_title(display,TITLE)
                al_clear_to_color(al_map_rgb(0,0,0))
                event_queue = al_create_event_queue()
                al_register_event_source(event_queue,
                        al_get_display_event_source(display))
                ev = al_new_allegro_event()
                timeout = al_new_allegro_timeout()
                al_init_timeout(timeout, 0.06)
                timer = al_create_timer(1.0 / FPS)
                al_register_event_source(event_queue,
                        al_get_timer_event_source(timer))
                al_start_timer(timer)
                al_install_mouse()
                al_register_event_source(event_queue,
                        al_get_mouse_event_source())
                al_install_keyboard()
                al_register_event_source(event_queue,
                        al_get_keyboard_event_source())

        func eventsLoop

                while true
                        al_init_timeout(timeout, 0.06)
                        al_wait_for_event_until(event_queue, ev, timeout)
                        switch al_get_allegro_event_type(ev)
                        on ALLEGRO_EVENT_DISPLAY_CLOSE
                                exit
                        on ALLEGRO_EVENT_TIMER
                                redraw = true
                        on ALLEGRO_EVENT_MOUSE_AXES
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_BUTTON_UP
                                exit
                        on ALLEGRO_EVENT_KEY_DOWN
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = true
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = true
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = true
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = true
                                off
                        on ALLEGRO_EVENT_KEY_UP
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = false
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = false
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = false
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = false
                                        on ALLEGRO_KEY_ESCAPE
                                                exit
                                off
                        off
                        if redraw and al_is_event_queue_empty(event_queue)
                                redraw = false
                                drawScene()
                                al_flip_display()
                        ok
                        callgc()
                end

        func destroy

                destroyResources()
                al_destroy_timer(timer)
                al_destroy_allegro_event(ev)
                al_destroy_allegro_timeout(timeout)
                al_destroy_event_queue(event_queue)
                al_destroy_display(display)
                al_exit()

        func loadresources

        func drawScene

        func destroyResources

スクリーンショット:

TicTacToe 3D ゲーム

ソースコード:

# ライブラリの読み込み
        load "gamelib.ring"             # RingAllegro ライブラリ
        load "opengl21lib.ring"         # RingOpenGL ライブラリ

#==============================================================
# macOS への対応
        al_run_main()
        func al_game_start      # al_run_main() により呼び出されます。
                main()          # main 関数本体を呼び出します。
#==============================================================

func main
        new TicTacToe3D {
                start()
        }

class TicTacToe3D from GameLogic

        FPS = 60
        TITLE = "TicTacToe 3D"

        oBackground = new GameBackground
        oGameSound = new GameSound
        oGameCube = new GameCube
        oGameOver = new GameOver
        oGameInterface = new GameInterface

        func loadresources
                oGameOver.loadresources()
                oGameSound.loadresources()
                oBackGround.loadresources()
                oGameCube.loadresources()

        func destroyResources
                oGameOver.destroyResources()
                oGameSound.destroyResources()
                oBackGround.destroyResources()
                oGameCube.destroyResources()

        func drawScene
                oBackground.update()
                oGameInterface.update(self)

        func MouseClickEvent
                oGameInterface.MouseClickEvent(self)

class GameInterface

        func Update oGame
                prepare()
                cubes(oGame)

        func Prepare
                w = 1024 h = 768
                ratio =  w / h
                glViewport(0, 0, w, h)
                glMatrixMode(GL_PROJECTION)
                glLoadIdentity()
                gluPerspective(-120,ratio,1,120)
                glMatrixMode(GL_MODELVIEW)
                glLoadIdentity()
                glEnable(GL_TEXTURE_2D)
                glShadeModel(GL_SMOOTH)
                glClearColor(0.0, 0.0, 0.0, 0.5)
                glClearDepth(1.0)
                glEnable(GL_DEPTH_TEST)
                glEnable(GL_CULL_FACE)
                glDepthFunc(GL_LEQUAL)
                glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)

        func Cubes oGame
                oGame.oGameCube {
                        aGameMap = oGame.aGameMap
                        cube( 5  , -3 , -5  , aGameMap[1][1] )
                        cube( 0  , -3 , -5  , aGameMap[1][2] )
                        cube( -5 , -3 , -5  , aGameMap[1][3] )
                        cube( 5  , 1  , -5  , aGameMap[2][1] )
                        cube( 0  , 1  , -5  , aGameMap[2][2] )
                        cube( -5 , 1  , -5  , aGameMap[2][3] )
                        cube( 5  , 5  , -5  , aGameMap[3][1] )
                        cube( 0  , 5  , -5  , aGameMap[3][2] )
                        cube( -5 , 5  , -5  , aGameMap[3][3] )
                        rotate()
                }

        func MouseClickEvent oGame
                oGame {
                        aBtn = Point2Button(Mouse_X,Mouse_Y)
                        nRow = aBtn[1]
                        nCol = aBtn[2]
                        if nRow != 0 and nCol != 0
                                if aGameMap[nRow][nCol] = :n
                                        aGameMap[nRow][nCol] = cActivePlayer
                                        ChangeActivePlayer()
                                        CheckGameOver()
                                ok
                        ok
                }

Class GameLogic from GraphicsAppBase

        aGameMap = [
                [ :n , :n , :n ] ,
                [ :n , :n , :n ] ,
                [ :n , :n , :n ]
        ]

        aGameButtons = [                        # x1,y1,x2,y2
                [176,88,375,261],               # [1,1]
                [423,88,591,261],               # [1,2]
                [645,88,876,261],               # [1,3]
                [176,282,375,428],              # [2,1]
                [423,282,591,428],              # [2,2]
                [645,282,876,428],              # [2,3]
                [176,454,375,678],              # [3,1]
                [423,454,591,678],              # [3,2]
                [645,454,876,678]               # [3,3]
        ]

        cActivePlayer = :x

        func point2button x,y
                nRow = 0
                nCol = 0
                for t = 1 to len(aGameButtons)
                        rect = aGameButtons[t]
                        if x >= rect[1] and x <= rect[3] and
                           y >= rect[2] and y <= rect[4]
                                        switch t
                                                on 1  nRow = 1  nCol = 1
                                                on 2  nRow = 1  nCol = 2
                                                on 3  nRow = 1  nCol = 3
                                                on 4  nRow = 2  nCol = 1
                                                on 5  nRow = 2  nCol = 2
                                                on 6  nRow = 2  nCol = 3
                                                on 7  nRow = 3  nCol = 1
                                                on 8  nRow = 3  nCol = 2
                                                on 9  nRow = 3  nCol = 3
                                        off
                                        exit
                        ok
                next
                return [nRow,nCol]

        func ChangeActivePlayer()
                if cActivePlayer = :x
                        cActivePlayer = :o
                else
                        cActivePlayer = :x
                ok

        func CheckGameOver
                aList = [
                        aGameMap[1][1],
                        aGameMap[1][2],
                        aGameMap[1][3],
                        aGameMap[2][1],
                        aGameMap[2][2],
                        aGameMap[2][3],
                        aGameMap[3][1],
                        aGameMap[3][2],
                        aGameMap[3][3]
                ]
                for item in aList
                        switch item
                                on :x   item = 1
                                on :o   item = 2
                                on :n   item = 0
                        off
                next
                nStatus = CheckWinner(aList)
                if nStatus
                        oGameOver {
                                Switch nStatus
                                        on 1 Player1Win(this)
                                        on 2 Player2Win(this)
                                        on 3 NoOneWin(this)
                                off
                        }
                        refreshGame()
                ok

        func refreshGame
                aGameMap = [
                        [ :n , :n , :n ] ,
                        [ :n , :n , :n ] ,
                        [ :n , :n , :n ]
                ]
                cActivePlayer = :x

        func CheckWinner lst
                // 垂直の確認
                for v=1 to 9 step 3
                        if lst[v]!=0 and lst[v+1]!=0 and lst[v+2]!=0
                                if lst[v]=lst[v+1] and lst[v+1]=lst[v+2]
                                        return lst[v]
                                ok
                        ok
                next
                // 水平
                for h=1 to 3
                        if lst[h]!=0 and lst[h+3]!=0 and lst[h+6]!=0
                                if lst[h]=lst[h+3] and lst[h+3]=lst[h+6]
                                        return lst[h]
                                ok
                        ok
                next
                // 十字型
                if lst[1]!=0 and lst[5]!=0 and lst[9]!=0
                        if lst[1]=lst[5] and lst[5]=lst[9] return lst[1] ok
                ok
                if lst[3]!=0 and lst[5]!=0 and lst[7]!=0
                        if lst[3]=lst[5] and lst[5]=lst[7] return lst[3] ok
                ok
                // 枕木型
                tie=true
                for i=1 to 9
                        if lst[i]=0 tie=false exit ok
                next
                if tie=true return 3 ok return 0

class GameOver

        font bitmap

        func loadresources
                font = al_load_ttf_font("font/pirulen.ttf",54,0 )
                bitmap = al_load_bitmap("image/ballon.png")

        func destroyResources
                al_destroy_bitmap(bitmap)
                al_destroy_font(font)

        func Player1Win oGame
                showMsg(oGame,80,430,"Good job X you won!")

        func Player2Win oGame
                showMsg(oGame,80,430,"Good job O you won!")

        func NoOneWin oGame
                showMsg(oGame,150,430,"Oh no it's a tie!")

        func ShowMsg oGame,x,y,cMsg
                oGame {
                        drawScene()
                        al_flip_display()
                        al_rest(0.3)
                        newdisplay = al_create_display(SCREEN_W,SCREEN_H)
                        al_set_window_title(newdisplay,TITLE)
                        al_clear_to_color(al_map_rgb(255,255,255))
                        al_draw_bitmap(this.bitmap,200,50,1)
                        al_draw_text(this.font,
                                 al_map_rgb(0,0,255), x,y,
                                 ALLEGRO_ALIGN_LEFT,cMsg)
                        al_flip_display()
                        al_rest(2)
                        al_destroy_display(newdisplay)
                        al_set_target_backbuffer(display)
                }

class GameCube

        bitmap bitmap2 bitmap3
        textureX textureO textureN

        xrot = 0.0
        yrot = 0.0
        zrot = 0.0

        func loadresources
                bitmap = al_load_bitmap("image/o.png")
                textureO = al_get_opengl_texture(bitmap)
                bitmap2 = al_load_bitmap("image/x.png")
                textureX = al_get_opengl_texture(bitmap2)
                bitmap3 = al_load_bitmap("image/empty.png")
                textureN = al_get_opengl_texture(bitmap3)

        func destroyResources
                al_destroy_bitmap(bitmap)
                al_destroy_bitmap(bitmap2)
                al_destroy_bitmap(bitmap3)

        func cube(x,y,z,nTexture)
                glLoadIdentity()
                glTranslatef(x,y,z)
                glRotatef(xrot,1.0,0.0,0.0)
                glRotatef(yrot,0.0,1.0,0.0)
                glRotatef(zrot,0.0,0.0,1.0)
                setCubeTexture(nTexture)
                drawCube()

        func setCubeTexture cTexture
                switch cTexture
                        on :x
                                glBindTexture(GL_TEXTURE_2D, textureX)
                        on :o
                                glBindTexture(GL_TEXTURE_2D, textureO)
                        on :n
                                glBindTexture(GL_TEXTURE_2D, textureN)
                off

        func Rotate
                xrot += 0.3 * 5
                yrot += 0.2 * 5
                zrot += 0.4 * 5

        func drawcube
                glBegin(GL_QUADS)
                        // 前面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        // 背面
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        // 上面
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        // 底面
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)

                        // 右面
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)

                        // 左面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                glEnd()

class GameBackground

        nBackX = 0
        nBackY = 0
        nBackDiffx = -1
        nBackDiffy = -1
        nBackMotion = 1
        aBackMotionList = [
                [ -1, -1 ] ,            # 右下
                [ 0 , 1  ] ,            # 上
                [ -1, -1 ] ,            # 右下
                [ 0 , 1  ] ,            # 上
                [ 1 , -1 ] ,            # 左下
                [ 0 , 1  ] ,            # 上
                [ 1 , -1 ] ,            # 左下
                [ 0 , 1  ]                      # 上
        ]

        bitmap

        func Update
                draw()
                motion()

        func draw
                al_draw_bitmap(bitmap,nBackX,nBackY,1)

        func motion
                nBackX += nBackDiffx
                nBackY += nBackDiffy
                if (nBackY = -350) or (nBackY = 0)
                        nBackMotion++
                        if nBackMotion > len(aBackMotionList)
                                nBackMotion = 1
                        ok
                        nBackDiffx  = aBackMotionList[nBackMotion][1]
                        nBackDiffy  = aBackMotionList[nBackMotion][2]
                ok

        func loadResources
                bitmap = al_load_bitmap("image/back.jpg")

        func destroyResources
                al_destroy_bitmap(bitmap)

class GameSound

        sample sampleid

        func loadresources
                sample = al_load_sample( "sound/music1.wav" )
                sampleid = al_new_allegro_sample_id()
                al_play_sample(sample, 1.0, 0.0,1.0,ALLEGRO_PLAYMODE_LOOP,sampleid)

        func destroyResources
                al_destroy_allegro_sample_id(sampleid)
                al_destroy_sample(sample)

class GraphicsAppBase

        display event_queue ev timeout
        timer
        redraw                  = true
        FPS                     = 60
        SCREEN_W                = 1024
        SCREEN_H                = 700
        KEY_UP                  = 1
        KEY_DOWN                = 2
        KEY_LEFT                = 3
        KEY_RIGHT               = 4
        Key                     = [false,false,false,false]
        Mouse_X                 = 0
        Mouse_Y                 = 0
        TITLE                   = "Graphics Application"
        PRINT_MOUSE_XY  = False

        func start
                SetUp()
                loadResources()
                eventsLoop()
                destroy()

        func setup
                al_init()
                al_init_font_addon()
                al_init_ttf_addon()
                al_init_image_addon()
                al_install_audio()
                al_init_acodec_addon()
                al_reserve_samples(1)
                al_set_new_display_flags(ALLEGRO_OPENGL)
                display = al_create_display(SCREEN_W,SCREEN_H)
                al_set_window_title(display,TITLE)
                al_clear_to_color(al_map_rgb(0,0,0))
                event_queue = al_create_event_queue()
                al_register_event_source(event_queue,
                        al_get_display_event_source(display))
                ev = al_new_allegro_event()
                timeout = al_new_allegro_timeout()
                al_init_timeout(timeout, 0.06)
                timer = al_create_timer(1.0 / FPS)
                al_register_event_source(event_queue,
                        al_get_timer_event_source(timer))
                al_start_timer(timer)
                al_install_mouse()
                al_register_event_source(event_queue,
                        al_get_mouse_event_source())
                al_install_keyboard()
                al_register_event_source(event_queue,
                        al_get_keyboard_event_source())

        func eventsLoop
                while true
                        al_init_timeout(timeout, 0.06)
                        al_wait_for_event_until(event_queue, ev, timeout)
                        switch al_get_allegro_event_type(ev)
                        on ALLEGRO_EVENT_DISPLAY_CLOSE
                                CloseEvent()
                        on ALLEGRO_EVENT_TIMER
                                redraw = true
                        on ALLEGRO_EVENT_MOUSE_AXES
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                                if PRINT_MOUSE_XY
                                        see "x = " + mouse_x + nl
                                        see "y = " + mouse_y + nl
                                ok
                        on ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_BUTTON_UP
                                MouseClickEvent()
                        on ALLEGRO_EVENT_KEY_DOWN
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = true
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = true
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = true
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = true
                                off
                        on ALLEGRO_EVENT_KEY_UP
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = false
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = false
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = false
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = false
                                        on ALLEGRO_KEY_ESCAPE
                                                exit
                                off
                        off
                        if redraw and al_is_event_queue_empty(event_queue)
                                redraw = false
                                drawScene()
                                al_flip_display()
                        ok
                        callgc()
                end

        func destroy
                destroyResources()
                al_destroy_timer(timer)
                al_destroy_allegro_event(ev)
                al_destroy_allegro_timeout(timeout)
                al_destroy_event_queue(event_queue)
                al_destroy_display(display)
                al_exit()

        func loadresources

        func drawScene

        func destroyResources

        func MouseClickEvent
                exit                    # イベントループから脱出

        func CloseEvent
                exit                    # イベントループから脱出

スクリーンショット:

その他の 3D サンプル

サンプルは ring/samples/3D フォルダにあります。

このスクリーンショットはトップダウン - 多層立方体のサンプルです。

このスクリーンショットはカメラのサンプルです。

このスクリーンショットはカメラと背景のサンプルです。

開発者 : アズディン・レマル

Gold Magic 800 ゲーム

Gold Magic 800 ゲームについて解説します。

このゲームは Ring, RingAllegro および RingOpenGL で開発しました。

ゲーム本体は ring/applications/goldmagic800 フォルダにあります。

ゲームストーリー

7000 年前に世界中で最も偉大な魔法使いが遺したユニークで特別な箱を友人が発見しました。あなたが箱を閉じて移動すると、箱に隠されていた新しい黄金が現れました。それは無尽蔵の金鉱脈です。この箱は魔法で保護された特別な完全パズル環境にあるため侵入は不可能です。この問題を解決するために、遠隔操縦装置で箱を動かせるナノテクノロジー技術を応用したロボットを友人が発明しました。あなたの任務は、パズルをすべて解いて箱を入手し世界の大富豪の人々の仲間入りをすることです。

あそびかた

Gold Magic 800 は企業家思考を無意識に心へ教育するためのパズルゲームです。

ゲームでは、最初の扉 (一つ目の箱) を開けるために箱を動かして付近にある黄金の得点 (=800) を得てから、扉の上に箱を置きます (次の扉を開きます)。そして、レベル内にある各扉へすべての箱を置いてください。一つ目の扉に限り 800 点が必要です。この条件は次のドアでは不要とはいえ、この方法では扉に箱を置くと黄金は壁に変わってしまうことです。よって、慎重に経路を選ぶことです。

上達のコツ

1- 最初に戦略を練ります。

2- 対象へ移動して必要な資源を入手します。

3- 様々な解決策を判断しながら数歩先を考えます。

4- 失敗を避けるために悩みながら試行錯誤します。

5- コストを考慮してください (800)。

6- 集中して慎重に進めます。

7- 忍耐強くお楽しみください。

スクリーンショット

レベルの選択ができます。

このスクリーンショットはレベル (1) です。

Gold Magic 800 レベルエディタです。

ソースコード

このフォルダにレベルエディタのソースコードがあります。

https://github.com/ring-lang/ring/tree/master/applications/goldmagic800/editor

Ring フォームデザイナーでレベルエディタのユーザインターフェースをデザインしました。

このファイルにはレベルエディタのコントロールクラスが収録されています。

https://github.com/ring-lang/ring/blob/master/applications/goldmagic800/editor/editorController.ring

このフォルダにゲームエンジンのソースコードがあります。

https://github.com/ring-lang/ring/tree/master/applications/goldmagic800

RingTilengine 拡張機能

RingTilengine 拡張機能の用法を解説します。

この拡張機能では Tilengine の機能を全て使えます。

Tilengine はラスターエフェクトが使える「セガ メガドライブ」や「任天堂 スーパーファミコン」風の 2D レトロゲーム制作に向いたゲーム、およびグラフィックスエンジンです。

Tilengine の URL: https://github.com/megamarc/Tilengine

参考文献 (原著のドキュメントの読者は C プログラマを想定しています)

入門: https://github.com/ring-lang/Tilengine/blob/master/docs/quick_guide.md

初期化: https://github.com/ring-lang/Tilengine/blob/master/docs/starting.md

ウィンドウの用法: https://github.com/ring-lang/Tilengine/blob/master/docs/windowing.md

外部レンダリング: https://github.com/ring-lang/Tilengine/blob/master/docs/rendering.md

背景レイヤ: https://github.com/ring-lang/Tilengine/blob/master/docs/layers.md

スプライト: https://github.com/ring-lang/Tilengine/blob/master/docs/sprites.md

開発で使えるツール

Tiled Map Editor: https://www.mapeditor.org/

aseprite: https://www.aseprite.org/

Piskel: https://www.piskelapp.com/

GrafX2: http://grafx2.chez.com/

サポート先

Tilengine フォーラム: http://www.tilengine.org/forum/

入門

用例 (1):

load "tilengine.ring"

TLN_Init(400, 240, 1, 0, 0)
TLN_SetLoadPath("assets\sonic")
foreground = TLN_LoadTilemap ("Sonic_md_fg1.tmx", NULL)
TLN_SetLayerTilemap(0, foreground)

TLN_CreateWindow(NULL, 0)
while TLN_ProcessWindow()
        TLN_DrawFrame(0)
end

TLN_DeleteTilemap(foreground)
TLN_Deinit()

スクリーンショット:

追加サンプル

用例 (2):

load "tilengine.ring"

WIDTH  = 400
HEIGHT = 240

frame = 0

/* エンジンのセットアップ */
TLN_Init(WIDTH, HEIGHT, 1,0,0)

/* レイヤーの読み込み */
tilemap = TLN_LoadTilemap("assets/sonic/Sonic_md_fg1.tmx", NULL)

/* レイヤーのセットアップ */
TLN_SetLayer(0, NULL, tilemap)
TLN_SetBGColor(32,32,128)

/* メインループ */
TLN_CreateWindow(NULL, 0)
while TLN_ProcessWindow ()

        /* フレームごとにレイヤーを 1 ピクセルのスクロールをする */
        TLN_SetLayerPosition (0, frame, 0)

        /* ウィンドウへ描画 */
        TLN_DrawFrame (0)

        frame++
end

/* リソースの解放 */
TLN_DeleteTilemap(tilemap)
TLN_Deinit()

スクリーンショット:

用例 (3):

load "tilengine.ring"

/* エンジンの初期化 */
TLN_Init(640,480,0,0,1)

/* リソースの読み込み */
TLN_SetLoadPath("assets/color")
background = TLN_LoadBitmap("beach.png")
palette    = TLN_GetBitmapPalette(background)
sp         = TLN_LoadSequencePack("beach.sqx")
sequence   = TLN_FindSequence(sp, "beach")

/* セットアップ */
TLN_SetBGBitmap(background)
TLN_SetPaletteAnimation(0, palette, sequence, true)

/* メインループ */
TLN_CreateWindow(NULL, 0)
TLN_DisableCRTEffect()
while(TLN_ProcessWindow())
        TLN_DrawFrame(0)
end

TLN_DeleteBitmap(background)
TLN_DeleteSequencePack(sp)
TLN_Deinit()

スクリーンショット:

用例 (4):

load "tilengine.ring"

WIDTH = 400
HEIGHT= 240

LAYER_FOREGROUND = 0
LAYER_BACKGROUND = 1
MAX_LAYER = 2

player_x = -16
player_y = 160

/* 基本セットアップ */
TLN_Init(WIDTH, HEIGHT, MAX_LAYER,1,0)
TLN_SetBGColor(0, 96, 184)

/* リソースの読み込み */
TLN_SetLoadPath("assets/smw")
foreground = TLN_LoadTilemap("smw_foreground.tmx", NULL)
background = TLN_LoadTilemap("smw_background.tmx", NULL)
TLN_SetLayerTilemap(LAYER_FOREGROUND, foreground)
TLN_SetLayerTilemap(LAYER_BACKGROUND, background)
TLN_SetLayerPosition(LAYER_FOREGROUND, 0,48)
TLN_SetLayerPosition(LAYER_BACKGROUND, 0,80)

/* スプライトのセットアップ */
spriteset = TLN_LoadSpriteset("smw_sprite")
TLN_SetSpriteSet(0, spriteset)
TLN_SetSpritePicture(0, 0)
TLN_SetSpritePosition(0, player_x, player_y)

/* アニメーションのセットアップ */
seq_walking = TLN_CreateSpriteSequence(NULL, spriteset, "walking", 6)
TLN_SetSpriteAnimation(0, seq_walking, 0)

/* メインループ */
TLN_CreateWindow(NULL, 0)
while TLN_ProcessWindow()
        player_x += 1
        if player_x >= WIDTH
                player_x = -16
        ok
        TLN_SetSpritePosition(0, player_x, player_y)
        TLN_DrawFrame(0)
end

/* 使用終了処理 */
TLN_DeleteTilemap(foreground)
TLN_DeleteTilemap(background)
TLN_Deinit()

スクリーンショット:

用例 (5):

load "tilengine.ring"

HRES = 424
VRES = 240

LAYER_PROPS_FRONT       = 0
LAYER_FOREGROUND        = 1
LAYER_PROPS             = 2
LAYER_MIDDLEGROUND      = 3
LAYER_BACKGROUND        = 4
NUM_LAYERS              = 5

xworld = 0
oldx = -1

TLN_Init(HRES, VRES, NUM_LAYERS, 8, 0)

/* アセットの読み込み */
TLN_SetLogLevel(TLN_LOG_ERRORS)
TLN_SetLoadPath("assets/forest")
foreground = TLN_LoadTilemap("map.tmx", "Main Layer")
middleground = TLN_LoadBitmap("middleground.png")
background = TLN_LoadBitmap("background.png")
atlas = TLN_LoadSpriteset("atlas.png")
props_list = TLN_LoadObjectList("map.tmx", NULL)

/* レイヤーのセットアップ */
TLN_SetLayer(LAYER_FOREGROUND, NULL, foreground)
TLN_SetLayerBitmap(LAYER_MIDDLEGROUND, middleground)
TLN_SetLayerBitmap(LAYER_BACKGROUND, background)
width = TLN_GetLayerWidth(LAYER_FOREGROUND)
height = TLN_GetLayerHeight(LAYER_FOREGROUND)

/* オブジェクトレイヤー: 後方へオブジェクトを追加 (スプライトの裏側) */
TLN_SetLayerObjects(LAYER_PROPS, props_list, NULL)

/* メインレイヤーとプロパティレイヤー (props layer) を同期 */
TLN_SetLayerParent(LAYER_PROPS_FRONT, LAYER_FOREGROUND)
TLN_SetLayerParent(LAYER_PROPS, LAYER_FOREGROUND)

/* スプライトシーケンスの作成 */
idle = TLN_CreateSpriteSequence(NULL, atlas, "player-idle/player-idle-", 6)
skip = TLN_CreateSpriteSequence(NULL, atlas, "player-skip/player-skip-", 6)

/* メインプレイヤーのスプライトをセットアップ */
xplayer = 48
yplayer = 144
TLN_ConfigSprite(0, atlas, 0)
TLN_SetSpriteAnimation(0, idle, 0)

/* ウィンドウとメインループの作成 */
TLN_CreateWindow(NULL, 0)
TLN_DisableCRTEffect()
while TLN_ProcessWindow()
        TLN_DrawFrame(0)

        /* メインレイヤーを左右 3 ピクセル移動 */
        if (TLN_GetInput(INPUT_LEFT) && xworld > 0)
                xworld -= 3
        elseif (TLN_GetInput(INPUT_RIGHT) && xworld < width - HRES)
                xworld += 3
        ok

        /* 変更のために更新 */
        if xworld != oldx
                TLN_SetLayerPosition(LAYER_FOREGROUND, xworld, 32)
                TLN_SetLayerPosition(LAYER_MIDDLEGROUND, xworld / 2, 0)
                TLN_SetLayerPosition(LAYER_BACKGROUND, xworld / 3, 0)
                TLN_SetSpritePosition(0, xplayer - xworld, yplayer)
                oldx = xworld
        ok
end

/* リソースの解放 */
TLN_DeleteTilemap(foreground)
TLN_DeleteBitmap(middleground)
TLN_CloseResourcePack()
TLN_DeleteSpriteset(atlas)
TLN_DeleteObjectList(props_list)

TLN_DeleteWindow()
TLN_Deinit()

スクリーンショット:

用例 (6):

load "tilengine.ring"
load "sin.ring"

WIDTH            = 400
HEIGHT           = 240
FIXED_BITS       = 16
LAYER_FOREGROUND = 0
LAYER_BACKGROUND = 1
MAX_LAYER        = 2
MAP_HORIZON      = 0
MAP_TRACK        = 1
MAX_MAP          = 2

road             = NULL
x                = NULL
y                = NULL
angle            = NULL

func main

        /* エンジンのセットアップ */

                TLN_Init (WIDTH,HEIGHT, MAX_LAYER, 0, 0)
                TLN_SetRasterCallback ("raster_callback()")
                TLN_SetBGColor (0,0,0)

        /* リソースの読み込み */

                TLN_SetLoadPath ("assets/smk")
                road = TLN_LoadTilemap ("track1.tmx", NULL)
                horizon = TLN_LoadTilemap ("track1_bg.tmx", NULL)

        /* 表示開始 */

                TLN_CreateWindow (NULL, 0)
                x = int2fix(-136)
                y = int2fix(336)
                s = 0
                a = float2fix(0.2)
                angle = 0
                BuildSinTable ()

        /* メインループ */

                while (TLN_ProcessWindow ())
                        TLN_SetLayerTilemap (LAYER_FOREGROUND, horizon)
                        TLN_SetLayerTilemap (LAYER_BACKGROUND, horizon)
                        TLN_SetLayerPosition (LAYER_FOREGROUND, lerp(angle*2, 0,360, 0,256), 24)
                        TLN_SetLayerPosition (LAYER_BACKGROUND, lerp(angle, 0,360, 0,256), 0)
                        TLN_ResetLayerMode (LAYER_BACKGROUND)

                        /* 入力処理 */

                                if (TLN_GetInput (INPUT_LEFT))
                                        angle-=2
                                elseif (TLN_GetInput (INPUT_RIGHT))
                                        angle+=2
                                ok

                                if (TLN_GetInput (INPUT_UP))
                                        s += a
                                        if (s > int2fix(2))
                                                s = int2fix(2)
                                        ok
                                elseif (s >= a)
                                        s -= a
                                ok

                                if (TLN_GetInput (INPUT_DOWN))
                                        s -= a
                                        if (s < -int2fix(2))
                                                s = -int2fix(2)
                                        ok
                                elseif (s <= -a)
                                        s += a
                                ok

                                if (s != 0)
                                        angle = angle%360
                                        if (angle < 0)
                                                angle += 360
                                        ok

                                        x += CalcSin (angle, s)
                                        y -= CalcCos (angle, s)
                                ok

                        /* ウィンドウへ描画 */

                                TLN_DrawFrame (0)
        end

        /* 使用終了処理 */

                TLN_DeleteTilemap (road)
                TLN_DeleteTilemap (horizon)
                TLN_DeleteWindow ()
                TLN_Deinit ()

/* ラスターのコールバック (仮想 HBLANK) */

func raster_callback

        line = TLN_GETSCANLINE()

        if (line = 24)
                TLN_SetLayerTilemap (LAYER_BACKGROUND, road)
                TLN_SetLayerPosition (LAYER_BACKGROUND, fix2int(x), fix2int(y))
                TLN_DisableLayer (LAYER_FOREGROUND)
        elseif (line >= 24)
                s0 = float2fix (0.2)
                s1 = float2fix (5.0)
                s = lerp (line, 24,HEIGHT, s0,s1)
                scale = fix2float (s)
                TLN_SetLayerTransform (LAYER_BACKGROUND, angle, WIDTH/2, HEIGHT, scale, scale)
        ok

func lerp x,x0,x1,fx0,fx1
        return (fx0) + ((fx1) - (fx0)) * ((x) - (x0))/((x1) - (x0))

func float2fix f        return f * (1 << FIXED_BITS)
func int2fix i          return i << FIXED_BITS
func fix2int f          return f >> FIXED_BITS
func fix2float f        return f/(1 << FIXED_BITS)

スクリーンショット:

用例 (7):

load "tilengine.ring"
load "sin.ring"

WIDTH   =       320
HEIGHT  =       192
COLUMNS = WIDTH/8 + 2

/* レイヤー */
LAYER_FOREGROUND = 0
LAYER_BACKGROUND = 1
MAX_LAYER = 2

frame = 0
column = list(COLUMNS)

/* エントリーポイント */
func main

        /* エンジンのセットアップ */

                TLN_Init (WIDTH,HEIGHT, MAX_LAYER, 0, 5)
                TLN_SetRasterCallback ("raster_callback()")
                TLN_SetBGColor (0,0,0)

        /* リソースの読み込み */

                TLN_SetLoadPath ("assets/tf3")
                foreground = TLN_LoadTilemap ("tf3_bg2.tmx", NULL)
                background = TLN_LoadTilemap ("tf3_bg3.tmx", NULL)
                TLN_SetLayerTilemap (LAYER_FOREGROUND, foreground)
                TLN_SetLayerTilemap (LAYER_BACKGROUND, background)

                BuildSinTable ()

                # カラムリストから整数配列へ変換
                        intArray = "" for item in column intArray += int2Bytes(item) next

                TLN_SetLayerColumnOffset (LAYER_BACKGROUND, :intArray)

        /* メインループ */

                TLN_CreateWindow (NULL, 0)
                while (TLN_ProcessWindow ())

                        /* スクロール */

                                TLN_SetLayerPosition (LAYER_FOREGROUND, frame*3, 0)
                                TLN_SetLayerPosition (LAYER_BACKGROUND, frame, 0)

                        /* カラムオフセットテーブルの更新 */

                                for c=1 to COLUMNS
                                        column[c] = CalcSin (frame*5 + c*20, 3)
                                next

                        /* ウィンドウへ描画 */

                                TLN_DrawFrame (frame)
                                frame++

                end

                /* 使用終了処理 */

                        TLN_DeleteTilemap (foreground)
                        TLN_DeleteTilemap (background)
                        TLN_Deinit ()

func raster_callback

        /* ラスターのコールバック (仮想 HBLANK) */

                line = TLN_GetScanLine()
                TLN_SetLayerPosition (LAYER_FOREGROUND, frame*2, CalcSin((frame+line)<<1, 8) + 8)
                TLN_SetLayerPosition (LAYER_BACKGROUND, frame + CalcSin((frame + line)<<1, 10), 0)

func lerp x,x0,x1,fx0,fx1

        /* 線形補間 */

                return (fx0) + ((fx1) - (fx0))*((x) - (x0))/((x1) - (x0))

スクリーンショット:

用例 (8):

load "tilengine.ring"

WIDTH  = 400
HEIGHT = 240

sky = [
        [0x1D, 0x44, 0x7B],
        [0x7F, 0xA4, 0xD9],
        [0x0B, 0x00, 0x4E],
        [0xEB, 0x99, 0x9D]
]

sky_hi_r = 0
sky_hi_g = 0
sky_hi_b = 0
sky_lo_r = 0
sky_lo_g = 0
sky_lo_b = 0

frame = 0
xpos = 0
speed = 2
max_xpos = 4720

/* レイヤー */
        LAYER_FOREGROUND = 0
        LAYER_BACKGROUND = 1
        MAX_LAYER = 2

/* エントリーポイント */
func main

        /* エンジンのセットアップ */
                TLN_Init (WIDTH, HEIGHT, 2,1,0)
                TLN_SetBGColor (0,128,238)
                TLN_SetRasterCallback ("raster_callback()")

        /* リソースの読み込み */
                TLN_SetLoadPath ("assets/sotb")
                foreground = TLN_LoadTilemap ("SOTB_fg.tmx", NULL)
                background = TLN_LoadTilemap ("SOTB_bg.tmx", NULL)
                TLN_SetLayerTilemap (LAYER_FOREGROUND, foreground)
                TLN_SetLayerTilemap (LAYER_BACKGROUND, background)

        spriteset = TLN_LoadSpriteset ("SOTB")
        walk = TLN_CreateSpriteSequence (NULL, spriteset, "walk", 6)

        TLN_SetSpriteSet (0, spriteset)
        TLN_SetSpritePosition (0, 200,160)
        TLN_SetSpriteAnimation (0, walk, 0)

        xpos = 2000

        sky_hi_r = sky[1][1]
        sky_hi_g = sky[1][2]
        sky_hi_b = sky[1][3]
        sky_lo_r = sky[2][1]
        sky_lo_g = sky[2][2]
        sky_lo_b = sky[2][3]

        /* メインループ */
        TLN_CreateWindow (NULL, 0)
        TLN_DisableCRTEffect()
        while (TLN_ProcessWindow ())
        {
                if (xpos < max_xpos)
                {
                        xpos += speed
                        if (xpos >= max_xpos)
                        {
                                TLN_DisableSpriteAnimation (0)
                                TLN_SetSpritePicture (0, 0)
                        }
                }

                /* グラデーションで空を描く */
                if (frame>=300 && frame<=900)
                {
                        /* 上部の色を補完 */
                        sky_hi_r = lerp (frame, 300,900, sky[1][1], sky[3][1])
                        sky_hi_g = lerp (frame, 300,900, sky[1][2], sky[3][2])
                        sky_hi_b = lerp (frame, 300,900, sky[1][3], sky[3][3])

                        /* 下部の色を補完 */
                        sky_lo_r = lerp (frame, 300,900, sky[2][1], sky[4][1])
                        sky_lo_g = lerp (frame, 300,900, sky[2][2], sky[4][2])
                        sky_lo_b = lerp (frame, 300,900, sky[2][3], sky[4][3])
                }

                TLN_SetLayerPosition (LAYER_FOREGROUND, xpos, 0)

                /* ウィンドウへ描画 */
                TLN_DrawFrame (frame)
                frame++
        }

        /* リソースの解放 */
        TLN_DeleteSequence(walk)
        TLN_DeleteTilemap (foreground)
        TLN_DeleteTilemap (background)
        TLN_Deinit ()

func raster_callback

        line = TLN_GetScanLine()
        pos = 0

        /* 空色 */
        if (line < 192)
        {
                //color = new RGB
                /* 上部から下部までの色を補完 */
                r = lerp (line, 0,191, sky_hi_r, sky_lo_r)
                g = lerp (line, 0,191, sky_hi_g, sky_lo_g)
                b = lerp (line, 0,191, sky_hi_b, sky_lo_b)
                TLN_SetBGColor (r, g ,b)
        }

        /* 背景レイヤー */
        pos = -1
        if (line = 0 || line = 24 || line = 64 || line = 88 || line = 96)
                pos = lerp (line, 0,96, xpos*0.7 , xpos*0.2 )
        elseif (line = 120)
                pos = xpos/2
        elseif (line = 208 || line = 216 || line = 224 || line = 232)
                pos = lerp (line,208,232,xpos*1,xpos*2)
        ok

        if (pos != -1)
                TLN_SetLayerPosition (LAYER_BACKGROUND, pos, 0)
        ok

        /* 前景レイヤー */
        pos = -1
        if (line = 0)
                pos = xpos
        elseif (line = 216)
                pos = xpos*3
        ok
        if (pos != -1)
                TLN_SetLayerPosition (LAYER_FOREGROUND, pos, 0)
        ok

func lerp x,x0,x1,fx0,fx1
        /* 線形補間 */
        return (fx0 + (fx1-fx0)*(x-x0)/(x1-x0))

スクリーンショット:

用例 (9):

load "tilengine.ring"

WIDTH    = 400
HEIGHT = 240

MIN_SCALE = 50
MAX_SCALE       = 200

/* RGB による空色 */
sky = [
        [0x19, 0x54, 0x75],
        [0x2C, 0xB0, 0xDC]
]

/* レイヤー */
LAYER_FOREGROUND = 0
LAYER_BACKGROUND = 1
MAX_LAYER = 2

xpos=0 ypos=0 scale=0

/* エントリーポイント */
func main

        /* エンジンのセットアップ */
        TLN_Init (WIDTH, HEIGHT, MAX_LAYER,0,0)
        TLN_SetBGColor (34,136,170)
        TLN_SetRasterCallback ("raster_callback()")

        /* リソースの読み込み */
        TLN_SetLoadPath ("assets/fox")
        foreground = TLN_LoadTilemap ("psycho.tmx", NULL)
        background = TLN_LoadTilemap ("rolo.tmx", NULL)
        TLN_SetLayerTilemap (LAYER_FOREGROUND, foreground)
        TLN_SetLayerTilemap (LAYER_BACKGROUND, background)

        /* 初期値 */
        xpos = 0
        ypos = 192
        scale = 100

        /* メインループ */
        TLN_CreateWindow (NULL, 0)
        TLN_DisableCRTEffect()
        while TLN_ProcessWindow ()
                /* ユーザ入力 */
                if TLN_GetInput (INPUT_LEFT)
                        xpos-- ok
                if TLN_GetInput (INPUT_RIGHT)
                        xpos++ ok
                if TLN_GetInput (INPUT_UP) && ypos > 0
                        ypos-- ok
                if TLN_GetInput (INPUT_DOWN)
                        ypos++ ok
                if TLN_GetInput (INPUT_A) && scale < MAX_SCALE
                        scale += 1 ok
                if TLN_GetInput (INPUT_B) && scale > MIN_SCALE
                        scale -= 1 ok

                /* 固定基準地点をもとにスケール計数を計算します */
                fgscale = scale/100.0f
                bgscale = lerp(scale, MIN_SCALE,MAX_SCALE, 0.75,1.5)

                /* スケールは下部のクリッピングに依存します */
                maxy = 640 - (240*100/scale)
                if ypos > maxy
                        ypos = maxy
                ok

                /* 位置の更新 */
                bgypos = lerp(scale,MIN_SCALE,MAX_SCALE, 0,80)
                TLN_SetLayerPosition (LAYER_FOREGROUND, xpos*2, ypos)
                TLN_SetLayerPosition (LAYER_BACKGROUND, xpos, bgypos)
                TLN_SetLayerScaling (LAYER_FOREGROUND, fgscale, fgscale)
                TLN_SetLayerScaling (LAYER_BACKGROUND, bgscale, bgscale)

                /* ウィンドウへ描画 */
                TLN_DrawFrame (0)
        end

        /* リソースの解放 */
        TLN_DeleteTilemap (foreground)
        TLN_DeleteTilemap (background)
        TLN_Deinit ()

/* ラスターエフェクトを適用した空色 */
func raster_callback
        line = TLN_GetScanLine()
        if line <= 152
                r = lerp (line, 0,152, sky[1][1], sky[2][1])
                g = lerp (line, 0,152, sky[1][2], sky[2][2])
                b = lerp (line, 0,152, sky[1][3], sky[2][3])
                TLN_SetBGColor (r, g, b)
        ok

/* 線形補間 */
func lerp x,x0,x1,fx0,fx1
        return (fx0) + ((fx1) - (fx0))*((x) - (x0))/((x1) - (x0))

スクリーンショット:

用例 (10):

load "tilengine.ring"

WIDTH    = 400
HEIGHT = 240

sky = [
        [0x1B, 0x00, 0x8B],
        [0x00, 0x74, 0xD7],
        [0x24, 0x92, 0xDB],
        [0x1F, 0x7F, 0xBE]
]

/* レイヤー */
LAYER_FOREGROUND = 0
LAYER_BACKGROUND = 1
MAX_LAYER = 2

pos_foreground = 0
pos_background = list(6)
inc_background = list(6)
speed = 0
ypos = 0

color = list(3)

/* エントリーポイント */
func main

        /* エンジンのセットアップ */
        TLN_Init (WIDTH,HEIGHT, MAX_LAYER, 0, 1)
        TLN_SetRasterCallback ("raster_callback()")
        TLN_SetBGColor (0,128,238)

        /* リソースの読み込み */
        TLN_SetLoadPath ("assets/sonic")
        foreground = TLN_LoadTilemap ("Sonic_md_fg1.tmx", NULL)
        background = TLN_LoadTilemap ("Sonic_md_bg1.tmx", NULL)
        TLN_SetLayerTilemap (LAYER_FOREGROUND, foreground)
        TLN_SetLayerTilemap (LAYER_BACKGROUND, background)
        sp = TLN_LoadSequencePack ("Sonic_md_seq.sqx")
        sequence = TLN_FindSequence (sp, "seq_water")

        /* カラーシーケンスの割り当てをパレットへ個別登録します */
        palette = TLN_GetLayerPalette (LAYER_BACKGROUND)
        TLN_SetPaletteAnimation (TLN_GetAvailableAnimation(), palette, sequence, true)

        /* 背景スクロールの可変速度を増分するための計算 */
        inc_background[1] = 0.562f
        inc_background[2] = 0.437f
        inc_background[3] = 0.375f
        inc_background[4] = 0.625f
        inc_background[5] = 1.0f
        inc_background[6] = 2.0f

        /* 表示開始 */
        TLN_CreateWindow (NULL, 0)

        /* メインループ */
        while TLN_ProcessWindow ()
                if TLN_GetInput (INPUT_RIGHT)
                        speed += 0.02
                        if speed > 1.0
                                speed = 1.0f
                        ok
                elseif speed > 0.0
                        speed -= 0.02
                        if speed < 0.0
                                speed = 0.0f
                        ok
                ok

                if TLN_GetInput (INPUT_LEFT)
                        speed -= 0.02
                        if speed < -1
                                speed = -1
                        ok
                elseif speed < 0
                        speed += 0.02
                        if speed > 0
                                speed = 0
                        ok
                ok

                /* スクロール */
                pos_foreground += 3*speed
                TLN_SetLayerPosition (LAYER_FOREGROUND, pos_foreground, ypos)
                for c=1 to 6
                        pos_background[c] += (inc_background[c] * speed)
                next

                /* ウィンドウへ描画 */
                TLN_DrawFrame (0)
        end

        /* 使用終了処理 */
        TLN_DeleteTilemap (foreground)
        TLN_DeleteTilemap (background)
        TLN_DeleteSequencePack (sp)
        TLN_Deinit ()

/* ラスターのコールバック (仮想 HBLANK) */
func raster_callback

        line = TLN_GetScanLine()
        pos =- 1

        if line=0
                pos = pos_background[1]
        elseif line=32
                pos = pos_background[2]
        elseif line=48
                pos = pos_background[3]
        elseif line=64
                pos = pos_background[4]
        elseif line=112
                pos = pos_background[5]
        elseif line >= 152
                pos = lerp (line, 152,224, pos_background[5], pos_background[6])
        ok

        if pos != -1
                TLN_SetLayerPosition (LAYER_BACKGROUND, pos, 0)
        ok

        /* 背景色をグラデーションにする */
        if line < 112
                InterpolateColor (line, 0,112, sky[1], sky[2], color)
                TLN_SetBGColor (color[1], color[2], color[3])
        elseif line >= 144
                InterpolateColor (line, 144,HEIGHT, sky[3], sky[4], color)
                TLN_SetBGColor (color[1], color[2], color[3])
        ok

func InterpolateColor v,v1,v2,color1,color2,result
        result[1] = lerp (v, v1,v2, color1[1], color2[1])
        result[2] = lerp (v, v1,v2, color1[2], color2[2])
        result[3] = lerp (v, v1,v2, color1[3], color2[3])

/* 線形補間 */
func lerp x,x0,x1,fx0,fx1
        return (fx0) + ((fx1) - (fx0))*((x) - (x0))/((x1) - (x0))

スクリーンショット:

LibSDL と Tilengine の併用

用例 (11):

load "tilengine.ring"
load "libsdl.ring"

width  = 640
height = 480

func main

        # Tilengine の開始
                TLN_Init(width, height, 2, 80, 0)

        # LibSDL の開始
                SDL_Init(SDL_INIT_EVERYTHING)
                win = SDL_CreateWindow("Using LibSDL and Tilengine", 100, 100, width, height, SDL_WINDOW_SHOWN|SDL_WINDOW_OPENGL)
                ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )

        # Tilengine の描画で用いるサーフェースを LibSDL で作成
                surface = SDL_CreateRGBSurface(0, width, height, 32, 0,0,0,0)
        # Surface 構造体からサーフェースの pixels ポインタを取得
                pixels = SDL_Get_SDL_Surface_Pixels(surface)
        # Pixels のポインタを Tilengine へ渡す
                TLN_SetRenderTarget(pixels, width * 4)

        # Tilengine の使用
                TLN_SetLoadPath("assets\sonic")
                foreground = TLN_LoadTilemap ("Sonic_md_fg1.tmx", NULL)
                TLN_SetLayerTilemap(0, foreground)

        # LibSDL のイベントループを使用
                oEvent = SDL_New_SDL_Event()

                while true

                        # フレームの更新で Tilengine を使用
                                        TLN_UpdateFrame(0)

                        # LibSDL の処理結果を Tilengine で描画
                        # ( サーフェース --> テクスチャ --> レンダー)
                                tex = SDL_CreateTextureFromSurface(ren, surface);
                                SDL_RenderCopy2(ren,tex)
                                SDL_DestroyTexture(tex)

                        # LibSDL で長方形を描画
                                rect = SDL_New_SDL_Rect()
                                SDL_Set_SDL_Rect_x(rect,10)
                                SDL_Set_SDL_Rect_y(rect,10)
                                SDL_Set_SDL_Rect_w(rect,100)
                                SDL_Set_SDL_Rect_h(rect,100)
                                SDL_SetRenderDrawColor(ren,255,255,255,255)
                                SDL_RenderDrawRect(ren,rect)
                                SDL_Destroy_SDL_Rect(rect)

                        # LibSDL の処理結果を描画
                                SDL_RenderPresent(ren)

                        # イベントの確認

                                        SDL_PollEvent(oEvent)
                                        switch SDL_Get_SDL_Event_Type(oEvent)
                                                        on SDL_Get_SDL_Quit()
                                                                        exit
                                                        on SDL_Get_SDL_Keydown()
                                                                        Key = SDL_Get_SDL_Event_key_Keysym_Sym(oEvent)
                                                                        if key = 27 exit ok
                                        off
                end

        # Tilengine の使用終了
                TLN_Deinit()

        # LibSDL の使用終了
                SDL_DestroyWindow(win)
                SDL_Quit()

スクリーンショット:

用例 (12):

load "tilengine.ring"
load "libsdl.ring"

factor = 3
width  = 400*factor
height = 220*factor

func main

        # Tilengine の開始
                TLN_Init(width, height, 2, 80, 0)

        # LibSDL の開始
                SDL_Init(SDL_INIT_EVERYTHING)
                win = SDL_CreateWindow("Using LibSDL and Tilengine", 40, 40, width, height, SDL_WINDOW_SHOWN|SDL_WINDOW_OPENGL)
                ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )

        # Tilengine の描画で用いるサーフェースを LibSDL で作成
                surface = SDL_CreateRGBSurface(0, width, height, 32, 0,0,0,0)
        # Surface 構造体からサーフェースの pixels ポインタを取得
                pixels = SDL_Get_SDL_Surface_Pixels(surface)
        # Pixels のポインタを Tilengine へ渡す
                TLN_SetRenderTarget(pixels, width * 4)

        # Tilengine の使用
                TLN_SetLoadPath("assets\sonic")
                foreground = TLN_LoadTilemap ("Sonic_md_fg1.tmx", NULL)
                TLN_SetLayerTilemap(0, foreground)

        # LibSDL のイベントループを使用
                oEvent = SDL_New_SDL_Event()

                while true

                        # フレームの更新で Tilengine を使用
                                        TLN_UpdateFrame(0)

                        # LibSDL の処理結果を Tilengine で描画
                        # ( サーフェース --> テクスチャ --> レンダー)
                                tex = SDL_CreateTextureFromSurface(ren, surface);

                                rectSource = SDL_New_SDL_Rect()
                                SDL_Set_SDL_Rect_x(rectSource,0)
                                SDL_Set_SDL_Rect_y(rectSource,0)
                                SDL_Set_SDL_Rect_w(rectSource,400)
                                SDL_Set_SDL_Rect_h(rectSource,220)

                                rectDest = SDL_New_SDL_Rect()
                                SDL_Set_SDL_Rect_x(rectDest,0)
                                SDL_Set_SDL_Rect_y(rectDest,0)
                                SDL_Set_SDL_Rect_w(rectDest,width)
                                SDL_Set_SDL_Rect_h(rectDest,height)

                                SDL_RenderCopy(ren,tex,rectSource,rectDest)
                                SDL_Destroy_SDL_Rect(rectSource)
                                SDL_Destroy_SDL_Rect(rectDest)
                                SDL_DestroyTexture(tex)

                        # LibSDL で長方形を描画
                                rect = SDL_New_SDL_Rect()
                                SDL_Set_SDL_Rect_x(rect,40)
                                SDL_Set_SDL_Rect_y(rect,5)
                                SDL_Set_SDL_Rect_w(rect,230)
                                SDL_Set_SDL_Rect_h(rect,200)
                                SDL_SetRenderDrawColor(ren,255,255,255,255)
                                SDL_RenderDrawRect(ren,rect)
                                SDL_Destroy_SDL_Rect(rect)

                        # LibSDL の処理結果を描画
                                SDL_RenderPresent(ren)

                        # イベントの確認

                                        SDL_PollEvent(oEvent)
                                        switch SDL_Get_SDL_Event_Type(oEvent)
                                                        on SDL_Get_SDL_Quit()
                                                                        exit
                                                        on SDL_Get_SDL_Keydown()
                                                                        Key = SDL_Get_SDL_Event_key_Keysym_Sym(oEvent)
                                                                        if key = 27 exit ok
                                        off
                end

        # Tilengine の使用終了
                TLN_Deinit()

        # LibSDL の使用終了
                SDL_DestroyWindow(win)
                SDL_Quit()

スクリーンショット:

リファレンス

定数:

TILENGINE_VER_MAJ

TILENGINE_VER_MIN

TILENGINE_VER_REV

TILENGINE_HEADER_VERSION

FLAG_NONE

FLAG_FLIPX

FLAG_FLIPY

FLAG_ROTATE

FLAG_PRIORITY

FLAG_MASKED

BLEND_NONE

BLEND_MIX25

BLEND_MIX50

BLEND_MIX75

BLEND_ADD

BLEND_SUB

BLEND_MOD

BLEND_CUSTOM

MAX_BLEND

BLEND_MIX

TLN_OVERLAY_NONE

TLN_OVERLAY_SHADOWMASK

TLN_OVERLAY_APERTURE

TLN_OVERLAY_SCANLINES

TLN_OVERLAY_CUSTOM

TLN_MAX_OVERLAY

PLAYER1

PLAYER2

PLAYER3

PLAYER4

INPUT_NONE

INPUT_UP

INPUT_DOWN

INPUT_LEFT

INPUT_RIGHT

INPUT_BUTTON1

INPUT_BUTTON2

INPUT_BUTTON3

INPUT_BUTTON4

INPUT_BUTTON5

INPUT_BUTTON6

INPUT_START

INPUT_QUIT

INPUT_CRT

INPUT_P1

INPUT_P2

INPUT_P3

INPUT_P4

INPUT_A

INPUT_B

INPUT_C

INPUT_D

INPUT_E

INPUT_F

CWF_FULLSCREEN

CWF_VSYNC

CWF_S1

CWF_S2

CWF_S3

CWF_S4

CWF_S5

TLN_ERR_OK

TLN_ERR_OUT_OF_MEMORY

TLN_ERR_IDX_LAYER

TLN_ERR_IDX_SPRITE

TLN_ERR_IDX_ANIMATION

TLN_ERR_IDX_PICTURE

TLN_ERR_REF_TILESET

TLN_ERR_REF_TILEMAP

TLN_ERR_REF_SPRITESET

TLN_ERR_REF_PALETTE

TLN_ERR_REF_SEQUENCE

TLN_ERR_REF_SEQPACK

TLN_ERR_REF_BITMAP

TLN_ERR_NULL_POINTER

TLN_ERR_FILE_NOT_FOUND

TLN_ERR_WRONG_FORMAT

TLN_ERR_WRONG_SIZE

TLN_ERR_UNSUPPORTED

TLN_ERR_REF_LIST

TLN_MAX_ERR

TLN_LOG_NONE

TLN_LOG_ERRORS

TLN_LOG_VERBOSE

関数:

TLN_Engine TLN_Init(int hres, int vres, int numlayers, int numsprites, int numanimations)

void TLN_Deinit(void)

bool TLN_DeleteContext(TLN_Engine context)

bool TLN_SetContext(TLN_Engine context)

TLN_Engine TLN_GetContext(void)

int TLN_GetWidth(void)

int TLN_GetHeight(void)

uint32_t TLN_GetNumObjects(void)

uint32_t TLN_GetUsedMemory(void)

uint32_t TLN_GetVersion(void)

int TLN_GetNumLayers(void)

int TLN_GetNumSprites(void)

void TLN_SetBGColor(uint8_t r, uint8_t g, uint8_t b)

bool TLN_SetBGColorFromTilemap(TLN_Tilemap tilemap)

void TLN_DisableBGColor(void)

bool TLN_SetBGBitmap(TLN_Bitmap bitmap)

bool TLN_SetBGPalette(TLN_Palette palette)

void TLN_SetRenderTarget(uint8_t* data, int pitch)

void TLN_UpdateFrame(int frame)

void TLN_SetLoadPath(const char * path)

void TLN_SetCustomBlendFunction(TLN_BlendFunction)

void TLN_SetLogLevel(TLN_LogLevel log_level)

bool TLN_OpenResourcePack(const char * filename, const char * key)

void TLN_CloseResourcePack(void)

void TLN_SetLastError(TLN_Error error)

TLN_Error TLN_GetLastError(void)

const char *TLN_GetErrorString(TLN_Error error)

bool TLN_CreateWindow(const char * overlay, int flags)

bool TLN_CreateWindowThread(const char * overlay, int flags)

void TLN_SetWindowTitle(const char * title)

bool TLN_ProcessWindow(void)

bool TLN_IsWindowActive(void)

bool TLN_GetInput(TLN_Input id)

void TLN_EnableInput(TLN_Player player, bool enable)

void TLN_AssignInputJoystick(TLN_Player player, int index)

void TLN_DefineInputKey(TLN_Player player, TLN_Input input, uint32_t keycode)

void TLN_DefineInputButton(TLN_Player player, TLN_Input input, uint8_t joybutton)

void TLN_DrawFrame(int frame)

void TLN_WaitRedraw(void)

void TLN_DeleteWindow(void)

void TLN_EnableBlur(bool mode)

void TLN_EnableCRTEffect(TLN_Overlay overlay, uint8_t overlay_factor, uint8_t threshold, uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3, bool blur, uint8_t glow_factor)

void TLN_DisableCRTEffect(void)

void TLN_Delay(uint32_t msecs)

uint32_t TLN_GetTicks(void)

int TLN_GetWindowWidth(void)

int TLN_GetWindowHeight(void)

TLN_Spriteset TLN_CreateSpriteset(TLN_Bitmap bitmap, TLN_SpriteData* data, int num_entries)

TLN_Spriteset TLN_LoadSpriteset(const char * name)

TLN_Spriteset TLN_CloneSpriteset(TLN_Spriteset src)

bool TLN_GetSpriteInfo(TLN_Spriteset spriteset, int entry, TLN_SpriteInfo* info)

TLN_Palette TLN_GetSpritesetPalette(TLN_Spriteset spriteset)

int TLN_FindSpritesetSprite(TLN_Spriteset spriteset, const char * name)

bool TLN_SetSpritesetData(TLN_Spriteset spriteset, int entry, TLN_SpriteData* data, void* pixels, int pitch)

bool TLN_DeleteSpriteset(TLN_Spriteset Spriteset)

TLN_Tileset TLN_CreateTileset(int numtiles, int width, int height, TLN_Palette palette, TLN_SequencePack sp, TLN_TileAttributes* attributes)

TLN_Tileset TLN_CreateImageTileset(int numtiles, TLN_TileImage* images)

TLN_Tileset TLN_LoadTileset(const char * filename)

TLN_Tileset TLN_CloneTileset(TLN_Tileset src)

bool TLN_SetTilesetPixels(TLN_Tileset tileset, int entry, uint8_t* srcdata, int srcpitch)

int TLN_GetTileWidth(TLN_Tileset tileset)

int TLN_GetTileHeight(TLN_Tileset tileset)

int TLN_GetTilesetNumTiles(TLN_Tileset tileset)

TLN_Palette TLN_GetTilesetPalette(TLN_Tileset tileset)

TLN_SequencePack TLN_GetTilesetSequencePack(TLN_Tileset tileset)

bool TLN_DeleteTileset(TLN_Tileset tileset)

TLN_Tilemap TLN_CreateTilemap(int rows, int cols, TLN_Tile tiles, uint32_t bgcolor, TLN_Tileset tileset)

TLN_Tilemap TLN_LoadTilemap(const char * filename, const char * layername)

TLN_Tilemap TLN_CloneTilemap(TLN_Tilemap src)

int TLN_GetTilemapRows(TLN_Tilemap tilemap)

int TLN_GetTilemapCols(TLN_Tilemap tilemap)

TLN_Tileset TLN_GetTilemapTileset(TLN_Tilemap tilemap)

bool TLN_GetTilemapTile(TLN_Tilemap tilemap, int row, int col, TLN_Tile tile)

bool TLN_SetTilemapTile(TLN_Tilemap tilemap, int row, int col, TLN_Tile tile)

bool TLN_CopyTiles(TLN_Tilemap src, int srcrow, int srccol, int rows, int cols, TLN_Tilemap dst, int dstrow, int dstcol)

bool TLN_DeleteTilemap(TLN_Tilemap tilemap)

TLN_Palette TLN_CreatePalette(int entries)

TLN_Palette TLN_LoadPalette(const char * filename)

TLN_Palette TLN_ClonePalette(TLN_Palette src)

bool TLN_SetPaletteColor(TLN_Palette palette, int color, uint8_t r, uint8_t g, uint8_t b)

bool TLN_MixPalettes(TLN_Palette src1, TLN_Palette src2, TLN_Palette dst, uint8_t factor)

bool TLN_AddPaletteColor(TLN_Palette palette, uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8_t num)

bool TLN_SubPaletteColor(TLN_Palette palette, uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8_t num)

bool TLN_ModPaletteColor(TLN_Palette palette, uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8_t num)

uint8_t* TLN_GetPaletteData(TLN_Palette palette, int index)

bool TLN_DeletePalette(TLN_Palette palette)

TLN_Bitmap TLN_CreateBitmap(int width, int height, int bpp)

TLN_Bitmap TLN_LoadBitmap(const char * filename)

TLN_Bitmap TLN_CloneBitmap(TLN_Bitmap src)

uint8_t* TLN_GetBitmapPtr(TLN_Bitmap bitmap, int x, int y)

int TLN_GetBitmapWidth(TLN_Bitmap bitmap)

int TLN_GetBitmapHeight(TLN_Bitmap bitmap)

int TLN_GetBitmapDepth(TLN_Bitmap bitmap)

int TLN_GetBitmapPitch(TLN_Bitmap bitmap)

TLN_Palette TLN_GetBitmapPalette(TLN_Bitmap bitmap)

bool TLN_SetBitmapPalette(TLN_Bitmap bitmap, TLN_Palette palette)

bool TLN_DeleteBitmap(TLN_Bitmap bitmap)

TLN_ObjectList TLN_CreateObjectList(void)

bool TLN_AddTileObjectToList(TLN_ObjectList list, uint16_t id, uint16_t gid, uint16_t flags, int x, int y)

TLN_ObjectList TLN_LoadObjectList(const char * filename, const char * layername)

TLN_ObjectList TLN_CloneObjectList(TLN_ObjectList src)

int TLN_GetListNumObjects(TLN_ObjectList list)

bool TLN_GetListObject(TLN_ObjectList list, TLN_ObjectInfo* info)

bool TLN_DeleteObjectList(TLN_ObjectList list)

bool TLN_SetLayer(int nlayer, TLN_Tileset tileset, TLN_Tilemap tilemap)

bool TLN_SetLayerTilemap(int nlayer, TLN_Tilemap tilemap)

bool TLN_SetLayerBitmap(int nlayer, TLN_Bitmap bitmap)

bool TLN_SetLayerPalette(int nlayer, TLN_Palette palette)

bool TLN_SetLayerPosition(int nlayer, int hstart, int vstart)

bool TLN_SetLayerScaling(int nlayer, float xfactor, float yfactor)

bool TLN_SetLayerAffineTransform(int nlayer, TLN_Affine *affine)

bool TLN_SetLayerTransform(int layer, float angle, float dx, float dy, float sx, float sy)

bool TLN_SetLayerPixelMapping(int nlayer, TLN_PixelMap* table)

bool TLN_SetLayerBlendMode(int nlayer, TLN_Blend mode, uint8_t factor)

bool TLN_SetLayerColumnOffset(int nlayer, int* offset)

bool TLN_SetLayerClip(int nlayer, int x1, int y1, int x2, int y2)

bool TLN_DisableLayerClip(int nlayer)

bool TLN_SetLayerMosaic(int nlayer, int width, int height)

bool TLN_DisableLayerMosaic(int nlayer)

bool TLN_ResetLayerMode(int nlayer)

bool TLN_SetLayerObjects(int nlayer, TLN_ObjectList objects, TLN_Tileset tileset)

bool TLN_SetLayerPriority(int nlayer, bool enable)

bool TLN_SetLayerParent(int nlayer, int parent)

bool TLN_DisableLayerParent(int nlayer)

bool TLN_DisableLayer(int nlayer)

TLN_Palette TLN_GetLayerPalette(int nlayer)

bool TLN_GetLayerTile(int nlayer, int x, int y, TLN_TileInfo* info)

int TLN_GetLayerWidth(int nlayer)

int TLN_GetLayerHeight(int nlayer)

bool TLN_ConfigSprite(int nsprite, TLN_Spriteset spriteset, uint32_t flags)

bool TLN_SetSpriteSet(int nsprite, TLN_Spriteset spriteset)

bool TLN_SetSpriteFlags(int nsprite, uint32_t flags)

bool TLN_EnableSpriteFlag(int nsprite, uint32_t flag, bool enable)

bool TLN_SetSpritePosition(int nsprite, int x, int y)

bool TLN_SetSpritePicture(int nsprite, int entry)

bool TLN_SetSpritePalette(int nsprite, TLN_Palette palette)

bool TLN_SetSpriteBlendMode(int nsprite, TLN_Blend mode, uint8_t factor)

bool TLN_SetSpriteScaling(int nsprite, float sx, float sy)

bool TLN_ResetSpriteScaling(int nsprite)

int TLN_GetSpritePicture(int nsprite)

int TLN_GetAvailableSprite(void)

bool TLN_EnableSpriteCollision(int nsprite, bool enable)

bool TLN_GetSpriteCollision(int nsprite)

bool TLN_GetSpriteState(int nsprite, TLN_SpriteState* state)

bool TLN_SetFirstSprite(int nsprite)

bool TLN_SetNextSprite(int nsprite, int next)

bool TLN_EnableSpriteMasking(int nsprite, bool enable)

void TLN_SetSpritesMaskRegion(int top_line, int bottom_line)

bool TLN_SetSpriteAnimation(int nsprite, TLN_Sequence sequence, int loop)

bool TLN_DisableSpriteAnimation(int nsprite)

bool TLN_DisableSprite(int nsprite)

TLN_Palette TLN_GetSpritePalette(int nsprite)

TLN_Sequence TLN_CreateSequence(const char * name, int target, int num_frames, TLN_SequenceFrame* frames)

TLN_Sequence TLN_CreateCycle(const char * name, int num_strips, TLN_ColorStrip* strips)

TLN_Sequence TLN_CreateSpriteSequence(const char * name, TLN_Spriteset spriteset, const char * basename, int delay)

TLN_Sequence TLN_CloneSequence(TLN_Sequence src)

bool TLN_GetSequenceInfo(TLN_Sequence sequence, TLN_SequenceInfo* info)

bool TLN_DeleteSequence(TLN_Sequence sequence)

TLN_SequencePack TLN_CreateSequencePack(void)

TLN_SequencePack TLN_LoadSequencePack(const char * filename)

TLN_Sequence TLN_GetSequence(TLN_SequencePack sp, int index)

TLN_Sequence TLN_FindSequence(TLN_SequencePack sp, const char * name)

int TLN_GetSequencePackCount(TLN_SequencePack sp)

bool TLN_AddSequenceToPack(TLN_SequencePack sp, TLN_Sequence sequence)

bool TLN_DeleteSequencePack(TLN_SequencePack sp)

bool TLN_SetPaletteAnimation(int index, TLN_Palette palette, TLN_Sequence sequence, bool blend)

bool TLN_SetPaletteAnimationSource(int index, TLN_Palette)

bool TLN_GetAnimationState(int index)

bool TLN_SetAnimationDelay(int index, int frame, int delay)

int TLN_GetAvailableAnimation(void)

bool TLN_DisablePaletteAnimation(int index)

void TLN_SetRasterCallback(const char *cCode)

void TLN_SetFrameCallback(const char *cCode)

void TLN_SetSDLCallback(const char *cCode)

int TLN_GetScanLine(void)

SDL_Event *TLN_GetSDLEvent(void)

性能改善に関する情報

Ring の性能改善方法です。

リストの作成

用例:

? "Create the list using the Range operator"
t1 = clock()
aList = 1:1000000
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

? "Create the list using the For loop"
t1 = clock()
aList = []
for x = 1 to 1000000
        aList + x
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

? "Create the list using the list() function and the For loop"
t1 = clock()
aList = list(1000000)
for x = 1 to 1000000
        aList[x] = x
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

実行結果:

Create the list using the Range operator
Time : 0.48 seconds
Create the list using the For loop
Time : 0.79 seconds
Create the list using the list() function and the For loop
Time : 1.56 seconds

注釈

リストの作成で for ループ、または list() 関数を使用するよりも、範囲演算子のほうが速いです。

注釈

リストの追加で add() 関数を使用するよりも、連結演算子‘+’を使用したほうが関数呼び出しのオーバーヘッドが少ないため速いです。ただしソースコードの可読性は落ちる場合があります。

注釈

処理に時間が掛かり過ぎるため copy() 関数で数十万件を超える大量のテストデータを作成しないでください。

算術演算子

用例:

? "Using * operator"
t1 = clock()
for x = 1 to 1000000
        out = x * 2
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

? "Using *= operator"
t1 = clock()
for x = 1 to 1000000
        out = x
        out *= 2
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

実行結果:

Using * operator
Time : 1.34 seconds
Using *= operator
Time : 0.47 seconds

注釈

* 演算子よりも *= 演算子を使用したほうが速いです。

len() と For ループの使用

用例:

aList = 1:1000000

? "Using len() in the For loop"
t1 = clock()
for x = 1 to len(aList)
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

? "Using len() before the For loop"
t1 = clock()
nMax = len(aList)
for x = 1 to nMax
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

実行結果:

Using len() in the For loop
Time : 5.50 seconds
Using len() before the For loop
Time : 0.24 seconds

注釈

Len() 関数は For ループ内ではなく For ループの手前で使用したほうが早いです。

関数とメソッドの呼び出し

用例:

? "calling 100000 functions"
t1 = clock()
for x = 1 to 100000
        test()
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

o1 = new test

? "calling 100000 methods using the dot operator"
t1 = clock()
for x = 1 to 100000
        o1.test()
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

? "calling 100000 methods using braces "
t1 = clock()
for x = 1 to 100000
        o1 { test() }
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

func test

class test
        func test

実行結果:

calling 100000 functions
Time : 0.28 seconds
calling 100000 methods using the dot operator
Time : 0.36 seconds
calling 100000 methods using braces
Time : 1.19 seconds

注釈

メソッドの呼び出しよりも、関数の呼び出しのほうが僅かに速いです。

注釈

メソッドの呼び出しで弓括弧を使用するよりも、ドット演算子を使用したほうが速いです。

コマンドラインオプション

ソースコードファイル (*.ring) または、オブジェクトファイル (*.ringo) とオプションを指定するとプログラムを実行します。

書式:

ring <ファイル名.ring>|<ファイル名.ringo> [オプション]

オプション:

オプション

説明

-tokens

ソースコードファイルのトークンリストを表示します。

-rules

トークンに適用された文法規則を表示します。

-ic

中間バイトコードを表示します (実行前)。

-icfinal

最終バイトコードを表示します (実行後)。

-cgi

エラーメッセージの前に http レスポンスヘッダを表示します。

-norun

コンパイル後にプログラムを実行しません。

-ins

実行前に命令演算コードを表示します。

-performance

プログラムの実行前後に処理時間測定結果を表示します。

-go

オブジェクトファイルを生成します。

-geo

組み込み型オブジェクトファイル (C ソースコード) を生成します。

-w

警告を表示します。

注釈

オブジェクトファイル形式では、一部使用できないオプションがあります。

トークンの表示

用例:

Func Main
        See "Hello World" + nl
        for x = 1 to 10
                see x + nl
        next
        test()

func test
        see "welcome" + nl
        o1 = new point { x=10 y=20 z=30 }
        see o1

class point x y z

コマンド:

ring test.ring -tokens -norun

実行結果:

===================================================
Tokens - Generated by the Scanner
===================================================

   Keyword : FUNC
Identifier : main
   EndLine
   Keyword : SEE
   Literal : Hello World
  Operator : +
Identifier : nl
   EndLine
   Keyword : FOR
Identifier : x
  Operator : =
    Number : 1
   Keyword : TO
    Number : 10
   EndLine
   Keyword : SEE
Identifier : x
  Operator : +
Identifier : nl
   EndLine
   Keyword : NEXT
   EndLine
Identifier : test
  Operator : (
  Operator : )
   EndLine
   Keyword : FUNC
Identifier : test
   EndLine
   Keyword : SEE
   Literal : welcome
  Operator : +
Identifier : nl
   EndLine
Identifier : o1
  Operator : =
   Keyword : NEW
Identifier : point
  Operator : {
Identifier : x
  Operator : =
    Number : 10
Identifier : y
  Operator : =
    Number : 20
Identifier : z
  Operator : =
    Number : 30
  Operator : }
   EndLine
   Keyword : SEE
Identifier : o1
   EndLine
   Keyword : CLASS
Identifier : point
Identifier : x
Identifier : y
Identifier : z
   EndLine

===================================================

文法規則の表示

コマンド:

ring test.ring -rules -norun

実行結果:

===================================================
Grammar Rules Used by The Parser
===================================================

Rule : Program --> {Statement}

Line 1
Rule : Statement  --> 'Func' Identifier [ParaList]

Line 2
Rule : Factor --> Literal
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : Arithmetic --> Arithmetic + Arithmetic
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> 'See' Expr

Line 3
Rule : Factor --> Number
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Factor --> Number
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> 'For' Identifier '=' Expr to Expr ['step' Expr]

Line 4
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : Arithmetic --> Arithmetic + Arithmetic
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> 'See' Expr

Line 5
Rule : Next --> 'Next'

Line 6
Rule : Mixer -> '(' [Expr { ',' Expr} ] ')'

Line 8
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr
Rule : Statement  --> 'Func' Identifier [ParaList]

Line 9
Rule : Factor --> Literal
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : Arithmetic --> Arithmetic + Arithmetic
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> 'See' Expr

Line 10
Rule : Factor --> New Identifier {'.' Identifier }
Rule : Mixer --> '{' {Statement} BraceEnd
Rule : Factor --> Number
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Assignment -> '=' Expr
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr
Rule : Factor --> Number
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Assignment -> '=' Expr
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr
Rule : Factor --> Number
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Assignment -> '=' Expr
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr
Rule : BraceEnd --> '}'
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Assignment -> '=' Expr
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr

Line 11
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> 'See' Expr

Line 13
Rule : Statement  --> 'Class' Identifier
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr
Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> Expr

===================================================

中間コードの表示

コマンド:

ring test.ring -ic -norun

実行結果:

===================================================
Byte Code - Before Execution by the VM
===================================================

         PC      OPCode        Data

          1  ReturnNull
          2        Func    main
          3     NewLine       2
          4     FuncExE
          5       PushC   Hello World
          6       LoadA      nl      0
          7       PushV
          8         SUM       0
          9       Print
         10     NewLine       3
         11    ExitMark      29     28
         12  LoadAFirst       x
         13       PushN   1.000000
         14  BeforeEqual       0
         15  Assignment
         16       PushN   1.000000
         17  StepNumber
         18  JumpVarLENum       x  10.000000    29
         19     NewLine       4
         20     FuncExE
         21       LoadA       x      0
         22       PushV
         23       LoadA      nl      0
         24       PushV
         25         SUM       0
         26       Print
         27     NewLine       5
         28     IncJump       x     18
         29  POPExitMark
         30     POPStep
         31     NewLine       6
         32    LoadFunc    test
         33        Call       0
         34  NoOperation
         35     NewLine       8
         36       PushV
         37   FreeStack
         38  ReturnNull
         39        Func    test
         40     NewLine       9
         41     FuncExE
         42       PushC   welcome
         43       LoadA      nl      0
         44       PushV
         45         SUM       0
         46       Print
         47     NewLine      10
         48       LoadA      o1      0
         49  AssignmentPointer
         50         New   point
         51    SetScope
         52       PushV
         53  BraceStart
         54       LoadA       x      0     58
         55  AssignmentPointer
         56       PushN   10.000000
         57  BeforeEqual       0
         58  Assignment       0      0
         59   FreeStack
         60       LoadA       y      0     64
         61  AssignmentPointer
         62       PushN   20.000000
         63  BeforeEqual       0
         64  Assignment       0      0
         65   FreeStack
         66       LoadA       z      0     70
         67  AssignmentPointer
         68       PushN   30.000000
         69  BeforeEqual       0
         70  Assignment       0      0
         71   FreeStack
         72    LoadFunc   ismethod
         73       LoadA    self      0
         74       PushV
         75       PushC   braceend
         76        Call
         77  NoOperation
         78       PushV
         79       JumpZ      85
         80    LoadFunc   braceend
         81        Call
         82  NoOperation
         83       PushV
         84   FreeStack
         85    BraceEnd
         86   FreeStack
         87     NewLine      11
         88     FuncExE
         89       LoadA      o1      0
         90       PushV
         91       Print
         92     NewLine      13
         93  ReturnNull
         94       Class   point  006E8BC0
         95    NewLabel
         96       LoadA       x      0
         97       PushV
         98   FreeStack
         99       LoadA       y      0
        100       PushV
        101   FreeStack
        102       LoadA       z      0
        103       PushV
        104   FreeStack
        105  ReturnNull

===================================================

最終中間コードの表示

コマンド:

ring test.ring -icfinal

実行結果:

Hello World
1
2
3
4
5
6
7
8
9
10
welcome
x: 10.000000
y: 20.000000
z: 30.000000

===================================================
Byte Code - After Execution by the VM
===================================================

         PC      OPCode        Data

          1  ReturnNull
          2        Func    main
          3     NewLine       2
          4     FuncExE
          5       PushC   Hello World
          6       PushP   007D3670      0
          7       PushV
          8         SUM       0
          9       Print
         10     NewLine       3
         11    ExitMark      29     28
         12  LoadAFirst       x
         13       PushN   1.000000
         14  BeforeEqual       0
         15  Assignment
         16       PushN   1.000000
         17  StepNumber
         18  JumpVarLPLENum       x  10.000000    29
         19     NewLine       4
         20     FuncExE
         21  PushPLocal       x      0
         22       PushV
         23       PushP   007D3670      0
         24       PushV
         25         SUM       0
         26       Print
         27     NewLine       5
         28   IncLPJump       x     18
         29  POPExitMark
         30     POPStep
         31     NewLine       6
         32   LoadFuncP    test
         33        Call       0
         34  NoOperation
         35     NewLine       8
         36       PushV
         37   FreeStack
         38  ReturnNull
         39        Func    test
         40     NewLine       9
         41     FuncExE
         42       PushC   welcome
         43       PushP   007D3670      0
         44       PushV
         45         SUM       0
         46       Print
         47     NewLine      10
         48  PushPLocal      o1      0
         49  AssignmentPointer
         50         New   point
         51    SetScope
         52       PushV
         53  BraceStart
         54       LoadA       x      0     58
         55  AssignmentPointer
         56       PushN   10.000000
         57  BeforeEqual       0
         58  SetProperty       0    106
         59   FreeStack
         60       LoadA       y      0     64
         61  AssignmentPointer
         62       PushN   20.000000
         63  BeforeEqual       0
         64  SetProperty       0    141
         65   FreeStack
         66       LoadA       z      0     70
         67  AssignmentPointer
         68       PushN   30.000000
         69  BeforeEqual       0
         70  SetProperty       0    176
         71   FreeStack
         72    LoadFunc   ismethod
         73       LoadA    self      0
         74       PushV
         75       PushC   braceend
         76        Call
         77  NoOperation
         78       PushV
         79       JumpZ      85
         80    LoadFunc   braceend
         81        Call
         82  NoOperation
         83       PushV
         84   FreeStack
         85    BraceEnd
         86   FreeStack
         87     NewLine      11
         88     FuncExE
         89  PushPLocal      o1      0
         90       PushV
         91       Print
         92     NewLine      13
         93  ReturnNull
         94       Class   point  007D8470
         95    NewLabel
         96       LoadA       x      0
         97       PushV
         98   FreeStack
         99       LoadA       y      0
        100       PushV
        101   FreeStack
        102       LoadA       z      0
        103       PushV
        104   FreeStack
        105  ReturnNull
        106    LoadFunc   ismethod
        107       LoadA   ring_gettemp_var      0
        108       PushV
        109       PushC    setx
        110        Call       0
        111  NoOperation
        112       PushV
        113       JumpZ     132
        114     NewLine       2
        115       LoadA   ring_gettemp_var      0
        116  LoadMethod    setx
        117       LoadA   ring_settemp_var      0
        118       PushV
        119        Call       0      1
        120  AfterCallMethod
        121       PushV
        122   FreeStack
        123     NewLine       3
        124       LoadA   ring_tempflag_var      0    128
        125  AssignmentPointer
        126       PushN   0.000000
        127  BeforeEqual       0
        128  Assignment       0      0
        129   FreeStack
        130     NewLine       4
        131        Jump     140
        132     NewLine       5
        133       PushP   007D37D8      0    137
        134  AssignmentPointer
        135       PushN   1.000000
        136  BeforeEqual       0
        137  Assignment       0      0
        138   FreeStack
        139     NewLine       6
        140      Return
        141    LoadFunc   ismethod
        142       LoadA   ring_gettemp_var      0
        143       PushV
        144       PushC    sety
        145        Call       0
        146  NoOperation
        147       PushV
        148       JumpZ     167
        149     NewLine       2
        150       LoadA   ring_gettemp_var      0
        151  LoadMethod    sety
        152       LoadA   ring_settemp_var      0
        153       PushV
        154        Call       0      1
        155  AfterCallMethod
        156       PushV
        157   FreeStack
        158     NewLine       3
        159       LoadA   ring_tempflag_var      0    163
        160  AssignmentPointer
        161       PushN   0.000000
        162  BeforeEqual       0
        163  Assignment       0      0
        164   FreeStack
        165     NewLine       4
        166        Jump     175
        167     NewLine       5
        168       PushP   007D37D8      0    172
        169  AssignmentPointer
        170       PushN   1.000000
        171  BeforeEqual       0
        172  Assignment       0      0
        173   FreeStack
        174     NewLine       6
        175      Return
        176    LoadFunc   ismethod
        177       LoadA   ring_gettemp_var      0
        178       PushV
        179       PushC    setz
        180        Call       0
        181  NoOperation
        182       PushV
        183       JumpZ     202
        184     NewLine       2
        185       LoadA   ring_gettemp_var      0
        186  LoadMethod    setz
        187       LoadA   ring_settemp_var      0
        188       PushV
        189        Call       0      1
        190  AfterCallMethod
        191       PushV
        192   FreeStack
        193     NewLine       3
        194       LoadA   ring_tempflag_var      0    198
        195  AssignmentPointer
        196       PushN   0.000000
        197  BeforeEqual       0
        198  Assignment       0      0
        199   FreeStack
        200     NewLine       4
        201        Jump     210
        202     NewLine       5
        203       PushP   007D37D8      0    207
        204  AssignmentPointer
        205       PushN   1.000000
        206  BeforeEqual       0
        207  Assignment       0      0
        208   FreeStack
        209     NewLine       6
        210      Return

===================================================

CGI への対応

コマンド:

ring test.ring -cgi

コンパイルの実行

コマンド:

ring test.ring -norun

命令演算コードの表示

コマンド:

ring test.ring -ins

実行結果:

===================================================

Operation  : ReturnNull
PC         : 1
Line Number    : 1  , File test.ring

SP (After) : 0  - FuncSP : 0
 LineNumber 1
===================================================
.....
.....
.....
(以下、長文のため省略)

実行性能の計測

コマンド:

ring test.ring -performance

実行結果:

===================================================
Date  : 2015/09/15 Time : 15:56:17
Clock : 0
===================================================
Hello World
1
2
3
4
5
6
7
8
9
10
welcome
x: 10.000000
y: 20.000000
z: 30.000000

===================================================
Date  : 2015/09/15 Time : 15:56:17
Clock : 0
===================================================

オブジェクトファイルの生成

-go オプションは、ソースコードファイル (*.ring) からオブジェクトファイル (*.ringo) を生成します。

ちなみに

アプリケーション (商用またはオープンソース) の Ring ソースファイル一式を非公開 (保管) または配布できます。また、アプリケーションの配布または実行用のオブジェクトファイルも生成できます。

コマンド:

ring test.ring -go

コンパイル済みのオブジェクトファイルを実行するには、

ring test.ringo

組み込み型オブジェクトファイルの生成

-geo オプションはソースコードファイル (*.ring) から組み込み型オブジェクトファイル (C ソースコード) を生成します。

コマンド:

ring test.ring -geo

このコマンドは最低でも以下のファイルを生成します。

test.c
ringappcode.c
ringappcode.h

プロジェクトの規模により、それ以上のファイルを生成します。

生成後のファイルは Ring VM のバイトコードとして実行されます。

Ring アプリケーションの配布方法 (手動)

Ring 1.5 以前における旧式の配布方法です。

Ring 1.6 以降では Ring2EXE の利用を推奨します。

詳しくは「Ring2EXE による Ring アプリケーションの配布方法」を参照してください。

Microsoft Windows 用のアプリケーションの配布

手順①:

例えば c:\ring\bin フォルダを c:\myapp へコピーします。

手順②:

c:\myapp\ring.exe から c:\myapp\myapp.exe へ名称変更します。

手順③:

c:\myapp\ring.ring ファイルを作成します。

下記を記述します。

Load "myapp.ring"

myapp.exe の実行時、 ring.ring ファイルも自動的に実行します。

つまり、 myapp.ring ファイルが呼び出されて実行されます。

あるいは myapp.ring を ring.ring へ名称変更します。

これはアプリケーションを短時間で配布可能にする方法です。

ソースコードの保護

手順①:

このコマンドを実行します。

ring myapp.ring -go

これはプロジェクトファイル (*.ring) からオブジェクトファイル (myapp.ringo) を生成します。

手順②:

myapp.ringo から ring.ringo へ名称変更します。

実行可能ファイル (ring.exe または myapp.exe) を実行したとき ring.ringo ファイルを実行します。

ring.ring と ring.ringo ファイル

Ring は下記の場合に限り ring.ring と ring.ringo ファイルを実行します。

ファイルはカレントディレクトリに存在する

ring.exe で実行するファイルを指定していない

Ring アプリケーションの配布方法として ring.ring (および ring.ringo) に対応しています (Ring2EXE 実装以前)。

Windows インストーラの作成

アプリケーションの配布用ツールは色々あります。

参考 : Nullsoft Scriptable Install System (NSIS)

URL : http://nsis.sourceforge.net/Main_Page

C/C++ コンパイラとリンカの使用

C/C++ コンパイラによるアプリケーションの配布方法があります。

Ring を C/C++ プロジェクトを組み込むことにより C/C++ コンパイラで実行可能ファイルを作成できます (ring.ring や ring.ringo ファイルは不要になります)。

詳しくは「Ring を C/C++ プログラムへ組み込むには」を参照してください。

モバイル機器向けアプリケーションおよびゲームの配布

Ring の Qt プロジェクトまたは LibSDL プロジェクトを組み込むことで、モバイル・アプリケーション、およびゲームをビルドできます。

Qt プロジェクトまたは LibSDL プロジェクトのビルドにより Android 版のパッケージ (*.apk) を生成します。

詳しくは「グラフィックスライブラリへのインタフェース (デモプロジェクト - 2D ゲームエンジン)」を参照してください。

Ring2EXE による Ring アプリケーションの配布方法

Ring2EXE による Ring アプリケーションの配布方法です (Ring 1.6 以降)。

これにより Windows, Linux, macOS, WebAssembly およびモバイル・アプリケーションを手軽に配布できます。

注釈

Ring ノートパッドの配布メニューも使えます (オススメ)。

Ring2EXE の用法

ring2exe ファイル名.ring [オプション]

プログラムの入力として ファイル名.ring を指定します

このファイルが生成されます。

ファイル名.ringo          (Ring オブジェクトファイル - コンパイラにより生成)
ファイル名.c              (このプログラムにより生成された
                               ringo ファイルの内容を有する
                               C ソースコードファイルです)
ファイル名_buildvc.bat    (Visual C/C++ で filename.c をビルドするために実行します)
ファイル名_buildgcc.bat   (GNU C/C++ で filename.c をビルドするために実行します)
ファイル名_buildclang.bat (CLang C/C++ で filename.c をビルドするために実行します)
ファイル名.obj            (Visual C/C++ コンパイラにより生成されます)
ファイル名.exe            (Visual C/C++ リンカにより生成されます)
ファイル名                (実行ファイル - Linux および macOS プラットフォームにおいて)

Ring2EXE の動作方法

最初に Ring コンパイラで Ring オブジェクトファイル (*.ringo) を生成します。

C コンパイラ (オプション扱い) が存在する場合、このオブジェクトファイルは C ソースコードファイル内部へ埋め込まれます。

その後に、コンパイラと Ring ライブラリ (Ring 仮想計算機も組み込まれます) で実行ファイルを生成します！

C コンパイラが存在しない場合は Ring 実行ファイルのコピーを行い、アプリケーション名へ名称変更されます。

そして Ring オブジェクトファイルは (*.ringo) 起動時に実行される ring.ringo が実行ファイルとなります。

よって Ring2EXE を使用する電子計算機へ C コンパイラを導入したほうが簡単で良いです。

用例

test.ring の内容は、

see "Hello, World!" + nl

Windows, Linux または macOS 用の実行可能ファイルをビルドするには

ring2exe test.ring

プログラムを実行するには (Windows)

test

プログラムを実行するには (Linux と macOS)

./test

オプション

-keep            : 一時作業用ファイルを削除しない
-static          : スタンドアロン形式による実行ファイルのビルド
                   (ring.dll/ring.so/ring.dylib を使用しない)
-gui             : GUI アプリケーションのビルド (コンソールウィンドウの非表示)
-dist            : 配布対象のアプリケーションを準備
-allruntime      : 配布物へ全てのライブラリを同梱
-mobileqt        : モバイル版 Ring アプリケーションの配布準備で用いる Qt プロジェクトを準備
-webassemblyqt   : ウェブ版 Ring アプリケーションの配布準備で用いる Qt プロジェクトを準備 (WebAssembly)
-noqt            : 配布物から RingQt を削除
-noallegro       : 配布物から RingAllegro を削除
-noopenssl       : 配布物から RingOpenSSL を削除
-nolibcurl       : 配布物から RingLibCurl を削除
-nomysql         : 配布物から RingMySQL を削除
-noodbc          : 配布物から RingODBC を削除
-nosqlite        : 配布物から RingSQLite を削除
-noopengl        : 配布物から RingOpenGL を削除
-nofreeglut      : 配布物から RingFreeGLUT を削除
-nolibzip        : 配布物から RingLibZip を削除
-noconsolecolors : 配布物から RingConsoleColors を削除
-nomurmuhash     : 配布物から RingMurmurHash を削除
-nocruntime      : 配布物から C ランタイムを削除
-qt              : 配布物へ RingQt を追加
-allegro         : 配布物へ RingAllegro を追加
-openssl         : 配布物へ RingOpenSSL を追加
-libcurl         : 配布物へ RingLibCurl を追加
-mysql           : 配布物へ RingMySQL を追加
-odbc            : 配布物へ RingODBC を追加
-sqlite          : 配布物へ RingSQLite を追加
-postgresql      : 配布物へ RingPostgreSQL を追加
-opengl          : 配布物へ RingOpenGL を追加
-freeglut        : 配布物へ RingFreeGLUT を追加
-libzip          : 配布物へ RingLibZip を追加
-libuv           : 配布物へ RingLibuv  を追加
-consolecolors   : 配布物へ RingConsoleColors を追加
-murmurhash      : 配布物へ RingMurmurHash を追加
-cruntime        : 配布物へ C ランタイムを追加

スタンドアロン形式によるコンソールアプリケーションのビルド方法

“-static” オプションはコンソールアプリケーションの実行ファイルをビルドします (静的リンク)。

こうすると Ring 動的リンクライブラリ (ring.dll, ring.so または ring.dylib) を使用しません (不要になります)。

ほかのライブラリを使うには、アプリケーションでライブラリをインクルードしてください。

ring2exe test.ring -static

RingAllegro アプリケーションの配布方法

この内容のコードが test2.ring にあります。

# Ring2EXE ツールのテスト用プログラムです！
# RingAllegro の用法

load "gameengine.ring"   # ゲームエンジンへ制御権を渡します。

func main                # ゲームエンジンから呼び出されます。

        oGame = New Game # ゲームオブジェクトの作成
        {
                title = "My First Game"
        }

ゲームの配布用に実行可能ファイルのビルドと準備をするには

“-dist” および “-allruntime” オプションで全てのライブラリをインクルードします。

ring2exe test2.ring -dist -allruntime

前述のコマンドを実行後、出力先は:

Windows : target/windows フォルダ

Linux : target/linux フォルダ

macOS : target/macos フォルダ

前述のコマンドは、全ての Ring ランタイムライブラリを配布物へ追加します。

しかし RingAllegro のみ必要な場合は、このコマンドのほうが良いです。

ring2exe test2.ring -dist -allegro -cruntime

これは、不要なランタイムファイルを除外することで配布物の容量を削減します！

また “-gui” オプションでコンソールウィンドウを非表示にできます。

よって、このコマンドのほうが良いです。

ring2exe test2.ring -dist -gui -allegro -cruntime

RingQt アプリケーションの配布方法

この内容のコードが test3.ring にあります。

# Ring2EXE ツールのテスト用プログラムです！
# RingQt の用法

load "guilib.ring"

new qApp {
        new qWidget() {
                setwindowtitle("Hello, World!")
                resize(400,400)
                show()
        }
        exec()
}

GUI アプリケーションの配布用に、実行可能ファイルのビルドと準備をするには

“-dist” および “-allruntime” オプションで全てのライブラリをインクルードします。

ring2exe test3.ring -dist -allruntime

前述のコマンドを実行後、出力先は:

Windows : target/windows フォルダ

Linux : target/linux フォルダ

macOS : target/macos フォルダ

前述のコマンドは全ての Ring ランタイムライブラリを配布物へ追加します。

RingQt のみ必要ならば、このコマンドのほうが良いです。

ring2exe test3.ring -dist -qt -cruntime

これは、不要なランタイムファイルを除外することで配布物の容量を削減します！

また “-gui” オプションによりコンソールウィンドウを非表示にできます。

よって、このコマンドのほうが良いです。

ring2exe test3.ring -dist -gui -qt -cruntime

モバイル用アプリケーションの配布方法 (RingQt)

“-mobileqt” オプションで RingQt アプリケーション (test3.ring) 用の Qt プロジェクトを準備します。

用例 :

ring2exe test3.ring -dist -mobileqt

前述のコマンドを実行後、 target/mobile/qtproject フォルダに Qt プロジェクトがあります。

メインのプロジェクトファイルは project.pro です。 Qt Creator IDE で開けます。

またリソースファイルもあります : project.qrc

別の重要なファイルは C++ メインファイルです : main.cpp

WebAssembly 用アプリケーションの配布方法 (RingQt)

“-webassemblyqt” オプションで RingQt アプリケーション (test3.ring) 用の Qt プロジェクト (WebAssembly) を準備します。

用例 :

ring2exe myapp.ring -dist -webassemblyqt

前述のコマンドを実行後、 target/webassembly/qtproject フォルダに Qt プロジェクトがあります。

メインのプロジェクトファイルは project.pro です。 Qt Creator IDE で開けます。

またリソースファイルもあります : project.qrc

別の重要なファイルは C++ メインファイルです : main.cpp

モバイル版 Cards ゲームのビルド方法 (RingQt)

このフォルダにある Cards ゲームは Ring を使用した Android パッケージのビルド方法の良例であると考えられます:

ring/application/cards

Cards ゲームのフォルダには三本のファイルがあります

cards.ring : ゲームのソースコード

cards.jpg : ゲームで使用される画像ファイル

project.qrc : Qt プロジェクトで使用されるリソースファイル

リソースファイルの内容:

<RCC>
        <qresource>
                <file>cards.ringo</file>
                <file>cards.jpg</file>
        </qresource>
</RCC>

二本のリソースファイルがあります。

一本目のファイルは cards.ringo (Ring オブジェクトファイル) であり、二本目のファイルは cards.jpg (画像ファイル) です。

まず、 Ring2EXE でリソースファイル (target/mobile/qtproject/project.qrc) を生成します。

しかし、このファイルの内容は cards.ringo のみです (Ring2EXE は Ring コンパイラを呼び出すことにより生成します)。

このリソースファイルへ画像を追加してから必ず更新してください : cards.jpg

更新後にメインのアプリケーションファイルへリソースファイルをコピーします。

Ring2EXE の再実行時に更新済みリソースファイルを使用します！

これでモバイル用の Card ゲームのビルドが行えます。

このコマンドを実行します

ring2exe cards.ring -dist -mobileqt

Qt Creator で target/mobile/qtproject/project.pro を開きます。

Qt Creator でビルドと実行を行います。

Cards ゲームで画像ファイルを検出する方法は？

RingQt にはシンプルな関数があります: AppFile()

関数はデスクトップまたはモバイルプラットフォームでアクセスするファイルを決定するために使えます。

このコードは cards.ring からの引用です。

mypic = new QPixmap(AppFile("cards.jpg"))

必要ならば AppFile() 関数を画像ファイルに使用します！

モバイル版 Weight History アプリケーションのビルド方法 (RingQt)

このフォルダにある Weight History アプリケーションは Ring による Android パッケージのビルド方法であり Ring2EXE と Qt を使用したモバイル・アプリケーションを配布するための別例であると考えられます:

ring/application/weighthistory

Weight History アプリケーションのフォルダには四本のファイルがあります

weighthistory.ring : アプリケーションのソースコード

weighthistory.db : SQLite データベース

project.qrc : Qt プロジェクト用のリソースファイル

main.cpp : Qt プロジェクト用のメイン C++ ソースファイル

モバイル用の Weight History アプリケーションをビルドするには

このコマンドを実行

ring2exe weighthistory.ring -dist -mobileqt

Qt Creator で target/mobile/qtproject/project.pro を開きます。

Qt Creator でビルドと実行を行います。

リソースファイル (project.qrc) には二つのファイルがあります。

<RCC>
        <qresource>
                <file>weighthistory.ringo</file>
                <file>weighthistory.db</file>
        </qresource>
</RCC>

一本目のファイルは weighthistory.ringo (Ring オブジェクトファイル - Ring2EXE が Ring コンパイラを呼び出すことで生成)

データベースファイル : weighthistory.db

main.cpp には次の小規模な更新があるため、モバイル機器の書き込み可能なリソースの場所へデータベースファイルをコピーしてください。

QString path3 ;
path3 = path+"/weighthistory.db";
QFile::copy(":/weighthistory.db",path3);

この作業はデータベースファイルのみ行う必要があります！

Ring2EXE 使用時、ツールは project.qrc および main.cpp の確認を行い、存在する場合は更新されたファイルとして

Ring2EXE により生成されたデフォルト版である target/mobile/qtproject を使用します。

よって Ring2EXE でファイルを更新した後に、更新する時にアプリケーションのフォルダへファイルをコピーするために使用してください。

フォームデザイナーをモバイル機器用にビルドするには (RingQt)

モバイル用のアプリケーションをフォームデザイナー・アプリケーション (ring/tools/formdesigner) でビルドをするには

このコマンドを実行

ring2exe formdesigner.ring -dist -mobileqt

Qt Creator で target/mobile/qtproject/project.pro を開きます。

Qt Creator でビルドと実行を行います。

ring/application/formdesigner フォルダにはリソースファイルがあります : project.qrc

Ring2EXE により自動的に使用されます。

<RCC>
        <qresource>
                <file>formdesigner.ringo</file>
                <file>image/allevents.png</file>
                <file>image/checkbox.png</file>
                <file>image/close.png</file>
                <file>image/combobox.bmp</file>
                <file>image/datepicker.bmp</file>
                <file>image/dial.png</file>
                <file>image/formdesigner.png</file>
                <file>image/frame.png</file>
                <file>image/grid.bmp</file>
                <file>image/hyperlink.png</file>
                <file>image/image.png</file>
                <file>image/label.png</file>
                <file>image/layout.png</file>
                <file>image/lcdnumber.png</file>
                <file>image/listview.png</file>
                <file>image/lock.png</file>
                <file>image/new.png</file>
                <file>image/open.png</file>
                <file>image/progressbar.png</file>
                <file>image/project.png</file>
                <file>image/pushbutton.png</file>
                <file>image/radiobutton.png</file>
                <file>image/save.png</file>
                <file>image/saveas.png</file>
                <file>image/select.png</file>
                <file>image/slider.png</file>
                <file>image/spinner.bmp</file>
                <file>image/statusbar.png</file>
                <file>image/tab.png</file>
                <file>image/textarea.png</file>
                <file>image/textfield.png</file>
                <file>image/timer.png</file>
                <file>image/toolbar.png</file>
                <file>image/tree.bmp</file>
                <file>image/videowidget.png</file>
                <file>image/webview.png</file>
        </qresource>
</RCC>

Cards ゲームと同様、フォームデザイナーは AppFile() 関数を画像ファイル名を決定するために使用します。

このコードは ring/tools/formdesigner/mainwindow/formdesignerview.ring からの引用です。

func CreateToolBar
        aBtns = [
                        new qtoolbutton(win) {
                                setbtnimage(self,AppFile("image/new.png"))
                                setclickevent(Method(:NewAction))
                                settooltip("New File")
                        } ,
                        new qtoolbutton(win) {
                                setbtnimage(self,AppFile("image/open.png"))
                                setclickevent(Method(:OpenAction))
                                settooltip("Open File")
                        } ,
                        new qtoolbutton(win) {
                                setbtnimage(self,AppFile("image/save.png"))
                                setclickevent(Method(:SaveAction))
                                settooltip("Save")
                         } ,
                        new qtoolbutton(win) {
                                setbtnimage(self,AppFile("image/saveas.png"))
                                setclickevent(Method(:SaveAsAction))
                                settooltip("Save As")
                         } ,
                        new qtoolbutton(win) {
                                setbtnimage(self,AppFile("image/close.png"))
                                setclickevent(Method(:ExitAction))
                                settooltip("Exit")
                        }
                ]

        tool1 = win.addtoolbar("files")  {
                for x in aBtns { addwidget(x) addseparator() }
        }

この用例でサブフォルダでの画像の用法を理解できます。

Qt リソースファイルの作成方法 (Folder2qrc)

大量の画像とファイルから構成される大規模 RingQt プロジェクトでは、モバイル・アプリケーション配布時にリソースファイル (*.qrc) へファイルを必ず追加してください。

Ring 1.6 以降では Folder2qrc ツールにより、一つずつファイルを追加する必要がなくなるので時間の節約になります。

用例:

folder2qrc formdesigner.ring

アプリケーションフォルダに移動している間に、メインソースファイルの決定をするために Folder2qrc は現在のフォルダとサブフォルダにある全てのファイルを確認します。そして mainfile.ringo の後にリソースファイルを追加します (この用例は formdesigner.ringo です)。

出力ファイル : project.qrc

ファイルを開く、または削除するためにリソースは不要です！

Ring2EXE に関する重要情報

Ring2EXE で配布物を準備すると、古い配布物にあるファイルを全て削除します。

例えば target/windows が使用される場合は

ring2exe test3.ring -dist -allruntime

target/windows にあるファイルは再びファイルを追加する前に削除されます。

これは、モバイル機器用の配布物を準備するときに重要となります。

ring2exe test3.ring -dist -mobileqt

リソースファイルを修正する場合は : project.qrc または、メインファイル main.cpp をアプリケーションフォルダへコピーすることを忘れないように注意してください！

前述のコマンドを再実行すると、 Ring2EXE で更新版を使えます！

Ring2EXE は Ring 記述しています。こちらからソースコードを読むことができます

https://github.com/ring-lang/ring/blob/master/tools/ring2exe/ring2exe.ring

ライブラリの情報は個々の独立したファイルに記録されています。よって将来、新しいライブラリへ対応する場合は、このファイルを自動的に更新できます。

https://github.com/ring-lang/ring/blob/master/tools/ring2exe/libs

Ring パッケージ管理プログラム (RingPM)

Ring パッケージ管理プログラム (RingPM) の用法です。

このツールは Ring パッケージの検索、インストール、および更新をします。

また、パッケージの互換性の確認で意味つきバージョン管理を使います。

コマンドラインオプション

書式:

ringpm [コマンド]

コマンド:

コマンド

説明

search [キーワード...]

新しいパッケージを検索

refresh

レジストリを更新 (パッケージリスト)

install [ <パッケージ名> [from <ユーザ名>] [branch <ブランチ名>] ]

パッケージをインストール

list [-u : 更新の確認]

インストール済みパッケージのリストを表示

run [パッケージ名]

パッケージスクリプトを実行

update <パッケージ名>

パッケージを更新

remove <パッケージ名>

パッケージを削除

format

すべてのパッケージを一括削除

new

パッケージテンプレートを新規作成

package

現在のフォルダにパッケージを作成

注釈

パッケージの開発検証作業には GitHub アカウント、またはローカル Git サーバが必要です。 package.ring による ringpm install でのローカルインストールはできません。

パッケージの検索

search コマンドは新しいパッケージを検索します。

このコマンドは RingPM レジストリ (パッケージのインデックス) を検索します。

RingPM レジストリは登録済み全パッケージのローカルコピーです。

ringpm search [キーワード...]

用例:

ringpm search notepad

実行結果:

Package : ringnotepad (Ring Notepad)
Package : notepadppeditorextension (Notepad++ Editor Extension package)

RingPM レジストリにあるパッケージをすべて表示するには、キーワード無指定で Search コマンドを使用してください。

用例:

ringpm search

RingPM レジストリの更新

refresh コマンドはローカルコピーを更新します。

RingPM レジストリは登録済み全パッケージのローカルコピーです。

用例:

ringpm refresh

実行結果:

No updates to the Registry, Nothing to do!

または

The Registry is updated from revision 110 (2019/01/13) to revision 112 (2019/01/15)

パッケージのインストール

Install コマンドは新しいパッケージをインストールします。

ringpm install [ <パッケージ名> [from <ユーザ名>] [branch <ブランチ名>] ]

RingPM レジストリからパッケージ情報を取得するには、パッケージ名のみ打鍵します。または、ユーザ名 (GitHub) と GitHub プロジェクトのブランチ名を決定します。

カレントフォルダがパッケージフォルダならば、パッケージ名の記述は不要です。

用例 (1) :

ringpm install ringnotepad

用例 (2) :

ringpm install goldmagic800

用例 (3) :

ringpm install gameoflife

RingPM レジストリにパッケージが追加されていない場合は、 GitHub ユーザからインストールできます

用例 (4) :

ringpm install firstpackage from mahmoudfayed

インストール後にパッケージスクリプト (main.ring) を実行するには

ringpm run firstpackage

カレントフォルダのパッケージをインストールするには

用例 (5) :

ringpm install

インストール済みパッケージのリスト表示

list コマンドはインストール済みパッケージを表示・確認します。

ringpm list [-u : 更新の確認]

用例:

ringpm list

実行結果:

(analogclock)          : The AnalogClock Package [master]         -- (1.0.0)
(androidringlibsdl)    : The AndroidRingLibSDL Package [master]   -- (1.0.0)
(androidringqt)        : The AndroidRingQt Package [master]       -- (1.0.0)
(atomeditorextension)  : The AtomEditorExtension Package [master] -- (1.0.0)
(bignumber)            : The BigNumber Package [master]           -- (1.0.0)
(calculator)           : The Calculator Package [master]          -- (1.0.0)
(cards)                : The Cards Package [master]               -- (1.0.0)
(checkers)             : The Checkers Package [master]            -- (1.0.0)
(chess)                : The Chess Package [master]               -- (1.0.0)
....

新しい更新を確認するには

ringpm list -u

パッケージスクリプトの実行

run コマンドはインストール後にパッケージスクリプト (main.ring) を実行します。これはインストール後の後処理などで使います。

ringpm run [パッケージ名]

用例(1):

ringpm run ringnotepad

用例(2):

ringpm run goldmagic800

用例(3):

ringpm run gameoflife

カレントフォルダでパッケージスクリプトを実行するには

用例(4):

ringpm run

注釈

ローカルインストールに対応したいときは run.ring と zip ファイルを使います。詳しくは /tools/ringpm/webassemblyringqt を参照してください。

パッケージの更新

update コマンドはパッケージを更新します。

ringpm update <パッケージ名>

用例:

ringpm update ringnotepad

パッケージの削除

remove コマンドはパッケージを削除します。

ringpm remove <パッケージ名>

用例:

ringpm remove ringnotepad

パッケージの全削除

format コマンドはパッケージをすべて削除します。

用例:

ringpm format

パッケージテンプレートの新規作成

new コマンドはパッケージテンプレートを新規作成します。

ringpm new <パッケージ名>

用例:

ringpm new myapp

これは新しいフォルダ myapp を作成します。

このようなファイルが新しいフォルダにあります。

package.ring : パッケージの概要とファイル

main.ring : メインプログラム (Run コマンドで使用)

lib.ring : パッケージと関連するライブラリファイル

ファイル : main.ring

# メインファイル

load "lib.ring"

func main

        ? "Hello, World!"

ファイル : lib.ring

# ライブラリファイル

ファイル : package.ring

aPackageInfo = [
        :name = "The myapp Package",
        :description = "Our myapp package using the Ring programming language",
        :folder = "myapp",
        :developer = "",
        :email = "",
        :license = "MIT License",
        :version = "1.0.0",
        :ringversion = "1.10",
        :versions =     [
                [
                        :version = "1.0.0",
                        :branch = "master"
                ]
        ],
        :libs =         [
                [
                        :name = "",
                        :version = "",
                        :providerusername = ""
                ]
        ],
        :files =        [
                "lib.ring",
                "main.ring"
        ],
        :ringfolderfiles =      [

        ],
        :windowsfiles =         [

        ],
        :linuxfiles =   [

        ],
        :ubuntufiles =  [

        ],
        :fedorafiles =  [

        ],
        :macosfiles =   [

        ],
        :windowsringfolderfiles =       [

        ],
        :linuxringfolderfiles =         [

        ],
        :ubunturingfolderfiles =        [

        ],
        :fedoraringfolderfiles =        [

        ],
        :macosringfolderfiles =         [

        ],
        :run = "ring main.ring",
        :windowsrun = "",
        :linuxrun = "",
        :macosrun = "",
        :ubunturun = "",
        :fedorarun = "",
        :setup = "",
        :windowssetup = "",
        :linuxsetup = "",
        :macossetup = "",
        :ubuntusetup = "",
        :fedorasetup = "",
        :remove = "",
        :windowsremove = "",
        :linuxremove = "",
        :macosremove = "",
        :ubunturemove = "",
        :fedoraremove = ""
]

ちなみに

リモートのファイル構成については https://github.com/ringpackages/ を参照してください。

パッケージ概要ファイル

パッケージ概要ファイル (package.ring) には、 aPackageInfo のリストで定義されたパッケージ情報があります。

属性

説明

Name

パッケージ名

Description

パッケージの概要

Folder

フォルダ名 (ring/ringpm/packages へ作成)

Developer

パッケージ開発者名

Email

パッケージ開発者の電子メールアドレス

License

パッケージの使用許諾条件

Version

パッケージの現行バージョン (最新版数)

RingVersion

必要とされる Ring 言語のバージョン (最小版数)

Versions

GitHub プロジェクトの別ブランチにより提示されるバージョンのリスト

Libs

依存性リスト (名前、バージョンと GitHub のユーザ名)

Files

ファイルリスト (ring/ringpm/packages/[フォルダ] へインストール)

RingFolderFiles

ファイルリスト (Ring のフォルダへインストール)

WindowsFiles

Files と同じですが Microsoft Windows のみで行う処理を指定

LinuxFiles

Files と同じですが Linux のみで行う処理を指定

MacOSFiles

Files と同じですが macOS のみで行う処理を指定

UbuntuFiles

Files と同じですが Ubuntu のみで行う処理を指定

FedoraFiles

Files と同じですが Fedora のみで行う処理を指定

WindowsRingFolderFiles

RingFolderFiles と同じですが Microsoft Windows のみで行う処理を指定

LinuxRingFolderFiles

RingFolderFiles と同じですが Linux のみで行う処理を指定

MacOSRingFolderFiles

RingFolderFiles と同じですが macOS のみで行う処理を指定

UbuntuRingFolderFiles

RingFolderFiles と同じですが Ubuntu のみで行う処理を指定

FedoraRingFolderFiles

RingFolderFiles と同じですが Fedora のみで行う処理を指定

Run

パッケージで実行するシステムコマンド (コマンドプロンプトまたは端末)

WindowsRun

Run と同じですが Microsoft Windows のみで行う処理を指定

LinuxRun

Run と同じですが Linux のみで行う処理を指定

MacOSRun

Run と同じですが macOS のみで行う処理を指定

UbuntuRun

Run と同じですが Ubuntu のみで行う処理を指定

FedoraRun

Run と同じですが Fedora のみで行う処理を指定

Setup

パッケージファイルのダウンロード後に実行するシステムコマンド (コマンドプロンプトまたは端末)

WindowsSetup

Setup と同じですが Microsoft Windows のみで行う処理を指定

LinuxSetup

Setup と同じですが Linux のみで行う処理を指定

MacOSSetup

Setup と同じですが macOS のみで行う処理を指定

UbuntuSetup

Setup と同じですが Ubuntu のみで行う処理を指定

FedoraSetup

Setup と同じですが Fedora のみで行う処理を指定

Remove

パッケージファイルの削除前に実行するシステムコマンド (コマンドプロンプトまたは端末)

WindowsRemove

Remove と同じですが Microsoft Windows のみで行う処理を指定

LinuxRemove

Remove と同じですが Linux のみで行う処理を指定

MacOSRemove

Remove と同じですが macOS のみで行う処理を指定

UbuntuRemove

Remove と同じですが Ubuntu のみで行う処理を指定

FedoraRemove

Remove と同じですが Fedora のみで行う処理を指定

カレントフォルダでのパッケージ作成

package コマンドは既存アプリケーションのパッケージを作成します

アプリケーションのフォルダへ移動後に、

ringpm package

を実行するとパッケージ定義ファイル (package.ring) の作成後、パッケージ定義へアプリケーションのファイルリストをすべて追加します。

RingPM で作成したパッケージには、パッケージ情報とファイルリストを記したパッケージ定義ファイル (package.ring) を生成します。

用例:

Ring ノートパッドのパッケージファイル定義は

aPackageInfo = [
        :name = "The RingNotepad Package",
        :description = "Our RingNotepad package using the Ring programming language",
        :folder = "ringnotepad",
        :developer = "Mahmoud Fayed",
        :email = "msfclipper@yahoo.com",
        :license = "MIT License",
        :version = "1.0.0",
        :ringversion = "1.10",
        :versions =     [
                [
                        :version = "1.0.0",
                        :branch = "master"
                ]
        ],
        :libs =         [
                [
                        :name = "stdlib",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "ringqt",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "findinfiles",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "formdesigner",
                        :version = "1.0",
                        :providerusername = ""
                ],
                [
                        :name = "libdepwin_apache",
                        :version = "1.0",
                        :providerusername = ""
                ]
        ],
        :files =        [
                "main.ring",
                "README.md"
        ],
        :ringfolderfiles =      [
                "applications/rnote/batch/killwebserver.bat",
                "applications/rnote/batch/run.bat",
                "applications/rnote/batch/run2.bat",
                "applications/rnote/image/back.jpg",
                "applications/rnote/image/back2.jpg",
                "applications/rnote/image/close.png",
                "applications/rnote/image/colors.png",
                "applications/rnote/image/copy.png",
                "applications/rnote/image/cut.png",
                "applications/rnote/image/debug.png",
                "applications/rnote/image/font.png",
                "applications/rnote/image/formdesigner.png",
                "applications/rnote/image/new.png",
                "applications/rnote/image/notepad.png",
                "applications/rnote/image/open.png",
                "applications/rnote/image/paste.png",
                "applications/rnote/image/print.png",
                "applications/rnote/image/project.png",
                "applications/rnote/image/richtext.png",
                "applications/rnote/image/run.png",
                "applications/rnote/image/rungui.png",
                "applications/rnote/image/save.png",
                "applications/rnote/image/saveas.png",
                "applications/rnote/image/search.png",
                "applications/rnote/image/source.png",
                "applications/rnote/image/undo.png",
                "applications/rnote/image/web.png",
                "applications/rnote/README.md",
                "applications/rnote/rnote.ring",
                "applications/rnote/rnoteactivefile.ring",
                "applications/rnote/rnoteactivefolder.ring",
                "applications/rnote/rnoteautocomplete.ring",
                "applications/rnote/rnotebase.ring",
                "applications/rnote/rnotecontroller.ring",
                "applications/rnote/rnotedistribute.ring",
                "applications/rnote/rnoteeditmenu.ring",
                "applications/rnote/rnoteeditorevents.ring",
                "applications/rnote/rnotefilemenu.ring",
                "applications/rnote/rnotefiles.ring",
                "applications/rnote/rnotefilestabs.ring",
                "applications/rnote/rnotefind.ring",
                "applications/rnote/rnotefindinfiles.ring",
                "applications/rnote/rnoteformdesigner.ring",
                "applications/rnote/rnotegoto.ring",
                "applications/rnote/rnotehelp.ring",
                "applications/rnote/rnotelists.ring",
                "applications/rnote/rnotemainfiletoolbar.ring",
                "applications/rnote/rnotemainwindow.ring",
                "applications/rnote/rnotemode.ring",
                "applications/rnote/rnoteoutputwindow.ring",
                "applications/rnote/rnoteprogrammenu.ring",
                "applications/rnote/rnoterun.ring",
                "applications/rnote/rnotesettings.ring",
                "applications/rnote/rnotestyle.ring",
                "applications/rnote/rnotetabwidth.ring",
                "applications/rnote/rnotetools.ring",
                "applications/rnote/rnotetreeviewevents.ring",
                "applications/rnote/rnoteviewmenu.ring",
                "applications/rnote/rnotewebbrowser.ring"
        ],
        :run = "ring main.ring"
]

RingPM レジストリファイル

RingPM レジストリは、登録済み全パッケージのローカルコピーです。

aPackagesRegistry = [
        [ :name = "ringpresentation",
          :description = "Powerpoint presentation for the Ring programming language",
          :ProviderUserName = "ringpackages"
        ]
        # ...
]

このリストでパッケージを定義しています。

パッケージ名

パッケージの概要

開発者のユーザ名 (GitHub ユーザ名)

新しいパッケージを登録するには、レジストリファイルを更新後に Pull リクエストを送信します。

URL : https://github.com/ring-lang/ring/blob/master/tools/ringpm/registry/registry.ring

ZeroLib の用法

ZeroLib ライブラリの用法です。

はじめに

ZeroLib は Ring で記述したシンプルなライブラリです。

添字 0 始点のリストと文字列用クラスが使えるライブラリです。

Z() 関数

文法x:

Z(String|List) ---> 新規オブジェクト (ZeroBasedString|ZeroBasedList)

ZeroBasedList クラス

添字 0 始点のリストを実装したシンプルなクラスです。

メソッド:

メソッド

詳細・結果

Init(List)

Add(Value)

リストへ項目を追加します

Insert(nIndex,Value)

nIndex の後に項目を挿入します

Find(Value)

項目を検索します

Delete(nIndex)

リストから項目を削除します

Item(nIndex)

リストから項目を取得しま

First()

リストから最初の項目を取得します

Last()

リストから最後の項目を取得します

Set(nIndex,Value)

項目の値を設定します

FindInColumn(nCol,Value)

列にある項目を検索します

Sort()

項目の整列 - 新規項目を返します

Reverse()

項目の反転 - 新規項目を返します

Swap(nIndex1,nIndex2)

項目同士を入れ替えます

用例:

load "zerolib.ring"

? "Using List - Index start from 0"
List = Z( [1,2,3] )
List.Add(4)
List.Add(5)
? List[0]
? List[1]
? List[2]
? List[3]
? List[4]
nIndex = List.find(2)
? "Find(2) = " + nIndex
List.delete(0)
? "After deleting the first item : List[0]"
? "Now List[0] = " + List[0]

実行結果:

Using List - Index start from 0
1
2
3
4
5
Find(2) = 1
After deleting the first item : List[0]
Now List[0] = 2

ZeroBasedString クラス

添字 0 始点の文字列を実装したシンプルなクラスです。

メソッド

詳細・結果

Init(String|Number)

Lower()

新規文字列 - 小文字

Upper()

新規文字列 - 大文字

Left(x)

新規文字列 - 左から x 文字を含む

Right(x)

新規文字列 - 右から x 文字を含む

Lines()

数値 - 行数

Trim()

新規文字列 - 空白の削除

Copy(x)

新規文字列 - 文字列の x 回反復

strcmp(cString)

文字列を cString と比較

tolist()

リスト (文字列行から文字列項目へ)

tofile(cFileName)

文字列をファイルへ出力

mid(nPos1,nPos2)

新規文字列 - nPos1 から nPos2 まで

getfrom(nPos1)

新規文字列 - nPos1 から文字列終端まで

replace(cStr1,cStr2,lCase)

新規文字列 - cStr1 を cStr2 へ置換。 lCase で字種変換 (True=無変換)

split()

List - リスト項目を単語ごとに分割

startswith(substring)

部分文字列で始まる場合は true を返します

endswith(substring)

部分文字列で終わる場合は true を返します

用例:

load "zerolib.ring"

? "Using String - Index start from 0"
String = Z( "Welcome" )
? String[0]
? String[1]
? String[2]
? String[3]
? String[4]
? String[5]
? String[6]

実行結果:

Using String - Index start from 0
W
e
l
c
o
m
e

ソースコード

このフォルダにライブラリのソースコードがあります

URL : https://github.com/ring-lang/ring/tree/master/libraries/zerolib

FoxRing 関数リファレンス

このクラスには FoxPro 互換関数を実装しています。

FoxRing 関数

..csv-table::

header

"関数名", "説明"

widths

18, 82

"frAbs()", 指定された数値式の絶対値を返します。" "frAddBs()", パス表現にバックスラッシュを追加します(必要ならば)。" "frALines()", 指定された文字列の内容で配列を作成します。" "frAllTrim()", 指定された文字列の文頭と文末にある空白文字を全て除去します。" "frAsc()", 文字式の左端にある文字のANSI値を返します。" "frAt()", 文字式に出現する別の文字式を検索します(英数大小文字を区別します)。" "frAtC()", 文字式に出現する別の文字式を検索します(英数大小文字を区別しません)。" "frBetween()", 式値が同一型の二式値の間にあるか確認します。" "frChr()", ANSIコードを数値で指定して関連づけられている文字列を返します。" "frEmpty()", 式の評価が空か判定します。" "frFile()", 指定されたファイルがディスクにあるか確認します。" "frFileToStr()", ファイルの内容を文字列として返します。" "frForceExt()", ファイルの旧拡張子を新拡張子で置換した文字列を返します。" "frForcePath()", 古いものの代わりに置換された新しいパス名を使用したファイル名を返します。" "frIif()", 論理式の値により2つの値のうち1つを返します。" "frInList()", 式が別式にある式集合と一致する式か決定します。" "frInt()", 数値式を評価してから式の整数部分を返します。" "frJustDrive()", 絶対パスからドライブ文字を返します。" "frJustExt()", 絶対パスからファイル拡張子の文字を返します。" "frJustFName()", 絶対パスとファイル名からファイル名の部分を返します。" "frJustPath()", 絶対パスとファイル名とパスの部分を返します。" "frJustStem()", 絶対パスとファイル名からステム名(拡張子の前のファイル名)を返します。" "frLen()", 式の長さを示すことで、文字式の文字数を決定します。" "frListToString()", 文字列の配列要素で文字列を作成します。" "frLTrim()", 指定された文字式から先頭の空白文字または構文解析文字を全て削除します。" "frPadL()", 左側へ指定された長さの空白文字または文字で桁揃えを行い、式から文字列を返します。" "frPadR()", 右側へ指定された長さの空白文字または文字で桁揃えを行い、式から文字列を返します。" "frProper()", 文字式から固有名詞として適切に大文字化された文字列を返します。" "frReplicate()", 指定された文字式を指定回数反復したものを文字列として返します。" "frRTrim()", 指定された文字式から文末の空白文字または構文解析文字を全て削除します。" "frSetIfEmpty()", 変数の値が空、NULLまたは0ならば変数の値を設定します。" "frSetSeparatorTo()", 数値位置分離記号として使用する文字を指定します。" "frSpace()", 指定された個数の空白文字で構成されている文字列を返します。" "frStr()", 数値の式と等価な文字を返します。" "frStringToList()", 指定された文字列の内容でリストを作成します。" "frStrTran()", 文字式に対して第二文字式を検索を行い、各出現位置を第三文字式で置換します。" "frStuff()", 式の文字数を指定することにより別の文字式を新しい文字列で置換したものを返します。" "frSubStr()", 指定された文字式の始点位置から指定された文字数までを返します。" "frTransform()", 書式コードにより決定された書式で式から文字列を返します。" "frVal()", 数字で構成された文字式から数値を返します。" "rVarType()", 式のデータ型を返します。"

frAbs() 関数

* 文法    : lnReturnValue = frAbs(tnExpression)
* 説明    : 指定された数値式の絶対値を返します。
*         :
* 引数    : <tnExpression>
*         : frAbs() の返値は数値式を指定して
*         : 得られた絶対値です。
* 返値    : <lnReturnValue>
*         : 指定された数値式の絶対値を返します。

frAsc() 関数

* 文法    : lnReturnValue = frAsc(tcExpression)
* 説明    : 文字式の左端にある文字に対して ANSI 値を返します。
*         :
* 引数    : <tcExpression>
*         : frAsc() で ANSI 値を返したい文字のある文字式を指定します。
*         :
*         : tcExpression にある先頭の 1 文字目以降は
*         : frAsc() により無視されます。
* 返値    : <lnReturnValue>
*         : 現在のコードページの文字テーブルに
*         : 関連づけられている文字位置を返します。
*         : 文字ごとに 0 ～ 255 までの範囲内で
*         : 固有の ANSI 値があります

frAddBs() 関数

* 文法    : lcReturnValue = frAddBs(tcPath)
* 説明    : パス表現にバックスラッシュを追加します (必要ならば)。
*         :
* 引数    : <tcPath>
*         : バックスラッシュを追加するパス名を指定します。
*         :
* 返値    : <lcReturnValue> バックスラッシュを追加したパス名を返します。

frAt() 関数

* 文法    : lnPos = frAt(tcToSearch, tcString, tnOccurrence)
* 説明    : 文字式に出現する別の文字式を検索します。
*         :
*         : frAt() による検索では英数大小文字を区別します。
*         :
* 引数    : <tcToSearch>
*         : <tcString> に対して検索する文字式を指定します。
*         :
*         : <tcString>
*         : <tcToSearch> に対して検索する文字式を指定します。
*         :
*         : <tnOccurrence>
*         : <tcString> に対する <tcToSearch> の検索において
*         : 1 番目、 2 番目、 3 番目など出現位置を指定します。
*         :
*         : デフォルトでは、 frAt() は <tcToSearch> (tnOccurrence = 1) の
*         : 最初の出現位置を検索します。
* 返値    : 数値。 frAt() は左端の文字を始点として、
*         : 文字式、または別の文字式内にあるメモフィールド、
*         : メモフィールドにある最初の文字の位置を示す整数を返します。
*         :
*         : 式やフィールドが見つからない、
*         : または <tnOccurrence> が <tcToSearch> 内の
*         : <tcString> よりも出現回数が多いならばfrAt() は
*         : 0 を返します。
*         :

frAtC() 関数

* 文法    : lnPos = frAtC(tcToSearch, tcString, tnOccurrence)
* 説明    : 文字式に出現する別の文字式を検索します。
*         :
*         : frAtC() による検索では英数大小文字を区別しません。
*         :
* 引数    : <tcToSearch>
*         : <tcString> に対して検索する文字式を指定します。
*         :
*         : <tcString>
*         : <tcToSearch> に対して検索する文字式を指定します。
*         :
*         : <tnOccurrence>
*         : <tcString> に対する <tcToSearch> の検索において
*         : 1 番目、 2 番目、 3 番目など出現位置を指定します。
*         :
*         : デフォルトでは、 frAtC() は <tcToSearch> (tnOccurrence = 1) の
*         : 最初の出現位置を検索します。
* 返値    : 数値。 frAtC() は左端の文字を始点として、
*         : 文字式、または別の文字式内にあるメモフィールド、
*         : メモフィールドにある最初の文字の位置を示す整数を返します。
*         :
*         : 式やフィールドが見つからない、
*         : または <tnOccurrence> が <tcToSearch> 内の
*         : <tcString> よりも出現回数が多いならばfrAtC() は
*         : 0 を返します。
*         :

frChr() 関数

* 文法    : lcReturnValue = frChr(tnExpression)
* 説明    : ANSI コードを数値で指定して関連づけられている文字を返します。
*         :
* 引数    : <tnExpression>
*         : frChr() は 0 ～ 255 までの範囲内の数値に対応する
*         : ANSI 文字を指定します。
* 返値    : <lcReturnValue>
*         : 現在のコードページの文字テーブルに
*         : 関連づけられている文字の数値位置に
*         : 対応する文字を返します。
*         :
* 注釈    : tnExpression は 0 ～ 255 までの範囲内を必ず指定してください。

frEmpty() 関数

* 文法    : llReturnValue = frEmpty(tuExpression)
* 説明    : 式の評価が空か判定します。
*         :
* 引数    : <tuExpression>
*         : EMPTY() で評価する式を指定します。
*         : 式には数値、文字、または論理型を指定できます。
*         :
*         :
* 返値    : <llReturnValue> 論理

frFile() 関数

* 文法    : llReturnValue = frFile(tcFileName, tnFlag)
* 説明    : 指定されたファイルがディスクにあるか確認します。
*         :
* 引数    : <tcFileName>
*         : 指定されたファイル名で確認します。
*         : tcFileName にはファイルの拡張子が必要です。
*         : ディレクトリでのファイル検索、
*         : またはカレントディレクトリ以外のドライブ、
*         : あるいはドライブをファイル名として
*         : パスと一緒に指定できます。
*         :
*         : <tnFlag>
*         : tnFlag は将来の互換性ために予約されています。
*         : このバージョンでは、ディスクにファイルがあるときは
*         : 常に true を返します。
* 返値    : <llReturnValue> 論理
*         : True ならばファイルはディスクにあります。
*         : False ならばファイルはディスクにありません。

frFileToStr() 関数

* 文法    : lcReturnValue = frFileToStr(tcFileName)
* 説明    : ファイルの内容を文字列として返します。
*         :
* 引数    : <tcFileName>
*         : ファイルの内容を文字列として返したい
*         : ファイル名を指定します。
*         : ファイル現在のデフォルトディレクトリ以外の
*         : ディレクトリにある場合は、
*         : ファイル名と一緒にパスを指定してください。
*         :
* 返値    : <lcReturnValue>
*         : 指定されたファイル内容がある文字列。
*         :

frStr() 関数

* 文法    : lcReturnValue = frStr(tnValue, tnLen, tnDec)
* 説明    : 数値の式と等価な文字を返します。
*         :
* 引数    : <tnValue>
*         : 評価する数値の式を指定します。
*         :
*         : <tnLen>
*         : 返された文字列の長さを指定します。
*         : tnLen が 0 ならば、デフォルトは 10 文字になります。
*         : tnLen < 0 ならば、 文字列の長さは数値と同じです。
*         :
*         : 注意
*         : 式に小数点がある場合は、小数点は 1 文字として、
*         : そして、文字列の各桁も 1 文字として長さに算入されます。
*         :
*         : <tnDec>
*         : 返された文字列にある小数位の桁数の数値を指定します。
*         :
*         : tnDec を使って小数位の桁数の数字を指定するには、
*         : nLength を有する必要があります。nDecimalPlaces を省略した場合、
*         : 小数位の桁数の数字はゼロ (0) がデフォルトになります。
*         :
* 返値    : 文字列データ型。 frStr() は指定された数値の式と
*         : 等価な文字列を返します。
*         :
*         : 特定の条件により、 frStr() は次のことを返すことがあります:
*         : tnValue よりも少ない小数位の桁数を指定した場合は返値は切り上げられます。
*         : 丸め込みの処理結果が近似小数位の桁数でなく上方ならば、
*         : ROUND( ) による処理が入ります。
*         : 詳しくは、 ROUND( ) 関数を参照してください。
*         :
*         : nExpression が整数であり、nExpression の桁数が
*         : nLength 以下ならば、frStr( ) は数値の
*         : 桁あふれを示すためにアスタリスク文字列を返します。
*         :
*         : nExpression が小数点であり、nExpression の残り小数点の桁数が
*         : nLength 以下または等しいならば、frStr() は
*         : 数値の桁あふれを示すためにアスタリスク文字列を返します。
*         :
*         : nLength が nExpression で評価された値の長さよりも長いならば、
*         : frStr() は先頭を空白文字で桁揃えした文字列を返します。
*         :
*         : nExpression が数値あるいは浮動小数点数型を有しており、
*         : nLength が nExpression の桁数以下ならば、
*         : frStr() は指数表現を用いた値を返します。
*         :

frSetIfEmpty() 関数

* 文法    : tuReturnValue = frSetIfEmpty(tuValue, tuNewValue)
* 説明    : 変数の値が空、 NULL または 0 ならば
*         : 変数の値を設定します。
* 引数    : <tuValue>
*         : 評価を行う値。
*         :
*         : <tuNewValue>
*         : tuValue が空ならば変数の値を設定します。
*         :
* 返値    : tuValue が空ならば tuNewValue を、
*         : それ以外は元値を返します。
* 注釈    : この関数は Visual FoxPro にはありません。

frSpace() 関数

* 文法    : lcReturnValue = frSpace(tnSpaces)
* 説明    : 指定された個数の空白文字で構成されている文字列を返します。
*         :
* 引数    : <tnSpaces>
*         : frSpace() は指定された個数の空白文字を返します。
*         :
* 返値    : <lcReturnValue>
*         : 文字

frInList() 関数

* 文法    : llReturnValue = frInList(tuExpression, taList)
* 説明    : 式が別式にある式集合と一致する
*         : 式か決定します。
* 引数    : <tuExpression>
*         : リストで検索する式を frInList() へ指定します。
*         :
*         : <taList>
*         : 検索する式のリストを指定します。
*         : リストには最低でも 1 要素が存在する必要があります。
*         : 式のリストにある式は同一データ型である
*         : 必要はありません。
*         :
* 返値    : <luReturnValue> Null または論理値。

frForcePath() 関数

* 文法    : lcReturnValue = frForcePath(tcFileName, tcPath)
* 説明    : 古いものの代わりに置換された新しい
*         : パス名を使用したファイル名を返します。
* 引数    : <tcFileName>
*         : 新しいパスを取得するファイル名 (パスあるいは拡張子の
*         : 有無にかかわらず) を指定します。
*         : <tcPath>
*         : tcFileName の新しいパスを指定します。
*         :
* 返値    : <lcReturnValue>
*         : 古いものの代わりに置換された新しい
*         : パス名を使用したファイル名を返します。

frAllTrim() 関数

文法      : lcReturnValue = frAllTrim(tcExpression, tcCharacter)

frLTrim() 関数

文法      : lcRet = frLTrim(tcExpression, tcCharacter)

frJustDrive() 関数

* 文法   : lcReturnValue = frJustDrive(tcPath)
* 説明   : 絶対パスからドライブ文字を返します。
*              :
* 引数           : <tcPath>
*              : ドライブ文字を求めたい絶対パス名を指定します。
*              :
* 返値   : <lcReturnValue>
*              : 絶対パスからドライブ文字を返します。

frJustExt() 関数

* 文法   : lcReturnValue = frJustExt(tcPath)
* 説明   : 絶対パスからファイル拡張子の文字列を返します。
*              :
* 引数           : <tcPath>
*              : 拡張子を求めたいファイルのあるフルパスを指定します。
*              :
* 返値   : <lcReturnValue>
*              : 絶対パスからファイル拡張子の文字列を返します。
*              :

frJustStem() 関数

* 文法   : lcReturnValue = frJustStem(tcPath)
* 説明   : 絶対パスとファイル名からステム名 (拡張子の前のファイル名) を
*              : 返します。
* 引数           : <tcPath>
*              : ステムを求めたいファイル名 (パスを含む)を指定します。
*              :
* 返値   : <lcReturnValue>
*              : 絶対パスからファイル名のステム名を返します。

frRTrim() 関数

文法     : lcRet = frRTrim(tcExpression, tcCharacter)

frJustPath() 関数

文法      : tcReturnValue = frJustPath(tcExpression)

frForceExt() 関数

文法      : tcReturnValue = frForceExt(tcFileName, tcNewExtension)

frALines() 関数

文法      : tnReturnValue = frALines(taList, tcExpression, tcSeparator)

frJustFName() 関数

文法      : tcReturnValue = frJustFName(tcExpression)

frPadL() 関数

文法      : tcReturnValue = frPadL(tcString, tnLen, tcChar)

frPadR() 関数

文法      : tcReturnValue = frPadR(tcString, tnLen, tcChar)

frProper() 関数

* 文法    : tcReturnValue = frProper(tcExpression)
* 説明    : 文字式から固有名詞として適切に
*         : 大文字へ変換した文字列を返します。
* 引数    : <tcExpression>
*         :  frProper() には大文字へ変換したい
*         : 文字列を文字式を指定します。
* 返値    : <tcReturnValue>

frReplicate() 関数

文法      : tcReturnValue = frReplicate(tcString, tnTimes)

frLen() 関数

文法      : tnReturnValue = frLen(tcString)

frStuff() 関数

* 文法    : tcReturnValue = frStuff(tcExpression, tnStartRep,
                                    tnCharRep,    tcToReplace)
* 説明    : 式の文字数を指定することにより
*         : 別の文字式を新しい文字列で置換したものを返します。
*         :
* 引数    : <tcExpression>
*         : 置換対象の文字式を指定します。
*         :
*         : <tnStartRep>
*         : <tcExpression> の置換開始位置を指定します。
*         :
*         : <tnCharRep>
*         : 置換文字数を指定します。
*         : <tnCharRep> が 0 ならば、変換文字列 <tcToReplace> には
*         : <tcExpression> が挿入されます。
*         :
*         : <tcToReplace>
*         : 置換文字式を指定します。
*         : <tcToReplace> が空文字列ならば、指定された文字数により
*         : <tnCharRep> は <tcExpression> から削除されます。
*         :
* 返値    : 文字

frSubStr() 関数

文法      : tcReturnValue = frSubStr(tcString, tnInitialPosition, tnNumberBytes)

frStrTran() 関数

文法      : tcReturnValue = frStrTran(tcString, tcOldString, tcNewString)

frListToString() 関数

* 文法   : lcRet = frListToString(taList)
* 注釈   : この関数は Visual FoxPro にはありません。

frInt() 関数

文法              : lnInt = frInt(tnExpression)

frStringToList() 関数

* 文法   : laList = frStringToList(tcExpression)
* 注釈   : この関数は Visual FoxPro にはありません。

frIIf() 関数

* 文法    : luReturnValue = frIIf(tlExpression, tuReturnIfTrue, tuReturnIfFalse)
* 説明    : 論理式の値により 2 つの値のうち 1 つを返します。
*         :
* 引数    : <tlExpression>
*         : frIIf() で評価する論理式を指定します。
*         :
*         : <tuReturnTrue>, <tuReturnFalse>
*         : tlExpression の評価が True ならば tuReturnIfTrue を、
*         : 未評価ならば tuReturnIfFalse が返されます。
*         : tlExpression の評価が False または Null ならば tuReturnIfFalse を、
*         : 未評価ならば tuReturnIfTrue が返されます。
*         :
* 返値    : <luReturnValue> は <tuReturnIfTrue> または <tuReturnIfFalse> により定義済み。

frVal() 関数

* 文法    : luReturnValue = frVal(tcExpression)
* 説明    : 数字で構成された文字式から数値を返します。
*         :
* 引数    : <tcExpression>
*         : 16 までの数字で構成された文字式を指定します。
*         :
* 返値    : <tnValue>
*         : 数値を返します。

frBetween() 関数

* 文法    : luReturnValue = frBetween(tuTestValue, tuLowValue, tuHighValue)
* 説明    : 式値が同一型の 2 式値の間にあるか確認します。
*         :
*         :
*         :
* 引数    : <tuTestValue>
*         : 評価する式を指定します。
*         :
*         : <tuLowValue>
*         : 低い範囲値を指定します。
*         :
*         : <tuHighValue>
*         : 高い範囲値を指定します。
*         :
* 返値    : <luReturnValue>
*         : 論理順序の NULL 値を返します。

frSetSeparatorTo() 関数

* 文法    : frSetSeparatorTo(tuExpression)
* 説明    : 数値位置分離記号として使用する文字を指定します。
*         :
* 引数    : <tuExpression>
*         : 数値位置分離記号として使用する文字を指定します。
*         :
*         : frSetSeparatorTo() は数値位置分離記号を
*         : デフォルトからの変更で使用します。
*         : 例えば、空白文字 " "  またはカンマ "," です。
*         : デフォルト値へ戻すには frSetSeparatorTo(Null) を指定します
*         :
* 返値    : なし

frTransform() 関数

* 文法    : tcReturnValue = frTransform(tuExpression, tcFormatCodes)
* 説明    : 書式コードにより決定された書式で式から文字列を返します。
*         :
* 引数    : <tuExpression>
*         : 式の書式を指定します。
*         :
*         : <tcFormatCodes>
*         : 式の書式処理方法を決定するために
*         : 1 つ以上の書式コードを指定します。
*         :
* 返値    : <tcReturnValue>

これは tcFormatCodes で利用できる書式コードのリスト表です。

書式コード

説明

@!

文字列にある文字を全て大文字へ変換します。

@T

文字の値から先頭と文末にある空白文字を除去します。

@B

数値データを表示範囲内で左揃えします。

@L

数値の文字列データに対して先頭を 0 で桁合わせします。

@C

掛け売りを示すために正数値に CR を追加します。

@X

借り方を示すために負数値に DB を追加します。

frVarType() 関数

* 文法    : lcRet = frVarType(tuExpression)
* 説明    : 式のデータ型を返します。
*         :
* 引数    : <tuExpression>
*         : データ型を返したい式を指定します。
*         : frVartype() は式のデータ型を示す一文字を返します。
*         :
*         : この表は frVarType() が返すデータ型のリストです。
*         :
*         :
*         : -------------------   -------------------------------------
*         : 返値                  データ型
*         : -------------------   -------------------------------------
*         : C                     文字
*         : N                     数値
*         : A                     リスト
*         : O                     オブジェクト
*         : U                     未定義型
*         : -------------------   -------------------------------------
*         :
* 返値    : 文字

用例

Load "foxring.ring"

mf = new frFunctions

/*----------------------------------------------------------*/
 * frProper() サンプル
/*----------------------------------------------------------*/

lcStr1 = "ring is a good language"
?mf.frProper(lcStr1)
?mf.frProper(Upper(lcStr1))

/*----------------------------------------------------------*/
 * frStuff() サンプル
/*----------------------------------------------------------*/

lcStr1 = "abcdefghijklm"
lcStr2 = "12345"

// 挿入
?mf.frStuff(lcStr1, 4, 0, lcStr2)
// 置換
?mf.frStuff(lcStr1, 4, 3, lcStr2)
// 削除
?mf.frStuff(lcStr1, 4, 6, "")
// 置換と挿入
?mf.frStuff(lcStr1, 4, 1, lcStr2)
// 置換と削除
?mf.frStuff(lcStr1, 4, 4, lcStr2)
// 置換、残りを削除
?mf.frStuff(lcStr1, 4, Len(lcStr1), lcStr2)

/*----------------------------------------------------------*/

?mf.frAbs(-45)
?mf.frAbs(10-30)
?mf.frAbs(30-10)

lcNumber1 = 40
lcNumber2 = 2

?mf.frAbs(lcNumber2-lcNumber1)

lcCompletFileName = "C:\ring\docs\source\contribute.txt"

?mf.frFile(lcCompletFileName, Null)
if mf.frFile(lcCompletFileName, Null) {
  ?mf.frFileToStr(lcCompletFileName)
else
  ?"File does not exist"
}

lcNewPath = "C:\ring_2\docs\source\"
?mf.frJustExt(lcCompletFileName)
?mf.frJustDrive(lcCompletFileName)
?mf.frJustStem(lcCompletFileName)
?mf.frForcePath(lcCompletFileName, lcNewPath)
?mf.frTransform("    Ring is a good language    ",
                "@! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
?mf.frAllTrim("    Ring is a good language    ", Null)
?mf._version
lnValue = 3125.54
?mf.frTransform(lnValue, "@B")+ "Euros"
?mf.frTransform(lnValue, "@C 9999,999,999,999.999")
mf.frSetSeparatorTo(" ")
?mf.frTransform(lnValue, "9999,999,999,999.999")
?mf.frInt(lnValue)
?mf.frForceExt("teste", "dbf")
// 書式コード "@L" を frTransform() 関数へ追加
?mf.frTransform("123", "@L 999999")
?mf.frTransform(123, "@L 999999")

BigNumber ライブラリ

Big Number ライブラリの用法です。

ライブラリの読み込み

この関数の使用前に bignumber.ring ライブラリを読み込みます。

load "bignumber.ring"
# BigNumber ライブラリ関数の使用

用例

BigNumber ライブラリは非常に大きい数の算術演算で使用します。

用例:

load "bignumber.ring"

num1 = "62345678901234567891678345123456789"    ### 大なり
num2 =  "1237894567890123419871236545"          ### 小なり
num3 =     "64"                                 ### 小なりを割る
num4 = "765432"
num5 =      "3"                                 ### 累乗

? "Add big numbers:"
a1 = new BigNumber(num1)        a1.Print()
a2 = new BigNumber(num2)        a2.Print()
a3 = a1 + a2                    a3.Print() ? nl

? "Substract big numbers:"
a1 = new BigNumber(num1)        a1.Print()
a2 = new BigNumber(num2)        a2.Print()
a3 = a1 - a2                    a3.Print() ? nl

? "Multiply big numbers:"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num2)        a2.print()
a3 = a1 * a2                    a3.print() ? nl

? "Divide big numbers:"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num2)        a2.print()
a3 = a1 / a2                    a3.print() ? nl

? "Divide big numbers: by very small number"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num3)        a2.print()
a3 = a1 / a2                    a3.print() ? nl

? "Power of big number:"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num5)        a2.print()
a3 = a1 ^ a2                    a3.print() ? nl

実行結果:

Add big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
62345680139129135781801764994693334

Substract big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
52345687663340000001554925252220244

Multiply big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
77177377243260150103462178714197454736432472780119682305154005

Divide big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
50364288

Divide big numbers: by very small number
62345678901234567891678345123456789
64
974151232831790123307474142554012

Power of big number:
62345678901234567891678345123456789
3
242336636261471172092347146031727004 (実行結果は次行へ続きます)
371698195628343934238988256152289508 (実行結果は次行へ続きます)
493964611043228971692389860897069

BigNumber 関数

このライブラリの関数一覧です。

FuncAdd(num1,num2)
FuncSubtract(num1,num2)
FuncCompare(num1,num2)
FuncDivide(num1,num2)
FuncMultiply(num1,num2)
FuncPower(num1,num2)
FuncBinaryToDecimal(num1)
FuncDecimalToBinary(num1)
printBinaryDigits(binList)
printDecimalDigits(decList)

BigNumber クラス

このライブラリで使えるクラスのリストです。

class BigNumber
        func init aPara
        func operator cOperator, Para
        func print
        func value

ライブラリのソースコード

ライブラリのソースコードは ring/libraries/bignumber フォルダにあります。

ソースコード : https://github.com/ring-lang/ring/blob/master/libraries/bignumber/bignumber.ring

RingLibCurl の用法

RingLibCurl の用法です。

Get リクエスト

用例:

load "libcurl.ring"

curl = curl_easy_init()

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1)
curl_easy_setopt(curl, CURLOPT_URL, "http://ring-lang.sf.net")

curl_easy_perform(curl)

curl_easy_cleanup(curl)

Post リクエスト

用例:

load "libcurl.ring"

curl = curl_easy_init()

cPostThis = "page=4&Number1=4&Number2=5"
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/ringapp/index.ring?page=3")
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cPostThis)

curl_easy_perform(curl)

curl_easy_cleanup(curl)

Facebook へのログイン

用例:

load "libcurl.ring"

see "Email     の入力 : " give $login_email
See "パスワードの入力 : " give $login_pass

curl = curl_easy_init()

curl_easy_setopt(curl, CURLOPT_URL, 'https://www.facebook.com/login.php')
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,'charset_test=j u s t a t e s t'+
' &email='+urlencode($login_email)+'&pass='+
urlencode($login_pass)+'&login=Login')
curl_easy_setopt(curl, CURLOPT_POST, 1)
curl_easy_setopt(curl, CURLOPT_HEADER, 0)
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1)
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt")
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt")
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U;"+
" Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3")
curl_easy_setopt(curl, CURLOPT_REFERER, "http://www.facebook.com")
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE)
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2)

mylist = curl_slist_append(NULL,'Accept-Charset: utf-8')
curl_slist_append(mylist,'Accept-Language: en-us,en;q=0.7,bn-bd;q=0.3')
curl_slist_append(mylist,'Accept: text/xml,application/xml,'+
'application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5')
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, mylist)

curl_easy_setopt(curl, CURLOPT_COOKIESESSION, false)

curl_easy_perform(curl)

curl_easy_cleanup(curl)

Func URLEncode cStr
        cOut = ""
        for x in cStr
                if isalnum(x)
                        cOut += x
                but x = " "
                        cOut += "+"
                else
                        cOut += "%"+str2hex(x)
                ok
        next
        return cOut

実行結果を文字列で保存

用例:

load "libcurl.ring"

curl = curl_easy_init()

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1)
curl_easy_setopt(curl, CURLOPT_URL, "http://ring-lang.sf.net")

cOutput = curl_easy_perform_silent(curl)

See "実行結果:" + nl
see cOutput

curl_easy_cleanup(curl)

Yahoo! から株式情報を取得

用例:

Load "libcurl.ring"

### 第一部 --- 断片とクッキーの取得 -----------------------------------------

See "curl_easy_init() の処理開始: "+ nl
curl = curl_easy_init()                     ### >>> ハンドル >>> 01006BD0  CURL  0

        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1)
        curl_easy_setopt(curl, CURLOPT_COOKIEJAR,  "cookies.txt")
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt")
        curl_easy_setopt(curl, CURLOPT_URL, "https://finance.yahoo.com/quote/AMZN/history")

        ###  HTML データ >>> 標準出力 (STDOUT) ウィンドウでは curl_easy_perform_silent >>> String を使用。

cOutput = curl_easy_perform_silent(curl)    ### データの取得 >>> String

###   データから断片 (Crumb) を抽出します。
###  "CrumbStore":{"crumb":"abcdefghijk"},

if cOutput != NULL

        newStr1     = substr(cOutput, substr(cOutput, '"CrumbStore":{"crumb":"' ), 48 )
                nPosS   = substr(newStr1, ':"' ) ;  ### crumb -2 の始点
                nPosE   = substr(newStr1, '"}' ) ;  ### crumb の終点
                nCount  = nPosE - nPosS -2          ### crumb の大きさ
        myCrumb     = substr(newStr1, nPosS +2, nCount)

        See "myCrumb.: |"+ myCrumb +"|" +nl

        ### UniCode の "\u002F" を "/" へ置換します。
                if substr( myCrumb, "\u002F")
                   myCrumb = substr( myCrumb, "\u002F", "/")
                   See "myCrumb2: |"+ myCrumb +"|"+ nl
                ok

else
        See "Yahoo! へ接続できません。 Cookie と Crumb をご確認ください。" +nl +nl
ok

### 第二部 --- URL へ断片とクッキーを送信 ----------------------------------------------

        ### Yahoo! へ URL+断片を送信して最初の株式履歴情報を取得します。

        $url = "https://query1.finance.yahoo.com/v7/finance/download/AMZN"+
                "?period1=1277856000&period2=1498777545&interval=1wk" +
                "&events=history&crumb=" + myCrumb

        curl_easy_setopt(curl, CURLOPT_URL, $url);
        cStr = curl_easy_perform_silent(curl)
        See cStr

curl_easy_cleanup(curl)  ### cURL を閉じるのを忘れないように。

実行結果:

myCrumb.: |sEEeW97mxvN|
Date,Open,High,Low,Close,Adj Close,Volume
2010-07-05,110.650002,117.480003,109.000000,117.260002,117.260002,21000400
2010-07-12,117.809998,124.879997,117.320000,118.489998,118.489998,29407300
2010-07-19,118.379997,121.250000,105.800003,118.870003,118.870003,74252100

RingLibCurl 関数リファレンス

はじめに

RingLibCurl 拡張機能の関数一覧です。

リファレンス

CURL_GLOBAL_ALL

CURL_GLOBAL_SSL

CURL_GLOBAL_WIN32

CURL_GLOBAL_NOTHING

CURL_GLOBAL_DEFAULT

CURL_GLOBAL_ACK_EINTR

CURLOPT_VERBOSE

CURLOPT_HEADER

CURLOPT_NOPROGRESS

CURLOPT_NOSIGNAL

CURLOPT_WILDCARDMATCH

CURLOPT_WRITEFUNCTION

CURLOPT_WRITEDATA

CURLOPT_READFUNCTION

CURLOPT_READDATA

CURLOPT_IOCTLFUNCTION

CURLOPT_IOCTLDATA

CURLOPT_SEEKFUNCTION

CURLOPT_SEEKDATA

CURLOPT_SOCKOPTFUNCTION

CURLOPT_SOCKOPTDATA

CURLOPT_OPENSOCKETFUNCTION

CURLOPT_OPENSOCKETDATA

CURLOPT_CLOSESOCKETFUNCTION

CURLOPT_CLOSESOCKETDATA

CURLOPT_PROGRESSFUNCTION

CURLOPT_PROGRESSDATA

CURLOPT_HEADERFUNCTION

CURLOPT_HEADERDATA

CURLOPT_DEBUGFUNCTION

CURLOPT_DEBUGDATA

CURLOPT_SSL_CTX_FUNCTION

CURLOPT_SSL_CTX_DATA

CURLOPT_CONV_TO_NETWORK_FUNCTION

CURLOPT_CONV_FROM_NETWORK_FUNCTION

CURLOPT_CONV_FROM_UTF8_FUNCTION

CURLOPT_INTERLEAVEFUNCTION

CURLOPT_INTERLEAVEDATA

CURLOPT_CHUNK_BGN_FUNCTION

CURLOPT_CHUNK_END_FUNCTION

CURLOPT_CHUNK_DATA

CURLOPT_FNMATCH_FUNCTION

CURLOPT_FNMATCH_DATA

CURLOPT_ERRORBUFFER

CURLOPT_STDERR

CURLOPT_FAILONERROR

CURLOPT_URL

CURLOPT_PROTOCOLS

CURLOPT_REDIR_PROTOCOLS

CURLOPT_PROXY

CURLOPT_PROXYPORT

CURLOPT_PROXYTYPE

CURLOPT_NOPROXY

CURLOPT_HTTPPROXYTUNNEL

CURLOPT_SOCKS5_GSSAPI_SERVICE

CURLOPT_SOCKS5_GSSAPI_NEC

CURLOPT_INTERFACE

CURLOPT_LOCALPORT

CURLOPT_LOCALPORTRANGE

CURLOPT_DNS_CACHE_TIMEOUT

CURLOPT_DNS_USE_GLOBAL_CACHE

CURLOPT_BUFFERSIZE

CURLOPT_PORT

CURLOPT_TCP_NODELAY

CURLOPT_ADDRESS_SCOPE

CURLOPT_NETRC

CURLOPT_NETRC_FILE

CURLOPT_USERPWD

CURLOPT_PROXYUSERPWD

CURLOPT_USERNAME

CURLOPT_PASSWORD

CURLOPT_PROXYUSERNAME

CURLOPT_PROXYPASSWORD

CURLOPT_HTTPAUTH

CURLOPT_TLSAUTH_USERNAME

CURLOPT_TLSAUTH_PASSWORD

CURLOPT_TLSAUTH_TYPE

CURLOPT_PROXYAUTH

CURLOPT_AUTOREFERER

CURLOPT_ACCEPT_ENCODING

CURLOPT_TRANSFER_ENCODING

CURLOPT_FOLLOWLOCATION

CURLOPT_UNRESTRICTED_AUTH

CURLOPT_MAXREDIRS

CURLOPT_POSTREDIR

CURLOPT_PUT

CURLOPT_POST

CURLOPT_POSTFIELDS

CURLOPT_POSTFIELDSIZE

CURLOPT_POSTFIELDSIZE_LARGE

CURLOPT_COPYPOSTFIELDS

CURLOPT_HTTPPOST

CURLOPT_REFERER

CURLOPT_USERAGENT

CURLOPT_HTTPHEADER

CURLOPT_HTTP200ALIASES

CURLOPT_COOKIE

CURLOPT_COOKIEFILE

CURLOPT_COOKIEJAR

CURLOPT_COOKIESESSION

CURLOPT_COOKIELIST

CURLOPT_HTTPGET

CURLOPT_HTTP_VERSION

CURLOPT_IGNORE_CONTENT_LENGTH

CURLOPT_HTTP_CONTENT_DECODING

CURLOPT_HTTP_TRANSFER_DECODING

CURLOPT_MAIL_FROM

CURLOPT_MAIL_RCPT

CURLOPT_TFTP_BLKSIZE

CURLOPT_FTPPORT

CURLOPT_QUOTE

CURLOPT_POSTQUOTE

CURLOPT_PREQUOTE

CURLOPT_APPEND

CURLOPT_FTP_USE_EPRT

CURLOPT_FTP_USE_EPSV

CURLOPT_FTP_USE_PRET

CURLOPT_FTP_CREATE_MISSING_DIRS

CURLOPT_FTP_RESPONSE_TIMEOUT

CURLOPT_FTP_ALTERNATIVE_TO_USER

CURLOPT_FTP_SKIP_PASV_IP

CURLOPT_FTPSSLAUTH

CURLOPT_FTP_SSL_CCC

CURLOPT_FTP_ACCOUNT

CURLOPT_FTP_FILEMETHOD

CURLOPT_RTSP_REQUEST

CURLOPT_RTSP_SESSION_ID

CURLOPT_RTSP_STREAM_URI

CURLOPT_RTSP_TRANSPORT

CURLOPT_RTSP_CLIENT_CSEQ

CURLOPT_RTSP_SERVER_CSEQ

CURLOPT_TRANSFERTEXT

CURLOPT_PROXY_TRANSFER_MODE

CURLOPT_CRLF

CURLOPT_RANGE

CURLOPT_RESUME_FROM

CURLOPT_RESUME_FROM_LARGE

CURLOPT_CUSTOMREQUEST

CURLOPT_FILETIME

CURLOPT_DIRLISTONLY

CURLOPT_NOBODY

CURLOPT_INFILESIZE

CURLOPT_INFILESIZE_LARGE

CURLOPT_UPLOAD

CURLOPT_MAXFILESIZE

CURLOPT_MAXFILESIZE_LARGE

CURLOPT_TIMECONDITION

CURLOPT_TIMEVALUE

CURLOPT_TIMEOUT

CURLOPT_TIMEOUT_MS

CURLOPT_LOW_SPEED_LIMIT

CURLOPT_LOW_SPEED_TIME

CURLOPT_MAX_SEND_SPEED_LARGE

CURLOPT_MAX_RECV_SPEED_LARGE

CURLOPT_MAXCONNECTS

CURLOPT_FRESH_CONNECT

CURLOPT_FORBID_REUSE

CURLOPT_CONNECTTIMEOUT

CURLOPT_CONNECTTIMEOUT_MS

CURLOPT_IPRESOLVE

CURLOPT_CONNECT_ONLY

CURLOPT_USE_SSL

CURLOPT_RESOLVE

CURLOPT_SSLCERT

CURLOPT_SSLCERTTYPE

CURLOPT_SSLKEY

CURLOPT_SSLKEYTYPE

CURLOPT_KEYPASSWD

CURLOPT_SSLENGINE

CURLOPT_SSLENGINE_DEFAULT

CURLOPT_SSLVERSION

CURLOPT_SSL_VERIFYHOST

CURLOPT_SSL_VERIFYPEER

CURLOPT_CAINFO

CURLOPT_ISSUERCERT

CURLOPT_CAPATH

CURLOPT_CRLFILE

CURLOPT_CERTINFO

CURLOPT_RANDOM_FILE

CURLOPT_EGDSOCKET

CURLOPT_SSL_CIPHER_LIST

CURLOPT_SSL_SESSIONID_CACHE

CURLOPT_KRBLEVEL

CURLOPT_GSSAPI_DELEGATION

CURLOPT_SSH_AUTH_TYPES

CURLOPT_SSH_HOST_PUBLIC_KEY_MD5

CURLOPT_SSH_PUBLIC_KEYFILE

CURLOPT_SSH_PRIVATE_KEYFILE

CURLOPT_SSH_KNOWNHOSTS

CURLOPT_SSH_KEYFUNCTION

CURLOPT_SSH_KEYDATA

CURLOPT_PRIVATE

CURLOPT_SHARE

CURLOPT_NEW_FILE_PERMS

CURLOPT_NEW_DIRECTORY_PERMS

CURLOPT_TELNETOPTIONS

CURLE_OK

CURLE_UNKNOWN_OPTION

CURLE_NOT_BUILT_IN

CURLINFO_EFFECTIVE_URL

CURLINFO_RESPONSE_CODE

CURLINFO_HTTP_CONNECTCODE

CURLINFO_FILETIME

CURLINFO_TOTAL_TIME

CURLINFO_NAMELOOKUP_TIME

CURLINFO_CONNECT_TIME

CURLINFO_APPCONNECT_TIME

CURLINFO_PRETRANSFER_TIME

CURLINFO_STARTTRANSFER_TIME

CURLINFO_REDIRECT_TIME

CURLINFO_REDIRECT_COUNT

CURLINFO_REDIRECT_URL

CURLINFO_SIZE_UPLOAD

CURLINFO_SIZE_DOWNLOAD

CURLINFO_SPEED_DOWNLOAD

CURLINFO_SPEED_UPLOAD

CURLINFO_HEADER_SIZE

CURLINFO_REQUEST_SIZE

CURLINFO_SSL_VERIFYRESULT

CURLINFO_SSL_ENGINES

CURLINFO_CONTENT_LENGTH_DOWNLOAD

CURLINFO_CONTENT_LENGTH_UPLOAD

CURLINFO_CONTENT_TYPE

CURLINFO_PRIVATE

CURLINFO_HTTPAUTH_AVAIL

CURLINFO_PROXYAUTH_AVAIL

CURLINFO_OS_ERRNO

CURLINFO_NUM_CONNECTS

CURLINFO_PRIMARY_IP

CURLINFO_PRIMARY_PORT

CURLINFO_LOCAL_IP

CURLINFO_LOCAL_PORT

CURLINFO_COOKIELIST

CURLINFO_LASTSOCKET

CURLINFO_FTP_ENTRY_PATH

CURLINFO_CERTINFO

CURLINFO_CONDITION_UNMET

CURLINFO_RTSP_SESSION_ID

CURLINFO_RTSP_CLIENT_CSEQ

CURLINFO_RTSP_SERVER_CSEQ

CURLINFO_RTSP_CSEQ_RECV

CURLFORM_COPYNAME

CURLFORM_PTRNAME

CURLFORM_COPYCONTENTS

CURLFORM_PTRCONTENTS

CURLFORM_CONTENTSLENGTH

CURLFORM_FILECONTENT

CURLFORM_FILE

CURLFORM_CONTENTTYPE

CURLFORM_FILENAME

CURLFORM_BUFFER

CURLFORM_BUFFERPTR

CURLFORM_BUFFERLENGTH

CURLFORM_STREAM

CURLFORM_ARRAY

CURLFORM_CONTENTHEADER

CURL *curl_easy_init(void)

void curl_easy_cleanup(CURL * handle )

CURLcode curl_easy_setopt_1(CURL *handle, CURLoption option, int)

CURLcode curl_easy_setopt_2(CURL *handle, CURLoption option, const char *)

CURLcode curl_easy_setopt_3(CURL *handle, CURLoption option, void *)

CURLcode curl_easy_setopt_4(CURL *handle, CURLoption option, CURLLIST *)

CURLcode curl_easy_perform(CURL * easy_handle )

String *curl_easy_perform_silent(CURL * easy_handle )

CURLcode curl_easy_getinfo_1(CURL *handle, CURLINFO info, char **urlp)

CURLcode curl_easy_getinfo_2(CURL *handle, CURLINFO info, long *codep)

CURLcode curl_easy_getinfo_3(CURL *handle, CURLINFO info, double *timep)

CURLcode curl_easy_getinfo_4(CURL *handle, CURLINFO info, CURLLIST **engine_list)

CURLcode curl_easy_getinfo_5(CURL *handle, CURLINFO info, struct curl_certinfo *chainp)

CURLcode curl_easy_getinfo_6(CURL *handle, CURLINFO info, struct curl_tlssessioninfo **session)

char *curl_version(void)

time_t curl_getdate(char * datestring , time_t *now )

CURLFORMcode curl_formadd_1(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, const char *, CURLformoption)

CURLFORMcode curl_formadd_2(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, const char *,CURLformoption, const char *, CURLformoption)

CURLFORMcode curl_formadd_3(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, void *, CURLformoption)

CURLFORMcode curl_formadd_4(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, void *,CURLformoption, long , CURLformoption)

CURLFORMcode curl_formadd_5(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, void *,CURLformoption, long , CURLformoption, const char* , CURLformoption)

CURLFORMcode curl_formadd_6(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, const char *,CURLformoption, void * , CURLformoption, long , CURLformoption)

CURLFORMcode curl_formadd_7(struct curl_httppost **firstitem, struct curl_httppost **lastitem, CURLformoption, const char *, CURLformoption, struct curl_forms [], CURLformoption)

void curl_formfree(struct curl_httppost * form)

CURLLIST *curl_slist_append(CURLLIST * list, const char * string )

void curl_slist_free_all(CURLLIST * list)

char *curl_easy_escape( CURL * curl , const char * string , int length )

char *curl_easy_unescape( CURL * curl , const char * url , int inlength , int * outlength )

RingSockets 拡張機能

RingSockets 拡張機能の用法です。

TCP サーバ

用例 (TCP サーバのコード):

load "sockets.ring"

sock = socket(AF_INET,SOCK_STREAM,0)
bind(sock,"127.0.0.1",5050)
listen(sock,5)
ns = accept(sock)

send(ns,"Hello Client")
msg = recv(ns,1024)
? "Client Say >> " + msg
close(ns)
close(sock)
? "ソケットの接続を終了しました"

TCP クライアント

用例 (TCP クライアントのコード):

load "sockets.ring"

sock = socket(AF_INET,SOCK_STREAM)
connect(sock,"127.0.0.1",5050)

send(sock,"Hello Server")
msg = recv(sock,1024)
? "Server Say >> " + msg

close(sock)
? "ソケットの接続を終了しました"

関数

この拡張機能の関数一覧です。

socket(nAddressFamily, nConnectionType) -> SocketHandle
bind(pSocketHandle, cHost , nPort)
listen(pSocketHandle, nBacklog)
accept(pSocketHandle) -> pConnectionHandle
send(pConnectionHandle|pSocketHandle,cMessage)
sendto(pSocketHandle,cMessage)
recv(pConnectionHandle|pSocketHandle,nBuffer) -> cData
recvfrom(pSocketHandle, nBuffer) -> cData
connect(pSocketHandle, cHost , nPort) -> 成功時は <0> を返します
close(pSocketHandle|pConnectionHandle)
gethostbyname(cHostName) -> cIPAddress
gethostbyaddr(cIPAddress) -> aListOfHostInfo
gethostname() -> cHostName
getservbyname(cName) -> nPort
getservbyport(nPort) -> cName

用例:

load "sockets.ring"

host = gethostbyname("google.com")
? host
line()
? gethostbyaddr(host)
line()
? gethostname()
line()
? getservbyname("ftp")
line()
? getservbyport(21)

func line ? copy("=",30)

定数

アドレス系統:

AF_INET       #  IPV4 を使用します。
AF_INET6      #  IPV6 を使用します。

接続方法:

SOCK_STREAM   #  TCP プロトコルを使用します。
SOCK_DGRAM    #  UDP プロトコルを使用します。

Threads 拡張機能

Threads 拡張機能の用法を解説します。

スレッドの作成

用例 (1):

load "threads.ring"

func main

        t = new_thrd_t()
        thrd_create(t,"Hello()")
        res = 0
        thrd_join(t, :res)

func Hello

        ? "Hello() 関数からのメッセージ"

追加の用例

用例 (2):

load "threads.ring"

func main

        t = new_thrd_t()
        thrd_create(t,"Hello()")
        res = 0
        thrd_join(t, :res)

        t2 = new_thrd_t()
        thrd_create(t2,"Hello2()")
        res2 = 0
        thrd_join(t2, :res2)

        ? :done

func Hello

        ? "the Hello() 関数からのメッセージ"

func Hello2

        ? "the Hello2() 関数からのメッセージ"

用例 (3):

load "threads.ring"

func main

        nThreads = 2
        aList = list(nThreads)

        for x=1 to nThreads
                aList[x] = new_thrd_t()
                thrd_create(aList[x],"Hello("+x+")")
        next

        for x=1 to nThreads
                res= 0
                thrd_join(aList[x],:res)
        next

        ? :Done

        shutdown()

func Hello x

        for r=1 to 100
                ? "("+r+") Hello("+x+") 関数からのメッセージ"
        next

用例 (4):

load "threads.ring"

func main

        nThreads = 10
        aList = list(nThreads)

        for x=1 to nThreads
                aList[x] = new_thrd_t()
                thrd_create(aList[x],"Hello("+x+")")
        next

        for k=1 to nThreads
                 ? "*** 参加前: " + k + " *** "
                 res = 0
                 thrd_join(aList[K],:res)
                 ? "*** 参加後: " + k + " *** "
        next

        ? " ===== 完了 ========== "

func Hello x

        for r=1 to 100
                ? "("+r+") Hello("+x+") 関数からのメッセージ"
        next

リファレンス

定数:

TIME_UTC

TINYCTHREAD_VERSION_MAJOR

TINYCTHREAD_VERSION_MINOR

TINYCTHREAD_VERSION

thrd_error

thrd_success

thrd_timedout

thrd_busy

thrd_nomem

mtx_plain

mtx_timed

mtx_recursive

関数:

int mtx_init(mtx_t *mtx, int type)

void mtx_destroy(mtx_t *mtx)

int mtx_lock(mtx_t *mtx)

int mtx_timedlock(mtx_t *mtx, const struct timespec *ts)

int mtx_trylock(mtx_t *mtx)

int mtx_unlock(mtx_t *mtx)

int cnd_init(cnd_t *cond)

void cnd_destroy(cnd_t *cond)

int cnd_signal(cnd_t *cond)

int cnd_broadcast(cnd_t *cond)

int cnd_wait(cnd_t *cond, mtx_t *mtx)

int cnd_timedwait(cnd_t *cond, mtx_t *mtx, const struct timespec *ts)

int thrd_create(thrd_t *thr, const char *cEvent)

thrd_t thrd_current(void)

int thrd_detach(thrd_t thr)

int thrd_equal(thrd_t thr0, thrd_t thr1)

void thrd_exit(int res)

int thrd_join(thrd_t thr, int *res)

int thrd_sleep(const struct timespec *duration, struct timespec *remaining)

void thrd_yield(void)

void tss_delete(tss_t key)

void *tss_get(tss_t key)

int tss_set(tss_t key, void *val)

RingLibUI 拡張機能

RingLibUI 拡張機能の用法を解説します。

この拡張機能は Libui の全機能を扱えます。

この拡張機能は Ring による軽量 GUI アプリケーションの開発と配布で使えます (1 MB 以下)。

ランタイムファイルとファイルサイズ (Ring 1.14)

Ring.dll (448 KB)

Libui.dll (210 KB)

Ring_Libui.dll (633 KB)

圧縮前のファイル - 合計 : 1,291 KB

圧縮後のファイル (ZIP 形式) - 合計 : 504 KB

Hello World

load "libui.ring"

oWindow = uiNewWindow( "Hello, World", 400, 400, True)
uiWindowOnClosing(oWindow,"closeApp()")

btn1 = uiNewButton("SayHello")
uiButtonOnClicked(btn1,"sayHello()")

btn2 = uiNewButton("Close")
uiButtonOnClicked(btn2,"closeApp()")

g = uiNewGrid() uiGridSetPadded(g, 1) uiWindowSetChild(oWindow, g)
uiGridAppend(g, btn1, 0, 0, 2, 1, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, btn2, 0, 1, 1, 1, 1, uiAlignFill, 0, uiAlignFill)

uiControlShow( oWindow )
uiMain()

func sayHello
        uiMsgBox(oWindow,"Hi","Hello")

func closeApp
        uiQuit()

スクリーンショット:

あいさつをする

load "libui.ring"

oWindow = uiNewWindow( "Say Hello", 500, 80, True)
uiWindowOnClosing(oWindow,"closeApp()")

lbl1 = uiNewLabel("Name: ")
text1 = uiNewEntry()

btn1 = uiNewButton("SayHello")
uiButtonOnClicked(btn1,"sayHello()")

btn2 = uiNewButton("Close")
uiButtonOnClicked(btn2,"closeApp()")

lbl2 = uiNewLabel("")

g = uiNewGrid() uiGridSetPadded(g, 1) uiWindowSetChild(oWindow, g)
uiGridAppend(g, lbl1, 0, 0, 2, 1, 1, uiAlignCenter, 0, uiAlignCenter)
uiGridAppend(g, text1, 1, 0, 2, 1, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, btn1, 0, 1, 1, 2, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, btn2, 2, 1, 1, 1, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, lbl2, 0, 3, 2, 1, 1, uiAlignCenter, 0, uiAlignCenter)

uiControlShow( oWindow )
uiMain()

func sayHello
        uiLabelSetText(lbl2,"Hello " + uiEntryText(text1))

func closeApp
        uiQuit()

スクリーンショット:

コントロールの見本帳

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

# グローバル変数

        slider = NULL
        spinbox = NULL
        pBar = NULL
        entryOpen = NULL
        entrySave = NULL

# メインウィンドウ

        mainwin = uiNewWindow("libui Control Gallery", 640, 480, 1)
        uiWindowOnClosing(mainwin, "onClosing()")

        tab = uiNewTab()
        uiWindowSetChild(mainwin, tab)
        uiWindowSetMargined(mainwin, 1)

        uiTabAppend(tab, "Basic Controls", makeBasicControlsPage())
        uiTabSetMargined(tab, 0, 1)

        uiTabAppend(tab, "Numbers and Lists", makeNumbersPage())
        uiTabSetMargined(tab, 1, 1)

        uiTabAppend(tab, "Data Choosers", makeDataChoosersPage())
        uiTabSetMargined(tab, 2, 1)

        uiControlShow(mainwin)
        uiMain()

func onClosing
        uiQuit()

func makeDataChoosersPage

        hbox = uiNewHorizontalBox()
        uiBoxSetPadded(hbox, 1)

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)
        uiBoxAppend(hbox, vbox, 0)

        uiBoxAppend(vbox,
                uiNewDatePicker(),
                0)
        uiBoxAppend(vbox,
                uiNewTimePicker(),
                0)
        uiBoxAppend(vbox,
                uiNewDateTimePicker(),
                0)

        uiBoxAppend(vbox,
                uiNewFontButton(),
                0)
        uiBoxAppend(vbox,
                uiNewColorButton(),
                0)

        uiBoxAppend(hbox,
                uiNewVerticalSeparator(),
                0)

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)
        uiBoxAppend(hbox, vbox, 1)

        grid = uiNewGrid()
        uiGridSetPadded(grid, 1)
        uiBoxAppend(vbox, grid, 0)

        button = uiNewButton("Open File")
        entryOpen = uiNewEntry()
        uiEntrySetReadOnly(entryOpen, 1)
        uiButtonOnClicked(button, "onOpenFileClicked()")
        uiGridAppend(grid, button,
                0, 0, 1, 1,
                0, uiAlignFill, 0, uiAlignFill)
        uiGridAppend(grid, entryOpen,
                1, 0, 1, 1,
                1, uiAlignFill, 0, uiAlignFill)

        button = uiNewButton("Save File")
        entrySave = uiNewEntry()
        uiEntrySetReadOnly(entrySave, 1)
        uiButtonOnClicked(button, "onSaveFileClicked()")
        uiGridAppend(grid, button,
                0, 1, 1, 1,
                0, uiAlignFill, 0, uiAlignFill)
        uiGridAppend(grid, entrySave,
                1, 1, 1, 1,
                1, uiAlignFill, 0, uiAlignFill)

        msggrid = uiNewGrid()
        uiGridSetPadded(msggrid, 1)
        uiGridAppend(grid, msggrid,
                0, 2, 2, 1,
                0, uiAlignCenter, 0, uiAlignStart)

        button = uiNewButton("Message Box")
        uiButtonOnClicked(button, "onMsgBoxClicked()")
        uiGridAppend(msggrid, button,
                0, 0, 1, 1,
                0, uiAlignFill, 0, uiAlignFill)
        button = uiNewButton("Error Box")
        uiButtonOnClicked(button, "onMsgBoxErrorClicked()")
        uiGridAppend(msggrid, button,
                1, 0, 1, 1,
                0, uiAlignFill, 0, uiAlignFill)

        return hbox

func makeNumbersPage

        hbox = uiNewHorizontalBox()
        uiBoxSetPadded(hbox, 1)

        group = uiNewGroup("Numbers")
        uiGroupSetMargined(group, 1)
        uiBoxAppend(hbox, group, 1)

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)
        uiGroupSetChild(group, vbox)

        spinbox = uiNewSpinbox(0, 100)
        slider = uiNewSlider(0, 100)
        pbar = uiNewProgressBar()
        uiSpinboxOnChanged(spinbox, "onSpinboxChanged()")
        uiSliderOnChanged(slider, "onSliderChanged()")
        uiBoxAppend(vbox, spinbox, 0)
        uiBoxAppend(vbox, slider, 0)
        uiBoxAppend(vbox, pbar, 0)

        ip = uiNewProgressBar()
        uiProgressBarSetValue(ip, -1)
        uiBoxAppend(vbox, ip, 0)

        group = uiNewGroup("Lists")
        uiGroupSetMargined(group, 1)
        uiBoxAppend(hbox, group, 1)

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)
        uiGroupSetChild(group, vbox)

        cbox = uiNewCombobox()
        uiComboboxAppend(cbox, "Combobox Item 1")
        uiComboboxAppend(cbox, "Combobox Item 2")
        uiComboboxAppend(cbox, "Combobox Item 3")
        uiBoxAppend(vbox, cbox, 0)

        ecbox = uiNewEditableCombobox()
        uiEditableComboboxAppend(ecbox, "Editable Item 1")
        uiEditableComboboxAppend(ecbox, "Editable Item 2")
        uiEditableComboboxAppend(ecbox, "Editable Item 3")
        uiBoxAppend(vbox, ecbox, 0)

        rb = uiNewRadioButtons()
        uiRadioButtonsAppend(rb, "Radio Button 1")
        uiRadioButtonsAppend(rb, "Radio Button 2")
        uiRadioButtonsAppend(rb, "Radio Button 3")
        uiBoxAppend(vbox, rb, 0)

        return hbox

func makeBasicControlsPage

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)

        hbox = uiNewHorizontalBox()
        uiBoxSetPadded(hbox, 1)
        uiBoxAppend(vbox, hbox, 0)

        uiBoxAppend(hbox,
                uiNewButton("Button"),
                0)
        uiBoxAppend(hbox,
                uiNewCheckbox("Checkbox"),
                0)

        uiBoxAppend(vbox,
                uiNewLabel("This is a label. Right now, labels can only span one line."),
                0)

        uiBoxAppend(vbox,
                uiNewHorizontalSeparator(),
                0)

        group = uiNewGroup("Entries")
        uiGroupSetMargined(group, 1)
        uiBoxAppend(vbox, group, 1)

        entryForm = uiNewForm()
        uiFormSetPadded(entryForm, 1)
        uiGroupSetChild(group, entryForm)

        uiFormAppend(entryForm,
                "Entry",
                uiNewEntry(),
                0)
        uiFormAppend(entryForm,
                "Password Entry",
                uiNewPasswordEntry(),
                0)
        uiFormAppend(entryForm,
                "Search Entry",
                uiNewSearchEntry(),
                0)
        uiFormAppend(entryForm,
                "Multiline Entry",
                uiNewMultilineEntry(),
                1)
        uiFormAppend(entryForm,
                "Multiline Entry No Wrap",
                uiNewNonWrappingMultilineEntry(),
                1)

        return vbox

func onSpinboxChanged
        s = uiEventSpinBox()
        uiSliderSetValue(slider, uiSpinboxValue(s));
        uiProgressBarSetValue(pbar, uiSpinboxValue(s));

func onSliderChanged
        s = uiEventSlider()
        uiSpinboxSetValue(spinbox, uiSliderValue(s));
        uiProgressBarSetValue(pbar, uiSliderValue(s));

func onOpenFileClicked
        filename = uiOpenFile(mainwin)
        if ISNULL(filename)
                uiEntrySetText(entryOpen, "(cancelled)")
                return
        ok
        uiEntrySetText(entryOpen, filename)
        uiFreeText(filename)

func onSaveFileClicked
        filename = uiSaveFile(mainwin)
        if ISNULL(filename)
                uiEntrySetText(entrySave, "(cancelled)")
                return
        ok
        uiEntrySetText(entrySave, filename)
        uiFreeText(filename)

func onMsgBoxClicked
        uiMsgBox(mainwin,
                "This is a normal message box.",
                "More detailed information can be shown here.")

func onMsgBoxErrorClicked
        uiMsgBoxError(mainwin,
                "This message box describes an error.",
                "More detailed information can be shown here.")

スクリーンショット:

なにか言ってみる

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

w = uiNewWindow("Hello", 320, 240, 0)
uiWindowSetMargined(w, 1)

b = uiNewVerticalBox()
uiBoxSetPadded(b, 1)
uiWindowSetChild(w, b)

e = uiNewMultilineEntry()
uiMultilineEntrySetReadOnly(e, 1)

btn = uiNewButton("Say Something")
uiButtonOnClicked(btn, "saySomething()")
uiBoxAppend(b, btn, 0)

uiBoxAppend(b, e, 1)

uiTimer(1000, "sayTime()")

uiWindowOnClosing(w, "onClosing()")
uiControlShow(w)
uiMain()

func saySomething
        uiMultilineEntryAppend(e, "Saying something"+nl)

func sayTime
        uiMultilineEntryAppend(e, Time()+nl)

func onClosing
        uiQuit()

スクリーンショット:

メニューバーの用法

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

# メニューバーの作成

        fileMenu = uiNewMenu("File")
        newItem = uiMenuAppendItem(fileMenu, "New")
        openItem = uiMenuAppendItem(fileMenu, "Open")
        uiMenuAppendSeparator(fileMenu)
        shouldQuitItem = uiMenuAppendCheckItem(fileMenu, "Should Quit")
        quitItem = uiMenuAppendQuitItem(fileMenu)

        editMenu = uiNewMenu("Edit")
        undoItem = uiMenuAppendItem(editMenu, "Undo")
        uiMenuItemDisable(undoItem)
        uiMenuAppendSeparator(editMenu)
        checkItem = uiMenuAppendCheckItem(editMenu, "Check Me\tTest")
        accelItem = uiMenuAppendItem(editMenu, "A&ccele&&rator T_es__t")
        prefsItem = uiMenuAppendPreferencesItem(editMenu)

        testMenu = uiNewMenu("Test")
        enabledItem = uiMenuAppendCheckItem(testMenu, "Enable Below Item")
        uiMenuItemSetChecked(enabledItem, 1)
        enableThisItem = uiMenuAppendItem(testMenu, "This Will Be Enabled")
        uiMenuItemOnClicked(enabledItem, "enableItemTest(enableThisItem)")
        forceCheckedItem = uiMenuAppendItem(testMenu, "Force Above Checked")
        uiMenuItemOnClicked(forceCheckedItem, "forceOn()")
        forceUncheckedItem = uiMenuAppendItem(testMenu, "Force Above Unchecked")
        uiMenuItemOnClicked(forceUncheckedItem, "forceOff()")
        uiMenuAppendSeparator(testMenu)
        whatWindowItem = uiMenuAppendItem(testMenu, "What Window?")
        uiMenuItemOnClicked(whatWindowItem, "whatWindow()")

        moreTestsMenu = uiNewMenu("More Tests")
        quitEnabledItem = uiMenuAppendCheckItem(moreTestsMenu, "Quit Item Enabled")
        uiMenuItemSetChecked(quitEnabledItem, 1)
        prefsEnabledItem = uiMenuAppendCheckItem(moreTestsMenu, "Preferences Item Enabled")
        uiMenuItemSetChecked(prefsEnabledItem, 1)
        aboutEnabledItem = uiMenuAppendCheckItem(moreTestsMenu, "About Item Enabled")
        uiMenuItemSetChecked(aboutEnabledItem, 1)
        uiMenuAppendSeparator(moreTestsMenu)
        checkEnabledItem = uiMenuAppendCheckItem(moreTestsMenu, "Check Me Item Enabled")
        uiMenuItemSetChecked(checkEnabledItem, 1)

        multiMenu = uiNewMenu("Multi")
        uiMenuAppendSeparator(multiMenu)
        uiMenuAppendSeparator(multiMenu)
        uiMenuAppendItem(multiMenu, "Item && Item && Item")
        uiMenuAppendSeparator(multiMenu)
        uiMenuAppendSeparator(multiMenu)
        uiMenuAppendItem(multiMenu, "Item __ Item __ Item")
        uiMenuAppendSeparator(multiMenu)
        uiMenuAppendSeparator(multiMenu)

        helpMenu = uiNewMenu("Help")
        helpItem = uiMenuAppendItem(helpMenu, "Help")
        aboutItem = uiMenuAppendAboutItem(helpMenu)

        uiMenuItemOnClicked(quitEnabledItem, "enableItemTest(quitItem)")
        uiMenuItemOnClicked(prefsEnabledItem, "enableItemTest(prefsItem)")
        uiMenuItemOnClicked(aboutEnabledItem, "enableItemTest(aboutItem)")
        uiMenuItemOnClicked(checkEnabledItem, "enableItemTest(checkItem)")

# ウィンドウの作成

        oWindow = uiNewWindow( "Using the Menubar", 400, 400, True)
        uiWindowOnClosing(oWindow,"closeApp()")

        uiControlShow( oWindow )
        uiMain()

func enableItemTest(data)
        item = uiEventMenuItem()
        if uiMenuItemChecked(item)
                uiMenuItemEnable(data)
        else
                uiMenuItemDisable(data)
        ok

func forceOn
        uiMenuItemSetChecked(enabledItem, 1)

func forceOff
        uiMenuItemSetChecked(enabledItem, 0)

func whatWindow
        ? "menu item clicked on window "
        ? oWindow

func closeApp
        uiQuit()

スクリーンショット:

サンプル集の描画

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 420, 450, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        Rectangle(0, 0, uiEventAreaWidth(), uiEventAreaHeight(), colorGray)
        Rectangle(0, 0, 400, 400, colorWhite)
        Rectangle(10, 10, 20, 20, colorRed)
        Rectangle(30, 30, 30, 30, colorGreen)
        Rectangle(60, 60, 40, 40, colorBlue)

# Rectangle 関数は RingLibUI の uiRectangle() 関数に相当します。
func Rectangle x,y,width,height,color
        oContext = uiEventContext()
        oBrush = uiNewSolidBrush(color)
        oPath = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathAddRectangle(oPath, x, y, width, height)
        uiDrawPathEnd(oPath)
        uiDrawFill(oContext, oPath, oBrush)
        uiDrawFreePath(oPath)

func closeApp
        uiQuit()

スクリーンショット:

グラデーションの描画

load "libui.ring"

oWindow = uiNewWindow( "Draw Gradient", 500, 500, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()
        uiRectangle(0, 0, nWidth, nHeight, colorBlue)
        for y=0 to 255 step 2
                customColor = y
                uiRectangle(0, y, nWidth, y+1, customColor)
        next

func closeApp
        uiQuit()

スクリーンショット:

ヒストグラム

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

datapoints      = list(10)
currentPoint    = -1

// メートル換算
xoffLeft        = 20                    /* ヒストグラムの余白 */
yoffTop         = 20
xoffRight       = 20
yoffBottom      = 20
pointRadius     = 5

histogram       = NULL
mainwin         = NULL
colorButton     = NULL

func pointLocations width, height, xs, ys
        xincr = width / 9               // 処理後に最終地点を 10 - 1 します
        yincr = height / 100
        for i = 1 to 10
                // 点の値を取得
                n = uiSpinboxValue(datapoints[i])
                // y=0 は上部ですが n=0 は下部であるため、反転処理が必要です。
                n = 100 - n;
                xs[i] = xincr * i
                ys[i] = yincr * n
        next

func constructGraph width, height, extend
        xs = list(10)
        ys = list(10)
        pointLocations(width, height, xs, ys)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, xs[1], ys[1])
        for i = 2 to 10
                uiDrawPathLineTo(path, xs[i], ys[i])
        next
        if extend
                uiDrawPathLineTo(path, width, height)
                uiDrawPathLineTo(path, 0, height)
                uiDrawPathCloseFigure(path)
        ok
        uiDrawPathEnd(path)
        return path

func graphSize clientWidth, clientHeight
        graphWidth = clientWidth - xoffLeft - xoffRight
        graphHeight = clientHeight - yoffTop - yoffBottom
        return [graphWidth,graphHeight]

func handlerDraw
        // 白色で領域を塗りつぶす
        Brush = uiNewSolidBrush(0)
        setSolidBrush(brush, colorWhite, 1.0)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathAddRectangle(path, 0, 0, uiEventAreaWidth(), uiEventAreaHeight())
        uiDrawPathEnd(path)
        uiDrawFill(uiEventContext(), path, brush)
        uiDrawFreePath(path)

        // 寸法の解決
        aOut = graphSize(uiEventAreaWidth(), uiEventAreaHeight())
        graphWidth = aOut[1]
        graphHeight = aOut[2]

        sp = new_managed_uiDrawStrokeParams()
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_Thickness(sp,2)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)

        // 軸の描画
        setSolidBrush(brush, colorBlack, 1.0)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path,
                xoffLeft, yoffTop)
        uiDrawPathLineTo(path,
                xoffLeft, yoffTop + graphHeight)
        uiDrawPathLineTo(path,
                xoffLeft + graphWidth, yoffTop + graphHeight)
        uiDrawPathEnd(path)
        uiDrawStroke(uiEventContext(), path, brush, sp)
        uiDrawFreePath(path)

        // 座標空間 (0, 0) はグラフの左上角へ変換します
        m = new_managed_uiDrawMatrix()
        uiDrawMatrixSetIdentity(m)
        uiDrawMatrixTranslate(m, xoffLeft, yoffTop)
        uiDrawTransform(uiEventContext(), m)

        // グラフの色を取得してブラシの設定を行います

        GraphR=0
        GraphG=0
        GraphB=0
        GraphA=0

        uiColorButtonColor(colorButton, :graphR,
                 :graphG,
                 :graphB,
                 :graphA)

        uiSetBrushType(brush,uiDrawBrushTypeSolid)
        uiSetBrushR(brush,graphR)
        uiSetBrushG(brush,graphG)
        uiSetBrushB(brush,graphB)

        // 以降の brush->A は塗りつぶしとストロークの値が異なる設定となります

        // 以降のグラフの線はグラフを塗りつぶしたものを作成します
        path = constructGraph(graphWidth, graphHeight, 1)

  uiSetBrushA(brush, graphA / 2)
        uiDrawFill(uiEventContext(), path, brush)
        uiDrawFreePath(path)

        // ヒストグラムの線描
        path = constructGraph(graphWidth, graphHeight, 0)
        uiSetBrushA(brush,graphA)
        uiDrawStroke(uiEventContext(), path, brush, sp)
        uiDrawFreePath(path)

        // 描画先の点はカーソルと対応します。
        if currentPoint != -1
                xs = list(10)
                ys = list(10)
                pointLocations(graphWidth, graphHeight, xs, ys)
                path = uiDrawNewPath(uiDrawFillModeWinding)

                uiDrawPathNewFigureWithArc(path,
                        xs[currentPoint], ys[currentPoint],
                        pointRadius,
                        0, 6.23,                // TODO: 円周率π
                        0)
                uiDrawPathEnd(path)
                // ヒストグラムの線描に同じブラシを使います
                uiDrawFill(uiEventContext(), path, brush)
                uiDrawFreePath(path)
        ok

func inPoint x, y, xtest, ytest
        // TODO: 変更に行列を使う
        x -= xoffLeft
        y -= yoffTop
        return (x >= xtest - pointRadius) &&
                (x <= xtest + pointRadius) &&
                (y >= ytest - pointRadius) &&
                (y <= ytest + pointRadius)

func handlerMouseEvent
        xs = list(10)
        ys = list(10)

        aOut = graphSize(uiEventAreaWidth(), uiEventAreaHeight())
        graphWidth = aOut[1]
        graphHeight = aOut[2]

        pointLocations(graphWidth, graphHeight, xs, ys)

        e = uiEventAreaMouseEvent()
        eX = get_uiAreaMouseEvent_X(e)
        eY = get_uiAreaMouseEvent_Y(e)
        for i=1 to 10
                if inPoint(eX, eY, xs[i], ys[i])
                        exit
                ok
        next
        if i = 11               // 点ではありません
                i = -1
        ok

        currentPoint = i

        uiAreaQueueRedrawAll(histogram)

func onDatapointChanged
        uiAreaQueueRedrawAll(histogram)

func onColorChanged
        uiAreaQueueRedrawAll(histogram);

func onClosing
        uiControlDestroy(uiControl(mainwin))
        uiQuit()
        return 0

func shouldQuit
        uiControlDestroy(uiControl(mainwin))

func main

        uiOnShouldQuit("shouldQuit()")

        mainwin = uiNewWindow("Histogram Sample", 800, 480, 1)
        uiWindowSetMargined(mainwin, 1)
        uiWindowOnClosing(mainwin, "onClosing()")

        Brush = uiNewSolidBrush(0)

        hbox = uiNewHorizontalBox()
        uiBoxSetPadded(hbox, 1)
        uiWindowSetChild(mainwin, uiControl(hbox))

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)
        uiBoxAppend(hbox, uiControl(vbox), 0)

        srandom(clock());
        for i=1 to 10
                datapoints[i] = uiNewSpinbox(0, 100)
                uiSpinboxSetValue(datapoints[i], random() % 101)
                uiSpinboxOnChanged(datapoints[i], "onDatapointChanged()")
                uiBoxAppend(vbox, uiControl(datapoints[i]), 0)
        next

        colorButton = uiNewColorButton()

        setSolidBrush(brush, colorDodgerBlue, 1.0)

        uiColorButtonSetColor(colorButton,
                uiBrushR(brush),
                uiBrushG(brush),
                uiBrushB(brush),
                uiBrushA(brush))

        uiColorButtonOnChanged(colorButton, "onColorChanged()")
        uiBoxAppend(vbox, uiControl(colorButton), 0)

        oAreaHandler = uiNewAreaHandler("handlerDraw()","handlerMouseEvent()","","","")
        histogram = uiNewArea(oAreaHandler)
        uiBoxAppend(hbox, uiControl(histogram), 1)

        uiControlShow(uiControl(mainwin))
        uiMain()

スクリーンショット:

テキストの描画

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

# グローバル変数
        mainwin         = NULL
        area            = NULL
        handler         = NULL
        fontButton      = NULL
        alignment       = NULL
        attrstr         = NULL

func appendWithAttribute what, attr, attr2
        nStart = uiAttributedStringLen(attrstr)
        nEnd = nStart + len(what)
        uiAttributedStringAppendUnattributed(attrstr, what)
        uiAttributedStringSetAttribute(attrstr, attr, nStart, nEnd)
        if ! ISNULL(attr2)
                uiAttributedStringSetAttribute(attrstr, attr2, nStart, nEnd)
        ok

func makeAttributedString

        attrstr = uiNewAttributedString("Drawing strings with libui is done with the uiAttributedString and uiDrawTextLayout objects."+nl+
                "uiAttributedString lets you have a variety of attributes: ")

        attr = uiNewFamilyAttribute("Courier New")
        appendWithAttribute("font family", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewSizeAttribute(18)
        appendWithAttribute("font size", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewWeightAttribute(uiTextWeightBold)
        appendWithAttribute("font weight", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewItalicAttribute(uiTextItalicItalic)
        appendWithAttribute("font italicness", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewStretchAttribute(uiTextStretchCondensed)
        appendWithAttribute("font stretch", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewColorAttribute(0.75, 0.25, 0.5, 0.75)
        appendWithAttribute("text color", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewBackgroundAttribute(0.5, 0.5, 0.25, 0.5)
        appendWithAttribute("text background color", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        attr = uiNewUnderlineAttribute(uiUnderlineSingle)
        appendWithAttribute("underline style", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, ", ")

        uiAttributedStringAppendUnattributed(attrstr, "and ")
        attr = uiNewUnderlineAttribute(uiUnderlineDouble)
        attr2 = uiNewUnderlineColorAttribute(uiUnderlineColorCustom, 1.0, 0.0, 0.5, 1.0)
        appendWithAttribute("underline color", attr, attr2)
        uiAttributedStringAppendUnattributed(attrstr, ". ")

        uiAttributedStringAppendUnattributed(attrstr, "Furthermore, there are attributes allowing for ")
        attr = uiNewUnderlineAttribute(uiUnderlineSuggestion)
        attr2 = uiNewUnderlineColorAttribute(uiUnderlineColorSpelling, 0, 0, 0, 0)
        appendWithAttribute("special underlines for indicating spelling errors", attr, attr2)
        uiAttributedStringAppendUnattributed(attrstr, " (and other types of errors) ")

        uiAttributedStringAppendUnattributed(attrstr, "and control over OpenType features such as ligatures (for instance, ")
        otf = uiNewOpenTypeFeatures()
        uiOpenTypeFeaturesAdd(otf, ASCII('l'), ASCII('i'), ASCII('g'), ASCII('a'), 0)
        attr = uiNewFeaturesAttribute(otf)
        appendWithAttribute("afford", attr, NULL)
        uiAttributedStringAppendUnattributed(attrstr, " vs. ")
        uiOpenTypeFeaturesAdd(otf, ASCII('l'), ASCII('i'), ASCII('g'), ASCII('a'), 1)
        attr = uiNewFeaturesAttribute(otf)
        appendWithAttribute("afford", attr, NULL)
        uiFreeOpenTypeFeatures(otf)
        uiAttributedStringAppendUnattributed(attrstr, ").\n")

        uiAttributedStringAppendUnattributed(attrstr, "Use the controls opposite to the text to control properties of the text.")

func handlerDraw

        defaultfont = new_uiFontDescriptor()
        params = new_uiDrawTextLayoutParams()

        set_uiDrawTextLayoutParams_String(params,attrstr)
        uiFontButtonFont(fontButton, defaultFont)
        set_uiDrawTextLayoutParams_DefaultFont(params,defaultFont)
        set_uiDrawTextLayoutParams_Width(params,uiEventAreaWidth())
        set_uiDrawTextLayoutParams_Align(params,uiComboboxSelected(alignment))
        textLayout = uiDrawNewTextLayout(params)
        uiDrawText(uiEventContext(), textLayout, 0, 0)
        uiDrawFreeTextLayout(textLayout)
        uiFreeFontButtonFont(defaultFont)

func onFontChanged
        uiAreaQueueRedrawAll(area)

func onComboboxSelected
        uiAreaQueueRedrawAll(area)

func onClosing
        uiControlDestroy(mainwin)
        uiQuit()

func shouldQuit
        uiControlDestroy(mainwin)

func main

        uiOnShouldQuit("shouldQuit()")

        makeAttributedString()

        mainwin = uiNewWindow("libui Text-Drawing Example", 640, 480, 1)
        uiWindowSetMargined(mainwin, 1)
        uiWindowOnClosing(mainwin, "onClosing()")

        hbox = uiNewHorizontalBox()
        uiBoxSetPadded(hbox, 1)
        uiWindowSetChild(mainwin, hbox)

        vbox = uiNewVerticalBox()
        uiBoxSetPadded(vbox, 1)
        uiBoxAppend(hbox, vbox, 0)

        fontButton = uiNewFontButton()
        uiFontButtonOnChanged(fontButton, "onFontChanged()")
        uiBoxAppend(vbox, fontButton, 0)

        form = uiNewForm()
        uiFormSetPadded(form, 1)
        uiBoxAppend(vbox, form, 0)

        alignment = uiNewCombobox()
        uiComboboxAppend(alignment, "Left")
        uiComboboxAppend(alignment, "Center")
        uiComboboxAppend(alignment, "Right")
        uiComboboxSetSelected(alignment, 0)             //左列から開始
        uiComboboxOnSelected(alignment, "onComboboxSelected()")
        uiFormAppend(form, "Alignment", alignment, 0)

        oAreaHandler = uiNewAreaHandler("handlerDraw()","","","","")
        area = uiNewArea(oAreaHandler)
        uiBoxAppend(hbox, area, 1)

        uiControlShow(mainwin)
        uiMain()
        uiFreeAttributedString(attrstr)

スクリーンショット:

追加サンプル集の描画

用例 (1):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 400, 400, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()
        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()
        source = uiNewSolidBrush(colorBlue)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)
        set_uiDrawStrokeParams_Thickness(sp,40.96)

        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 76.8, 84.48)
        uiDrawPathLineTo(path, 76.8 + 51.2, 84.48 -51.2)
        uiDrawPathLineTo(path, 76.8 + 51.2 + 51.2, 84.48 - 51.2 + 51.2)
        uiDrawPathEnd(path)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 76.8, 161.28)
        uiDrawPathLineTo(path, 76.8 + 51.2, 161.28 -51.2)
        uiDrawPathLineTo(path, 76.8 + 51.2 + 51.2, 161.28 - 51.2 + 51.2)
        uiDrawPathEnd(path)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinBevel)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 76.8, 238.08)
        uiDrawPathLineTo(path, 76.8 + 51.2, 238.08 -51.2)
        uiDrawPathLineTo(path, 76.8 + 51.2 + 51.2, 238.08 - 51.2 + 51.2)
        uiDrawPathEnd(path)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinRound)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

用例 (2):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 400, 400, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()

        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()
        source = uiNewSolidBrush(colorBlack)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)
        set_uiDrawStrokeParams_Thickness(sp,30)

        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 64.0, 50.0)
        uiDrawPathLineTo(path, 64.0, 200.0)
        uiDrawPathEnd(path)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapRound)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 128.0, 50.0)
        uiDrawPathLineTo(path, 128.0, 200.0)
        uiDrawPathEnd(path)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapSquare)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 192.0, 50.0)
        uiDrawPathLineTo(path, 192.0, 200.0)
        uiDrawPathEnd(path)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        // 補助線の描画
        // 正方形の上限を守るためにウェブサイトに掲載されている基準画像と一致させる。
        uiCrSourceRGBA(source, 1, 0.2, 0.2, 1)
        set_uiDrawStrokeParams_Thickness(sp,2.56)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, 64.0, 50.0)
        uiDrawPathLineTo(path, 64.0, 200.0)
        uiDrawPathNewFigure(path, 128.0, 50.0)
        uiDrawPathLineTo(path, 128.0, 200.0)
        uiDrawPathNewFigure(path, 192.0, 50.0)
        uiDrawPathLineTo(path, 192.0, 200.0)
        uiDrawPathEnd(path)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

用例 (3):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 260, 300, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()

        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()

        x         = 25.6
        y         = 25.6
        width         = 204.8
        height        = 204.8
        aspect        = 1.0
        corner_radius = height

        radius = corner_radius / aspect
        degrees = uiPi / 180.0

        source = uiNewSolidBrush(colorBlue)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)
        set_uiDrawStrokeParams_Thickness(sp,30)

        path = uiDrawNewPath(uiDrawFillModeWinding)

        // 右上角
        uiDrawPathNewFigureWithArc(path,
                x + width - radius, y + radius,
                radius,
                -90 * degrees, uiPi / 2,
                0)
        // 右下角
        uiDrawPathArcTo(path,
                x + width - radius, y + height - radius,
                radius,
                0 * degrees, uiPi / 2,
                0)
        // 左下角
        uiDrawPathArcTo(path,
                x + radius, y + height - radius,
                radius,
                90 * degrees, uiPi / 2,
                0)
        // 左上角
        uiDrawPathArcTo(path,
                x + radius, y + radius,
                radius,
                180 * degrees, uiPi / 2,
                0)
        uiDrawPathCloseFigure(path)
        uiDrawPathEnd(path)

        uiCrSourceRGBA(source, 0.5, 0.5, 1, 1)
        uiDrawFill(uiEventContext(), path, source)
        uiCrSourceRGBA(source, 0.5, 0, 0, 0.5)
        set_uiDrawStrokeParams_Thickness(sp,10)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

用例 (4):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 300, 300, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()

        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()

        source = uiNewSolidBrush(colorBlue)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)

        path = uiDrawNewPath(uiDrawFillModeWinding)

        uiDrawPathNewFigure(path, 50.0, 75.0)
        uiDrawPathLineTo(path, 200.0, 75.0)

        uiDrawPathNewFigure(path, 50.0, 125.0)
        uiDrawPathLineTo(path, 200.0, 125.0)

        uiDrawPathNewFigure(path, 50.0, 175.0)
        uiDrawPathLineTo(path, 200.0, 175.0)
        uiDrawPathEnd(path)

        set_uiDrawStrokeParams_Thickness(sp,30)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapRound)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

用例 (5):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 260, 300, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()

        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()
        m = new_uiDrawMatrix()
        source = uiNewSolidBrush(colorBlue)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)
        set_uiDrawStrokeParams_Thickness(sp,6)

        path = uiDrawNewPath(uiDrawFillModeAlternate)
        uiDrawPathAddRectangle(path, 12, 12, 232, 70)
        uiDrawPathNewFigureWithArc(path,
                64, 64,
                40,
                0, 2*uiPi,
                0)
        uiDrawPathNewFigureWithArc(path,
                192, 64,
                40,
                0, -2*uiPi,
                1)
        uiDrawPathEnd(path)

        uicrsourcergba(source, 0, 0.7, 0, 1)
        uiDrawFill(uiEventContext(), path, source)
        uicrsourcergba(source, 0, 0, 0, 1)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        uiDrawMatrixSetIdentity(m)
        uiDrawMatrixTranslate(m, 0, 128)
        uiDrawTransform(uiEventContext(), m)

        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathAddRectangle(path, 12, 12, 232, 70)
        uiDrawPathNewFigureWithArc(path,
                64, 64,
                40,
                0, 2*uiPi,
                0)
        uiDrawPathNewFigureWithArc(path,
                192, 64,
                40,
                0, -2*uiPi,
                1)
        uiDrawPathEnd(path)

        uicrsourcergba(source, 0, 0, 0.9, 1)
        uiDrawFill(uiEventContext(), path, source)
        uicrsourcergba(source, 0, 0, 0, 1)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

用例 (6):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 260, 300, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()

        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()
        source = uiNewSolidBrush(colorBlue)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)

        path = uiDrawNewPath(uiDrawFillModeWinding)

        uiDrawPathNewFigure(path, 128.0, 25.6)
        uiDrawPathLineTo(path, 230.4, 230.4)
        uiDrawPathLineTo(path, 230.4 - 102.4, 230.4 + 0.0)
        uiDrawPathBezierTo(path, 51.2, 230.4, 51.2, 128.0, 128.0, 128.0)
        uiDrawPathCloseFigure(path)

        uiDrawPathNewFigure(path, 64.0, 25.6)
        uiDrawPathLineTo(path, 64.0 + 51.2, 25.6 + 51.2)
        uiDrawPathLineTo(path, 64.0 + 51.2 -51.2, 25.6 + 51.2 + 51.2)
        uiDrawPathLineTo(path, 64.0 + 51.2 -51.2 -51.2, 25.6 + 51.2 + 51.2 -51.2)
        uiDrawPathCloseFigure(path)

        uiDrawPathEnd(path)

        set_uiDrawStrokeParams_Thickness(sp,10)
        uicrsourcergba(source, 0, 0, 1, 1)
        uiDrawFill(uiEventContext(), path, source)
        uicrsourcergba(source, 0, 0, 0, 1)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

用例 (7):

# このサンプルは Ring 移植版です。
# 原作のサンプルはこちらから : https://github.com/andlabs/libui

load "libui.ring"

oWindow = uiNewWindow( "Drawing Sample", 260, 300, True)
uiWindowOnClosing(oWindow,"closeApp()")

oAreaHandler = uiNewAreaHandler("draw()","","","","")
area = uiNewArea(oAreaHandler)

btnClose = uiNewButton("Close Application")
uiButtonOnClicked(btnClose,"closeApp()")

hbox = uiNewVerticalBox()
uiBoxSetPadded(hbox, 1)
uiBoxAppend(hbox,btnClose,0)
uiBoxAppend(hbox,area,1)
uiWindowSetChild(oWindow, hbox)

uiControlShow( oWindow )
uiMain()

func draw
        nWidth = uiEventAreaWidth()             nHeight = uiEventAreaHeight()

        source = new_uiDrawBrush()
        sp = new_uiDrawStrokeParams()
        source = uiNewSolidBrush(colorBlue)

        x=25.6   y=128.0
        x1=102.4 y1=230.4
        x2=153.6 y2=25.6
        x3=230.4 y3=128.0

        uicrsourcergba(source, 0, 0, 0, 1)
        set_uiDrawStrokeParams_Cap(sp,uiDrawLineCapFlat)
        set_uiDrawStrokeParams_Join(sp,uiDrawLineJoinMiter)
        set_uiDrawStrokeParams_MiterLimit(sp,uiDrawDefaultMiterLimit)
        set_uiDrawStrokeParams_NumDashes(sp,0)
        set_uiDrawStrokeParams_DashPhase(sp,0)

        path = uiDrawNewPath(uiDrawFillModeWinding)

        uiDrawPathNewFigure(path, x, y)
        uiDrawPathBezierTo(path, x1, y1, x2, y2, x3, y3)
        uiDrawPathEnd(path)
        set_uiDrawStrokeParams_Thickness(sp,10)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

        uicrsourcergba(source, 1, 0.2, 0.2, 0.6)
        set_uiDrawStrokeParams_Thickness(sp,6)
        path = uiDrawNewPath(uiDrawFillModeWinding)
        uiDrawPathNewFigure(path, x, y)
        uiDrawPathLineTo(path, x1, y1)
        uiDrawPathNewFigure(path, x2, y2)
        uiDrawPathLineTo(path, x3, y3)
        uiDrawPathEnd(path)
        uiDrawStroke(uiEventContext(), path, source, sp)
        uiDrawFreePath(path)

func closeApp
        uiQuit()

スクリーンショット:

RingZip の用法

RingZip の用法です。

Zip ファイルの作成

用例 : 以下のファイル (*.c, *.h) から成る myfile.zip を作成します。

load "ziplib.ring"
oZip = zip_openfile("myfile.zip",'w')
zip_addfile(oZip,"test.c")
zip_addfile(oZip,"zip.c")
zip_addfile(oZip,"zip.h")
zip_addfile(oZip,"miniz.h")
zip_close(oZip)

Zip ファイルの展開

用例 : myfile.zip を myfolder フォルダへ展開します。

load "ziplib.ring"
zip_extract_allfiles("myfile.zip","myfolder")

Zip ファイルにあるファイルのリスト表示

用例 : myfile.zip にあるファイル名のリストを表示します。

load "ziplib.ring"
oZip = zip_openfile("myfile.zip",'r')
for x=1 to zip_filescount(oZip)
       see zip_getfilenamebyindex(oZip,x) + nl
next
zip_close(oZip)

RingZip クラスの用法

RingZip ライブラリでは Zip クラスと ZipEntry クラスが使えます。

用例①:

load "ziplib.ring"

new Zip {
        setFileName("myfile.zip")
        open("w")
        newEntry() {
                open("test.c")
                writefile("test.c")
                close()
        }
        close()
}

用例②:

load "ziplib.ring"

new Zip {
        SetFileName("myfile.zip")
        Open("w")
        AddFile("test.c")
        AddFile("zip.c")
        AddFile("zip.h")
        AddFile("miniz.h")
        Close()
}

用例③:

load "ziplib.ring"

new zip {
        SetFileName("myfile.zip")
        ExtractAllFiles("myfolder")
}

用例④:

load "ziplib.ring"

new Zip {
        SetFileName("myfile.zip")
        Open("r")
        see FilesCount()
        Close()
}

用例⑤:

load "ziplib.ring"

new Zip {
        SetFileName("myfile.zip")
        Open("r")
        for x = 1 to filescount()
                See GetFileNameByIndex(x) + nl
        next
        Close()
}

Zip クラスリファレンス

メソッド:

メソッド

説明・実行結果

SetFileName(cName)

Zip ファイル名を指定します。

GetFileName()

Zip ファイル名を返します。

Open(cMode)

ファイルを開きます。 cMode = “a”, “w” または “r”

Close()

Zip ファイルを閉じます。

AddFile(cFileName)

Zip ファイルへ新しいファイルを追加します。

ExtractAllFiles(cFolder)

Zip ファイルにあるファイルを全て展開します。

FilesCount()

Zip ファイルにあるファイルの本数を返します。

GetFileNameByIndex(nIndex)

ファイルインデックスから Zip ファイルのファイル名を返します。

NewEntry()

新しい ZipEntry オブジェクトを作成します。

ZipEntry クラスリファレンス

メソッド:

メソッド

説明・実行結果

Open(cFileName)

新しいエントリーを開きます。

WriteFile(cFileName)

エントリーからファイルへ書き込みます。

WriteString(cString)

エントリーから文字列へ書き込みます。

Close()

エントリーを閉じます。

RingLibZip 関数リファレンス

はじめに

RingLibZip 拡張機能の関数一覧です。

リファレンス

ZIP_T *zip_openfile(const char *, const char *)

int zip_entry_open(ZIP_T*, const char *)

int zip_entry_write(ZIP_T*, const char *,int)

int zip_entry_fwrite(ZIP_T*, const char *)

int zip_entry_read(ZIP_T*, void *, size_t *)

int zip_entry_fread(ZIP_T*, const char *cFile)

int zip_entry_close(ZIP_T*)

void zip_extract_allfiles(const char *cFile, const char *cFolder)

void zip_close(ZIP_T*)

int zip_filescount(ZIP_T *)

const char *zip_getfilenamebyindex(ZIP_T *pZip,int index)

void zip_extract_file(const char *cZIPFile,const char *cFile)

RingMurmurHash 関数リファレンス

Murmurhash 拡張機能では MurmurHash ライブラリの全機能を扱えます。

MurmurHash1 関数

uint32_t murmurhash1(string key, int seed, [bool return_type]);

uint32_t murmurhash1_aligned(string key, int seed, [bool return_type]);

MurmurHash2 関数

uint32_t murmurhash2(string key, int seed, [bool return_type]);

uint32_t murmurhash2a(string key, int seed, [bool return_type]);

uint64_t murmurhash64a(string key, int seed, [bool return_type]);

uint64_t murmurhash64b(string key, int seed, [bool return_type]);

uint32_t murmurhash_neutral2(string key, int seed, [bool return_type]);

uint32_t murmurhash_aligned2(string key, int seed, [bool return_type]);

MurmurHash3 関数

uint32_t murmurhash3_x86_32(string key, int seed, [bool return_type]);

list murmurhash3_x86_128(string key, int seed, [bool return_type]);

list murmurhash3_x64_128(string key, int seed, [bool return_type]);

第三仮引数はオプション扱いであり、返値の型を設定するためのものです。この仮引数はブール値 [ true, false ] を受け取ります。 true ならば16進数値を返し、 false ならば整数値を返します。

用例

load "murmurhashlib.ring"

key = "Ring Language"

see murmurhash3_x86_32(key, 0, 0) + nl // 実行結果: 1894444853
see murmurhash3_x86_32(key, 0, 1) + nl // 実行結果: 70eaef35

RingConsoleColors 関数リファレンス

はじめに

RingConsoleColors 拡張機能の関数一覧です。

リファレンス

CC_FG_NONE

CC_FG_BLACK

CC_FG_DARK_RED

CC_FG_DARK_GREEN

CC_FG_DARK_YELLOW

CC_FG_DARK_BLUE

CC_FG_DARK_MAGENTA

CC_FG_DARK_CYAN

CC_FG_GRAY

CC_FG_DARK_GRAY

CC_FG_RED

CC_FG_GREEN

CC_FG_YELLOW

CC_FG_BLUE

CC_FG_MAGENTA

CC_FG_CYAN

CC_FG_WHITE

CC_BG_NONE

CC_BG_BLACK

CC_BG_DARK_RED

CC_BG_DARK_GREEN

CC_BG_DARK_YELLOW

CC_BG_DARK_BLUE

CC_BG_DARK_MAGENTA

CC_BG_DARK_CYAN

CC_BG_GRAY

CC_BG_DARK_GRAY

CC_BG_RED

CC_BG_GREEN

CC_BG_YELLOW

CC_BG_BLUE

CC_BG_MAGENTA

CC_BG_CYAN

CC_BG_WHITE

void cc_print(int color,const char *string)

RingAllegro 関数リファレンス

はじめに

RingAllegro 拡張機能の関数一覧です。

リファレンス

Allegro リファレンス (英語版) : http://liballeg.org/api.html

注釈

Ring 1.10 以降で採用されている Allegro のバージョンは 5.2.4 です。予告なく変更される場合があります。 2019年02月08日現在、ウェブ上に Allegro 5.2.4 以降の日本語訳はありません。

ちなみに

Allegro 4.9.x 暫定ドキュメント日本語訳(私家版マニュアル) v.0.0981 : http://brace.client.jp/DOC/allegro4.9.10.1.html

void al_exit(void)

void al_run_main(void)

int al_init(void)

ALLEGRO_CONFIG *al_create_config(void)

void al_destroy_config(ALLEGRO_CONFIG *config)

ALLEGRO_CONFIG *al_load_config_file(const char *filename)

ALLEGRO_CONFIG *al_load_config_file_f(ALLEGRO_FILE *file)

bool al_save_config_file(const char *filename, const ALLEGRO_CONFIG *config)

bool al_save_config_file_f(ALLEGRO_FILE *file, const ALLEGRO_CONFIG *config)

void al_add_config_section(ALLEGRO_CONFIG *config, const char *name)

void al_add_config_comment(ALLEGRO_CONFIG *config, const char *section, const char *comment)

const char *al_get_config_value(const ALLEGRO_CONFIG *config,const char *section, const char *key)

void al_set_config_value(ALLEGRO_CONFIG *config,const char *section, const char *key, const char *value)

char const *al_get_first_config_section(ALLEGRO_CONFIG const *config,ALLEGRO_CONFIG_SECTION **iterator)

char const *al_get_next_config_section(ALLEGRO_CONFIG_SECTION **iterator)

char const *al_get_first_config_entry(ALLEGRO_CONFIG const *config,char const *section, ALLEGRO_CONFIG_ENTRY **iterator)

char const *al_get_next_config_entry(ALLEGRO_CONFIG_ENTRY **iterator)

ALLEGRO_CONFIG *al_merge_config(const ALLEGRO_CONFIG *cfg1,const ALLEGRO_CONFIG *cfg2)

void al_merge_config_into(ALLEGRO_CONFIG *master, const ALLEGRO_CONFIG *add)

ALLEGRO_DISPLAY *al_create_display(int w, int h)

void al_destroy_display(ALLEGRO_DISPLAY *display)

int al_get_new_display_flags(void)

void al_set_new_display_flags(int flags)

int al_get_new_display_option(int option, int *importance)

void al_set_new_display_option(int option, int value, int importance)

void al_reset_new_display_options(void)

void al_get_new_window_position(int *x, int *y)

void al_set_new_window_position(int x, int y)

int al_get_new_display_refresh_rate(void)

void al_set_new_display_refresh_rate(int refresh_rate)

ALLEGRO_EVENT_SOURCE *al_get_display_event_source(ALLEGRO_DISPLAY *display)

ALLEGRO_BITMAP *al_get_backbuffer(ALLEGRO_DISPLAY *display)

void al_flip_display(void)

void al_update_display_region(int x, int y, int width, int height)

bool al_wait_for_vsync(void)

int al_get_display_width(ALLEGRO_DISPLAY *display)

int al_get_display_height(ALLEGRO_DISPLAY *display)

bool al_resize_display(ALLEGRO_DISPLAY *display, int width, int height)

bool al_acknowledge_resize(ALLEGRO_DISPLAY *display)

void al_get_window_position(ALLEGRO_DISPLAY *display, int *x, int *y)

void al_set_window_position(ALLEGRO_DISPLAY *display, int x, int y)

int al_get_display_flags(ALLEGRO_DISPLAY *display)

bool al_set_display_flag(ALLEGRO_DISPLAY *display, int flag, bool onoff)

int al_get_display_option(ALLEGRO_DISPLAY *display, int option)

int al_get_display_format(ALLEGRO_DISPLAY *display)

int al_get_display_refresh_rate(ALLEGRO_DISPLAY *display)

void al_set_window_title(ALLEGRO_DISPLAY *display, const char *title)

void al_set_display_icon(ALLEGRO_DISPLAY *display, ALLEGRO_BITMAP *icon)

void al_set_display_icons(ALLEGRO_DISPLAY *display,int num_icons, ALLEGRO_BITMAP *icons[])

bool al_inhibit_screensaver(bool inhibit)

void al_acknowledge_drawing_halt(ALLEGRO_DISPLAY *display)

void al_acknowledge_drawing_resume(ALLEGRO_DISPLAY *display)

int al_get_display_orientation(ALLEGRO_DISPLAY* display)

void al_set_display_option(ALLEGRO_DISPLAY *display, int option, int value)

bool al_get_window_constraints(ALLEGRO_DISPLAY *display,int *min_w, int *min_h, int *max_w, int *max_h)

bool al_set_window_constraints(ALLEGRO_DISPLAY *display,int min_w, int min_h, int max_w, int max_h)

ALLEGRO_EVENT_QUEUE *al_create_event_queue(void)

void al_destroy_event_queue(ALLEGRO_EVENT_QUEUE *queue)

void al_register_event_source(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT_SOURCE *source)

void al_unregister_event_source(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT_SOURCE *source)

bool al_is_event_queue_empty(ALLEGRO_EVENT_QUEUE *queue)

bool al_get_next_event(ALLEGRO_EVENT_QUEUE *queue, ALLEGRO_EVENT *ret_event)

bool al_peek_next_event(ALLEGRO_EVENT_QUEUE *queue, ALLEGRO_EVENT *ret_event)

bool al_drop_next_event(ALLEGRO_EVENT_QUEUE *queue)

void al_flush_event_queue(ALLEGRO_EVENT_QUEUE *queue)

void al_wait_for_event(ALLEGRO_EVENT_QUEUE *queue, ALLEGRO_EVENT *ret_event)

bool al_wait_for_event_timed(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event, float secs)

bool al_wait_for_event_until(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event, ALLEGRO_TIMEOUT *timeout)

void al_init_user_event_source(ALLEGRO_EVENT_SOURCE *src)

void al_destroy_user_event_source(ALLEGRO_EVENT_SOURCE *src)

intptr_t al_get_event_source_data(const ALLEGRO_EVENT_SOURCE *source)

void al_set_event_source_data(ALLEGRO_EVENT_SOURCE *source, intptr_t data)

ALLEGRO_FILE *al_fopen(const char *path, const char *mode)

ALLEGRO_FILE *al_fopen_interface(const ALLEGRO_FILE_INTERFACE *drv,const char *path, const char *mode)

ALLEGRO_FILE *al_fopen_slice(ALLEGRO_FILE *fp, size_t initial_size, const char *mode)

void al_fclose(ALLEGRO_FILE *f)

size_t al_fread(ALLEGRO_FILE *f, void *ptr, size_t size)

size_t al_fwrite(ALLEGRO_FILE *f, const void *ptr, size_t size)

bool al_fflush(ALLEGRO_FILE *f)

int64_t al_ftell(ALLEGRO_FILE *f)

bool al_fseek(ALLEGRO_FILE *f, int64_t offset, int whence)

bool al_feof(ALLEGRO_FILE *f)

bool al_ferror(ALLEGRO_FILE *f)

void al_fclearerr(ALLEGRO_FILE *f)

int al_fungetc(ALLEGRO_FILE *f, int c)

int64_t al_fsize(ALLEGRO_FILE *f)

int al_fgetc(ALLEGRO_FILE *f)

int al_fputc(ALLEGRO_FILE *f, int c)

int16_t al_fread16le(ALLEGRO_FILE *f)

int16_t al_fread16be(ALLEGRO_FILE *f)

size_t al_fwrite16le(ALLEGRO_FILE *f, int16_t w)

size_t al_fwrite16be(ALLEGRO_FILE *f, int16_t w)

int32_t al_fread32le(ALLEGRO_FILE *f)

int32_t al_fread32be(ALLEGRO_FILE *f)

size_t al_fwrite32le(ALLEGRO_FILE *f, int32_t l)

size_t al_fwrite32be(ALLEGRO_FILE *f, int32_t l)

char *al_fgets(ALLEGRO_FILE *f, char * const buf, size_t max)

ALLEGRO_USTR *al_fget_ustr(ALLEGRO_FILE *f)

int al_fputs(ALLEGRO_FILE *f, char const *p)

ALLEGRO_FILE *al_fopen_fd(int fd, const char *mode)

ALLEGRO_FILE *al_make_temp_file(const char *template, ALLEGRO_PATH **ret_path)

void al_set_new_file_interface(const ALLEGRO_FILE_INTERFACE *file_interface

void al_set_standard_file_interface(void)

const ALLEGRO_FILE_INTERFACE *al_get_new_file_interface(void)

ALLEGRO_FILE *al_create_file_handle(const ALLEGRO_FILE_INTERFACE *drv,void *userdata)

void *al_get_file_userdata(ALLEGRO_FILE *f)

ALLEGRO_FS_ENTRY *al_create_fs_entry(const char *path)

void al_destroy_fs_entry(ALLEGRO_FS_ENTRY *fh)

const char *al_get_fs_entry_name(ALLEGRO_FS_ENTRY *e)

bool al_update_fs_entry(ALLEGRO_FS_ENTRY *e)

uint32_t al_get_fs_entry_mode(ALLEGRO_FS_ENTRY *e)

time_t al_get_fs_entry_atime(ALLEGRO_FS_ENTRY *e)

time_t al_get_fs_entry_ctime(ALLEGRO_FS_ENTRY *e)

time_t al_get_fs_entry_mtime(ALLEGRO_FS_ENTRY *e)

off_t al_get_fs_entry_size(ALLEGRO_FS_ENTRY *e)

bool al_fs_entry_exists(ALLEGRO_FS_ENTRY *e)

bool al_remove_fs_entry(ALLEGRO_FS_ENTRY *e)

bool al_filename_exists(const char *path)

bool al_remove_filename(const char *path)

bool al_open_directory(ALLEGRO_FS_ENTRY *e)

ALLEGRO_FS_ENTRY *al_read_directory(ALLEGRO_FS_ENTRY *e)

bool al_close_directory(ALLEGRO_FS_ENTRY *e)

char *al_get_current_directory(void)

bool al_change_directory(const char *path)

bool al_make_directory(const char *path)

ALLEGRO_FILE *al_open_fs_entry(ALLEGRO_FS_ENTRY *e, const char *mode)

void al_set_fs_interface(const ALLEGRO_FS_INTERFACE *fs_interface)

void al_set_standard_fs_interface(void)

const ALLEGRO_FS_INTERFACE *al_get_fs_interface(void)

al_fixed al_itofix(int x);

int al_fixtoi(al_fixed x);

int al_fixfloor(al_fixed x);

int al_fixceil(al_fixed x);

al_fixed al_ftofix(double x);

double al_fixtof(al_fixed x);

al_fixed al_fixmul(al_fixed x, al_fixed y);

al_fixed al_fixdiv(al_fixed x, al_fixed y);

al_fixed al_fixadd(al_fixed x, al_fixed y);

al_fixed al_fixsub(al_fixed x, al_fixed y);

al_fixed al_fixsin(al_fixed x);

al_fixed al_fixcos(al_fixed x);

al_fixed al_fixtan(al_fixed x);

al_fixed al_fixasin(al_fixed x);

al_fixed al_fixacos(al_fixed x);

al_fixed al_fixatan(al_fixed x)

al_fixed al_fixatan2(al_fixed y, al_fixed x)

al_fixed al_fixsqrt(al_fixed x)

al_fixed al_fixhypot(al_fixed x, al_fixed y)

ALLEGRO_DISPLAY_MODE *al_get_display_mode(int index, ALLEGRO_DISPLAY_MODE *mode)

int al_get_num_display_modes(void)

ALLEGRO_COLOR al_map_rgb(unsigned char r, unsigned char g, unsigned char b)

ALLEGRO_COLOR al_map_rgb_f(float r, float g, float b)

ALLEGRO_COLOR al_map_rgba(unsigned char r, unsigned char g, unsigned char b, unsigned char a)

ALLEGRO_COLOR al_map_rgba_f(float r, float g, float b, float a)

void al_unmap_rgb(ALLEGRO_COLOR color,unsigned char *r, unsigned char *g, unsigned char *b)

void al_unmap_rgb_f(ALLEGRO_COLOR color, float *r, float *g, float *b)

void al_unmap_rgba(ALLEGRO_COLOR color,unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a)

void al_unmap_rgba_f(ALLEGRO_COLOR color,float *r, float *g, float *b, float *a)

int al_get_pixel_size(int format)

int al_get_pixel_format_bits(int format)

ALLEGRO_LOCKED_REGION *al_lock_bitmap(ALLEGRO_BITMAP *bitmap,int format, int flags)

ALLEGRO_LOCKED_REGION *al_lock_bitmap_region(ALLEGRO_BITMAP *bitmap,int x, int y, int width, int height, int format, int flags)

void al_unlock_bitmap(ALLEGRO_BITMAP *bitmap)

ALLEGRO_BITMAP *al_create_bitmap(int w, int h)

ALLEGRO_BITMAP *al_create_sub_bitmap(ALLEGRO_BITMAP *parent,int x, int y, int w, int h)

ALLEGRO_BITMAP *al_clone_bitmap(ALLEGRO_BITMAP *bitmap)

void al_destroy_bitmap(ALLEGRO_BITMAP *bitmap)

int al_get_new_bitmap_flags(void)

int al_get_new_bitmap_format(void)

void al_set_new_bitmap_flags(int flags)

void al_add_new_bitmap_flag(int flag)

void al_set_new_bitmap_format(int format)

int al_get_bitmap_flags(ALLEGRO_BITMAP *bitmap)

int al_get_bitmap_format(ALLEGRO_BITMAP *bitmap)

int al_get_bitmap_height(ALLEGRO_BITMAP *bitmap)

int al_get_bitmap_width(ALLEGRO_BITMAP *bitmap)

ALLEGRO_COLOR al_get_pixel(ALLEGRO_BITMAP *bitmap, int x, int y)

bool al_is_bitmap_locked(ALLEGRO_BITMAP *bitmap)

bool al_is_compatible_bitmap(ALLEGRO_BITMAP *bitmap)

bool al_is_sub_bitmap(ALLEGRO_BITMAP *bitmap)

ALLEGRO_BITMAP *al_get_parent_bitmap(ALLEGRO_BITMAP *bitmap)

void al_clear_to_color(ALLEGRO_COLOR color)

void al_draw_bitmap(ALLEGRO_BITMAP *bitmap, float dx, float dy, int flags)

void al_draw_tinted_bitmap(ALLEGRO_BITMAP *bitmap, ALLEGRO_COLOR tint,float dx, float dy, int flags)

void al_draw_bitmap_region(ALLEGRO_BITMAP *bitmap,float sx, float sy, float sw, float sh, float dx, float dy, int flags)

void al_draw_tinted_bitmap_region(ALLEGRO_BITMAP *bitmap,ALLEGRO_COLOR tint,float sx, float sy, float sw, float sh, float dx, float dy,int flags)

void al_draw_pixel(float x, float y, ALLEGRO_COLOR color)

void al_draw_rotated_bitmap(ALLEGRO_BITMAP *bitmap,float cx, float cy, float dx, float dy, float angle, int flags)

void al_draw_tinted_rotated_bitmap(ALLEGRO_BITMAP *bitmap,ALLEGRO_COLOR tint,float cx, float cy, float dx, float dy, float angle, int flags)

void al_draw_scaled_rotated_bitmap(ALLEGRO_BITMAP *bitmap,float cx, float cy, float dx, float dy, float xscale, float yscale,float angle, int flags)

void al_draw_tinted_scaled_rotated_bitmap(ALLEGRO_BITMAP *bitmap,ALLEGRO_COLOR tint,float cx, float cy, float dx, float dy, float xscale, float yscale,float angle, int flags)

void al_draw_tinted_scaled_rotated_bitmap_region(ALLEGRO_BITMAP *bitmap,float sx, float sy, float sw, float sh,ALLEGRO_COLOR tint,float cx, float cy, float dx, float dy, float xscale, float yscale,float angle, int flags)

void al_draw_scaled_bitmap(ALLEGRO_BITMAP *bitmap,float sx, float sy, float sw, float sh,float dx, float dy, float dw, float dh, int flags)

void al_draw_tinted_scaled_bitmap(ALLEGRO_BITMAP *bitmap,ALLEGRO_COLOR tint,float sx, float sy, float sw, float sh,float dx, float dy, float dw, float dh, int flags)

ALLEGRO_BITMAP *al_get_target_bitmap(void)

void al_put_pixel(int x, int y, ALLEGRO_COLOR color)

void al_put_blended_pixel(int x, int y, ALLEGRO_COLOR color)

void al_set_target_bitmap(ALLEGRO_BITMAP *bitmap)

void al_set_target_backbuffer(ALLEGRO_DISPLAY *display)

ALLEGRO_DISPLAY *al_get_current_display(void)

void al_get_blender(int *op, int *src, int *dst)

void al_get_separate_blender(int *op, int *src, int *dst,int *alpha_op, int *alpha_src, int *alpha_dst)

void al_set_blender(int op, int src, int dst)

void al_set_separate_blender(int op, int src, int dst,int alpha_op, int alpha_src, int alpha_dst)

void al_get_clipping_rectangle(int *x, int *y, int *w, int *h)

void al_set_clipping_rectangle(int x, int y, int width, int height)

void al_reset_clipping_rectangle(void)

void al_convert_mask_to_alpha(ALLEGRO_BITMAP *bitmap, ALLEGRO_COLOR mask_color)

void al_hold_bitmap_drawing(bool hold)

bool al_is_bitmap_drawing_held(void)

ALLEGRO_BITMAP *al_load_bitmap_f(ALLEGRO_FILE *fp, const char *ident)

bool al_save_bitmap(const char *filename, ALLEGRO_BITMAP *bitmap)

bool al_save_bitmap_f(ALLEGRO_FILE *fp, const char *ident,ALLEGRO_BITMAP *bitmap)

bool al_install_joystick(void)

void al_uninstall_joystick(void)

bool al_is_joystick_installed(void)

bool al_reconfigure_joysticks(void)

int al_get_num_joysticks(void)

ALLEGRO_JOYSTICK * al_get_joystick(int num)

void al_release_joystick(ALLEGRO_JOYSTICK *joy)

bool al_get_joystick_active(ALLEGRO_JOYSTICK *joy)

const char *al_get_joystick_name(ALLEGRO_JOYSTICK *joy)

const char *al_get_joystick_stick_name(ALLEGRO_JOYSTICK *joy, int stick)

const char *al_get_joystick_axis_name(ALLEGRO_JOYSTICK *joy, int stick, int axis)

const char *al_get_joystick_button_name(ALLEGRO_JOYSTICK *joy, int button)

int al_get_joystick_stick_flags(ALLEGRO_JOYSTICK *joy, int stick)

int al_get_joystick_num_sticks(ALLEGRO_JOYSTICK *joy)

int al_get_joystick_num_axes(ALLEGRO_JOYSTICK *joy, int stick)

int al_get_joystick_num_buttons(ALLEGRO_JOYSTICK *joy)

void al_get_joystick_state(ALLEGRO_JOYSTICK *joy, ALLEGRO_JOYSTICK_STATE *ret_state)

ALLEGRO_EVENT_SOURCE *al_get_joystick_event_source(void)

bool al_install_keyboard(void)

bool al_is_keyboard_installed(void)

void al_uninstall_keyboard(void)

void al_get_keyboard_state(ALLEGRO_KEYBOARD_STATE *ret_state)

bool al_key_down(const ALLEGRO_KEYBOARD_STATE *state, int keycode)

const char *al_keycode_to_name(int keycode)

bool al_set_keyboard_leds(int leds)

ALLEGRO_EVENT_SOURCE *al_get_keyboard_event_source(void)

void *al_malloc_with_context(size_t n,int line, const char *file, const char *func)

void al_free_with_context(void *ptr, int line, const char *file, const char *func)

void *al_realloc_with_context(void *ptr, size_t n,int line, const char *file, const char *func)

void *al_calloc_with_context(size_t count, size_t n,int line, const char *file, const char *func)

void al_set_memory_interface(ALLEGRO_MEMORY_INTERFACE *memory_interface)

int al_get_new_display_adapter(void)

void al_set_new_display_adapter(int adapter)

bool al_get_monitor_info(int adapter, ALLEGRO_MONITOR_INFO *info)

int al_get_num_video_adapters(void)

bool al_install_mouse(void)

bool al_is_mouse_installed(void)

void al_uninstall_mouse(void)

unsigned int al_get_mouse_num_axes(void)

unsigned int al_get_mouse_num_buttons(void)

void al_get_mouse_state(ALLEGRO_MOUSE_STATE *ret_state)

int al_get_mouse_state_axis(const ALLEGRO_MOUSE_STATE *state, int axis)

bool al_mouse_button_down(const ALLEGRO_MOUSE_STATE *state, int button)

bool al_set_mouse_xy(ALLEGRO_DISPLAY *display, int x, int y)

bool al_set_mouse_z(int z)

bool al_set_mouse_w(int w)

bool al_set_mouse_axis(int which, int value)

ALLEGRO_EVENT_SOURCE *al_get_mouse_event_source(void)

ALLEGRO_MOUSE_CURSOR *al_create_mouse_cursor(ALLEGRO_BITMAP *bmp,int x_focus, int y_focus)

void al_destroy_mouse_cursor(ALLEGRO_MOUSE_CURSOR *cursor)

bool al_set_mouse_cursor(ALLEGRO_DISPLAY *display, ALLEGRO_MOUSE_CURSOR *cursor)

bool al_set_system_mouse_cursor(ALLEGRO_DISPLAY *display,ALLEGRO_SYSTEM_MOUSE_CURSOR cursor_id)

bool al_get_mouse_cursor_position(int *ret_x, int *ret_y)

bool al_hide_mouse_cursor(ALLEGRO_DISPLAY *display)

bool al_show_mouse_cursor(ALLEGRO_DISPLAY *display)

bool al_grab_mouse(ALLEGRO_DISPLAY *display)

bool al_ungrab_mouse(void)

ALLEGRO_PATH *al_create_path(const char *str)

ALLEGRO_PATH *al_create_path_for_directory(const char *str)

void al_destroy_path(ALLEGRO_PATH *path)

ALLEGRO_PATH *al_clone_path(const ALLEGRO_PATH *path)

bool al_join_paths(ALLEGRO_PATH *path, const ALLEGRO_PATH *tail)

bool al_rebase_path(const ALLEGRO_PATH *head, ALLEGRO_PATH *tail)

const char *al_get_path_drive(const ALLEGRO_PATH *path)

int al_get_path_num_components(const ALLEGRO_PATH *path)

const char *al_get_path_component(const ALLEGRO_PATH *path, int i)

const char *al_get_path_tail(const ALLEGRO_PATH *path)

const char *al_get_path_filename(const ALLEGRO_PATH *path)

const char *al_get_path_basename(const ALLEGRO_PATH *path)

const char *al_get_path_extension(const ALLEGRO_PATH *path)

void al_set_path_drive(ALLEGRO_PATH *path, const char *drive)

void al_append_path_component(ALLEGRO_PATH *path, const char *s)

void al_insert_path_component(ALLEGRO_PATH *path, int i, const char *s)

void al_replace_path_component(ALLEGRO_PATH *path, int i, const char *s)

void al_remove_path_component(ALLEGRO_PATH *path, int i)

void al_drop_path_tail(ALLEGRO_PATH *path)

void al_set_path_filename(ALLEGRO_PATH *path, const char *filename)

bool al_set_path_extension(ALLEGRO_PATH *path, char const *extension)

const char *al_path_cstr(const ALLEGRO_PATH *path, char delim)

bool al_make_path_canonical(ALLEGRO_PATH *path)

void al_restore_state(ALLEGRO_STATE const *state)

void al_store_state(ALLEGRO_STATE *state, int flags

int al_get_errno(void)

void al_set_errno(int errnum)

void al_uninstall_system(void)

bool al_is_system_installed(void)

uint32_t al_get_allegro_version(void)

ALLEGRO_PATH *al_get_standard_path(int id)

void al_set_exe_name(char const *path)

void al_set_app_name(const char *app_name)

void al_set_org_name(const char *org_name)

const char *al_get_app_name(void)

const char *al_get_org_name(void)

ALLEGRO_CONFIG *al_get_system_config(void)

ALLEGRO_THREAD *al_create_thread(void)

void al_run_detached_thread(void)

void al_start_thread(ALLEGRO_THREAD *thread)

void al_join_thread(ALLEGRO_THREAD *thread, void **ret_value)

void al_set_thread_should_stop(ALLEGRO_THREAD *thread)

bool al_get_thread_should_stop(ALLEGRO_THREAD *thread)

void al_destroy_thread(ALLEGRO_THREAD *thread)

ALLEGRO_MUTEX *al_create_mutex(void)

ALLEGRO_MUTEX *al_create_mutex_recursive(void)

void al_lock_mutex(ALLEGRO_MUTEX *mutex)

void al_unlock_mutex(ALLEGRO_MUTEX *mutex)

void al_destroy_mutex(ALLEGRO_MUTEX *mutex)

ALLEGRO_COND *al_create_cond(void)

void al_destroy_cond(ALLEGRO_COND *cond)

void al_wait_cond(ALLEGRO_COND *cond, ALLEGRO_MUTEX *mutex)

int al_wait_cond_until(ALLEGRO_COND *cond, ALLEGRO_MUTEX *mutex,const ALLEGRO_TIMEOUT *timeout)

void al_broadcast_cond(ALLEGRO_COND *cond)

void al_signal_cond(ALLEGRO_COND *cond)

double al_get_time(void)

void al_init_timeout(ALLEGRO_TIMEOUT *timeout, double seconds)

void al_rest(double seconds)

ALLEGRO_TIMER *al_create_timer(double speed_secs)

void al_start_timer(ALLEGRO_TIMER *timer)

void al_stop_timer(ALLEGRO_TIMER *timer)

bool al_get_timer_started(const ALLEGRO_TIMER *timer)

void al_destroy_timer(ALLEGRO_TIMER *timer)

int64_t al_get_timer_count(const ALLEGRO_TIMER *timer)

void al_set_timer_count(ALLEGRO_TIMER *timer, int64_t new_count)

void al_add_timer_count(ALLEGRO_TIMER *timer, int64_t diff)

double al_get_timer_speed(const ALLEGRO_TIMER *timer)

void al_set_timer_speed(ALLEGRO_TIMER *timer, double new_speed_secs)

ALLEGRO_EVENT_SOURCE *al_get_timer_event_source(ALLEGRO_TIMER *timer)

void al_copy_transform(ALLEGRO_TRANSFORM *dest, const ALLEGRO_TRANSFORM *src)

void al_use_transform(const ALLEGRO_TRANSFORM *trans)

const ALLEGRO_TRANSFORM *al_get_current_transform(void)

void al_invert_transform(ALLEGRO_TRANSFORM *trans)

int al_check_inverse(const ALLEGRO_TRANSFORM *trans, float tol)

void al_identity_transform(ALLEGRO_TRANSFORM *trans)

void al_build_transform(ALLEGRO_TRANSFORM *trans, float x, float y,float sx, float sy, float theta)

void al_translate_transform(ALLEGRO_TRANSFORM *trans, float x, float y)

void al_rotate_transform(ALLEGRO_TRANSFORM *trans, float theta)

void al_scale_transform(ALLEGRO_TRANSFORM *trans, float sx, float sy)

void al_transform_coordinates(const ALLEGRO_TRANSFORM *trans, float *x, float *y)

void al_compose_transform(ALLEGRO_TRANSFORM *trans, const ALLEGRO_TRANSFORM *other)

ALLEGRO_USTR *al_ustr_new(const char *s)

ALLEGRO_USTR *al_ustr_new_from_buffer(const char *s, size_t size)

void al_ustr_free(ALLEGRO_USTR *us)

const char *al_cstr(const ALLEGRO_USTR *us)

void al_ustr_to_buffer(const ALLEGRO_USTR *us, char *buffer, int size)

char *al_cstr_dup(const ALLEGRO_USTR *us)

ALLEGRO_USTR *al_ustr_dup(const ALLEGRO_USTR *us)

ALLEGRO_USTR *al_ustr_dup_substr(const ALLEGRO_USTR *us, int start_pos,int end_pos)

const ALLEGRO_USTR *al_ustr_empty_string(void)

const ALLEGRO_USTR *al_ref_cstr(ALLEGRO_USTR_INFO *info, const char *s)

const ALLEGRO_USTR *al_ref_buffer(ALLEGRO_USTR_INFO *info, const char *s, size_t size)

const ALLEGRO_USTR *al_ref_ustr(ALLEGRO_USTR_INFO *info, const ALLEGRO_USTR *us,int start_pos, int end_pos)

size_t al_ustr_size(const ALLEGRO_USTR *us)

size_t al_ustr_length(const ALLEGRO_USTR *us)

int al_ustr_offset(const ALLEGRO_USTR *us, int index)

bool al_ustr_next(const ALLEGRO_USTR *us, int *pos)

bool al_ustr_prev(const ALLEGRO_USTR *us, int *pos)

int32_t al_ustr_get(const ALLEGRO_USTR *ub, int pos)

int32_t al_ustr_get_next(const ALLEGRO_USTR *us, int *pos)

int32_t al_ustr_prev_get(const ALLEGRO_USTR *us, int *pos)

bool al_ustr_insert(ALLEGRO_USTR *us1, int pos, const ALLEGRO_USTR *us2)

bool al_ustr_insert_cstr(ALLEGRO_USTR *us, int pos, const char *s)

size_t al_ustr_insert_chr(ALLEGRO_USTR *us, int pos, int32_t c)

bool al_ustr_append(ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2)

bool al_ustr_append_cstr(ALLEGRO_USTR *us, const char *s)

size_t al_ustr_append_chr(ALLEGRO_USTR *us, int32_t c)

bool al_ustr_remove_chr(ALLEGRO_USTR *us, int pos)

bool al_ustr_remove_range(ALLEGRO_USTR *us, int start_pos, int end_pos)

bool al_ustr_truncate(ALLEGRO_USTR *us, int start_pos)

bool al_ustr_ltrim_ws(ALLEGRO_USTR *us)

bool al_ustr_rtrim_ws(ALLEGRO_USTR *us)

bool al_ustr_trim_ws(ALLEGRO_USTR *us)

bool al_ustr_assign(ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2)

bool al_ustr_assign_substr(ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2,int start_pos, int end_pos)

bool al_ustr_assign_cstr(ALLEGRO_USTR *us1, const char *s)

size_t al_ustr_set_chr(ALLEGRO_USTR *us, int start_pos, int32_t c)

bool al_ustr_replace_range(ALLEGRO_USTR *us1, int start_pos1, int end_pos1,const ALLEGRO_USTR *us2)

int al_ustr_find_chr(const ALLEGRO_USTR *us, int start_pos, int32_t c)

int al_ustr_rfind_chr(const ALLEGRO_USTR *us, int end_pos, int32_t c)

int al_ustr_find_set(const ALLEGRO_USTR *us, int start_pos,const ALLEGRO_USTR *accept)

int al_ustr_find_set_cstr(const ALLEGRO_USTR *us, int start_pos,const char *accept)

int al_ustr_find_cset(const ALLEGRO_USTR *us, int start_pos,const ALLEGRO_USTR *reject)

int al_ustr_find_cset_cstr(const ALLEGRO_USTR *us, int start_pos,const char *reject)

int al_ustr_find_str(const ALLEGRO_USTR *haystack, int start_pos,const ALLEGRO_USTR *needle)

int al_ustr_find_cstr(const ALLEGRO_USTR *haystack, int start_pos,const char *needle)

int al_ustr_rfind_str(const ALLEGRO_USTR *haystack, int end_pos,const ALLEGRO_USTR *needle)

int al_ustr_rfind_cstr(const ALLEGRO_USTR *haystack, int end_pos,const char *needle)

bool al_ustr_find_replace(ALLEGRO_USTR *us, int start_pos,const ALLEGRO_USTR *find, const ALLEGRO_USTR *replace)

bool al_ustr_find_replace_cstr(ALLEGRO_USTR *us, int start_pos,const char *find, const char *replace)

int al_ustr_compare(const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2)

int al_ustr_ncompare(const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2, int n)

bool al_ustr_equal(const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2)

bool al_ustr_has_prefix(const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2)

bool al_ustr_has_prefix_cstr(const ALLEGRO_USTR *us1, const char *s2)

bool al_ustr_has_suffix(const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2)

bool al_ustr_has_suffix_cstr(const ALLEGRO_USTR *us1, const char *s2)

ALLEGRO_USTR *al_ustr_new_from_utf16(uint16_t const *s)

size_t al_ustr_size_utf16(const ALLEGRO_USTR *us)

size_t al_ustr_encode_utf16(const ALLEGRO_USTR *us, uint16_t *s,size_t n)

size_t al_utf8_width(int c)

size_t al_utf8_encode(char s[], int32_t c)

size_t al_utf16_width(int c)

LPDIRECT3DDEVICE9 al_get_d3d_device(ALLEGRO_DISPLAY *display)

LPDIRECT3DTEXTURE9 al_get_d3d_system_texture(ALLEGRO_BITMAP *bitmap)

LPDIRECT3DTEXTURE9 al_get_d3d_video_texture(ALLEGRO_BITMAP *bitmap)

bool al_have_d3d_non_pow2_texture_support(void)

bool al_have_d3d_non_square_texture_support(void)

void al_get_d3d_texture_position(ALLEGRO_BITMAP *bitmap, int *u, int *v)

bool al_is_d3d_device_lost(ALLEGRO_DISPLAY *display)

ALLEGRO_OGL_EXT_LIST *al_get_opengl_extension_list(void)

void *al_get_opengl_proc_address(const char *name)

GLuint al_get_opengl_texture(ALLEGRO_BITMAP *bitmap)

void al_get_opengl_texture_size(ALLEGRO_BITMAP *bitmap, int *w, int *h)

void al_get_opengl_texture_position(ALLEGRO_BITMAP *bitmap, int *u, int *v)

GLuint al_get_opengl_fbo(ALLEGRO_BITMAP *bitmap)

void al_remove_opengl_fbo(ALLEGRO_BITMAP *bitmap)

bool al_have_opengl_extension(const char *extension);

uint32_t al_get_opengl_version(void)

int al_get_opengl_variant(void)

void al_set_current_opengl_context(ALLEGRO_DISPLAY *display)

bool al_install_audio(void)

void al_uninstall_audio(void)

bool al_is_audio_installed(void)

bool al_reserve_samples(int reserve_samples)

uint32_t al_get_allegro_audio_version(void)

size_t al_get_audio_depth_size(ALLEGRO_AUDIO_DEPTH depth)

size_t al_get_channel_count(ALLEGRO_CHANNEL_CONF conf)

ALLEGRO_VOICE *al_create_voice(unsigned int freq,ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf)

void al_destroy_voice(ALLEGRO_VOICE *voice)

void al_detach_voice(ALLEGRO_VOICE *voice)

bool al_attach_audio_stream_to_voice(ALLEGRO_AUDIO_STREAM *stream,ALLEGRO_VOICE *voice)

bool al_attach_mixer_to_voice(ALLEGRO_MIXER *mixer, ALLEGRO_VOICE *voice)

bool al_attach_sample_instance_to_voice(ALLEGRO_SAMPLE_INSTANCE *spl,ALLEGRO_VOICE *voice)

unsigned int al_get_voice_frequency(const ALLEGRO_VOICE *voice)

ALLEGRO_CHANNEL_CONF al_get_voice_channels(const ALLEGRO_VOICE *voice)

ALLEGRO_AUDIO_DEPTH al_get_voice_depth(const ALLEGRO_VOICE *voice)

bool al_get_voice_playing(const ALLEGRO_VOICE *voice)

bool al_set_voice_playing(ALLEGRO_VOICE *voice, bool val)

unsigned int al_get_voice_position(const ALLEGRO_VOICE *voice)

bool al_set_voice_position(ALLEGRO_VOICE *voice, unsigned int val)

ALLEGRO_SAMPLE *al_create_sample(void *buf, unsigned int samples,unsigned int freq, ALLEGRO_AUDIO_DEPTH depth,ALLEGRO_CHANNEL_CONF chan_conf, bool free_buf)

void al_destroy_sample(ALLEGRO_SAMPLE *spl)

bool al_play_sample(ALLEGRO_SAMPLE *spl, float gain, float pan, float speed,int loop, ALLEGRO_SAMPLE_ID *ret_id)

void al_stop_sample(ALLEGRO_SAMPLE_ID *spl_id)

void al_stop_samples(void)

ALLEGRO_CHANNEL_CONF al_get_sample_channels(const ALLEGRO_SAMPLE *spl)

ALLEGRO_AUDIO_DEPTH al_get_sample_depth(const ALLEGRO_SAMPLE *spl)

unsigned int al_get_sample_frequency(const ALLEGRO_SAMPLE *spl)

unsigned int al_get_sample_length(const ALLEGRO_SAMPLE *spl)

void *al_get_sample_data(const ALLEGRO_SAMPLE *spl)

ALLEGRO_SAMPLE_INSTANCE *al_create_sample_instance(ALLEGRO_SAMPLE *sample_data)

void al_destroy_sample_instance(ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_play_sample_instance(ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_stop_sample_instance(ALLEGRO_SAMPLE_INSTANCE *spl)

ALLEGRO_CHANNEL_CONF al_get_sample_instance_channels(const ALLEGRO_SAMPLE_INSTANCE *spl)

ALLEGRO_AUDIO_DEPTH al_get_sample_instance_depth(const ALLEGRO_SAMPLE_INSTANCE *spl)

unsigned int al_get_sample_instance_frequency(const ALLEGRO_SAMPLE_INSTANCE *spl)

unsigned int al_get_sample_instance_length(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_length(ALLEGRO_SAMPLE_INSTANCE *spl,unsigned int val)

unsigned int al_get_sample_instance_position(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_position(ALLEGRO_SAMPLE_INSTANCE *spl,unsigned int val)

float al_get_sample_instance_speed(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_speed(ALLEGRO_SAMPLE_INSTANCE *spl, float val)

float al_get_sample_instance_gain(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_gain(ALLEGRO_SAMPLE_INSTANCE *spl, float val)

float al_get_sample_instance_pan(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_pan(ALLEGRO_SAMPLE_INSTANCE *spl, float val)

float al_get_sample_instance_time(const ALLEGRO_SAMPLE_INSTANCE *spl)

ALLEGRO_PLAYMODE al_get_sample_instance_playmode(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_playmode(ALLEGRO_SAMPLE_INSTANCE *spl,ALLEGRO_PLAYMODE val)

bool al_get_sample_instance_playing(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample_instance_playing(ALLEGRO_SAMPLE_INSTANCE *spl, bool val)

bool al_get_sample_instance_attached(const ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_detach_sample_instance(ALLEGRO_SAMPLE_INSTANCE *spl)

ALLEGRO_SAMPLE *al_get_sample(ALLEGRO_SAMPLE_INSTANCE *spl)

bool al_set_sample(ALLEGRO_SAMPLE_INSTANCE *spl, ALLEGRO_SAMPLE *data)

ALLEGRO_MIXER *al_create_mixer(unsigned int freq,ALLEGRO_AUDIO_DEPTH depth, ALLEGRO_CHANNEL_CONF chan_conf)

void al_destroy_mixer(ALLEGRO_MIXER *mixer)

ALLEGRO_MIXER *al_get_default_mixer(void)

bool al_set_default_mixer(ALLEGRO_MIXER *mixer)

bool al_restore_default_mixer(void)

bool al_attach_mixer_to_mixer(ALLEGRO_MIXER *stream, ALLEGRO_MIXER *mixer)

bool al_attach_sample_instance_to_mixer(ALLEGRO_SAMPLE_INSTANCE *spl,ALLEGRO_MIXER *mixer)

bool al_attach_audio_stream_to_mixer(ALLEGRO_AUDIO_STREAM *stream, ALLEGRO_MIXER *mixer)

unsigned int al_get_mixer_frequency(const ALLEGRO_MIXER *mixer)

bool al_set_mixer_frequency(ALLEGRO_MIXER *mixer, unsigned int val)

ALLEGRO_CHANNEL_CONF al_get_mixer_channels(const ALLEGRO_MIXER *mixer)

ALLEGRO_AUDIO_DEPTH al_get_mixer_depth(const ALLEGRO_MIXER *mixer)

float al_get_mixer_gain(const ALLEGRO_MIXER *mixer)

bool al_set_mixer_gain(ALLEGRO_MIXER *mixer, float new_gain)

ALLEGRO_MIXER_QUALITY al_get_mixer_quality(const ALLEGRO_MIXER *mixer)

bool al_set_mixer_quality(ALLEGRO_MIXER *mixer, ALLEGRO_MIXER_QUALITY new_quality)

bool al_get_mixer_playing(const ALLEGRO_MIXER *mixer)

bool al_set_mixer_playing(ALLEGRO_MIXER *mixer, bool val)

bool al_get_mixer_attached(const ALLEGRO_MIXER *mixer)

bool al_detach_mixer(ALLEGRO_MIXER *mixer)

void al_destroy_audio_stream(ALLEGRO_AUDIO_STREAM *stream)

ALLEGRO_EVENT_SOURCE *al_get_audio_stream_event_source(ALLEGRO_AUDIO_STREAM *stream)

void al_drain_audio_stream(ALLEGRO_AUDIO_STREAM *stream)

bool al_rewind_audio_stream(ALLEGRO_AUDIO_STREAM *stream)

unsigned int al_get_audio_stream_frequency(const ALLEGRO_AUDIO_STREAM *stream)

ALLEGRO_CHANNEL_CONF al_get_audio_stream_channels(const ALLEGRO_AUDIO_STREAM *stream)

ALLEGRO_AUDIO_DEPTH al_get_audio_stream_depth(const ALLEGRO_AUDIO_STREAM *stream)

unsigned int al_get_audio_stream_length(const ALLEGRO_AUDIO_STREAM *stream)

float al_get_audio_stream_speed(const ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_speed(ALLEGRO_AUDIO_STREAM *stream, float val)

float al_get_audio_stream_gain(const ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_gain(ALLEGRO_AUDIO_STREAM *stream, float val)

float al_get_audio_stream_pan(const ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_pan(ALLEGRO_AUDIO_STREAM *stream, float val)

bool al_get_audio_stream_playing(const ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_playing(ALLEGRO_AUDIO_STREAM *stream, bool val)

ALLEGRO_PLAYMODE al_get_audio_stream_playmode(const ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_playmode(ALLEGRO_AUDIO_STREAM *stream,ALLEGRO_PLAYMODE val)

bool al_get_audio_stream_attached(const ALLEGRO_AUDIO_STREAM *stream)

bool al_detach_audio_stream(ALLEGRO_AUDIO_STREAM *stream)

void *al_get_audio_stream_fragment(const ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_fragment(ALLEGRO_AUDIO_STREAM *stream, void *val)

unsigned int al_get_audio_stream_fragments(const ALLEGRO_AUDIO_STREAM *stream)

unsigned int al_get_available_audio_stream_fragments(const ALLEGRO_AUDIO_STREAM *stream)

bool al_seek_audio_stream_secs(ALLEGRO_AUDIO_STREAM *stream, double time)

double al_get_audio_stream_position_secs(ALLEGRO_AUDIO_STREAM *stream)

double al_get_audio_stream_length_secs(ALLEGRO_AUDIO_STREAM *stream)

bool al_set_audio_stream_loop_secs(ALLEGRO_AUDIO_STREAM *stream,double start, double end)

ALLEGRO_SAMPLE *al_load_sample(const char *filename)

ALLEGRO_SAMPLE *al_load_sample_f(ALLEGRO_FILE* fp, const char *ident)

ALLEGRO_AUDIO_STREAM *al_load_audio_stream(const char *filename,size_t buffer_count, unsigned int samples)

ALLEGRO_AUDIO_STREAM *al_load_audio_stream_f(ALLEGRO_FILE* fp, const char *ident,size_t buffer_count, unsigned int samples)

bool al_save_sample(const char *filename, ALLEGRO_SAMPLE *spl)

bool al_save_sample_f(ALLEGRO_FILE *fp, const char *ident, ALLEGRO_SAMPLE *spl)

bool al_init_acodec_addon(void)

uint32_t al_get_allegro_acodec_version(void)

ALLEGRO_COLOR al_color_cmyk(float c, float m, float y, float k)

void al_color_cmyk_to_rgb(float cyan, float magenta, float yellow,float key, float *red, float *green, float *blue)

ALLEGRO_COLOR al_color_hsl(float h, float s, float l)

void al_color_hsl_to_rgb(float hue, float saturation, float lightness,float *red, float *green, float *blue)

ALLEGRO_COLOR al_color_hsv(float h, float s, float v)

void al_color_hsv_to_rgb(float hue, float saturation, float value,float *red, float *green, float *blue)

ALLEGRO_COLOR al_color_html(char const *string)

void al_color_html_to_rgb(char const *string,float *red, float *green, float *blue)

void al_color_rgb_to_html(float red, float green, float blue,char *string)

ALLEGRO_COLOR al_color_name(char const *name)

bool al_color_name_to_rgb(char const *name, float *r, float *g, float *b)

void al_color_rgb_to_cmyk(float red, float green, float blue,float *cyan, float *magenta, float *yellow, float *key)

void al_color_rgb_to_hsl(float red, float green, float blue,float *hue, float *saturation, float *lightness)

void al_color_rgb_to_hsv(float red, float green, float blue,float *hue, float *saturation, float *value)

char const *al_color_rgb_to_name(float r, float g, float b)

void al_color_rgb_to_yuv(float red, float green, float blue,float *y, float *u, float *v)

ALLEGRO_COLOR al_color_yuv(float y, float u, float v)

void al_color_yuv_to_rgb(float y, float u, float v,float *red, float *green, float *blue)

uint32_t al_get_allegro_color_version(void)

void al_init_font_addon(void)

void al_shutdown_font_addon(void)

ALLEGRO_FONT *al_load_font(char const *filename, int size, int flags)

void al_destroy_font(ALLEGRO_FONT *f)

int al_get_font_ascent(const ALLEGRO_FONT *f)

int al_get_font_descent(const ALLEGRO_FONT *f)

int al_get_text_width(const ALLEGRO_FONT *f, const char *str)

int al_get_ustr_width(const ALLEGRO_FONT *f, ALLEGRO_USTR const *ustr)

void al_draw_text(const ALLEGRO_FONT *font,ALLEGRO_COLOR color, float x, float y, int flags,char const *text)

void al_draw_ustr(const ALLEGRO_FONT *font,ALLEGRO_COLOR color, float x, float y, int flags,const ALLEGRO_USTR *ustr)

void al_draw_justified_text(const ALLEGRO_FONT *font,ALLEGRO_COLOR color, float x1, float x2,float y, float diff, int flags, const char *text)

void al_draw_justified_ustr(const ALLEGRO_FONT *font,ALLEGRO_COLOR color, float x1, float x2,float y, float diff, int flags, const ALLEGRO_USTR *ustr)

void al_get_text_dimensions(const ALLEGRO_FONT *f,char const *text,int *bbx, int *bby, int *bbw, int *bbh)

void al_get_ustr_dimensions(const ALLEGRO_FONT *f,ALLEGRO_USTR const *ustr,int *bbx, int *bby, int *bbw, int *bbh)

uint32_t al_get_allegro_font_version(void)

ALLEGRO_FONT *al_grab_font_from_bitmap(ALLEGRO_BITMAP *bmp,int ranges_n, const int ranges[])

ALLEGRO_FONT *al_load_bitmap_font(const char *fname)

ALLEGRO_FONT *al_create_builtin_font(void)

bool al_init_ttf_addon(void)

void al_shutdown_ttf_addon(void)

ALLEGRO_FONT *al_load_ttf_font(char const *filename, int size, int flags)

ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file,char const *filename, int size, int flags)

ALLEGRO_FONT *al_load_ttf_font_stretch(char const *filename, int w, int h,int flags)

ALLEGRO_FONT *al_load_ttf_font_stretch_f(ALLEGRO_FILE *file,char const *filename, int w, int h, int flags)

uint32_t al_get_allegro_ttf_version(void)

bool al_init_image_addon(void)

void al_shutdown_image_addon(void)

uint32_t al_get_allegro_image_version(void)

ALLEGRO_FILE *al_open_memfile(void *mem, int64_t size, const char *mode)

uint32_t al_get_allegro_memfile_version(void)

bool al_init_native_dialog_addon(void)

void al_shutdown_native_dialog_addon(void)

ALLEGRO_FILECHOOSER *al_create_native_file_dialog(char const *initial_path,char const *title,char const *patterns,int mode)

bool al_show_native_file_dialog(ALLEGRO_DISPLAY *display,ALLEGRO_FILECHOOSER *dialog)

int al_get_native_file_dialog_count(const ALLEGRO_FILECHOOSER *dialog)

const char *al_get_native_file_dialog_path(const ALLEGRO_FILECHOOSER *dialog, size_t i)

void al_destroy_native_file_dialog(ALLEGRO_FILECHOOSER *dialog)

int al_show_native_message_box(ALLEGRO_DISPLAY *display,char const *title, char const *heading, char const *text,char const *buttons, int flags)

ALLEGRO_TEXTLOG *al_open_native_text_log(char const *title, int flags)

void al_close_native_text_log(ALLEGRO_TEXTLOG *textlog)

uint32_t al_get_allegro_native_dialog_version(void)

void al_set_physfs_file_interface(void)

uint32_t al_get_allegro_physfs_version(void)

uint32_t al_get_allegro_primitives_version(void)

bool al_init_primitives_addon(void)

void al_shutdown_primitives_addon(void)

void al_draw_line(float x1, float y1, float x2, float y2,ALLEGRO_COLOR color, float thickness)

void al_draw_triangle(float x1, float y1, float x2, float y2,float x3, float y3, ALLEGRO_COLOR color, float thickness)

void al_draw_filled_triangle(float x1, float y1, float x2, float y2,float x3, float y3, ALLEGRO_COLOR color)

void al_draw_rectangle(float x1, float y1, float x2, float y2,ALLEGRO_COLOR color, float thickness)

void al_draw_filled_rectangle(float x1, float y1, float x2, float y2,ALLEGRO_COLOR color)

void al_draw_rounded_rectangle(float x1, float y1, float x2, float y2,float rx, float ry, ALLEGRO_COLOR color, float thickness)

void al_draw_filled_rounded_rectangle(float x1, float y1, float x2, float y2,float rx, float ry, ALLEGRO_COLOR color)

void al_calculate_arc(float* dest, int stride, float cx, float cy,float rx, float ry, float start_theta, float delta_theta, float thickness,int num_points)

void al_draw_pieslice(float cx, float cy, float r, float start_theta,float delta_theta, ALLEGRO_COLOR color, float thickness)

void al_draw_filled_pieslice(float cx, float cy, float r, float start_theta,float delta_theta, ALLEGRO_COLOR color)

void al_draw_ellipse(float cx, float cy, float rx, float ry,ALLEGRO_COLOR color, float thickness)

void al_draw_filled_ellipse(float cx, float cy, float rx, float ry,ALLEGRO_COLOR color)

void al_draw_circle(float cx, float cy, float r, ALLEGRO_COLOR color,float thickness)

void al_draw_filled_circle(float cx, float cy, float r, ALLEGRO_COLOR color)

void al_draw_arc(float cx, float cy, float r, float start_theta,float delta_theta, ALLEGRO_COLOR color, float thickness)

void al_draw_elliptical_arc(float cx, float cy, float rx, float ry, float start_theta,float delta_theta, ALLEGRO_COLOR color, float thickness)

void al_draw_ribbon(const float *points, int points_stride, ALLEGRO_COLOR color,float thickness, int num_segments)

int al_draw_prim(const void* vtxs, const ALLEGRO_VERTEX_DECL* decl,ALLEGRO_BITMAP* texture, int start, int end, int type)

int al_draw_indexed_prim(const void* vtxs, const ALLEGRO_VERTEX_DECL* decl,ALLEGRO_BITMAP* texture, const int* indices, int num_vtx, int type)

ALLEGRO_VERTEX_DECL* al_create_vertex_decl(const ALLEGRO_VERTEX_ELEMENT* elements, int stride)

void al_destroy_vertex_decl(ALLEGRO_VERTEX_DECL* decl)

ALLEGRO_SHADER *al_create_shader(ALLEGRO_SHADER_PLATFORM platform)

bool al_attach_shader_source(ALLEGRO_SHADER *shader, ALLEGRO_SHADER_TYPE type,const char *source)

bool al_attach_shader_source_file(ALLEGRO_SHADER *shader,ALLEGRO_SHADER_TYPE type, const char *filename)

bool al_build_shader(ALLEGRO_SHADER *shader)

const char *al_get_shader_log(ALLEGRO_SHADER *shader)

ALLEGRO_SHADER_PLATFORM al_get_shader_platform(ALLEGRO_SHADER *shader)

bool al_use_shader(ALLEGRO_SHADER *shader)

void al_destroy_shader(ALLEGRO_SHADER *shader)

bool al_set_shader_sampler(const char *name,ALLEGRO_BITMAP *bitmap, int unit)

bool al_set_shader_matrix(const char *name,const ALLEGRO_TRANSFORM *matrix)

bool al_set_shader_int(const char *name, int i)

bool al_set_shader_float(const char *name, float f)

bool al_set_shader_bool(const char *name, bool b)

bool al_set_shader_int_vector(const char *name,int num_components, const int *i, int num_elems)

bool al_set_shader_float_vector(const char *name,int num_components, const float *f, int num_elems)

char const *al_get_default_shader_source(ALLEGRO_SHADER_PLATFORM platform,ALLEGRO_SHADER_TYPE type)

RingLibSDL の用法

LibSDL, SDLImage, SDLTTF および SDLMixer ライブラリをベースとした RingLibSDL の用法です。

ちなみに

Ring 1.5.4 以前では、デスクトップ用の RingLibSDL バイナリ版は配布していないため RingAllegro を使用してください。

注釈

RingLibSDL の用法は ring/android/ringlibsdl フォルダを参照してください。

ライブラリの読み込み

この関数を使うには、 libsdl.ring ライブラリを読み込みます (Ring 1.6 以降)。

Load "libsdl.ring"
# RingLibSDL ライブラリ関数の使用

ウィンドウの作成

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
SDL_Delay(2000)
SDL_DestroyWindow(win)
SDL_Quit()

画像の表示

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
bmp = SDL_LoadBMP("hello.bmp")
tex = SDL_CreateTextureFromSurface(ren,bmp)
SDL_FreeSurface(bmp)
SDL_RenderClear(ren)
SDL_RenderCopy2(ren,tex)
SDL_RenderPresent(ren)
SDL_Delay(2000)
SDL_DestroyTexture(tex)
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
SDL_Quit()

二枚の画像切り替え

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
bmp = SDL_LoadBMP("hello.bmp")
tex = SDL_CreateTextureFromSurface(ren,bmp)
SDL_FreeSurface(bmp)
bmp = SDL_LoadBMP("hello2.bmp")
tex2 = SDL_CreateTextureFromSurface(ren,bmp)
SDL_FreeSurface(bmp)

for x = 1 to 10 showtex(tex) showtex(tex2) next

SDL_DestroyTexture(tex)
SDL_DestroyTexture(tex2)
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
SDL_Quit()

func showtex oTex
        SDL_RenderClear(ren)
        SDL_RenderCopy2(ren,oTex)
        SDL_RenderPresent(ren)
        SDL_Delay(200)

長方形の描画

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
SDL_RenderClear(ren)
rect = sdl_new_sdl_rect()
sdl_set_sdl_rect_x(rect,10)
sdl_set_sdl_rect_y(rect,10)
sdl_set_sdl_rect_w(rect,100)
sdl_set_sdl_rect_h(rect,100)
SDL_SetRenderDrawColor(ren,255,255,255,255)
SDL_RenderDrawRect(ren,rect)
sdl_destroy_sdl_rect(rect)
SDL_RenderPresent(ren)
SDL_Delay(2000)
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
SDL_Quit()

PNG 画像の表示

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
bmp = IMG_Load("hello3.png")
tex = SDL_CreateTextureFromSurface(ren,bmp)
SDL_FreeSurface(bmp)
SDL_RenderClear(ren)
SDL_RenderCopy2(ren,tex)
SDL_RenderPresent(ren)
SDL_Delay(2000)
SDL_DestroyTexture(tex)
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
SDL_Quit()

TTF フォントの使用

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )
SDL_RenderClear(ren)

TTF_Init()
font = TTF_OpenFont("pirulen.ttf", 16)
color = sdl_new_sdl_color()
sdl_set_sdl_color_r(color,0)
sdl_set_sdl_color_g(color,255)
sdl_set_sdl_color_b(color,0)
text = TTF_RenderText_Solid(font,"Welcome to the Ring language",color)
surface = SDL_GetWindowSurface(win)
SDL_BlitSurface(text, nullpointer(), surface, nullpointer())
SDL_UpdateWindowSurface(win)
SDL_Delay(2000)

SDL_Destroy_SDL_Color(color)
SDL_FreeSurface(text)
TTF_CloseFont(font)
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
SDL_Quit()

透過画像の表示

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)

flags = IMG_INIT_JPG | IMG_INIT_PNG
IMG_Init(flags)

win = SDL_CreateWindow("Hello World!", 100, 100, 800, 600, SDL_WINDOW_SHOWN)
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC )

bmp = IMG_Load("stars.jpg")
tex = SDL_CreateTextureFromSurface(ren,bmp)
SDL_FreeSurface(bmp)
SDL_RenderClear(ren)
SDL_RenderCopy(ren,tex,nullpointer(),nullpointer())
SDL_DestroyTexture(tex)

bmp = IMG_Load("player.png")
# 画像 - 透過色の設定 (白色)
myformat = sdl_get_sdl_surface_format(bmp)
white = SDL_MapRGB(myformat, 255, 255, 255)
SDL_SetColorKey(bmp, SDL_True, white)

tex = SDL_CreateTextureFromSurface(ren,bmp)
SDL_FreeSurface(bmp)
rect = sdl_new_sdl_rect()
sdl_set_sdl_rect_x(rect,0)
sdl_set_sdl_rect_y(rect,0)
sdl_set_sdl_rect_w(rect,100)
sdl_set_sdl_rect_h(rect,100)
SDL_RenderCopy(ren,tex,nullpointer(),rect)

SDL_SetTextureBlendMode(tex,2)
SDL_SetTextureAlphaMod(tex,255)
sdl_set_sdl_rect_x(rect,200)
sdl_set_sdl_rect_y(rect,200)
sdl_set_sdl_rect_w(rect,100)
sdl_set_sdl_rect_h(rect,100)
SDL_RenderCopy(ren,tex,nullpointer(),rect)

SDL_DestroyTexture(tex)
SDL_Destroy_SDL_Rect(rect)

SDL_RenderPresent(ren)
SDL_Delay(2000)
SDL_DestroyRenderer(ren)
SDL_DestroyWindow(win)
SDL_Quit()

ウィンドウを閉じるためのイベント

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)

myevent = sdl_new_sdl_event()
while true
        thevent = sdl_pollevent(myevent)
        switch sdl_get_sdl_event_type(myevent)
                on sdl_get_sdl_quit()
                        exit
                on sdl_get_sdl_keydown()
                        Key = SDL_GET_SDL_Event_key_keysym_sym(myevent)
                        if key = 27 exit ok

        off
end

SDL_DestroyWindow(win)
SDL_Quit()

マウスのイベント

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)

win = SDL_CreateWindow("Mouse Events ", 100, 100, 640, 480, SDL_WINDOW_SHOWN)

TTF_Init()
font = TTF_OpenFont("pirulen.ttf", 16)
color = sdl_new_sdl_color()
sdl_set_sdl_color_r(color,0)
sdl_set_sdl_color_g(color,255)
sdl_set_sdl_color_b(color,0)

surface = SDL_GetWindowSurface(win)

myevent = sdl_new_sdl_event()
while true
        cMsg = ""
        sdl_pollevent(myevent)
        switch sdl_get_sdl_event_type(myevent)
                on SDL_QUIT
                        exit
                on SDL_KEYDOWN
                        Key = SDL_GET_SDL_Event_key_keysym_sym(myevent)
                        if key = 27 exit ok
                on SDL_MOUSEBUTTONDOWN
                        if sdl_get_Sdl_Event_button_button(myevent) = SDL_BUTTON_LEFT
                                SDL_SETWINDOWTITLE(win, " Button_Left_Down " )
                        but sdl_get_Sdl_Event_button_button(myevent) = SDL_BUTTON_MIDDLE
                                SDL_SETWINDOWTITLE(win,  " Button_Middle_Down " )
                        but sdl_get_Sdl_Event_button_button(myevent) = SDL_BUTTON_RIGHT
                                SDL_SETWINDOWTITLE(win,  " Button_Right_Down " )
                        ok
                on SDL_MOUSEMOTION
                        sdl_fillrect(surface,nullpointer(),0)
                        if sdl_get_sdl_event_motion_xrel(myevent) < 0
                                cMsg += " Left "
                        else
                                cMsg += " Right "
                        ok
                        if sdl_get_sdl_event_motion_yrel(myevent) < 0
                                cMsg += " Up "
                        else
                                cMsg += " Down "
                        ok
                        cMsg += " x = " + sdl_get_sdl_event_motion_x(myevent)
                        cMsg += " y = " + sdl_get_sdl_event_motion_y(myevent)
                        showmsg(cMsg)
        off
end

SDL_Destroy_SDL_Color(Color)
TTF_CloseFont(font)
SDL_DestroyWindow(win)
SDL_Quit()

func showmsg mymsg
        text = TTF_RenderText_Solid(font,mymsg,color)
        SDL_BlitSurface(text, nullpointer(), surface, nullpointer())
        SDL_UpdateWindowSurface(win)
        SDL_FreeSurface(text)

音声の再生

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT , 2, 10000)
Mix_AllocateChannels(4)
sound = Mix_LoadWav( "sound.wav" )
Mix_VolumeChunk(sound,1)
Mix_PlayChannel(1,sound,0)

myevent = sdl_new_sdl_event()
while true
        thevent = sdl_pollevent(myevent)
        switch sdl_get_sdl_event_type(myevent)
                on sdl_get_sdl_quit()
                        exit
                on sdl_get_sdl_keydown()
                        Key = SDL_GET_SDL_Event_key_keysym_sym(myevent)
                        if key = 27 exit ok
        off
end

Mix_FreeChunk( sound )
Mix_CloseAudio()
Mix_Quit()
SDL_DestroyWindow(win)
SDL_Quit()

RingLibSDL 関数リファレンス

はじめに

RingLibSDL 拡張機能の関数一覧です。

リファレンス

MIX_DEFAULT_FORMAT

SDL_QUIT

SDL_BUTTON_LEFT

SDL_BUTTON_MIDDLE

SDL_BUTTON_RIGHT

SDL_PRESSED

SDL_RELEASED

SDL_APP_TERMINATING

SDL_APP_LOWMEMORY

SDL_APP_WILLENTERBACKGROUND

SDL_APP_DIDENTERBACKGROUND

SDL_APP_WILLENTERFOREGROUND

SDL_APP_DIDENTERFOREGROUND

SDL_WINDOWEVENT

SDL_SYSWMEVENT

SDL_KEYDOWN

SDL_KEYUP

SDL_TEXTEDITING

SDL_TEXTINPUT

SDL_MOUSEMOTION

SDL_MOUSEBUTTONDOWN

SDL_MOUSEBUTTONUP

SDL_MOUSEWHEEL

SDL_JOYAXISMOTION

SDL_JOYBALLMOTION

SDL_JOYHATMOTION

SDL_JOYBUTTONDOWN

SDL_JOYBUTTONUP

SDL_JOYDEVICEADDED

SDL_JOYDEVICEREMOVED

SDL_CONTROLLERAXISMOTION

SDL_CONTROLLERBUTTONDOWN

SDL_CONTROLLERBUTTONUP

SDL_CONTROLLERDEVICEADDED

SDL_CONTROLLERDEVICEREMOVED

SDL_CONTROLLERDEVICEREMAPPED

SDL_FINGERDOWN

SDL_FINGERUP

SDL_FINGERMOTION

SDL_DOLLARGESTURE

SDL_DOLLARRECORD

SDL_MULTIGESTURE

SDL_CLIPBOARDUPDATE

SDL_DROPFILE

SDL_RENDER_TARGETS_RESET

SDL_USEREVENT

SDL_LASTEVENT

SDL_NET_MAJOR_VERSION

SDL_NET_MINOR_VERSION

SDL_NET_PATCHLEVEL

INADDR_ANY

INADDR_NONE

INADDR_BROADCAST

SDLNET_MAX_UDPCHANNELS

SDLNET_MAX_UDPADDRESSES

SDLK_0

SDLK_1

SDLK_2

SDLK_3

SDLK_4

SDLK_5

SDLK_6

SDLK_7

SDLK_8

SDLK_9

SDLK_a

SDLK_AC_BACK

SDLK_AC_BOOKMARKS

SDLK_AC_FORWARD

SDLK_AC_HOME

SDLK_AC_REFRESH

SDLK_AC_SEARCH

SDLK_AC_STOP

SDLK_AGAIN

SDLK_ALTERASE

SDLK_QUOTE

SDLK_APPLICATION

SDLK_AUDIOMUTE

SDLK_AUDIONEXT

SDLK_AUDIOPLAY

SDLK_AUDIOPREV

SDLK_BRIGHTNESSDOWN

SDLK_BRIGHTNESSUP

SDLK_c

SDLK_CALCULATOR

SDLK_CANCEL

SDLK_CAPSLOCK

SDLK_CLEAR

SDLK_CLEARAGAIN

SDLK_COMMA

SDLK_COMPUTER

SDLK_COPY

SDLK_CRSEL

SDLK_CURRENCYSUBUNIT

SDLK_CURRENCYUNIT

SDLK_CUT

SDLK_d

SDLK_DECIMALSEPARATOR

SDLK_DELETE

SDLK_DISPLAYSWITCH

SDLK_DOWN

SDLK_e

SDLK_EJECT

SDLK_END

SDLK_EQUALS

SDLK_ESCAPE

SDLK_EXECUTE

SDLK_EXSEL

SDLK_f

SDLK_F1

SDLK_F10

SDLK_F11

SDLK_F12

SDLK_F13

SDLK_F14

SDLK_F15

SDLK_F16

SDLK_F17

SDLK_F18

SDLK_F19

SDLK_F2

SDLK_F20

SDLK_F21

SDLK_F22

SDLK_F23

SDLK_F24

SDLK_F3

SDLK_F4

SDLK_F5

SDLK_F6

SDLK_F7

SDLK_F8

SDLK_F9

SDLK_FIND

SDLK_g

SDLK_BACKQUOTE

SDLK_h

SDLK_HELP

SDLK_HOME

SDLK_i

SDLK_INSERT

SDLK_j

SDLK_k

SDLK_KBDILLUMDOWN

SDLK_KBDILLUMTOGGLE

SDLK_KBDILLUMUP

SDLK_KP_0

SDLK_KP_00

SDLK_KP_000

SDLK_KP_1

SDLK_KP_2

SDLK_KP_3

SDLK_KP_4

SDLK_KP_5

SDLK_KP_6

SDLK_KP_7

SDLK_KP_8

SDLK_KP_9

SDLK_KP_A

SDLK_KP_AMPERSAND

SDLK_KP_AT

SDLK_KP_B

SDLK_KP_BACKSPACE

SDLK_KP_BINARY

SDLK_KP_C

SDLK_KP_CLEAR

SDLK_KP_CLEARENTRY

SDLK_KP_COLON

SDLK_KP_COMMA

SDLK_KP_D

SDLK_KP_DBLAMPERSAND

SDLK_KP_DBLVERTICALBAR

SDLK_KP_DECIMAL

SDLK_KP_DIVIDE

SDLK_KP_E

SDLK_KP_ENTER

SDLK_KP_EQUALS

SDLK_KP_EQUALSAS400

SDLK_KP_EXCLAM

SDLK_KP_F

SDLK_KP_GREATER

SDLK_KP_HASH

SDLK_KP_HEXADECIMAL

SDLK_KP_LEFTBRACE

SDLK_KP_LEFTPAREN

SDLK_KP_LESS

SDLK_KP_MEMADD

SDLK_KP_MEMCLEAR

SDLK_KP_MEMDIVIDE

SDLK_KP_MEMMULTIPLY

SDLK_KP_MEMRECALL

SDLK_KP_MEMSTORE

SDLK_KP_MEMSUBTRACT

SDLK_KP_MINUS

SDLK_KP_MULTIPLY

SDLK_KP_OCTAL

SDLK_KP_PERCENT

SDLK_KP_PERIOD

SDLK_KP_PLUS

SDLK_KP_PLUSMINUS

SDLK_KP_POWER

SDLK_KP_RIGHTBRACE

SDLK_KP_RIGHTPAREN

SDLK_KP_SPACE

SDLK_KP_TAB

SDLK_KP_VERTICALBAR

SDLK_KP_XOR

SDLK_l

SDLK_LALT

SDLK_LCTRL

SDLK_LEFT

SDLK_LEFTBRACKET

SDLK_LGUI

SDLK_LSHIFT

SDLK_m

SDLK_MAIL

SDLK_MEDIASELECT

SDLK_MENU

SDLK_MINUS

SDLK_MODE

SDLK_MUTE

SDLK_n

SDLK_NUMLOCKCLEAR

SDLK_o

SDLK_OPER

SDLK_OUT

SDLK_p

SDLK_PAGEDOWN

SDLK_PAGEUP

SDLK_PASTE

SDLK_PAUSE

SDLK_PERIOD

SDLK_POWER

SDLK_PRINTSCREEN

SDLK_PRIOR

SDLK_q

SDLK_r

SDLK_RALT

SDLK_RCTRL

SDLK_RETURN

SDLK_RETURN2

SDLK_RGUI

SDLK_RIGHT

SDLK_RIGHTBRACKET

SDLK_RSHIFT

SDLK_s

SDLK_SCROLLLOCK

SDLK_SELECT

SDLK_SEMICOLON

SDLK_SEPARATOR

SDLK_SLASH

SDLK_SLEEP

SDLK_SPACE

SDLK_STOP

SDLK_SYSREQ

SDLK_t

SDLK_TAB

SDLK_THOUSANDSSEPARATOR

SDLK_u

SDLK_UNDO

SDLK_UNKNOWN

SDLK_UP

SDLK_v

SDLK_VOLUMEDOWN

SDLK_VOLUMEUP

SDLK_w

SDLK_WWW

SDLK_x

SDLK_y

SDLK_z

SDLK_AMPERSAND

SDLK_ASTERISK

SDLK_AT

SDLK_CARET

SDLK_COLON

SDLK_DOLLAR

SDLK_EXCLAIM

SDLK_GREATER

SDLK_HASH

SDLK_LEFTPAREN

SDLK_LESS

SDLK_PERCENT

SDLK_PLUS

SDLK_QUESTION

SDLK_QUOTEDBL

SDLK_RIGHTPAREN

SDLK_UNDERSCORE

SDL_THREAD_PRIORITY_LOW

SDL_THREAD_PRIORITY_NORMAL

SDL_THREAD_PRIORITY_HIGH

void SDL_RenderCopy2(SDL_Renderer *,SDL_Texture *)

void SDL_Delay(int)

void SDL_Init(int)

int SDL_InitSubSystem(Uint32 flags)

void SDL_Quit(void)

void SDL_QuitSubSystem(Uint32 flags)

void SDL_SetMainReady(void)

Uint32 SDL_WasInit(Uint32 flags)

SDL_bool SDL_SetHint(const char *name,const char *value)

SDL_bool SDL_SetHintWithPriority(const char *name,const char *value,SDL_HintPriority priority)

void SDL_ClearError(void)

const char *SDL_GetError(void)

SDL_LogPriority SDL_LogGetPriority(int category)

void SDL_LogResetPriorities(void)

void SDL_LogSetAllPriority(SDL_LogPriority priority)

SDL_AssertionHandler SDL_GetDefaultAssertionHandler(void)

void SDL_ResetAssertionReport(void)

void SDL_SetAssertionHandler(SDL_AssertionHandler handler,void *userdata)

void SDL_TriggerBreakpoint(void)

void SDL_assert(int)

void SDL_assert_paranoid(int)

void SDL_assert_release(int)

const char * SDL_GetRevision(void)

int SDL_GetRevisionNumber(void)

void SDL_GetVersion(SDL_version *ver)

SDL_Window *SDL_CreateWindow(const char * title,int x, int y,int w,int h,Uint32 flags)

void SDL_DestroyWindow(SDL_Window *window)

void SDL_DisableScreenSaver(void)

void SDL_EnableScreenSaver(void)

SDL_GLContext SDL_GL_CreateContext(SDL_Window *window)

void SDL_GL_DeleteContext(SDL_GLContext context)

SDL_bool SDL_GL_ExtensionSupported(const char *extension)

int SDL_GL_GetAttribute(SDL_GLattr attr,int *value)

SDL_GLContext SDL_GL_GetCurrentContext(void)

SDL_Window *SDL_GL_GetCurrentWindow(void)

void SDL_GL_GetDrawableSize(SDL_Window *window,int *w,int *h)

void *SDL_GL_GetProcAddress(const char *proc)

int SDL_GL_GetSwapInterval(void)

int SDL_GL_LoadLibrary(const char *path)

int SDL_GL_MakeCurrent(SDL_Window *window,SDL_GLContext context)

void SDL_GL_ResetAttributes(void)

int SDL_GL_SetAttribute(SDL_GLattr attr,int value)

int SDL_GL_SetSwapInterval(int interval)

void SDL_GL_SwapWindow(SDL_Window *window)

void SDL_GL_UnloadLibrary(void)

SDL_DisplayMode *SDL_GetClosestDisplayMode(int displayIndex,SDL_DisplayMode *mode,SDL_DisplayMode *closest)

int SDL_GetCurrentDisplayMode(int displayIndex,SDL_DisplayMode *mode)

const char *SDL_GetCurrentVideoDriver(void)

int SDL_GetDesktopDisplayMode(int displayIndex,SDL_DisplayMode *mode)

int SDL_GetDisplayBounds(int displayIndex,SDL_Rect *rect)

int SDL_GetNumVideoDisplays(void)

int SDL_GetNumVideoDrivers(void)

const char * SDL_GetVideoDriver(int index)

void *SDL_GetWindowData(SDL_Window *window,const char *name)

int SDL_GetWindowDisplayIndex(SDL_Window *window)

int SDL_GetWindowDisplayMode(SDL_Window *window,SDL_DisplayMode *mode)

Uint32 SDL_GetWindowFlags(SDL_Window *window)

SDL_Window *SDL_GetWindowFromID(Uint32 id)

int SDL_GetWindowGammaRamp(SDL_Window *window,Uint16 *red,Uint16 *green,Uint16 *blue)

SDL_bool SDL_GetWindowGrab(SDL_Window *window)

Uint32 SDL_GetWindowID(SDL_Window* window)

void SDL_GetWindowMaximumSize(SDL_Window *window,int *w,int *h)

void SDL_GetWindowMinimumSize(SDL_Window *window,int *w,int *h)

void SDL_GetWindowPosition(SDL_Window *window,int *x,int *y)

void SDL_GetWindowSize(SDL_Window *window,int *w,int *h)

SDL_Surface *SDL_GetWindowSurface(SDL_Window *window)

const char *SDL_GetWindowTitle(SDL_Window *window)

SDL_bool SDL_IsScreenSaverEnabled(void)

void SDL_MaximizeWindow(SDL_Window *window)

void SDL_MinimizeWindow(SDL_Window *window)

void SDL_RaiseWindow(SDL_Window *window)

void SDL_RestoreWindow(SDL_Window *window)

void SDL_SetWindowBordered(SDL_Window *window,SDL_bool bordered)

int SDL_SetWindowBrightness(SDL_Window *window,float brightness)

void *SDL_SetWindowData(SDL_Window *window,const char *name,void *userdata)

int SDL_SetWindowDisplayMode(SDL_Window *window,const SDL_DisplayMode *mode)

int SDL_SetWindowFullscreen(SDL_Window *window,Uint32 flags)

int SDL_SetWindowGammaRamp(SDL_Window *window,const Uint16 *red,const Uint16 *green,const Uint16* blue)

void SDL_SetWindowGrab(SDL_Window *window,SDL_bool grabbed)

void SDL_SetWindowMinimumSize(SDL_Window* window,int min_w,int min_h)

void SDL_SetWindowSize(SDL_Window *window,int w,int h)

void SDL_SetWindowTitle(SDL_Window *window,const char *title)

int SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata,int *buttonid)

int SDL_ShowSimpleMessageBox(Uint32 flags,const char *title,const char *message,SDL_Window *window)

void SDL_ShowWindow(SDL_Window *window)

int SDL_UpdateWindowSurface(SDL_Window *window)

int SDL_UpdateWindowSurfaceRects(SDL_Window *window,const SDL_Rect *rects,int numrects)

int SDL_VideoInit(const char *driver_name)

void SDL_VideoQuit(void)

SDL_Renderer *SDL_CreateRenderer(SDL_Window *window,int index,Uint32 flags)

SDL_Renderer *SDL_CreateSoftwareRenderer(SDL_Surface *surface)

SDL_Texture *SDL_CreateTexture(SDL_Renderer *renderer,Uint32 format,int access,int w,int h)

SDL_Texture *SDL_CreateTextureFromSurface(SDL_Renderer *renderer,SDL_Surface *surface)

void SDL_DestroyTexture(SDL_Texture *texture)

int SDL_GL_BindTexture(SDL_Texture *texture,float *texw,float *texh)

int SDL_GL_UnbindTexture(SDL_Texture *texture)

int SDL_GetNumRenderDrivers(void)

int SDL_GetRenderDrawBlendMode(SDL_Renderer *renderer,SDL_BlendMode *blendMode)

int SDL_GetRenderDrawColor(SDL_Renderer *renderer,Uint8 *r,Uint8 *g,Uint8 *b,Uint8 *a)

int SDL_GetRenderDriverInfo(int index,SDL_RendererInfo *info)

SDL_Texture *SDL_GetRenderTarget(SDL_Renderer *renderer)

SDL_Renderer *SDL_GetRenderer(SDL_Window *window)

int SDL_GetRendererInfo(SDL_Renderer *renderer,SDL_RendererInfo *info)

int SDL_GetRendererOutputSize(SDL_Renderer *renderer,int *w,int *h)

int SDL_GetTextureAlphaMod(SDL_Texture *texture,Uint8 *alpha)

int SDL_GetTextureBlendMode(SDL_Texture *texture,SDL_BlendMode *blendMode)

int SDL_GetTextureColorMod(SDL_Texture *texture,Uint8 *r,Uint8 *g,Uint8 *b)

int SDL_LockTexture(SDL_Texture *texture,const SDL_Rect *rect,void **pixels,int *pitch)

int SDL_QueryTexture(SDL_Texture *texture,int *format,int *access,int *w,int *h)

int SDL_RenderClear(SDL_Renderer *renderer)

int SDL_RenderCopy(SDL_Renderer *renderer,SDL_Texture *texture,const SDL_Rect *srcrect,const SDL_Rect *dstrect)

int SDL_RenderCopyEx(SDL_Renderer *renderer,SDL_Texture *texture,const SDL_Rect *srcrect,const SDL_Rect *dstrect,const double angle,const SDL_Point *center,const SDL_RendererFlip flip)

int SDL_RenderDrawLine(SDL_Renderer *renderer,int x1,int y1,int x2,int y2)

int SDL_RenderDrawLines(SDL_Renderer *renderer,const SDL_Point *points,int count)

int SDL_RenderDrawPoint(SDL_Renderer *renderer,int x, int y)

int SDL_RenderDrawPoints(SDL_Renderer *renderer,const SDL_Point *points,int count)

int SDL_RenderDrawRect(SDL_Renderer *renderer,const SDL_Rect *rect)

int SDL_RenderDrawRects(SDL_Renderer *renderer,const SDL_Rect *rects,int count)

int SDL_RenderFillRect(SDL_Renderer *renderer,const SDL_Rect *rect)

int SDL_RenderFillRects(SDL_Renderer *renderer,const SDL_Rect* rects,int count)

void SDL_RenderGetClipRect(SDL_Renderer *renderer,SDL_Rect *rect)

void SDL_RenderGetScale(SDL_Renderer *renderer,float *scaleX,float *scaleY)

void SDL_RenderGetViewport(SDL_Renderer *renderer,SDL_Rect *rect)

int SDL_RenderReadPixels(SDL_Renderer *renderer,const SDL_Rect *rect,Uint32 format,void *pixels,int pitch)

int SDL_RenderSetClipRect(SDL_Renderer *renderer,const SDL_Rect *rect)

int SDL_RenderSetScale(SDL_Renderer *renderer,float scaleX,float scaleY)

int SDL_RenderSetViewport(SDL_Renderer *renderer,const SDL_Rect *rect)

SDL_bool SDL_RenderTargetSupported(SDL_Renderer *renderer)

int SDL_SetRenderDrawBlendMode(SDL_Renderer *renderer,SDL_BlendMode blendMode)

int SDL_SetRenderDrawColor(SDL_Renderer *renderer,Uint8 r,Uint8 g,Uint8 b,Uint8 a)

int SDL_SetRenderTarget(SDL_Renderer *renderer,SDL_Texture *texture)

int SDL_SetTextureAlphaMod(SDL_Texture *texture,Uint8 alpha)

int SDL_SetTextureBlendMode(SDL_Texture *texture,SDL_BlendMode blendMode)

int SDL_SetTextureColorMod(SDL_Texture *texture,Uint8 r,Uint8 g,Uint8 b)

void SDL_UnlockTexture(SDL_Texture *texture)

int SDL_UpdateTexture(SDL_Texture *texture,const SDL_Rect *rect,const void*pixels,int pitch)

int SDL_UpdateYUVTexture(SDL_Texture *texture,const SDL_Rect *rect,const Uint8 *Yplane,int Ypitch,const Uint8 *Uplane,int Upitch,const Uint8 *Vplane,int Vpitch)

SDL_PixelFormat *SDL_AllocFormat(Uint32 pixel_format)

SDL_Palette *SDL_AllocPalette(int ncolors)

void SDL_CalculateGammaRamp(float gamma,Uint16 *ramp)

void SDL_FreeFormat(SDL_PixelFormat *format)

void SDL_FreePalette(SDL_Palette *palette)

const char *SDL_GetPixelFormatName(Uint32 format)

void SDL_GetRGB(Uint32 pixel,const SDL_PixelFormat* format,Uint8 *r,Uint8 *g,Uint8 *b)

void SDL_GetRGBA(Uint32 pixel,const SDL_PixelFormat* format,Uint8 *r,Uint8 *g,Uint8 *b,Uint8 *a)

Uint32 SDL_MapRGB(const SDL_PixelFormat* format,Uint8 r,Uint8 g, Uint8 b)

Uint32 SDL_MapRGBA(const SDL_PixelFormat* format,Uint8 r,Uint8 g, Uint8 b, Uint8 a)

Uint32 SDL_MasksToPixelFormatEnum(int bpp,Uint32 Rmask,Uint32 Gmask,Uint32 Bmask,Uint32 Amask)

SDL_bool SDL_PixelFormatEnumToMasks(Uint32 format,int *bpp,Uint32 *Rmask,Uint32 *Gmask,Uint32 *Bmask,Uint32 *Amask)

int SDL_SetPaletteColors(SDL_Palette *palette,const SDL_Color *colors,int firstcolor,int ncolors)

int SDL_SetPixelFormatPalette(SDL_PixelFormat *format,SDL_Palette *palette)

SDL_bool SDL_EnclosePoints(const SDL_Point* points,int count,const SDL_Rect *clip,SDL_Rect *result)

SDL_bool SDL_HasIntersection(const SDL_Rect *A,const SDL_Rect *B)

SDL_bool SDL_IntersectRect(const SDL_Rect *A,const SDL_Rect *B,SDL_Rect *result)

SDL_bool SDL_IntersectRectAndLine(const SDL_Rect *rect,int *X1,int *Y1,int *X2,int *Y2)

SDL_bool SDL_RectEquals(const SDL_Rect *a,const SDL_Rect *b)

void SDL_UnionRect(const SDL_Rect *A,const SDL_Rect *B,SDL_Rect *result)

int SDL_BlitScaled(SDL_Surface *src,const SDL_Rect *srcrect,SDL_Surface *dst,SDL_Rect *dstrect)

int SDL_BlitSurface(SDL_Surface *src,const SDL_Rect* srcrect,SDL_Surface *dst,SDL_Rect *dstrect)

int SDL_ConvertPixels(int width,int height,Uint32 src_format,const void *src,int src_pitch,Uint32 dst_format,void *dst,int dst_pitch)

SDL_Surface *SDL_ConvertSurface(SDL_Surface *src,const SDL_PixelFormat *fmt,Uint32 flags)

SDL_Surface *SDL_ConvertSurfaceFormat(SDL_Surface *src,Uint32 pixel_format,Uint32 flags)

SDL_Surface *SDL_CreateRGBSurface(Uint32 flags,int width,int height,int depth,Uint32 Rmask,Uint32 Gmask,Uint32 Bmask,Uint32 Amask)

SDL_Surface* SDL_CreateRGBSurfaceFrom(void *pixels,int width,int height,int depth,int pitch,Uint32 Rmask,Uint32 Gmask,Uint32 Bmask,Uint32 Amask)

int SDL_FillRect(SDL_Surface *dst,const SDL_Rect *rect,Uint32 color)

int SDL_FillRects(SDL_Surface *dst,const SDL_Rect *rects,int count,Uint32 color)

void SDL_FreeSurface(SDL_Surface *surface)

void SDL_GetClipRect(SDL_Surface *surface,SDL_Rect *rect)

int SDL_GetColorKey(SDL_Surface *surface,Uint32 *key)

int SDL_GetSurfaceAlphaMod(SDL_Surface *surface,Uint8 *alpha)

int SDL_GetSurfaceBlendMode(SDL_Surface *surface,SDL_BlendMode *blendMode)

int SDL_GetSurfaceColorMod(SDL_Surface *surface,Uint8 *r,Uint8 *g,Uint8 *b)

SDL_Surface *SDL_LoadBMP(const char *file)

SDL_Surface *SDL_LoadBMP_RW(SDL_RWops *src,int freesrc)

int SDL_LockSurface(SDL_Surface *surface)

int SDL_LowerBlit(SDL_Surface *src,SDL_Rect *srcrect,SDL_Surface *dst,SDL_Rect *dstrect)

int SDL_LowerBlitScaled(SDL_Surface *src,SDL_Rect *srcrect,SDL_Surface *dst,SDL_Rect *dstrect)

SDL_bool SDL_MUSTLOCK(SDL_Surface *surface)

int SDL_SaveBMP(SDL_Surface *surface,const char *file)

int SDL_SaveBMP_RW(SDL_Surface *surface,SDL_RWops *dst,int freedst)

SDL_bool SDL_SetClipRect(SDL_Surface *surface,const SDL_Rect *rect)

int SDL_SetColorKey(SDL_Surface *surface,int flag,Uint32 key)

int SDL_SetSurfaceAlphaMod(SDL_Surface *surface,Uint8 alpha)

int SDL_SetSurfaceBlendMode(SDL_Surface *surface,SDL_BlendMode blendMode)

int SDL_SetSurfaceColorMod(SDL_Surface *surface,Uint8 r,Uint8 g,Uint8 b)

int SDL_SetSurfacePalette(SDL_Surface *surface,SDL_Palette *palette)

int SDL_SetSurfaceRLE(SDL_Surface *surface,int flag)

void SDL_UnlockSurface(SDL_Surface* surface)

SDL_bool SDL_GetWindowWMInfo(SDL_Window *window,SDL_SysWMinfo *info)

char *SDL_GetClipboardText(void)

SDL_bool SDL_HasClipboardText(void)

int SDL_SetClipboardText(const char *text)

void SDL_AddEventWatch(SDL_EventFilter filter,void *userdata)

void SDL_DelEventWatch(SDL_EventFilter filter,void *userdata)

Uint8 SDL_EventState(Uint32 type,int state)

void SDL_FilterEvents(SDL_EventFilter filter,void *userdata)

void SDL_FlushEvent(Uint32 type)

void SDL_FlushEvents(Uint32 minType,Uint32 maxType)

SDL_bool SDL_GetEventFilter(SDL_EventFilter *filter,void **userdata)

Uint8 SDL_GetEventState(Uint32 type)

int SDL_GetNumTouchDevices(void)

int SDL_GetNumTouchFingers(SDL_TouchID touchID)

SDL_TouchID SDL_GetTouchDevice(int index)

SDL_Finger* SDL_GetTouchFinger(SDL_TouchID touchID,int index)

SDL_bool SDL_HasEvent(Uint32 type)

SDL_bool SDL_HasEvents(Uint32 minType,Uint32 maxType)

int SDL_LoadDollarTemplates(SDL_TouchID touchId,SDL_RWops *src)

int SDL_PeepEvents(SDL_Event *events,int numevents,SDL_eventaction action,Uint32 minType,Uint32 maxType)

int SDL_PollEvent(SDL_Event *event)

void SDL_PumpEvents(void)

int SDL_PushEvent(SDL_Event *event)

SDL_bool SDL_QuitRequested(void)

int SDL_RecordGesture(SDL_TouchID touchId)

Uint32 SDL_RegisterEvents(int numevents)

int SDL_SaveAllDollarTemplates(SDL_RWops *dst)

int SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst)

void SDL_SetEventFilter(SDL_EventFilter filter,void *userdata)

int SDL_WaitEvent(SDL_Event *event)

int SDL_WaitEventTimeout(SDL_Event *event,int timeout)

SDL_Keycode SDL_GetKeyFromName(const char * name)

SDL_Keycode SDL_GetKeyFromScancode(SDL_Scancode scancode)

const char * SDL_GetKeyName(SDL_Keycode key)

SDL_Window* SDL_GetKeyboardFocus(void)

const Uint8* SDL_GetKeyboardState(int* numkeys)

SDL_Keymod SDL_GetModState(void)

SDL_Scancode SDL_GetScancodeFromKey(SDL_Keycode key)

SDL_Scancode SDL_GetScancodeFromName(const char * name)

const char * SDL_GetScancodeName(SDL_Scancode scancode)

SDL_bool SDL_HasScreenKeyboardSupport(void)

SDL_bool SDL_IsScreenKeyboardShown(SDL_Window* window)

SDL_bool SDL_IsTextInputActive(void)

void SDL_SetModState(SDL_Keymod modstate)

void SDL_SetTextInputRect(SDL_Rect* rect)

void SDL_StartTextInput(void)

void SDL_StopTextInput(void)

SDL_Cursor *SDL_CreateCursor(const Uint8 *data,const Uint8 *mask,int w,int h,int hot_x,int hot_y)

void SDL_FreeCursor(SDL_Cursor *cursor)

SDL_Cursor *SDL_GetCursor(void)

SDL_Cursor *SDL_GetDefaultCursor(void)

Uint32 SDL_GetMouseState(int *x,int * y)

SDL_bool SDL_GetRelativeMouseMode(void)

Uint32 SDL_GetRelativeMouseState(int *x,int *y)

void SDL_SetCursor(SDL_Cursor *cursor)

int SDL_SetRelativeMouseMode(SDL_bool enabled)

int SDL_ShowCursor(int toggle)

void SDL_JoystickClose(SDL_Joystick *joystick)

SDL_bool SDL_JoystickGetAttached(SDL_Joystick *joystick)

Sint16 SDL_JoystickGetAxis(SDL_Joystick *joystick,int axis)

int SDL_JoystickGetBall(SDL_Joystick *joystick,int ball,int *dx,int *dy)

Uint8 SDL_JoystickGetButton(SDL_Joystick *joystick,int button)

SDL_JoystickGUID SDL_JoystickGetDeviceGUID(int device_index)

SDL_JoystickGUID SDL_JoystickGetGUID(SDL_Joystick *joystick)

SDL_JoystickGUID SDL_JoystickGetGUIDFromString(const char *pchGUID)

void SDL_JoystickGetGUIDString(SDL_JoystickGUID guid,char *pszGUID,int cbGUID)

Uint8 SDL_JoystickGetHat(SDL_Joystick *joystick,int hat)

SDL_JoystickID SDL_JoystickInstanceID(SDL_Joystick *joystick)

const char *SDL_JoystickName(SDL_Joystick *joystick)

const char *SDL_JoystickNameForIndex(int device_index)

int SDL_JoystickNumAxes(SDL_Joystick *joystick)

int SDL_JoystickNumBalls(SDL_Joystick *joystick)

int SDL_JoystickNumButtons(SDL_Joystick *joystick)

int SDL_JoystickNumHats(SDL_Joystick *joystick)

SDL_Joystick *SDL_JoystickOpen(int device_index)

void SDL_JoystickUpdate(void)

int SDL_NumJoysticks(void)

int SDL_GameControllerAddMapping(const char *mappingString)

int SDL_GameControllerAddMappingsFromFile(const char *filename)

int SDL_GameControllerAddMappingsFromRW(SDL_RWops *rw,int freerw)

void SDL_GameControllerClose(SDL_GameController *gamecontroller)

int SDL_GameControllerEventState(int state)

Sint16 SDL_GameControllerGetAxis(SDL_GameController *gamecontroller,SDL_GameControllerAxis axis)

SDL_GameControllerAxis SDL_GameControllerGetAxisFromString(const char *pchString)

SDL_GameControllerButtonBind SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,SDL_GameControllerAxis axis)

SDL_GameControllerButtonBind SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,SDL_GameControllerButton button)

Uint8 SDL_GameControllerGetButton(SDL_GameController *gamecontroller,SDL_GameControllerButton button)

SDL_GameControllerButton SDL_GameControllerGetButtonFromString(const char *pchString)

SDL_Joystick *SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller)

const char *SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis)

const char *SDL_GameControllerGetStringForButton(SDL_GameControllerButton button)

char *SDL_GameControllerMapping(SDL_GameController *gamecontroller)

char *SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid)

const char *SDL_GameControllerName(SDL_GameController *gamecontroller)

const char *SDL_GameControllerNameForIndex(int joystick_index)

SDL_GameController* SDL_GameControllerOpen(int joystick_index)

void SDL_GameControllerUpdate(void)

SDL_bool SDL_IsGameController(int joystick_index)

void SDL_HapticClose(SDL_Haptic* haptic)

void SDL_HapticDestroyEffect(SDL_Haptic *haptic,int effect)

int SDL_HapticEffectSupported(SDL_Haptic *haptic,SDL_HapticEffect *effect)

int SDL_HapticGetEffectStatus(SDL_Haptic *haptic,int effect)

int SDL_HapticIndex(SDL_Haptic *haptic)

const char *SDL_HapticName(int device_index)

int SDL_HapticNewEffect(SDL_Haptic *haptic,SDL_HapticEffect *effect)

int SDL_HapticNumAxes(SDL_Haptic *haptic)

int SDL_HapticNumEffects(SDL_Haptic *haptic)

int SDL_HapticNumEffectsPlaying(SDL_Haptic *haptic)

SDL_Haptic *SDL_HapticOpen(int device_index)

SDL_Haptic *SDL_HapticOpenFromJoystick(SDL_Joystick *joystick)

SDL_Haptic *SDL_HapticOpenFromMouse(void)

int SDL_HapticOpened(int device_index)

int SDL_HapticPause(SDL_Haptic *haptic)

unsigned int SDL_HapticQuery(SDL_Haptic *haptic)

int SDL_HapticRumbleInit(SDL_Haptic *haptic)

int SDL_HapticRumblePlay(SDL_Haptic *haptic,float strength,Uint32 length)

int SDL_HapticRumbleStop(SDL_Haptic *haptic)

int SDL_HapticRumbleSupported(SDL_Haptic *haptic)

int SDL_HapticRunEffect(SDL_Haptic *haptic,int effect,Uint32 iterations)

int SDL_HapticSetAutocenter(SDL_Haptic *haptic,int autocenter)

int SDL_HapticSetGain(SDL_Haptic *haptic,int gain)

int SDL_HapticStopAll(SDL_Haptic *haptic)

int SDL_HapticStopEffect(SDL_Haptic *haptic,int effect)

int SDL_HapticUnpause(SDL_Haptic *haptic)

int SDL_HapticUpdateEffect(SDL_Haptic *haptic,int effect,SDL_HapticEffect *data)

int SDL_JoystickIsHaptic(SDL_Joystick *joystick)

int SDL_MouseIsHaptic(void)

int SDL_NumHaptics(void)

int SDL_AudioInit(const char * driver_name)

void SDL_AudioQuit(void)

int SDL_BuildAudioCVT(SDL_AudioCVT *cvt,SDL_AudioFormat src_format,Uint8 src_channels,int src_rate,SDL_AudioFormat dst_format,Uint8 dst_channels,int dst_rate)

void SDL_CloseAudioDevice(SDL_AudioDeviceID dev)

int SDL_ConvertAudio(SDL_AudioCVT *cvt)

void SDL_FreeWAV(Uint8 *audio_buf)

const char * SDL_GetAudioDeviceName(int index,int iscapture)

SDL_AudioStatus SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev)

const char * SDL_GetAudioDriver(int index)

SDL_AudioStatus SDL_GetAudioStatus(void)

const char * SDL_GetCurrentAudioDriver(void)

int SDL_GetNumAudioDevices(int iscapture)

int SDL_GetNumAudioDrivers(void)

SDL_AudioSpec *SDL_LoadWAV_RW(SDL_RWops *src,int freesrc,SDL_AudioSpec *spec,Uint8 **audio_buf,Uint32 *audio_len)

void SDL_LockAudio(void)

void SDL_LockAudioDevice(SDL_AudioDeviceID dev)

void SDL_MixAudio(Uint8 *dst,const Uint8* src,Uint32 len,int volume)

void SDL_MixAudioFormat(Uint8 *dst,const Uint8 *src,SDL_AudioFormat format,Uint32 len,int volume)

int SDL_OpenAudio(SDL_AudioSpec *desired,SDL_AudioSpec *obtained)

SDL_AudioDeviceID SDL_OpenAudioDevice(const char *device,int iscapture,const SDL_AudioSpec *desired,SDL_AudioSpec *obtained,int allowed_changes)

void SDL_PauseAudio(int pause_on)

void SDL_PauseAudioDevice(SDL_AudioDeviceID dev,int pause_on)

void SDL_UnlockAudio(void)

void SDL_UnlockAudioDevice(SDL_AudioDeviceID dev)

char *SDL_GetBasePath(void)

char *SDL_GetPrefPath(const char *org,const char *app)

SDL_RWops *SDL_AllocRW(void)

void SDL_FreeRW(SDL_RWops *area)

SDL_RWops *SDL_RWFromConstMem(const void* mem,int size)

SDL_RWops *SDL_RWFromFP(void *fp,SDL_bool autoclose)

SDL_RWops *SDL_RWFromFile(const char *file,const char *mode)

SDL_RWops *SDL_RWFromMem(void *mem,int size)

int SDL_RWclose(struct SDL_RWops *context)

size_t SDL_RWread(struct SDL_RWops *context,void *ptr,size_t size,size_t maxnum)

Sint64 SDL_RWseek(SDL_RWops *context,Sint64 offset,int whence)

Sint64 SDL_RWsize(SDL_RWops *context)

Sint64 SDL_RWtell(struct SDL_RWops *context)

size_t SDL_RWwrite(struct SDL_RWops *context,const void *ptr,size_t size,size_t num)

Uint16 SDL_ReadBE16(SDL_RWops *src)

Uint32 SDL_ReadBE32(SDL_RWops *src)

Uint64 SDL_ReadBE64(SDL_RWops *src)

Uint16 SDL_ReadLE16(SDL_RWops *src)

Uint32 SDL_ReadLE32(SDL_RWops *src)

Uint64 SDL_ReadLE64(SDL_RWops *src)

Uint8 SDL_ReadU8(SDL_RWops *src)

size_t SDL_WriteBE16(SDL_RWops *dst,Uint16 value)

size_t SDL_WriteBE32(SDL_RWops *dst,Uint32 value)

size_t SDL_WriteBE64(SDL_RWops *dst,Uint64 value)

size_t SDL_WriteLE16(SDL_RWops *dst,Uint16 value)

size_t SDL_WriteLE32(SDL_RWops *dst,Uint32 value)

size_t SDL_WriteLE64(SDL_RWops *dst,Uint64 value)

size_t SDL_WriteU8(SDL_RWops *dst,Uint8 value)

void *SDL_LoadFunction(void *handle,const char *name)

void *SDL_LoadObject(const char *sofile)

void SDL_UnloadObject(void *handle)

const char *SDL_GetPlatform(void)

int SDL_GetCPUCacheLineSize(void)

int SDL_GetCPUCount(void)

int SDL_GetSystemRAM(void)

SDL_bool SDL_Has3DNow(void)

SDL_bool SDL_HasAVX(void)

SDL_bool SDL_HasMMX(void)

SDL_bool SDL_HasRDTSC(void)

SDL_bool SDL_HasSSE(void)

SDL_bool SDL_HasSSE2(void)

SDL_bool SDL_HasSSE3(void)

SDL_bool SDL_HasSSE41(void)

SDL_bool SDL_HasSSE42(void)

SDL_PowerState SDL_GetPowerInfo(int *secs,int *pct)

double SDL_acos(double x)

int IMG_Init(int flags)

void IMG_Quit(void)

SDL_Surface *IMG_Load(const char *file)

SDL_Surface *IMG_Load_RW(SDL_RWops *src, int freesrc)

SDL_Surface *IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type)

SDL_Surface *IMG_LoadCUR_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadBMP_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadPNM_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadXPM_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadXCF_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadPCX_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadGIF_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadJPG_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadTIF_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadPNG_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadTGA_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadLBM_RW(SDL_RWops *src)

SDL_Surface *IMG_LoadXV_RW(SDL_RWops *src)

SDL_Surface *IMG_ReadXPMFromArray(char **xpm)

int IMG_isCUR(SDL_RWops *src)

int IMG_isICO(SDL_RWops *src)

int IMG_isBMP(SDL_RWops *src)

int IMG_isPNM(SDL_RWops *src)

int IMG_isXPM(SDL_RWops *src)

int IMG_isXCF(SDL_RWops *src)

int IMG_isPCX(SDL_RWops *src)

int IMG_isGIF(SDL_RWops *src)

int IMG_isJPG(SDL_RWops *src)

int IMG_isTIF(SDL_RWops *src)

int IMG_isPNG(SDL_RWops *src)

int IMG_isLBM(SDL_RWops *src)

int IMG_isXV(SDL_RWops *src)

int TTF_Init(void)

int TTF_WasInit(void)

void TTF_Quit(void)

TTF_Font *TTF_OpenFont(const char *file, int ptsize)

TTF_Font *TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize)

TTF_Font *TTF_OpenFontIndex(const char *file, int ptsize, long index)

TTF_Font *TTF_OpenFontIndexRW(SDL_RWops *src, int freesrc, int ptsize, long index)

void TTF_CloseFont(TTF_Font *font)

void TTF_ByteSwappedUNICODE(int swapped)

int TTF_GetFontStyle(TTF_Font *font)

void TTF_SetFontStyle(TTF_Font *font, int style)

int TTF_GetFontOutline(TTF_Font *font)

void TTF_SetFontOutline(TTF_Font *font, int outline)

int TTF_GetFontHinting(TTF_Font *font)

void TTF_SetFontHinting(TTF_Font *font, int hinting)

int TTF_GetFontKerning(TTF_Font *font)

void TTF_SetFontKerning(TTF_Font *font, int allowed)

int TTF_FontHeight(const TTF_Font *font)

int TTF_FontAscent(const TTF_Font *font)

int TTF_FontDescent(const TTF_Font *font)

int TTF_FontLineSkip(const TTF_Font *font)

long TTF_FontFaces(const TTF_Font *font)

int TTF_FontFaceIsFixedWidth(const TTF_Font *font)

char *TTF_FontFaceFamilyName(const TTF_Font *font)

char *TTF_FontFaceStyleName(const TTF_Font *font)

int TTF_GlyphIsProvided(const TTF_Font *font, Uint16 ch)

int TTF_GlyphMetrics(TTF_Font *font, Uint16 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance)

int TTF_SizeText(TTF_Font *font, const char *text, int *w, int *h)

int TTF_SizeUTF8(TTF_Font *font, const char *text, int *w, int *h)

int TTF_SizeUNICODE(TTF_Font *font, const Uint16 *text, int *w, int *h)

SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg)

SDL_Surface *TTF_RenderUTF8_Solid(TTF_Font *font, const char *text,SDL_Color fg)

SDL_Surface *TTF_RenderUNICODE_Solid(TTF_Font *font, const Uint16 *text,SDL_Color fg)

SDL_Surface *TTF_RenderGlyph_Solid(TTF_Font *font, Uint16 ch, SDL_Color fg)

SDL_Surface *TTF_RenderText_Shaded(TTF_Font *font, const char *text,SDL_Color fg, SDL_Color bg)

SDL_Surface *TTF_RenderUTF8_Shaded(TTF_Font *font, const char *text,SDL_Color fg, SDL_Color bg)

SDL_Surface *TTF_RenderUNICODE_Shaded(TTF_Font *font, const Uint16 *text,SDL_Color fg, SDL_Color bg)

SDL_Surface *TTF_RenderGlyph_Shaded(TTF_Font *font, Uint16 ch, SDL_Color fg,SDL_Color bg)

SDL_Surface *TTF_RenderText_Blended(TTF_Font *font, const char *text,SDL_Color fg)

SDL_Surface *TTF_RenderUTF8_Blended(TTF_Font *font, const char *text,SDL_Color fg)

SDL_Surface *TTF_RenderUNICODE_Blended(TTF_Font *font, const Uint16 *text,SDL_Color fg)

SDL_Surface *TTF_RenderGlyph_Blended(TTF_Font *font, Uint16 ch, SDL_Color fg)

int Mix_Init(int flags)

void Mix_Quit(void)

int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize)

void Mix_CloseAudio(void)

int Mix_QuerySpec(int *frequency, Uint16 *format, int *channels)

int Mix_GetNumChunkDecoders(void)

const char *Mix_GetChunkDecoder(int index)

Mix_Chunk *Mix_LoadWAV(char *file)

Mix_Chunk *Mix_LoadWAV_RW(SDL_RWops *src, int freesrc)

Mix_Chunk *Mix_QuickLoad_WAV(Uint8 *mem)

void Mix_FreeChunk(Mix_Chunk *chunk)

int Mix_AllocateChannels(int numchans)

int Mix_Volume(int channel, int volume)

int Mix_PlayChannel(int channel, Mix_Chunk *chunk, int loops)

int Mix_PlayChannelTimed(int channel, Mix_Chunk *chunk, int loops, int ticks)

int Mix_FadeInChannel(int channel, Mix_Chunk *chunk, int loops, int ms)

int Mix_FadeInChannelTimed(int channel, Mix_Chunk *chunk,int loops, int ms, int ticks)

void Mix_Pause(int channel)

void Mix_Resume(int channel)

int Mix_HaltChannel(int channel)

int Mix_ExpireChannel(int channel, int ticks)

int Mix_FadeOutChannel(int channel, int ms)

int Mix_Paused(int channel)

Mix_Fading Mix_FadingChannel(int which)

Mix_Chunk *Mix_GetChunk(int channel)

int Mix_ReserveChannels(int num)

int Mix_GroupChannel(int which, int tag)

int Mix_GroupChannels(int from, int to, int tag)

int Mix_GroupCount(int tag)

int Mix_GroupAvailable(int tag)

int Mix_GroupOldest(int tag)

int Mix_GroupNewer(int tag)

int Mix_FadeOutGroup(int tag, int ms)

int Mix_HaltGroup(int tag)

int Mix_GetNumMusicDecoders(void)

const char *Mix_GetMusicDecoder(int index)

Mix_Music *Mix_LoadMUS(const char *file)

void Mix_FreeMusic(Mix_Music *music)

int Mix_PlayMusic(Mix_Music *music, int loops)

int Mix_FadeInMusic(Mix_Music *music, int loops, int ms)

int Mix_FadeInMusicPos(Mix_Music *music, int loops, int ms, double position)

int Mix_PlayingMusic(void)

int Mix_PausedMusic(void)

Mix_Fading Mix_FadingMusic(void)

void *Mix_GetMusicHookData(void)

int Mix_RegisterEffect(int chan, Mix_EffectFunc_t f, Mix_EffectDone_t d,void *arg)

int Mix_UnregisterEffect(int channel, Mix_EffectFunc_t f)

int Mix_UnregisterAllEffects(int channel)

int Mix_SetDistance(int channel, Uint8 distance)

int Mix_SetPosition(int channel, Sint16 angle, Uint8 distance)

int Mix_SetReverseStereo(int channel, int flip)

int SDLNet_Init(void)

void SDLNet_Quit(void)

char *SDLNet_GetError(void)

void SDLNet_Write16(Uint16 value, void *area)

void SDLNet_Write32(Uint32 value, void *area)

Uint16 SDLNet_Read16(void *area)

Uint32 SDLNet_Read32(void *area)

int SDLNet_ResolveHost(IPaddress *address, const char *host, Uint16 port)

const char *SDLNet_ResolveIP(IPaddress *address)

TCPsocket SDLNet_TCP_Open(IPaddress *ip)

void SDLNet_TCP_Close(TCPsocket sock)

TCPsocket SDLNet_TCP_Accept(TCPsocket server)

int SDLNet_TCP_Send(TCPsocket sock, const void *data, int len)

int SDLNet_TCP_Recv(TCPsocket sock, void *data, int maxlen)

UDPsocket SDLNet_UDP_Open(Uint16 port)

void SDLNet_UDP_Close(UDPsocket sock)

int SDLNet_UDP_Bind(UDPsocket sock, int channel, IPaddress *address)

void SDLNet_UDP_Unbind(UDPsocket sock, int channel)

IPaddress *SDLNet_UDP_GetPeerAddress(UDPsocket sock, int channel)

int SDLNet_UDP_Send(UDPsocket sock, int channel, UDPpacket *packet)

int SDLNet_UDP_Recv(UDPsocket sock, UDPpacket *packet)

int SDLNet_UDP_SendV(UDPsocket sock, UDPpacket **packetV, int npackets)

int SDLNet_UDP_RecvV(UDPsocket sock, UDPpacket **packetV)

UDPpacket *SDLNet_AllocPacket(int size)

int SDLNet_ResizePacket(UDPpacket *packet, int size)

void SDLNet_FreePacket(UDPpacket *packet)

UDPpacket **SDLNet_AllocPacketV(int howmany, int size)

void SDLNet_FreePacketV(UDPpacket **packetV)

SDLNet_SocketSet SDLNet_AllocSocketSet(int maxsockets)

void SDLNet_FreeSocketSet(SDLNet_SocketSet set)

int SDLNet_AddSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock)

int SDLNet_TCP_AddSocket(SDLNet_SocketSet set, TCPsocket sock)

int SDLNet_UDP_AddSocket(SDLNet_SocketSet set, UDPsocket sock)

int SDLNet_DelSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock)

int SDLNet_TCP_DelSocket(SDLNet_SocketSet set, TCPsocket sock)

int SDLNet_UDP_DelSocket(SDLNet_SocketSet set, UDPsocket sock)

int SDLNet_CheckSockets(SDLNet_SocketSet set, Uint32 timeout)

int SDLNet_SocketReady(TCPsocket sock)

int circleRGBA(SDL_Renderer * renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

SDL_Thread *SDL_CreateThread(SDL_ThreadFunction fn,const char *name,void *data)

void SDL_DetachThread(SDL_Thread *thread)

SDL_threadID SDL_GetThreadID(SDL_Thread *thread)

const char *SDL_GetThreadName(SDL_Thread* thread)

int SDL_SetThreadPriority(SDL_ThreadPriority priority)

SDL_TLSID SDL_TLSCreate(void)

void *SDL_TLSGet(SDL_TLSID id)

int SDL_TLSSet(SDL_TLSID id,const void *value,void *)

SDL_threadID SDL_ThreadID(void)

void SDL_WaitThread(SDL_Thread *thread,int *status)

int SDL_CondBroadcast(SDL_cond *cond)

int SDL_CondSignal(SDL_cond *cond)

int SDL_CondWait(SDL_cond *cond,SDL_mutex *mutex)

int SDL_CondWaitTimeout(SDL_cond *cond,SDL_mutex *mutex,Uint32 ms)

SDL_cond *SDL_CreateCond(void)

SDL_mutex *SDL_CreateMutex(void)

SDL_sem *SDL_CreateSemaphore(Uint32 initial_value)

void SDL_DestroyCond(SDL_cond *cond)

void SDL_DestroyMutex(SDL_mutex *mutex)

void SDL_DestroySemaphore(SDL_sem *sem)

int SDL_LockMutex(SDL_mutex *mutex)

int SDL_SemPost(SDL_sem *sem)

int SDL_SemTryWait(SDL_sem *sem)

Uint32 SDL_SemValue(SDL_sem *sem)

int SDL_SemWait(SDL_sem *sem)

int SDL_SemWaitTimeout(SDL_sem *sem,Uint32 ms)

int SDL_TryLockMutex(SDL_mutex *mutex)

int SDL_UnlockMutex(SDL_mutex *mutex)

参考文献

SDL 2.0 日本語リファレンスマニュアル : http://ja.osdn.net/projects/sdl2referencejp/

RingLibuv の用法

RingLibuv の用法です。

注釈

RingLibuv の用法は ring/extensions/ringlibuv フォルダを参照してください。

ライブラリのウェブサイトからの情報: http://libuv.org/

Libuv は非同期 I/O に主眼を置いたマルチプラットフォーム対応ライブラリです。

特筆すべき機能

epoll, kqueue, IOCP, イベントポートによる完全機能のイベントループへの対応。

非同期 TCP および UDP ソケット

非同期 DNS 解決

非同期ファイル、およびファイルシステム操作

ファイルシステムのイベント

TTY 制御による ANSI エスケープコード

Unix ドメインソケットまたは名前つきパイプ (Windows) による IPC ソケット共有

子プロセス

スレッドプール

シグナル処理

高分解能クロック

スレッド処理と同期基本命令

RingLibuv によるはじめてのアプリケーション

用例:

load "libuv.ring"

func main

        myloop = new_uv_loop_t()
        uv_loop_init(myloop)
        ? "Now quitting"
        uv_run(myloop, UV_RUN_DEFAULT)
        uv_loop_close(myloop)
        destroy_uv_loop_t(myloop)

実行結果:

Now quitting

イベントループ

用例:

load "libuv.ring"

counter = 0
idler = NULL

func main
        idler = new_uv_idle_t()
        uv_idle_init(uv_default_loop(), idler)
        uv_idle_start(idler, "wait()")
        ? "Idling..."
        uv_run(uv_default_loop(), UV_RUN_DEFAULT);
        uv_loop_close(uv_default_loop());
        destroy_uv_idle_t(idler)

func wait
        counter++
        if counter >= 100000
                uv_idle_stop(idler)
        ok

実行結果:

Idling...

サーバーの用例

用例:

load "libuv.ring"

? "Testing RingLibuv - Server Side"

DEFAULT_PORT    = 13370
DEFAULT_BACKLOG = 1024

addr    = new_sockaddr_in()
server  = NULL
client  = NULL
myloop  = NULL

func main
        myloop = uv_default_loop()
        server = new_uv_tcp_t()
        uv_tcp_init(myloop, server)
        uv_ip4_addr("127.0.0.1", DEFAULT_PORT, addr)
        uv_tcp_bind(server, addr, 0)
        r = uv_listen(server, DEFAULT_BACKLOG, "newconnection()")
        if r
                ? "Listen error " + uv_strerror(r)
                return 1
        ok
        uv_run(myloop, UV_RUN_DEFAULT)
        destroy_uv_tcp_t(server)
        destroy_uv_sockaddr_in(addr)

func newconnection
        ? "New Connection"
        aPara   = uv_Eventpara(server,:connect)
        nStatus = aPara[2]
        if nStatus < 0
                ? "New connection error : " + nStatus
                return
        ok
        client = new_uv_tcp_t()
        uv_tcp_init(myloop, client)
        if uv_accept(server, client) = 0
                        uv_read_start(client, uv_myalloccallback(), "echo_read()")
        ok

func echo_read
        aPara = uv_Eventpara(client,:read)
        nRead = aPara[2]
        buf   = aPara[3]
        if nRead > 0
                req = new_uv_write_t()
                        wrbuf = uv_buf_init(get_uv_buf_t_base(buf), nread)
                uv_write(req, client, wrbuf, 1, "echo_write()")
                ? uv_buf2str(wrbuf)
                message = "message from the server to the client"
                buf = new_uv_buf_t()
                set_uv_buf_t_len(buf,len(message))
                set_uv_buf_t_base(buf,varptr("message",:char))
                uv_write(req, client, buf, 1, "echo_write()")
        ok

func echo_write
        aPara = uv_Eventpara(client,:read)
        req   = aPara[1]

実行結果:

クライアントを実行すると、“New Connection”メッセージが表示されます。

そして “hello from the client” メッセージが表示されます。

Testing RingLibuv - Server Side
New Connection
hello from the client

クライアントの用例

用例:

load "libuv.ring"

? "Testing RingLibuv - Client Side"

DEFAULT_PORT    = 13370
DEFAULT_BACKLOG = 1024

addr    = new_sockaddr_in()
connect = NULL
buffer  = null
socket  = null

func main
        myloop  = uv_default_loop()
        Socket  = new_uv_tcp_t()
        connect = new_uv_connect_t()
        uv_tcp_init(myloop, Socket)
        uv_ip4_addr("127.0.0.1", DEFAULT_PORT, addr)
        uv_tcp_connect(connect,Socket, addr, "connect()")
        uv_run(myloop, UV_RUN_DEFAULT)
        destroy_uv_tcp_t(socket)
        destroy_uv_connect_t(connect)

func connect
        ? "Client: Start Connection"
        aPara   = uv_Eventpara(connect,:connect)
        req     = aPara[1]
        nStatus = aPara[2]
        if nStatus = -1
                ? "Error : on_write_end "
                return
        ok
        buf = new_uv_buf_t()
        message = "hello from the client"
        set_uv_buf_t_len(buf,len(message))
        set_uv_buf_t_base(buf,varptr("message",:char))
        tcp       = get_uv_connect_t_handle(req)
        write_req = new_uv_write_t()
        buf_count = 1
        uv_write(write_req, tcp, buf, buf_count, "on_write_end()")

func on_write_end
                uv_read_start(socket, uv_myalloccallback(), "echo_read()")

func echo_read
        aPara = uv_Eventpara(socket,:read)
        nRead = aPara[2]
        buf   = aPara[3]
        if nRead > 0
                        wrbuf = uv_buf_init(get_uv_buf_t_base(buf), nread);
                ? uv_buf2str(wrbuf)
        ok

実行結果:

サーバーの後にクライアントを実行します。

Testing RingLibuv - Client Side
Client: Start Connection
hello from the client
message from the server to the client

クラスによるサーバーの用例

用例:

load "libuv.ring"
load "objectslib.ring"

? "Testing RingLibuv - Server Side - Using Classes"

open_object(:MyServer)

class MyServer from ObjectControllerParent

        DEFAULT_PORT    = 13370
        DEFAULT_BACKLOG = 1024

        addr    = new_sockaddr_in()
        server  = NULL
        client  = NULL
        myloop  = NULL

        func start
                myloop = uv_default_loop()
                server = new_uv_tcp_t()
                uv_tcp_init(myloop, server)
                uv_ip4_addr("127.0.0.1", DEFAULT_PORT, addr)
                uv_tcp_bind(server, addr, 0)
                r = uv_listen(server, DEFAULT_BACKLOG, Method(:newconnection) )
                if r
                        ? "Listen error " + uv_strerror(r)
                        return 1
                ok
                uv_run(myloop, UV_RUN_DEFAULT)
                destroy_uv_tcp_t(server)
                destroy_uv_sockaddr_in(addr)

        func newconnection
                ? "New Connection"
                aPara   = uv_Eventpara(server,:connect)
                nStatus = aPara[2]
                if nStatus < 0
                        ? "New connection error : " + nStatus
                        return
                ok
                client = new_uv_tcp_t()
                uv_tcp_init(myloop, client)
                if uv_accept(server, client) = 0
                                uv_read_start(client, uv_myalloccallback(),
                                                        Method(:echo_read))
                ok

        func echo_read
                aPara = uv_Eventpara(client,:read)
                nRead = aPara[2]
                buf   = aPara[3]
                if nRead > 0
                        req = new_uv_write_t()
                                wrbuf = uv_buf_init(get_uv_buf_t_base(buf), nread)
                        uv_write(req, client, wrbuf, 1, Method(:echo_write))
                        ? uv_buf2str(wrbuf)
                        message = "message from the server to the client"
                        buf = new_uv_buf_t()
                        set_uv_buf_t_len(buf,len(message))
                        set_uv_buf_t_base(buf,varptr("message",:char))
                        uv_write(req, client, buf, 1, Method(:echo_write))
                ok

        func echo_write
                aPara = uv_Eventpara(client,:read)
                req   = aPara[1]

実行結果:

クライアントを実行すると、“New Connection”メッセージが表示されます。

そして“hello from the client”メッセージが表示されます。

Testing RingLibuv - Server Side - Using Classes
New Connection
hello from the client

クラスによるクライアントの用例

用例:

load "libuv.ring"
load "objectslib.ring"

? "Testing RingLibuv - Client Side - Using Classes"

open_object(:MyClient)

Class MyClient from ObjectControllerParent

        DEFAULT_PORT    = 13370
        DEFAULT_BACKLOG = 1024

        addr    = new_sockaddr_in()
        connect = NULL
        buffer  = null
        socket  = null

        func start
                myloop  = uv_default_loop()
                Socket  = new_uv_tcp_t()
                connect = new_uv_connect_t()
                uv_tcp_init(myloop, Socket)
                uv_ip4_addr("127.0.0.1", DEFAULT_PORT, addr)
                uv_tcp_connect(connect,Socket, addr, Method(:connect))
                uv_run(myloop, UV_RUN_DEFAULT)
                destroy_uv_tcp_t(socket)
                destroy_uv_connect_t(connect)

        func connect
                ? "Client: Start Connection"
                aPara   = uv_Eventpara(connect,:connect)
                req     = aPara[1]
                nStatus = aPara[2]
                if nStatus = -1
                        ? "Error : on_write_end "
                        return
                ok
                buf = new_uv_buf_t()
                message = "hello from the client"
                set_uv_buf_t_len(buf,len(message))
                set_uv_buf_t_base(buf,varptr("message",:char))
                tcp       = get_uv_connect_t_handle(req)
                write_req = new_uv_write_t()
                buf_count = 1
                uv_write(write_req, tcp, buf, buf_count, Method(:on_write_end))

        func on_write_end
                        uv_read_start(socket, uv_myalloccallback(), Method(:echo_read))

        func echo_read
                aPara = uv_Eventpara(socket,:read)
                nRead = aPara[2]
                buf   = aPara[3]
                if nRead > 0
                                wrbuf = uv_buf_init(get_uv_buf_t_base(buf), nread);
                        ? uv_buf2str(wrbuf)
                ok

実行結果:

サーバーの後にクライアントを実行します。

Testing RingLibuv - Client Side - Using Classes
Client: Start Connection
hello from the client
message from the server to the client

スレッドの用例

用例:

load "libuv.ring"

? "Testing RingLibuv - Threads"

func main
        one_id = new_uv_thread_t()
        two_id = new_uv_thread_t()
        uv_thread_create(one_id, "one()")
        uv_thread_create(two_id, "two()")
        uv_thread_join(one_id)
        uv_thread_join(two_id)
        destroy_uv_thread_t(one_id)
        destroy_uv_thread_t(two_id)

func one
        ? "Message from the First Thread!"

func two
        ? "Message from the Second Thread!"

実行結果:

Testing RingLibuv - Threads
Message from the First Thread!
Message from the Second Thread!

スレッドの用例 - クラスの使用

用例:

load "libuv.ring"
load "objectslib.ring"

? "Testing RingLibuv - Threads - Using Classes"

open_object(:MyThreads)

class MyThreads from ObjectControllerParent

        func Start
                one_id = new_uv_thread_t()
                two_id = new_uv_thread_t()
                uv_thread_create(one_id, Method(:One))
                uv_thread_create(two_id, Method(:Two))
                uv_thread_join(one_id)
                uv_thread_join(two_id)
                destroy_uv_thread_t(one_id)
                destroy_uv_thread_t(two_id)

        func one
                ? "Message from the First Thread!"

        func Two
                ? "Message from the Second Thread!"

実行結果:

Testing RingLibuv - Threads - Using Classes
Message from the First Thread!
Message from the Second Thread!

RingLibuv 関数リファレンス

はじめに

RingLibuv 拡張機能の関数一覧です。

リファレンス

int uv_loop_init(uv_loop_t* loop)

int uv_loop_configure(uv_loop_t* loop, uv_loop_option option, int)

int uv_loop_close(uv_loop_t* loop)

uv_loop_t* uv_default_loop(void)

int uv_run(uv_loop_t* loop, uv_run_mode mode)

int uv_loop_alive(const uv_loop_t* loop)

void uv_stop(uv_loop_t* loop)

size_t uv_loop_size(void)

int uv_backend_fd(const uv_loop_t* loop)

int uv_backend_timeout(const uv_loop_t* loop)

uint64_t uv_now(const uv_loop_t* loop)

void uv_update_time(uv_loop_t* loop)

void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg)

void uv_walk_2(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg)

int uv_loop_fork(uv_loop_t* loop)

int uv_is_active(const uv_handle_t* handle)

int uv_is_closing(const uv_handle_t* handle)

void uv_close(uv_handle_t* handle, uv_close_cb close_cb)

void uv_close_2(uv_handle_t* handle, uv_close_cb close_cb)

void uv_ref(uv_handle_t* handle)

void uv_unref(uv_handle_t* handle)

int uv_has_ref(const uv_handle_t* handle)

size_t uv_handle_size(uv_handle_type type)

int uv_send_buffer_size(uv_handle_t* handle, int* value)

int uv_recv_buffer_size(uv_handle_t* handle, int* value)

int uv_fileno(const uv_handle_t* handle, uv_os_fd_t* fd)

int uv_cancel(uv_req_t* req)

size_t uv_req_size(uv_req_type type)

int uv_timer_init(uv_loop_t* loop, uv_timer_t* handle)

int uv_timer_start(uv_timer_t* handle, uv_timer_cb cb, uint64_t timeout, uint64_t repeat)

int uv_timer_start_2(uv_timer_t* handle, uv_timer_cb cb, uint64_t timeout, uint64_t repeat)

int uv_timer_stop(uv_timer_t* handle)

int uv_timer_again(uv_timer_t* handle)

void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat)

uint64_t uv_timer_get_repeat(const uv_timer_t* handle)

int uv_prepare_init(uv_loop_t* loop, uv_prepare_t* prepare)

int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb)

int uv_prepare_start_2(uv_prepare_t* prepare, uv_prepare_cb cb)

int uv_prepare_stop(uv_prepare_t* prepare)

int uv_check_init(uv_loop_t* loop, uv_check_t* check)

int uv_check_start(uv_check_t* check, uv_check_cb cb)

int uv_check_start_2(uv_check_t* check, uv_check_cb cb)

int uv_check_stop(uv_check_t* check)

int uv_idle_init(uv_loop_t* loop, uv_idle_t* idle)

int uv_idle_start(uv_idle_t* idle, uv_idle_cb cb)

int uv_idle_start_2(uv_idle_t* idle, uv_idle_cb cb)

int uv_idle_stop(uv_idle_t* idle)

int uv_async_init(uv_loop_t* loop, uv_async_t* async, uv_async_cb async_cb)

int uv_async_init_2(uv_loop_t* loop, uv_async_t* async, uv_async_cb async_cb)

int uv_async_send(uv_async_t* async)

int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd)

int uv_poll_init_socket(uv_loop_t* loop, uv_poll_t* handle, uv_os_sock_t socket)

int uv_poll_start(uv_poll_t* handle, int events, uv_poll_cb cb)

int uv_poll_start_2(uv_poll_t* handle, int events, uv_poll_cb cb)

int uv_poll_stop(uv_poll_t* poll)

int uv_signal_init(uv_loop_t* loop, uv_signal_t* signal)

int uv_signal_start(uv_signal_t* signal, uv_signal_cb cb, int signum)

int uv_signal_start_2(uv_signal_t* signal, uv_signal_cb cb, int signum)

int uv_signal_start_oneshot(uv_signal_t* signal, uv_signal_cb cb, int signum)

int uv_signal_start_oneshot_2(uv_signal_t* signal, uv_signal_cb cb, int signum)

int uv_signal_stop(uv_signal_t* signal)

void uv_disable_stdio_inheritance(void)

int uv_spawn(uv_loop_t* loop, uv_process_t* handle, const uv_process_options_t* options)

int uv_process_kill(uv_process_t* handle, int signum)

int uv_kill(int pid, int signum)

int uv_shutdown(uv_shutdown_t* req, uv_stream_t* handle, uv_shutdown_cb cb)

int uv_shutdown_2(uv_shutdown_t* req, uv_stream_t* handle, uv_shutdown_cb cb)

int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb)

int uv_listen_2(uv_stream_t* stream, int backlog, uv_connection_cb cb)

int uv_accept(uv_stream_t* server, uv_stream_t* client)

int uv_read_start(uv_stream_t* stream, uv_alloc_cb alloc_cb, uv_read_cb read_cb)

int uv_read_start_2(uv_stream_t* stream, uv_alloc_cb alloc_cb, uv_read_cb read_cb)

int uv_read_stop(uv_stream_t*)

int uv_write(uv_write_t* req, uv_stream_t* handle, uv_buf_t *bufs, unsigned int nbufs, uv_write_cb cb)

int uv_write_2(uv_write_t* req, uv_stream_t* handle, uv_buf_t *bufs, unsigned int nbufs, uv_write_cb cb)

int uv_write2(uv_write_t* req, uv_stream_t* handle, uv_buf_t *bufs, unsigned int nbufs, uv_stream_t* send_handle, uv_write_cb cb)

int uv_write2_2(uv_write_t* req, uv_stream_t* handle, uv_buf_t *bufs, unsigned int nbufs, uv_stream_t* send_handle, uv_write_cb cb)

int uv_try_write(uv_stream_t* handle, uv_buf_t *bufs, unsigned int nbufs)

int uv_is_readable(const uv_stream_t* handle)

int uv_is_writable(const uv_stream_t* handle)

int uv_stream_set_blocking(uv_stream_t* handle, int blocking)

int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* handle)

int uv_tcp_init_ex(uv_loop_t* loop, uv_tcp_t* handle, unsigned int flags)

int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock)

int uv_tcp_nodelay(uv_tcp_t* handle, int enable)

int uv_tcp_keepalive(uv_tcp_t* handle, int enable, unsigned int delay)

int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable)

int uv_tcp_bind(uv_tcp_t *handle,sockaddr *addr,unsigned int flags)

int uv_tcp_getsockname(const uv_tcp_t* handle, struct sockaddr* name, int* namelen)

int uv_tcp_getpeername(const uv_tcp_t* handle, struct sockaddr* name, int* namelen)

int uv_tcp_connect(uv_connect_t* req, uv_tcp_t* handle, sockaddr * addr, uv_connect_cb cb)

int uv_tcp_connect_2(uv_connect_t* req, uv_tcp_t* handle, sockaddr * addr, uv_connect_cb cb)

int uv_pipe_init(uv_loop_t* loop, uv_pipe_t* handle, int ipc)

int uv_pipe_open(uv_pipe_t* handle, uv_file file)

int uv_pipe_bind(uv_pipe_t* handle, const char * name)

void uv_pipe_connect(uv_connect_t* req, uv_pipe_t* handle, const char * name, uv_connect_cb cb)

void uv_pipe_connect_2(uv_connect_t* req, uv_pipe_t* handle, const char * name, uv_connect_cb cb)

int uv_pipe_getsockname(const uv_pipe_t* handle, char* buffer, size_t* size)

int uv_pipe_getpeername(const uv_pipe_t* handle, char* buffer, size_t* size)

void uv_pipe_pending_instances(uv_pipe_t* handle, int count)

int uv_pipe_pending_count(uv_pipe_t* handle)

uv_handle_type uv_pipe_pending_type(uv_pipe_t* handle)

int uv_pipe_chmod(uv_pipe_t* handle, int flags)

int uv_tty_init(uv_loop_t* loop, uv_tty_t* handle, uv_file fd, int readable)

int uv_tty_set_mode(uv_tty_t* handle, uv_tty_mode_t mode)

int uv_tty_reset_mode(void)

int uv_tty_get_winsize(uv_tty_t* handle, int* width, int* height)

int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle)

int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags)

int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock)

int uv_udp_bind(uv_udp_t* handle, sockaddr * addr, unsigned int flags)

int uv_udp_getsockname(const uv_udp_t* handle, struct sockaddr* name, int* namelen)

int uv_udp_set_membership(uv_udp_t* handle, const char * multicast_addr, const char * interface_addr, uv_membership membership)

int uv_udp_set_multicast_loop(uv_udp_t* handle, int on)

int uv_udp_set_multicast_ttl(uv_udp_t* handle, int ttl)

int uv_udp_set_multicast_interface(uv_udp_t* handle, const char * interface_addr)

int uv_udp_set_broadcast(uv_udp_t* handle, int on)

int uv_udp_set_ttl(uv_udp_t* handle, int ttl)

int uv_udp_send(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t *bufs, unsigned int nbufs, sockaddr * addr, uv_udp_send_cb send_cb)

int uv_udp_send_2(uv_udp_send_t* req, uv_udp_t* handle, uv_buf_t *bufs, unsigned int nbufs, sockaddr * addr, uv_udp_send_cb send_cb)

int uv_udp_try_send(uv_udp_t* handle, uv_buf_t *bufs, unsigned int nbufs, sockaddr * addr)

int uv_udp_recv_start(uv_udp_t* handle, uv_alloc_cb alloc_cb, uv_udp_recv_cb recv_cb)

int uv_udp_recv_start_2(uv_udp_t* handle, uv_alloc_cb alloc_cb, uv_udp_recv_cb recv_cb)

int uv_udp_recv_stop(uv_udp_t* handle)

int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle)

int uv_fs_event_start(uv_fs_event_t* handle, uv_fs_event_cb cb, const char * path, unsigned int flags)

int uv_fs_event_start_2(uv_fs_event_t* handle, uv_fs_event_cb cb, const char * path, unsigned int flags)

int uv_fs_event_stop(uv_fs_event_t* handle)

int uv_fs_event_getpath(uv_fs_event_t* handle, char* buffer, size_t* size)

int uv_fs_poll_init(uv_loop_t* loop, uv_fs_poll_t* handle)

int uv_fs_poll_start(uv_fs_poll_t* handle, uv_fs_poll_cb poll_cb, const char * path, unsigned int interval)

int uv_fs_poll_start_2(uv_fs_poll_t* handle, uv_fs_poll_cb poll_cb, const char * path, unsigned int interval)

int uv_fs_poll_stop(uv_fs_poll_t* handle)

int uv_fs_poll_getpath(uv_fs_poll_t* handle, char* buffer, size_t* size)

void uv_fs_req_cleanup(uv_fs_t* req)

int uv_fs_close(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_open(uv_loop_t* loop, uv_fs_t* req, const char * path, int flags, int mode, uv_fs_cb cb)

int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_buf_t *bufs, unsigned int nbufs, int64_t offset, uv_fs_cb cb)

int uv_fs_unlink(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_write(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_buf_t *bufs, unsigned int nbufs, int64_t offset, uv_fs_cb cb)

int uv_fs_mkdir(uv_loop_t* loop, uv_fs_t* req, const char * path, int mode, uv_fs_cb cb)

int uv_fs_mkdtemp(uv_loop_t* loop, uv_fs_t* req, const char * tpl, uv_fs_cb cb)

int uv_fs_rmdir(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_scandir(uv_loop_t* loop, uv_fs_t* req, const char * path, int flags, uv_fs_cb cb)

int uv_fs_scandir_next(uv_fs_t* req, uv_dirent_t* ent)

int uv_fs_stat(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_fstat(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_lstat(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_rename(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, uv_fs_cb cb)

int uv_fs_fsync(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_fdatasync(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_ftruncate(uv_loop_t* loop, uv_fs_t* req, uv_file file, int64_t offset, uv_fs_cb cb)

int uv_fs_copyfile(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, int flags, uv_fs_cb cb)

int uv_fs_sendfile(uv_loop_t* loop, uv_fs_t* req, uv_file out_fd, uv_file in_fd, int64_t in_offset, size_t length, uv_fs_cb cb)

int uv_fs_access(uv_loop_t* loop, uv_fs_t* req, const char * path, int mode, uv_fs_cb cb)

int uv_fs_chmod(uv_loop_t* loop, uv_fs_t* req, const char * path, int mode, uv_fs_cb cb)

int uv_fs_fchmod(uv_loop_t* loop, uv_fs_t* req, uv_file file, int mode, uv_fs_cb cb)

int uv_fs_utime(uv_loop_t* loop, uv_fs_t* req, const char * path, double atime, double mtime, uv_fs_cb cb)

int uv_fs_futime(uv_loop_t* loop, uv_fs_t* req, uv_file file, double atime, double mtime, uv_fs_cb cb)

int uv_fs_link(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, uv_fs_cb cb)

int uv_fs_symlink(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, int flags, uv_fs_cb cb)

int uv_fs_readlink(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_realpath(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_chown(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_uid_t uid, uv_gid_t gid, uv_fs_cb cb)

int uv_fs_fchown(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_uid_t uid, uv_gid_t gid, uv_fs_cb cb)

int uv_fs_close_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_open_2(uv_loop_t* loop, uv_fs_t* req, const char * path, int flags, int mode, uv_fs_cb cb)

int uv_fs_read_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_buf_t *bufs, unsigned int nbufs, int64_t offset, uv_fs_cb cb)

int uv_fs_unlink_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_write_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_buf_t *bufs, unsigned int nbufs, int64_t offset, uv_fs_cb cb)

int uv_fs_mkdir_2(uv_loop_t* loop, uv_fs_t* req, const char * path, int mode, uv_fs_cb cb)

int uv_fs_mkdtemp_2(uv_loop_t* loop, uv_fs_t* req, const char * tpl, uv_fs_cb cb)

int uv_fs_rmdir_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_scandir_2(uv_loop_t* loop, uv_fs_t* req, const char * path, int flags, uv_fs_cb cb)

int uv_fs_stat_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_fstat_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_lstat_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_rename_2(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, uv_fs_cb cb)

int uv_fs_fsync_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_fdatasync_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)

int uv_fs_ftruncate_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, int64_t offset, uv_fs_cb cb)

int uv_fs_copyfile_2(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, int flags, uv_fs_cb cb)

int uv_fs_sendfile_2(uv_loop_t* loop, uv_fs_t* req, uv_file out_fd, uv_file in_fd, int64_t in_offset, size_t length, uv_fs_cb cb)

int uv_fs_access_2(uv_loop_t* loop, uv_fs_t* req, const char * path, int mode, uv_fs_cb cb)

int uv_fs_chmod_2(uv_loop_t* loop, uv_fs_t* req, const char * path, int mode, uv_fs_cb cb)

int uv_fs_fchmod_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, int mode, uv_fs_cb cb)

int uv_fs_utime_2(uv_loop_t* loop, uv_fs_t* req, const char * path, double atime, double mtime, uv_fs_cb cb)

int uv_fs_futime_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, double atime, double mtime, uv_fs_cb cb)

int uv_fs_link_2(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, uv_fs_cb cb)

int uv_fs_symlink_2(uv_loop_t* loop, uv_fs_t* req, const char * path, const char * new_path, int flags, uv_fs_cb cb)

int uv_fs_readlink_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_realpath_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_fs_cb cb)

int uv_fs_chown_2(uv_loop_t* loop, uv_fs_t* req, const char * path, uv_uid_t uid, uv_gid_t gid, uv_fs_cb cb)

int uv_fs_fchown_2(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_uid_t uid, uv_gid_t gid, uv_fs_cb cb)

int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb, uv_after_work_cb after_work_cb)

int uv_queue_work_2(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb, uv_after_work_cb after_work_cb)

int uv_getaddrinfo(uv_loop_t* loop, uv_getaddrinfo_t* req, uv_getaddrinfo_cb getaddrinfo_cb, const char * node, const char * service, const struct addrinfo* hints)

int uv_getaddrinfo_2(uv_loop_t* loop, uv_getaddrinfo_t* req, uv_getaddrinfo_cb getaddrinfo_cb, const char * node, const char * service, const struct addrinfo* hints)

void uv_freeaddrinfo(struct addrinfo* ai)

int uv_getnameinfo(uv_loop_t* loop, uv_getnameinfo_t* req, uv_getnameinfo_cb getnameinfo_cb, sockaddr * addr, int flags)

int uv_getnameinfo_2(uv_loop_t* loop, uv_getnameinfo_t* req, uv_getnameinfo_cb getnameinfo_cb, sockaddr * addr, int flags)

int uv_dlopen(const char * filename, uv_lib_t* lib)

void uv_dlclose(uv_lib_t* lib)

int uv_dlsym(uv_lib_t* lib, const char * name, void** ptr)

const char * uv_dlerror(const uv_lib_t* lib)

int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg)

int uv_thread_create_2(uv_thread_t* tid, uv_thread_cb entry, void* arg)

uv_thread_t uv_thread_self(void)

int uv_thread_join(uv_thread_t *tid)

int uv_thread_equal(const uv_thread_t* t1, const uv_thread_t* t2)

int uv_key_create(uv_key_t* key)

void uv_key_delete(uv_key_t* key)

void* uv_key_get(uv_key_t* key)

void uv_key_set(uv_key_t* key, void* value)

int uv_mutex_init(uv_mutex_t* handle)

int uv_mutex_init_recursive(uv_mutex_t* handle)

void uv_mutex_destroy(uv_mutex_t* handle)

void uv_mutex_lock(uv_mutex_t* handle)

int uv_mutex_trylock(uv_mutex_t* handle)

void uv_mutex_unlock(uv_mutex_t* handle)

int uv_rwlock_init(uv_rwlock_t* rwlock)

void uv_rwlock_destroy(uv_rwlock_t* rwlock)

void uv_rwlock_rdlock(uv_rwlock_t* rwlock)

int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock)

void uv_rwlock_rdunlock(uv_rwlock_t* rwlock)

void uv_rwlock_wrlock(uv_rwlock_t* rwlock)

int uv_rwlock_trywrlock(uv_rwlock_t* rwlock)

void uv_rwlock_wrunlock(uv_rwlock_t* rwlock)

int uv_sem_init(uv_sem_t* sem, unsigned int value)

void uv_sem_destroy(uv_sem_t* sem)

void uv_sem_post(uv_sem_t* sem)

void uv_sem_wait(uv_sem_t* sem)

int uv_sem_trywait(uv_sem_t* sem)

int uv_cond_init(uv_cond_t* cond)

void uv_cond_destroy(uv_cond_t* cond)

void uv_cond_signal(uv_cond_t* cond)

void uv_cond_broadcast(uv_cond_t* cond)

void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex)

int uv_cond_timedwait(uv_cond_t* cond, uv_mutex_t* mutex, uint64_t timeout)

int uv_barrier_init(uv_barrier_t* barrier, unsigned int count)

void uv_barrier_destroy(uv_barrier_t* barrier)

int uv_barrier_wait(uv_barrier_t* barrier)

uv_handle_type uv_guess_handle(uv_file file)

int uv_replace_allocator(uv_malloc_func malloc_func, uv_realloc_func realloc_func, uv_calloc_func calloc_func, uv_free_func free_func)

uv_buf_t uv_buf_init(char* base, unsigned int len)

char** uv_setup_args(int argc, char** argv)

int uv_get_process_title(char* buffer, size_t size)

int uv_set_process_title(const char * title)

int uv_resident_set_memory(size_t* rss)

int uv_uptime(double* uptime)

int uv_getrusage(uv_rusage_t* rusage)

uv_pid_t uv_os_getpid(void)

uv_pid_t uv_os_getppid(void)

int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count)

void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count)

int uv_interface_addresses(uv_interface_address_t** addresses, int* count)

void uv_free_interface_addresses(uv_interface_address_t* addresses, int count)

int uv_ip6_addr(const char * ip, int port, sockaddr_in6* addr)

int uv_ip4_name(sockaddr_in* src, char* dst, size_t size)

int uv_ip6_name(sockaddr_in6* src, char* dst, size_t size)

int uv_inet_ntop(int af, const void* src, char* dst, size_t size)

int uv_inet_pton(int af, const char * src, void* dst)

int uv_if_indextoname(unsigned int ifindex, char* buffer, size_t* size)

int uv_if_indextoiid(unsigned int ifindex, char* buffer, size_t* size)

int uv_exepath(char* buffer, size_t* size)

int uv_cwd(char* buffer, size_t* size)

int uv_chdir(const char * dir)

int uv_os_homedir(char* buffer, size_t* size)

int uv_os_tmpdir(char* buffer, size_t* size)

int uv_os_get_passwd(uv_passwd_t* pwd)

void uv_os_free_passwd(uv_passwd_t* pwd)

uint64_t uv_get_total_memory(void)

uint64_t uv_hrtime(void)

void uv_print_all_handles(uv_loop_t* loop, FILE* stream)

void uv_print_active_handles(uv_loop_t* loop, FILE* stream)

int uv_os_getenv(const char * name, char* buffer, size_t* size)

int uv_os_setenv(const char * name, const char * value)

int uv_os_unsetenv(const char * name)

int uv_os_gethostname(char* buffer, size_t* size)

RingFreeGLUT 関数リファレンス

はじめに

RingFreeGLUT 拡張機能の関数一覧です。

リファレンス

GLUT_RGB

GLUT_RGBA

GLUT_INDEX

GLUT_SINGLE

GLUT_DOUBLE

GLUT_ACCUM

GLUT_ALPHA

GLUT_DEPTH

GLUT_STENCIL

GLUT_MULTISAMPLE

GLUT_STEREO

GLUT_LUMINANCE

GLUT_KEY_F1

GLUT_KEY_F2

GLUT_KEY_F3

GLUT_KEY_F4

GLUT_KEY_F5

GLUT_KEY_F6

GLUT_KEY_F7

GLUT_KEY_F8

GLUT_KEY_F9

GLUT_KEY_F10

GLUT_KEY_F11

GLUT_KEY_F12

GLUT_KEY_LEFT

GLUT_KEY_UP

GLUT_KEY_RIGHT

GLUT_KEY_DOWN

GLUT_KEY_PAGE_UP

GLUT_KEY_PAGE_DOWN

GLUT_KEY_HOME

GLUT_KEY_END

GLUT_KEY_INSERT

GLUT_LEFT_BUTTON

GLUT_MIDDLE_BUTTON

GLUT_RIGHT_BUTTON

GLUT_DOWN

GLUT_UP

GLUT_LEFT

GLUT_ENTERED

GLUT_MENU_NOT_IN_USE

GLUT_MENU_IN_USE

GLUT_NOT_VISIBLE

GLUT_VISIBLE

GLUT_HIDDEN

GLUT_FULLY_RETAINED

GLUT_PARTIALLY_RETAINED

GLUT_FULLY_COVERED

GLUT_WINDOW_X

GLUT_WINDOW_Y

GLUT_WINDOW_WIDTH

GLUT_WINDOW_HEIGHT

GLUT_WINDOW_BUFFER_SIZE

GLUT_WINDOW_STENCIL_SIZE

GLUT_WINDOW_DEPTH_SIZE

GLUT_WINDOW_RED_SIZE

GLUT_WINDOW_GREEN_SIZE

GLUT_WINDOW_BLUE_SIZE

GLUT_WINDOW_ALPHA_SIZE

GLUT_WINDOW_ACCUM_RED_SIZE

GLUT_WINDOW_ACCUM_GREEN_SIZE

GLUT_WINDOW_ACCUM_BLUE_SIZE

GLUT_WINDOW_ACCUM_ALPHA_SIZE

GLUT_WINDOW_DOUBLEBUFFER

GLUT_WINDOW_RGBA

GLUT_WINDOW_PARENT

GLUT_WINDOW_NUM_CHILDREN

GLUT_WINDOW_COLORMAP_SIZE

GLUT_WINDOW_NUM_SAMPLES

GLUT_WINDOW_STEREO

GLUT_WINDOW_CURSOR

GLUT_SCREEN_WIDTH

GLUT_SCREEN_HEIGHT

GLUT_SCREEN_WIDTH_MM

GLUT_SCREEN_HEIGHT_MM

GLUT_MENU_NUM_ITEMS

GLUT_DISPLAY_MODE_POSSIBLE

GLUT_INIT_WINDOW_X

GLUT_INIT_WINDOW_Y

GLUT_INIT_WINDOW_WIDTH

GLUT_INIT_WINDOW_HEIGHT

GLUT_INIT_DISPLAY_MODE

GLUT_ELAPSED_TIME

GLUT_WINDOW_FORMAT_ID

GLUT_HAS_KEYBOARD

GLUT_HAS_MOUSE

GLUT_HAS_SPACEBALL

GLUT_HAS_DIAL_AND_BUTTON_BOX

GLUT_HAS_TABLET

GLUT_NUM_MOUSE_BUTTONS

GLUT_NUM_SPACEBALL_BUTTONS

GLUT_NUM_BUTTON_BOX_BUTTONS

GLUT_NUM_DIALS

GLUT_NUM_TABLET_BUTTONS

GLUT_DEVICE_IGNORE_KEY_REPEAT

GLUT_DEVICE_KEY_REPEAT

GLUT_HAS_JOYSTICK

GLUT_OWNS_JOYSTICK

GLUT_JOYSTICK_BUTTONS

GLUT_JOYSTICK_AXES

GLUT_JOYSTICK_POLL_RATE

GLUT_OVERLAY_POSSIBLE

GLUT_LAYER_IN_USE

GLUT_HAS_OVERLAY

GLUT_TRANSPARENT_INDEX

GLUT_NORMAL_DAMAGED

GLUT_OVERLAY_DAMAGED

GLUT_VIDEO_RESIZE_POSSIBLE

GLUT_VIDEO_RESIZE_IN_USE

GLUT_VIDEO_RESIZE_X_DELTA

GLUT_VIDEO_RESIZE_Y_DELTA

GLUT_VIDEO_RESIZE_WIDTH_DELTA

GLUT_VIDEO_RESIZE_HEIGHT_DELTA

GLUT_VIDEO_RESIZE_X

GLUT_VIDEO_RESIZE_Y

GLUT_VIDEO_RESIZE_WIDTH

GLUT_VIDEO_RESIZE_HEIGHT

GLUT_NORMAL

GLUT_OVERLAY

GLUT_ACTIVE_SHIFT

GLUT_ACTIVE_CTRL

GLUT_ACTIVE_ALT

GLUT_CURSOR_RIGHT_ARROW

GLUT_CURSOR_LEFT_ARROW

GLUT_CURSOR_INFO

GLUT_CURSOR_DESTROY

GLUT_CURSOR_HELP

GLUT_CURSOR_CYCLE

GLUT_CURSOR_SPRAY

GLUT_CURSOR_WAIT

GLUT_CURSOR_TEXT

GLUT_CURSOR_CROSSHAIR

GLUT_CURSOR_UP_DOWN

GLUT_CURSOR_LEFT_RIGHT

GLUT_CURSOR_TOP_SIDE

GLUT_CURSOR_BOTTOM_SIDE

GLUT_CURSOR_LEFT_SIDE

GLUT_CURSOR_RIGHT_SIDE

GLUT_CURSOR_TOP_LEFT_CORNER

GLUT_CURSOR_TOP_RIGHT_CORNER

GLUT_CURSOR_BOTTOM_RIGHT_CORNER

GLUT_CURSOR_BOTTOM_LEFT_CORNER

GLUT_CURSOR_INHERIT

GLUT_CURSOR_NONE

GLUT_CURSOR_FULL_CROSSHAIR

GLUT_RED

GLUT_GREEN

GLUT_BLUE

GLUT_KEY_REPEAT_OFF

GLUT_KEY_REPEAT_ON

GLUT_KEY_REPEAT_DEFAULT

GLUT_JOYSTICK_BUTTON_A

GLUT_JOYSTICK_BUTTON_B

GLUT_JOYSTICK_BUTTON_C

GLUT_JOYSTICK_BUTTON_D

GLUT_GAME_MODE_ACTIVE

GLUT_GAME_MODE_POSSIBLE

GLUT_GAME_MODE_WIDTH

GLUT_GAME_MODE_HEIGHT

GLUT_GAME_MODE_PIXEL_DEPTH

GLUT_GAME_MODE_REFRESH_RATE

GLUT_GAME_MODE_DISPLAY_CHANGED

GLUT_STROKE_ROMAN

GLUT_STROKE_MONO_ROMAN

GLUT_BITMAP_9_BY_15

GLUT_BITMAP_8_BY_13

GLUT_BITMAP_TIMES_ROMAN_10

GLUT_BITMAP_TIMES_ROMAN_24

GLUT_BITMAP_HELVETICA_10

GLUT_BITMAP_HELVETICA_12

GLUT_BITMAP_HELVETICA_18

void glutInit(void)

void glutDisplayFunc(const char *)

void glutReshapeFunc(const char *)

int glutEventWidth(void)

int glutEventHeight(void)

void glutIdleFunc(const char *)

void glutKeyboardFunc(const char *)

void glutSpecialFunc(const char *)

void glutSpecialUpFunc(const char *)

void glutMouseFunc(const char *)

void glutMotionFunc(const char *)

int glutCreateMenu(const char *)

void glutMenuStatusFunc(const char *)

int glutEventKey(void)

int glutEventX(void)

int glutEventY(void)

int glutEventButton(void)

int glutEventState(void)

int glutEventValue(void)

int glutEventStatus(void)

void test_draw(void)

void glutInitWindowPosition(int x, int y)

void glutInitWindowSize(int width, int height)

void glutInitDisplayMode(unsigned displayMode)

void glutInitDisplayString(const char * displayMode)

int glutCreateWindow(const char * title)

int glutCreateSubWindow(int window, int x, int y, int width, int height)

void glutDestroyWindow(int window)

void glutSetWindow(int window)

int glutGetWindow(void)

void glutSetWindowTitle(const char * title)

void glutSetIconTitle(const char * title)

void glutReshapeWindow(int width, int height)

void glutPositionWindow(int x, int y)

void glutShowWindow(void)

void glutHideWindow(void)

void glutIconifyWindow(void)

void glutPushWindow(void)

void glutPopWindow(void)

void glutFullScreen(void)

void glutPostWindowRedisplay(int window)

void glutPostRedisplay(void)

void glutSwapBuffers(void)

void glutWarpPointer(int x, int y)

void glutSetCursor(int cursor)

void glutEstablishOverlay(void)

void glutRemoveOverlay(void)

void glutUseLayer(GLenum layer)

void glutPostOverlayRedisplay(void)

void glutPostWindowOverlayRedisplay(int window)

void glutShowOverlay(void)

void glutHideOverlay(void)

void glutDestroyMenu(int menu)

int glutGetMenu(void)

void glutSetMenu(int menu)

void glutAddMenuEntry(const char * label, int value)

void glutAddSubMenu(const char * label, int subMenu)

void glutChangeToMenuEntry(int item, const char * label, int value)

void glutChangeToSubMenu(int item, const char * label, int value)

void glutRemoveMenuItem(int item)

void glutAttachMenu(int button)

void glutDetachMenu(int button)

int glutGet(GLenum query)

int glutDeviceGet(GLenum query)

int glutGetModifiers(void)

int glutLayerGet(GLenum query)

void glutBitmapCharacter(void *font, int character)

int glutBitmapWidth(void *font, int character)

void glutStrokeCharacter(void *font, int character)

int glutStrokeWidth(void *font, int character)

int glutStrokeLength(void *font, char * string)

GLfloat glutStrokeWidthf(void *font, int character)

GLfloat glutStrokeLengthf(void *font, char *string)

int glutBitmapLength(void *font, char * string)

void glutWireCube(double size)

void glutSolidCube(double size)

void glutWireSphere(double radius, GLint slices, GLint stacks)

void glutSolidSphere(double radius, GLint slices, GLint stacks)

void glutWireCone(double base, double height, GLint slices, GLint stacks)

void glutSolidCone(double base, double height, GLint slices, GLint stacks)

void glutWireTorus(double innerRadius, double outerRadius, GLint sides, GLint rings)

void glutSolidTorus(double innerRadius, double outerRadius, GLint sides, GLint rings)

void glutWireDodecahedron(void)

void glutSolidDodecahedron(void)

void glutWireOctahedron(void)

void glutSolidOctahedron(void)

void glutWireTetrahedron(void)

void glutSolidTetrahedron(void)

void glutWireIcosahedron(void)

void glutSolidIcosahedron(void)

void glutWireTeapot(double size)

void glutSolidTeapot(double size)

void glutGameModeString(const char * string)

int glutEnterGameMode(void)

void glutLeaveGameMode(void)

int glutGameModeGet(GLenum query)

int glutVideoResizeGet(GLenum query)

void glutSetupVideoResizing(void)

void glutStopVideoResizing(void)

void glutVideoResize(int x, int y, int width, int height)

void glutVideoPan(int x, int y, int width, int height)

void glutSetColor(int color, GLfloat red, GLfloat green, GLfloat blue)

GLfloat glutGetColor(int color, int component)

void glutCopyColormap(int window)

void glutIgnoreKeyRepeat(int ignore)

void glutSetKeyRepeat(int repeatMode)

void glutForceJoystickFunc(void)

int glutExtensionSupported(const char * extension)

void glutReportErrors(void)

void glutMainLoop(void)

void glutCloseFunc(const char *)

GLUT_KEY_NUM_LOCK

GLUT_KEY_BEGIN

GLUT_KEY_DELETE

GLUT_KEY_SHIFT_L

GLUT_KEY_SHIFT_R

GLUT_KEY_CTRL_L

GLUT_KEY_CTRL_R

GLUT_KEY_ALT_L

GLUT_KEY_ALT_R

GLUT_ACTION_EXIT

GLUT_ACTION_GLUTMAINLOOP_RETURNS

GLUT_ACTION_CONTINUE_EXECUTION

GLUT_CREATE_NEW_CONTEXT

GLUT_USE_CURRENT_CONTEXT

GLUT_FORCE_INDIRECT_CONTEXT

GLUT_ALLOW_DIRECT_CONTEXT

GLUT_TRY_DIRECT_CONTEXT

GLUT_FORCE_DIRECT_CONTEXT

GLUT_INIT_STATE

GLUT_ACTION_ON_WINDOW_CLOSE

GLUT_WINDOW_BORDER_WIDTH

GLUT_WINDOW_BORDER_HEIGHT

GLUT_WINDOW_HEADER_HEIGHT

GLUT_VERSION

GLUT_RENDERING_CONTEXT

GLUT_DIRECT_RENDERING

GLUT_FULL_SCREEN

GLUT_SKIP_STALE_MOTION_EVENTS

GLUT_AUX

GLUT_AUX1

GLUT_AUX2

GLUT_AUX3

GLUT_AUX4

GLUT_INIT_MAJOR_VERSION

GLUT_INIT_MINOR_VERSION

GLUT_INIT_FLAGS

GLUT_INIT_PROFILE

GLUT_DEBUG

GLUT_FORWARD_COMPATIBLE

GLUT_CORE_PROFILE

GLUT_COMPATIBILITY_PROFILE

GLUT_CAPTIONLESS

GLUT_BORDERLESS

GLUT_SRGB

GLUT_HAS_MULTI

void glutMainLoopEvent( void )

void glutLeaveMainLoop( void )

void glutExit( void )

void glutFullScreenToggle( void )

void glutLeaveFullScreen( void )

void glutSetMenuFont(int menuID, void *font)

void glutSetOption(GLenum option_flag, int value )

int *glutGetModeValues(GLenum mode, int * size)

void *glutGetWindowData( void )

void glutSetWindowData(void *data)

void *glutGetMenuData( void )

void glutSetMenuData(void *data)

int glutBitmapHeight( void* font )

GLfloat glutStrokeHeight( void* font )

void glutBitmapString( void* font, char *string )

void glutStrokeString( void* font, char *string )

void glutWireRhombicDodecahedron( void )

void glutSolidRhombicDodecahedron( void )

void glutWireSierpinskiSponge( int num_levels, double *offset, double scale )

void glutSolidSierpinskiSponge( int num_levels, double *offset, double scale )

void glutWireCylinder( double radius, double height, GLint slices, GLint stacks)

void glutSolidCylinder( double radius, double height, GLint slices, GLint stacks)

void glutWireTeacup( double size )

void glutSolidTeacup( double size )

void glutWireTeaspoon( double size )

void glutSolidTeaspoon( double size )

void glutInitContextVersion( int majorVersion, int minorVersion )

void glutInitContextFlags( int flags )

void glutInitContextProfile( int profile )

void glutSetVertexAttribCoord3(GLint attrib)

void glutSetVertexAttribNormal(GLint attrib)

void glutSetVertexAttribTexCoord2(GLint attrib)

RingStbImage 関数リファレンス

はじめに

RingStbImage 拡張機能の関数一覧です。

用例:

# ライブラリの読み込み
        load "stbimage.ring"
# 画像の情報
        width=0 height=0 channels=0
# Ring はプログラム終了後に cData を自動的に解放します
        cData = stbi_load("ring.jpg",:width,:height,:channels,STBI_rgb)
# 画面へ結果を表示
        ? "Size (bytes): " + len(cData)
        ? "Width : " + width
        ? "Height: " + height
        ? "Channels: " + channels

実行結果:

Size (bytes): 557371
Width : 563
Height: 330
Channels: 3

定数

STBI_default

STBI_grey

STBI_grey_alpha

STBI_rgb

STBI_rgb_alpha

関数

stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len,int *x, int *y, int *channels_in_file, int desired_channels)

stbi_uc *stbi_load(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)

stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)

stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)

stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)

stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)

float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)

float *stbi_loadf(char const *filename, int *x, int *y, int *channels_in_file, int desired_channels)

float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels)

void stbi_hdr_to_ldr_gamma(float gamma)

void stbi_hdr_to_ldr_scale(float scale)

void stbi_ldr_to_hdr_gamma(float gamma)

void stbi_ldr_to_hdr_scale(float scale)

int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)

int stbi_is_hdr(char const *filename)

int stbi_is_hdr_from_file(FILE *f)

const char *stbi_failure_reason(void)

int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp)

int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len)

int stbi_info(char const *filename,int *x,int *y,int *comp)

int stbi_info_from_file(FILE *f,int *x,int *y,int *comp)

int stbi_is_16_bit(char const *filename)

int stbi_is_16_bit_from_file(FILE *f)

void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)

void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)

void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)

void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip)

char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen)

char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header)

char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen)

int stbi_zlib_decode_buffer(char *obuffer,int olen, const char *ibuffer, int ilen)

char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen)

int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)

RingOpenGL (OpenGL 1.1) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

void glAccum(GLenum op, GLfloat value)

void glAlphaFunc(GLenum func, GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)

void glArrayElement(GLint i)

void glBegin(GLenum mode)

void glBindTexture(GLenum target, GLuint texture)

void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glCallList(GLuint list)

void glCallLists(GLsizei n, GLenum type, const void *lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClipPlane(GLenum plane, const GLdouble *equation)

void glColor3b(GLbyte red, GLbyte green, GLbyte blue)

void glColor3bv(const GLbyte *v)

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

void glColor3dv(const GLdouble *v)

void glColor3f(GLfloat red, GLfloat green, GLfloat blue)

void glColor3fv(const GLfloat *v)

void glColor3i(GLint red, GLint green, GLint blue)

void glColor3iv(const GLint *v)

void glColor3s(GLshort red, GLshort green, GLshort blue)

void glColor3sv(const GLshort *v)

void glColor3ub(GLubyte red, GLubyte green, GLubyte blue)

void glColor3ubv(const GLubyte *v)

void glColor3ui(GLuint red, GLuint green, GLuint blue)

void glColor3uiv(const GLuint *v)

void glColor3us(GLushort red, GLushort green, GLushort blue)

void glColor3usv(const GLushort *v)

void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)

void glColor4bv(const GLbyte *v)

void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)

void glColor4dv(const GLdouble *v)

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glColor4fv(const GLfloat *v)

void glColor4i(GLint red, GLint green, GLint blue, GLint alpha)

void glColor4iv(const GLint *v)

void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)

void glColor4sv(const GLshort *v)

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)

void glColor4ubv(const GLubyte *v)

void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)

void glColor4uiv(const GLuint *v)

void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)

void glColor4usv(const GLushort *v)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaterial(GLenum face, GLenum mode)

void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCullFace(GLenum mode)

void glDeleteLists(GLuint list, GLsizei range)

void glDeleteTextures(GLsizei n, const GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd zNear, GLclampd zFar)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)

void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride, const void *pointer)

void glEdgeFlagv(const GLboolean *flag)

void glEnable(GLenum cap)

void glEnableClientState(GLenum array)

void glEnd(void)

void glEndList(void)

void glEvalCoord1d(GLdouble u)

void glEvalCoord1dv(const GLdouble *u)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1fv(const GLfloat *u)

void glEvalCoord2d(GLdouble u, GLdouble v)

void glEvalCoord2dv(const GLdouble *u)

void glEvalCoord2f(GLfloat u, GLfloat v)

void glEvalCoord2fv(const GLfloat *u)

void glEvalMesh1(GLenum mode, GLint i1, GLint i2)

void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i, GLint j)

void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname, GLfloat param)

void glFogfv(GLenum pname, const GLfloat *params)

void glFogi(GLenum pname, GLint param)

void glFogiv(GLenum pname, const GLint *params)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

GLuint glGenLists(GLsizei range)

void glGenTextures(GLsizei n, GLuint *textures)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetClipPlane(GLenum plane, GLdouble *equation)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)

void glGetLightiv(GLenum light, GLenum pname, GLint *params)

void glGetMapdv(GLenum target, GLenum query, GLdouble *v)

void glGetMapfv(GLenum target, GLenum query, GLfloat *v)

void glGetMapiv(GLenum target, GLenum query, GLint *v)

void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)

void glGetMaterialiv(GLenum face, GLenum pname, GLint *params)

void glGetPixelMapfv(GLenum map, GLfloat *values)

void glGetPixelMapuiv(GLenum map, GLuint *values)

void glGetPixelMapusv(GLenum map, GLushort *values)

void glGetPointerv(GLenum pname, void* *params)

void glGetPolygonStipple(GLubyte *mask)

GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexEnviv(GLenum target, GLenum pname, GLint *params)

void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)

void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)

void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type, GLsizei stride, const void *pointer)

void glIndexd(GLdouble c)

void glIndexdv(const GLdouble *c)

void glIndexf(GLfloat c)

void glIndexfv(const GLfloat *c)

void glIndexi(GLint c)

void glIndexiv(const GLint *c)

void glIndexs(GLshort c)

void glIndexsv(const GLshort *c)

void glIndexub(GLubyte c)

void glIndexubv(const GLubyte *c)

void glInitNames(void)

void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsTexture(GLuint texture)

void glLightModelf(GLenum pname, GLfloat param)

void glLightModelfv(GLenum pname, const GLfloat *params)

void glLightModeli(GLenum pname, GLint param)

void glLightModeliv(GLenum pname, const GLint *params)

void glLightf(GLenum light, GLenum pname, GLfloat param)

void glLightfv(GLenum light, GLenum pname, const GLfloat *params)

void glLighti(GLenum light, GLenum pname, GLint param)

void glLightiv(GLenum light, GLenum pname, const GLint *params)

void glLineStipple(GLint factor, GLushort pattern)

void glLineWidth(GLfloat width)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble *m)

void glLoadMatrixf(const GLfloat *m)

void glLoadName(GLuint name)

void glLogicOp(GLenum opcode)

void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)

void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)

void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)

void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)

void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)

void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)

void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)

void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)

void glMaterialf(GLenum face, GLenum pname, GLfloat param)

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)

void glMateriali(GLenum face, GLenum pname, GLint param)

void glMaterialiv(GLenum face, GLenum pname, const GLint *params)

void glMatrixMode(GLenum mode)

void glMultMatrixd(const GLdouble *m)

void glMultMatrixf(const GLfloat *m)

void glNewList(GLuint list, GLenum mode)

void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)

void glNormal3bv(const GLbyte *v)

void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)

void glNormal3dv(const GLdouble *v)

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

void glNormal3fv(const GLfloat *v)

void glNormal3i(GLint nx, GLint ny, GLint nz)

void glNormal3iv(const GLint *v)

void glNormal3s(GLshort nx, GLshort ny, GLshort nz)

void glNormal3sv(const GLshort *v)

void glNormalPointer(GLenum type, GLsizei stride, const void *pointer)

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)

void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)

void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)

void glPixelStoref(GLenum pname, GLfloat param)

void glPixelStorei(GLenum pname, GLint param)

void glPixelTransferf(GLenum pname, GLfloat param)

void glPixelTransferi(GLenum pname, GLint param)

void glPixelZoom(GLfloat xfactor, GLfloat yfactor)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPolygonStipple(const GLubyte *mask)

void glPopAttrib(void)

void glPopClientAttrib(void)

void glPopMatrix(void)

void glPopName(void)

void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glRasterPos2d(GLdouble x, GLdouble y)

void glRasterPos2dv(const GLdouble *v)

void glRasterPos2f(GLfloat x, GLfloat y)

void glRasterPos2fv(const GLfloat *v)

void glRasterPos2i(GLint x, GLint y)

void glRasterPos2iv(const GLint *v)

void glRasterPos2s(GLshort x, GLshort y)

void glRasterPos2sv(const GLshort *v)

void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)

void glRasterPos3dv(const GLdouble *v)

void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)

void glRasterPos3fv(const GLfloat *v)

void glRasterPos3i(GLint x, GLint y, GLint z)

void glRasterPos3iv(const GLint *v)

void glRasterPos3s(GLshort x, GLshort y, GLshort z)

void glRasterPos3sv(const GLshort *v)

void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glRasterPos4dv(const GLdouble *v)

void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glRasterPos4fv(const GLfloat *v)

void glRasterPos4i(GLint x, GLint y, GLint z, GLint w)

void glRasterPos4iv(const GLint *v)

void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glRasterPos4sv(const GLshort *v)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)

void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)

void glRectdv(const GLdouble *v1, const GLdouble *v2)

void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)

void glRectfv(const GLfloat *v1, const GLfloat *v2)

void glRecti(GLint x1, GLint y1, GLint x2, GLint y2)

void glRectiv(const GLint *v1, const GLint *v2)

void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)

void glRectsv(const GLshort *v1, const GLshort *v2)

GLint glRenderMode(GLenum mode)

void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)

void glScaled(GLdouble x, GLdouble y, GLdouble z)

void glScalef(GLfloat x, GLfloat y, GLfloat z)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glSelectBuffer(GLsizei size, GLuint *buffer)

void glShadeModel(GLenum mode)

void glStencilFunc(GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glTexCoord1d(GLdouble s)

void glTexCoord1dv(const GLdouble *v)

void glTexCoord1f(GLfloat s)

void glTexCoord1fv(const GLfloat *v)

void glTexCoord1i(GLint s)

void glTexCoord1iv(const GLint *v)

void glTexCoord1s(GLshort s)

void glTexCoord1sv(const GLshort *v)

void glTexCoord2d(GLdouble s, GLdouble t)

void glTexCoord2dv(const GLdouble *v)

void glTexCoord2f(GLfloat s, GLfloat t)

void glTexCoord2fv(const GLfloat *v)

void glTexCoord2i(GLint s, GLint t)

void glTexCoord2iv(const GLint *v)

void glTexCoord2s(GLshort s, GLshort t)

void glTexCoord2sv(const GLshort *v)

void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)

void glTexCoord3dv(const GLdouble *v)

void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)

void glTexCoord3fv(const GLfloat *v)

void glTexCoord3i(GLint s, GLint t, GLint r)

void glTexCoord3iv(const GLint *v)

void glTexCoord3s(GLshort s, GLshort t, GLshort r)

void glTexCoord3sv(const GLshort *v)

void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)

void glTexCoord4dv(const GLdouble *v)

void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)

void glTexCoord4fv(const GLfloat *v)

void glTexCoord4i(GLint s, GLint t, GLint r, GLint q)

void glTexCoord4iv(const GLint *v)

void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)

void glTexCoord4sv(const GLshort *v)

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glTexEnvf(GLenum target, GLenum pname, GLfloat param)

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexEnvi(GLenum target, GLenum pname, GLint param)

void glTexEnviv(GLenum target, GLenum pname, const GLint *params)

void glTexGend(GLenum coord, GLenum pname, GLdouble param)

void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params)

void glTexGenf(GLenum coord, GLenum pname, GLfloat param)

void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)

void glTexGeni(GLenum coord, GLenum pname, GLint param)

void glTexGeniv(GLenum coord, GLenum pname, const GLint *params)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glTranslated(GLdouble x, GLdouble y, GLdouble z)

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glVertex2d(GLdouble x, GLdouble y)

void glVertex2dv(const GLdouble *v)

void glVertex2f(GLfloat x, GLfloat y)

void glVertex2fv(const GLfloat *v)

void glVertex2i(GLint x, GLint y)

void glVertex2iv(const GLint *v)

void glVertex2s(GLshort x, GLshort y)

void glVertex2sv(const GLshort *v)

void glVertex3d(GLdouble x, GLdouble y, GLdouble z)

void glVertex3dv(const GLdouble *v)

void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

void glVertex3fv(const GLfloat *v)

void glVertex3i(GLint x, GLint y, GLint z)

void glVertex3iv(const GLint *v)

void glVertex3s(GLshort x, GLshort y, GLshort z)

void glVertex3sv(const GLshort *v)

void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glVertex4dv(const GLdouble *v)

void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertex4fv(const GLfloat *v)

void glVertex4i(GLint x, GLint y, GLint z, GLint w)

void glVertex4iv(const GLint *v)

void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glVertex4sv(const GLshort *v)

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 1.2) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

void glAccum(GLenum op, GLfloat value)

void glAlphaFunc(GLenum func, GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)

void glArrayElement(GLint i)

void glBegin(GLenum mode)

void glBindTexture(GLenum target, GLuint texture)

void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glCallList(GLuint list)

void glCallLists(GLsizei n, GLenum type, const void *lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClipPlane(GLenum plane, const GLdouble *equation)

void glColor3b(GLbyte red, GLbyte green, GLbyte blue)

void glColor3bv(const GLbyte *v)

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

void glColor3dv(const GLdouble *v)

void glColor3f(GLfloat red, GLfloat green, GLfloat blue)

void glColor3fv(const GLfloat *v)

void glColor3i(GLint red, GLint green, GLint blue)

void glColor3iv(const GLint *v)

void glColor3s(GLshort red, GLshort green, GLshort blue)

void glColor3sv(const GLshort *v)

void glColor3ub(GLubyte red, GLubyte green, GLubyte blue)

void glColor3ubv(const GLubyte *v)

void glColor3ui(GLuint red, GLuint green, GLuint blue)

void glColor3uiv(const GLuint *v)

void glColor3us(GLushort red, GLushort green, GLushort blue)

void glColor3usv(const GLushort *v)

void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)

void glColor4bv(const GLbyte *v)

void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)

void glColor4dv(const GLdouble *v)

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glColor4fv(const GLfloat *v)

void glColor4i(GLint red, GLint green, GLint blue, GLint alpha)

void glColor4iv(const GLint *v)

void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)

void glColor4sv(const GLshort *v)

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)

void glColor4ubv(const GLubyte *v)

void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)

void glColor4uiv(const GLuint *v)

void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)

void glColor4usv(const GLushort *v)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaterial(GLenum face, GLenum mode)

void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCullFace(GLenum mode)

void glDeleteLists(GLuint list, GLsizei range)

void glDeleteTextures(GLsizei n, const GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd zNear, GLclampd zFar)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)

void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride, const void *pointer)

void glEdgeFlagv(const GLboolean *flag)

void glEnable(GLenum cap)

void glEnableClientState(GLenum array)

void glEnd(void)

void glEndList(void)

void glEvalCoord1d(GLdouble u)

void glEvalCoord1dv(const GLdouble *u)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1fv(const GLfloat *u)

void glEvalCoord2d(GLdouble u, GLdouble v)

void glEvalCoord2dv(const GLdouble *u)

void glEvalCoord2f(GLfloat u, GLfloat v)

void glEvalCoord2fv(const GLfloat *u)

void glEvalMesh1(GLenum mode, GLint i1, GLint i2)

void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i, GLint j)

void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname, GLfloat param)

void glFogfv(GLenum pname, const GLfloat *params)

void glFogi(GLenum pname, GLint param)

void glFogiv(GLenum pname, const GLint *params)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

GLuint glGenLists(GLsizei range)

void glGenTextures(GLsizei n, GLuint *textures)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetClipPlane(GLenum plane, GLdouble *equation)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)

void glGetLightiv(GLenum light, GLenum pname, GLint *params)

void glGetMapdv(GLenum target, GLenum query, GLdouble *v)

void glGetMapfv(GLenum target, GLenum query, GLfloat *v)

void glGetMapiv(GLenum target, GLenum query, GLint *v)

void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)

void glGetMaterialiv(GLenum face, GLenum pname, GLint *params)

void glGetPixelMapfv(GLenum map, GLfloat *values)

void glGetPixelMapuiv(GLenum map, GLuint *values)

void glGetPixelMapusv(GLenum map, GLushort *values)

void glGetPointerv(GLenum pname, void* *params)

void glGetPolygonStipple(GLubyte *mask)

GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexEnviv(GLenum target, GLenum pname, GLint *params)

void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)

void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)

void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type, GLsizei stride, const void *pointer)

void glIndexd(GLdouble c)

void glIndexdv(const GLdouble *c)

void glIndexf(GLfloat c)

void glIndexfv(const GLfloat *c)

void glIndexi(GLint c)

void glIndexiv(const GLint *c)

void glIndexs(GLshort c)

void glIndexsv(const GLshort *c)

void glIndexub(GLubyte c)

void glIndexubv(const GLubyte *c)

void glInitNames(void)

void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsTexture(GLuint texture)

void glLightModelf(GLenum pname, GLfloat param)

void glLightModelfv(GLenum pname, const GLfloat *params)

void glLightModeli(GLenum pname, GLint param)

void glLightModeliv(GLenum pname, const GLint *params)

void glLightf(GLenum light, GLenum pname, GLfloat param)

void glLightfv(GLenum light, GLenum pname, const GLfloat *params)

void glLighti(GLenum light, GLenum pname, GLint param)

void glLightiv(GLenum light, GLenum pname, const GLint *params)

void glLineStipple(GLint factor, GLushort pattern)

void glLineWidth(GLfloat width)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble *m)

void glLoadMatrixf(const GLfloat *m)

void glLoadName(GLuint name)

void glLogicOp(GLenum opcode)

void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)

void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)

void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)

void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)

void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)

void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)

void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)

void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)

void glMaterialf(GLenum face, GLenum pname, GLfloat param)

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)

void glMateriali(GLenum face, GLenum pname, GLint param)

void glMaterialiv(GLenum face, GLenum pname, const GLint *params)

void glMatrixMode(GLenum mode)

void glMultMatrixd(const GLdouble *m)

void glMultMatrixf(const GLfloat *m)

void glNewList(GLuint list, GLenum mode)

void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)

void glNormal3bv(const GLbyte *v)

void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)

void glNormal3dv(const GLdouble *v)

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

void glNormal3fv(const GLfloat *v)

void glNormal3i(GLint nx, GLint ny, GLint nz)

void glNormal3iv(const GLint *v)

void glNormal3s(GLshort nx, GLshort ny, GLshort nz)

void glNormal3sv(const GLshort *v)

void glNormalPointer(GLenum type, GLsizei stride, const void *pointer)

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)

void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)

void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)

void glPixelStoref(GLenum pname, GLfloat param)

void glPixelStorei(GLenum pname, GLint param)

void glPixelTransferf(GLenum pname, GLfloat param)

void glPixelTransferi(GLenum pname, GLint param)

void glPixelZoom(GLfloat xfactor, GLfloat yfactor)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPolygonStipple(const GLubyte *mask)

void glPopAttrib(void)

void glPopClientAttrib(void)

void glPopMatrix(void)

void glPopName(void)

void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glRasterPos2d(GLdouble x, GLdouble y)

void glRasterPos2dv(const GLdouble *v)

void glRasterPos2f(GLfloat x, GLfloat y)

void glRasterPos2fv(const GLfloat *v)

void glRasterPos2i(GLint x, GLint y)

void glRasterPos2iv(const GLint *v)

void glRasterPos2s(GLshort x, GLshort y)

void glRasterPos2sv(const GLshort *v)

void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)

void glRasterPos3dv(const GLdouble *v)

void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)

void glRasterPos3fv(const GLfloat *v)

void glRasterPos3i(GLint x, GLint y, GLint z)

void glRasterPos3iv(const GLint *v)

void glRasterPos3s(GLshort x, GLshort y, GLshort z)

void glRasterPos3sv(const GLshort *v)

void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glRasterPos4dv(const GLdouble *v)

void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glRasterPos4fv(const GLfloat *v)

void glRasterPos4i(GLint x, GLint y, GLint z, GLint w)

void glRasterPos4iv(const GLint *v)

void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glRasterPos4sv(const GLshort *v)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)

void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)

void glRectdv(const GLdouble *v1, const GLdouble *v2)

void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)

void glRectfv(const GLfloat *v1, const GLfloat *v2)

void glRecti(GLint x1, GLint y1, GLint x2, GLint y2)

void glRectiv(const GLint *v1, const GLint *v2)

void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)

void glRectsv(const GLshort *v1, const GLshort *v2)

GLint glRenderMode(GLenum mode)

void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)

void glScaled(GLdouble x, GLdouble y, GLdouble z)

void glScalef(GLfloat x, GLfloat y, GLfloat z)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glSelectBuffer(GLsizei size, GLuint *buffer)

void glShadeModel(GLenum mode)

void glStencilFunc(GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glTexCoord1d(GLdouble s)

void glTexCoord1dv(const GLdouble *v)

void glTexCoord1f(GLfloat s)

void glTexCoord1fv(const GLfloat *v)

void glTexCoord1i(GLint s)

void glTexCoord1iv(const GLint *v)

void glTexCoord1s(GLshort s)

void glTexCoord1sv(const GLshort *v)

void glTexCoord2d(GLdouble s, GLdouble t)

void glTexCoord2dv(const GLdouble *v)

void glTexCoord2f(GLfloat s, GLfloat t)

void glTexCoord2fv(const GLfloat *v)

void glTexCoord2i(GLint s, GLint t)

void glTexCoord2iv(const GLint *v)

void glTexCoord2s(GLshort s, GLshort t)

void glTexCoord2sv(const GLshort *v)

void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)

void glTexCoord3dv(const GLdouble *v)

void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)

void glTexCoord3fv(const GLfloat *v)

void glTexCoord3i(GLint s, GLint t, GLint r)

void glTexCoord3iv(const GLint *v)

void glTexCoord3s(GLshort s, GLshort t, GLshort r)

void glTexCoord3sv(const GLshort *v)

void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)

void glTexCoord4dv(const GLdouble *v)

void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)

void glTexCoord4fv(const GLfloat *v)

void glTexCoord4i(GLint s, GLint t, GLint r, GLint q)

void glTexCoord4iv(const GLint *v)

void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)

void glTexCoord4sv(const GLshort *v)

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glTexEnvf(GLenum target, GLenum pname, GLfloat param)

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexEnvi(GLenum target, GLenum pname, GLint param)

void glTexEnviv(GLenum target, GLenum pname, const GLint *params)

void glTexGend(GLenum coord, GLenum pname, GLdouble param)

void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params)

void glTexGenf(GLenum coord, GLenum pname, GLfloat param)

void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)

void glTexGeni(GLenum coord, GLenum pname, GLint param)

void glTexGeniv(GLenum coord, GLenum pname, const GLint *params)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glTranslated(GLdouble x, GLdouble y, GLdouble z)

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glVertex2d(GLdouble x, GLdouble y)

void glVertex2dv(const GLdouble *v)

void glVertex2f(GLfloat x, GLfloat y)

void glVertex2fv(const GLfloat *v)

void glVertex2i(GLint x, GLint y)

void glVertex2iv(const GLint *v)

void glVertex2s(GLshort x, GLshort y)

void glVertex2sv(const GLshort *v)

void glVertex3d(GLdouble x, GLdouble y, GLdouble z)

void glVertex3dv(const GLdouble *v)

void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

void glVertex3fv(const GLfloat *v)

void glVertex3i(GLint x, GLint y, GLint z)

void glVertex3iv(const GLint *v)

void glVertex3s(GLshort x, GLshort y, GLshort z)

void glVertex3sv(const GLshort *v)

void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glVertex4dv(const GLdouble *v)

void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertex4fv(const GLfloat *v)

void glVertex4i(GLint x, GLint y, GLint z, GLint w)

void glVertex4iv(const GLint *v)

void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glVertex4sv(const GLshort *v)

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 1.3) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

void glAccum(GLenum op, GLfloat value)

void glAlphaFunc(GLenum func, GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)

void glArrayElement(GLint i)

void glBegin(GLenum mode)

void glBindTexture(GLenum target, GLuint texture)

void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glCallList(GLuint list)

void glCallLists(GLsizei n, GLenum type, const void *lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClipPlane(GLenum plane, const GLdouble *equation)

void glColor3b(GLbyte red, GLbyte green, GLbyte blue)

void glColor3bv(const GLbyte *v)

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

void glColor3dv(const GLdouble *v)

void glColor3f(GLfloat red, GLfloat green, GLfloat blue)

void glColor3fv(const GLfloat *v)

void glColor3i(GLint red, GLint green, GLint blue)

void glColor3iv(const GLint *v)

void glColor3s(GLshort red, GLshort green, GLshort blue)

void glColor3sv(const GLshort *v)

void glColor3ub(GLubyte red, GLubyte green, GLubyte blue)

void glColor3ubv(const GLubyte *v)

void glColor3ui(GLuint red, GLuint green, GLuint blue)

void glColor3uiv(const GLuint *v)

void glColor3us(GLushort red, GLushort green, GLushort blue)

void glColor3usv(const GLushort *v)

void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)

void glColor4bv(const GLbyte *v)

void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)

void glColor4dv(const GLdouble *v)

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glColor4fv(const GLfloat *v)

void glColor4i(GLint red, GLint green, GLint blue, GLint alpha)

void glColor4iv(const GLint *v)

void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)

void glColor4sv(const GLshort *v)

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)

void glColor4ubv(const GLubyte *v)

void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)

void glColor4uiv(const GLuint *v)

void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)

void glColor4usv(const GLushort *v)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaterial(GLenum face, GLenum mode)

void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCullFace(GLenum mode)

void glDeleteLists(GLuint list, GLsizei range)

void glDeleteTextures(GLsizei n, const GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd zNear, GLclampd zFar)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)

void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride, const void *pointer)

void glEdgeFlagv(const GLboolean *flag)

void glEnable(GLenum cap)

void glEnableClientState(GLenum array)

void glEnd(void)

void glEndList(void)

void glEvalCoord1d(GLdouble u)

void glEvalCoord1dv(const GLdouble *u)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1fv(const GLfloat *u)

void glEvalCoord2d(GLdouble u, GLdouble v)

void glEvalCoord2dv(const GLdouble *u)

void glEvalCoord2f(GLfloat u, GLfloat v)

void glEvalCoord2fv(const GLfloat *u)

void glEvalMesh1(GLenum mode, GLint i1, GLint i2)

void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i, GLint j)

void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname, GLfloat param)

void glFogfv(GLenum pname, const GLfloat *params)

void glFogi(GLenum pname, GLint param)

void glFogiv(GLenum pname, const GLint *params)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

GLuint glGenLists(GLsizei range)

void glGenTextures(GLsizei n, GLuint *textures)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetClipPlane(GLenum plane, GLdouble *equation)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)

void glGetLightiv(GLenum light, GLenum pname, GLint *params)

void glGetMapdv(GLenum target, GLenum query, GLdouble *v)

void glGetMapfv(GLenum target, GLenum query, GLfloat *v)

void glGetMapiv(GLenum target, GLenum query, GLint *v)

void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)

void glGetMaterialiv(GLenum face, GLenum pname, GLint *params)

void glGetPixelMapfv(GLenum map, GLfloat *values)

void glGetPixelMapuiv(GLenum map, GLuint *values)

void glGetPixelMapusv(GLenum map, GLushort *values)

void glGetPointerv(GLenum pname, void* *params)

void glGetPolygonStipple(GLubyte *mask)

GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexEnviv(GLenum target, GLenum pname, GLint *params)

void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)

void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)

void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type, GLsizei stride, const void *pointer)

void glIndexd(GLdouble c)

void glIndexdv(const GLdouble *c)

void glIndexf(GLfloat c)

void glIndexfv(const GLfloat *c)

void glIndexi(GLint c)

void glIndexiv(const GLint *c)

void glIndexs(GLshort c)

void glIndexsv(const GLshort *c)

void glIndexub(GLubyte c)

void glIndexubv(const GLubyte *c)

void glInitNames(void)

void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsTexture(GLuint texture)

void glLightModelf(GLenum pname, GLfloat param)

void glLightModelfv(GLenum pname, const GLfloat *params)

void glLightModeli(GLenum pname, GLint param)

void glLightModeliv(GLenum pname, const GLint *params)

void glLightf(GLenum light, GLenum pname, GLfloat param)

void glLightfv(GLenum light, GLenum pname, const GLfloat *params)

void glLighti(GLenum light, GLenum pname, GLint param)

void glLightiv(GLenum light, GLenum pname, const GLint *params)

void glLineStipple(GLint factor, GLushort pattern)

void glLineWidth(GLfloat width)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble *m)

void glLoadMatrixf(const GLfloat *m)

void glLoadName(GLuint name)

void glLogicOp(GLenum opcode)

void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)

void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)

void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)

void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)

void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)

void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)

void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)

void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)

void glMaterialf(GLenum face, GLenum pname, GLfloat param)

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)

void glMateriali(GLenum face, GLenum pname, GLint param)

void glMaterialiv(GLenum face, GLenum pname, const GLint *params)

void glMatrixMode(GLenum mode)

void glMultMatrixd(const GLdouble *m)

void glMultMatrixf(const GLfloat *m)

void glNewList(GLuint list, GLenum mode)

void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)

void glNormal3bv(const GLbyte *v)

void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)

void glNormal3dv(const GLdouble *v)

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

void glNormal3fv(const GLfloat *v)

void glNormal3i(GLint nx, GLint ny, GLint nz)

void glNormal3iv(const GLint *v)

void glNormal3s(GLshort nx, GLshort ny, GLshort nz)

void glNormal3sv(const GLshort *v)

void glNormalPointer(GLenum type, GLsizei stride, const void *pointer)

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)

void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)

void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)

void glPixelStoref(GLenum pname, GLfloat param)

void glPixelStorei(GLenum pname, GLint param)

void glPixelTransferf(GLenum pname, GLfloat param)

void glPixelTransferi(GLenum pname, GLint param)

void glPixelZoom(GLfloat xfactor, GLfloat yfactor)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPolygonStipple(const GLubyte *mask)

void glPopAttrib(void)

void glPopClientAttrib(void)

void glPopMatrix(void)

void glPopName(void)

void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glRasterPos2d(GLdouble x, GLdouble y)

void glRasterPos2dv(const GLdouble *v)

void glRasterPos2f(GLfloat x, GLfloat y)

void glRasterPos2fv(const GLfloat *v)

void glRasterPos2i(GLint x, GLint y)

void glRasterPos2iv(const GLint *v)

void glRasterPos2s(GLshort x, GLshort y)

void glRasterPos2sv(const GLshort *v)

void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)

void glRasterPos3dv(const GLdouble *v)

void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)

void glRasterPos3fv(const GLfloat *v)

void glRasterPos3i(GLint x, GLint y, GLint z)

void glRasterPos3iv(const GLint *v)

void glRasterPos3s(GLshort x, GLshort y, GLshort z)

void glRasterPos3sv(const GLshort *v)

void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glRasterPos4dv(const GLdouble *v)

void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glRasterPos4fv(const GLfloat *v)

void glRasterPos4i(GLint x, GLint y, GLint z, GLint w)

void glRasterPos4iv(const GLint *v)

void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glRasterPos4sv(const GLshort *v)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)

void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)

void glRectdv(const GLdouble *v1, const GLdouble *v2)

void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)

void glRectfv(const GLfloat *v1, const GLfloat *v2)

void glRecti(GLint x1, GLint y1, GLint x2, GLint y2)

void glRectiv(const GLint *v1, const GLint *v2)

void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)

void glRectsv(const GLshort *v1, const GLshort *v2)

GLint glRenderMode(GLenum mode)

void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)

void glScaled(GLdouble x, GLdouble y, GLdouble z)

void glScalef(GLfloat x, GLfloat y, GLfloat z)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glSelectBuffer(GLsizei size, GLuint *buffer)

void glShadeModel(GLenum mode)

void glStencilFunc(GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glTexCoord1d(GLdouble s)

void glTexCoord1dv(const GLdouble *v)

void glTexCoord1f(GLfloat s)

void glTexCoord1fv(const GLfloat *v)

void glTexCoord1i(GLint s)

void glTexCoord1iv(const GLint *v)

void glTexCoord1s(GLshort s)

void glTexCoord1sv(const GLshort *v)

void glTexCoord2d(GLdouble s, GLdouble t)

void glTexCoord2dv(const GLdouble *v)

void glTexCoord2f(GLfloat s, GLfloat t)

void glTexCoord2fv(const GLfloat *v)

void glTexCoord2i(GLint s, GLint t)

void glTexCoord2iv(const GLint *v)

void glTexCoord2s(GLshort s, GLshort t)

void glTexCoord2sv(const GLshort *v)

void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)

void glTexCoord3dv(const GLdouble *v)

void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)

void glTexCoord3fv(const GLfloat *v)

void glTexCoord3i(GLint s, GLint t, GLint r)

void glTexCoord3iv(const GLint *v)

void glTexCoord3s(GLshort s, GLshort t, GLshort r)

void glTexCoord3sv(const GLshort *v)

void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)

void glTexCoord4dv(const GLdouble *v)

void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)

void glTexCoord4fv(const GLfloat *v)

void glTexCoord4i(GLint s, GLint t, GLint r, GLint q)

void glTexCoord4iv(const GLint *v)

void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)

void glTexCoord4sv(const GLshort *v)

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glTexEnvf(GLenum target, GLenum pname, GLfloat param)

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexEnvi(GLenum target, GLenum pname, GLint param)

void glTexEnviv(GLenum target, GLenum pname, const GLint *params)

void glTexGend(GLenum coord, GLenum pname, GLdouble param)

void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params)

void glTexGenf(GLenum coord, GLenum pname, GLfloat param)

void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)

void glTexGeni(GLenum coord, GLenum pname, GLint param)

void glTexGeniv(GLenum coord, GLenum pname, const GLint *params)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glTranslated(GLdouble x, GLdouble y, GLdouble z)

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glVertex2d(GLdouble x, GLdouble y)

void glVertex2dv(const GLdouble *v)

void glVertex2f(GLfloat x, GLfloat y)

void glVertex2fv(const GLfloat *v)

void glVertex2i(GLint x, GLint y)

void glVertex2iv(const GLint *v)

void glVertex2s(GLshort x, GLshort y)

void glVertex2sv(const GLshort *v)

void glVertex3d(GLdouble x, GLdouble y, GLdouble z)

void glVertex3dv(const GLdouble *v)

void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

void glVertex3fv(const GLfloat *v)

void glVertex3i(GLint x, GLint y, GLint z)

void glVertex3iv(const GLint *v)

void glVertex3s(GLshort x, GLshort y, GLshort z)

void glVertex3sv(const GLshort *v)

void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glVertex4dv(const GLdouble *v)

void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertex4fv(const GLfloat *v)

void glVertex4i(GLint x, GLint y, GLint z, GLint w)

void glVertex4iv(const GLint *v)

void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glVertex4sv(const GLshort *v)

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 1.4) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

void glAccum(GLenum op, GLfloat value)

void glAlphaFunc(GLenum func, GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)

void glArrayElement(GLint i)

void glBegin(GLenum mode)

void glBindTexture(GLenum target, GLuint texture)

void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glCallList(GLuint list)

void glCallLists(GLsizei n, GLenum type, const void *lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClipPlane(GLenum plane, const GLdouble *equation)

void glColor3b(GLbyte red, GLbyte green, GLbyte blue)

void glColor3bv(const GLbyte *v)

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

void glColor3dv(const GLdouble *v)

void glColor3f(GLfloat red, GLfloat green, GLfloat blue)

void glColor3fv(const GLfloat *v)

void glColor3i(GLint red, GLint green, GLint blue)

void glColor3iv(const GLint *v)

void glColor3s(GLshort red, GLshort green, GLshort blue)

void glColor3sv(const GLshort *v)

void glColor3ub(GLubyte red, GLubyte green, GLubyte blue)

void glColor3ubv(const GLubyte *v)

void glColor3ui(GLuint red, GLuint green, GLuint blue)

void glColor3uiv(const GLuint *v)

void glColor3us(GLushort red, GLushort green, GLushort blue)

void glColor3usv(const GLushort *v)

void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)

void glColor4bv(const GLbyte *v)

void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)

void glColor4dv(const GLdouble *v)

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glColor4fv(const GLfloat *v)

void glColor4i(GLint red, GLint green, GLint blue, GLint alpha)

void glColor4iv(const GLint *v)

void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)

void glColor4sv(const GLshort *v)

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)

void glColor4ubv(const GLubyte *v)

void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)

void glColor4uiv(const GLuint *v)

void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)

void glColor4usv(const GLushort *v)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaterial(GLenum face, GLenum mode)

void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCullFace(GLenum mode)

void glDeleteLists(GLuint list, GLsizei range)

void glDeleteTextures(GLsizei n, const GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd zNear, GLclampd zFar)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)

void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride, const void *pointer)

void glEdgeFlagv(const GLboolean *flag)

void glEnable(GLenum cap)

void glEnableClientState(GLenum array)

void glEnd(void)

void glEndList(void)

void glEvalCoord1d(GLdouble u)

void glEvalCoord1dv(const GLdouble *u)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1fv(const GLfloat *u)

void glEvalCoord2d(GLdouble u, GLdouble v)

void glEvalCoord2dv(const GLdouble *u)

void glEvalCoord2f(GLfloat u, GLfloat v)

void glEvalCoord2fv(const GLfloat *u)

void glEvalMesh1(GLenum mode, GLint i1, GLint i2)

void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i, GLint j)

void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname, GLfloat param)

void glFogfv(GLenum pname, const GLfloat *params)

void glFogi(GLenum pname, GLint param)

void glFogiv(GLenum pname, const GLint *params)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

GLuint glGenLists(GLsizei range)

void glGenTextures(GLsizei n, GLuint *textures)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetClipPlane(GLenum plane, GLdouble *equation)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)

void glGetLightiv(GLenum light, GLenum pname, GLint *params)

void glGetMapdv(GLenum target, GLenum query, GLdouble *v)

void glGetMapfv(GLenum target, GLenum query, GLfloat *v)

void glGetMapiv(GLenum target, GLenum query, GLint *v)

void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)

void glGetMaterialiv(GLenum face, GLenum pname, GLint *params)

void glGetPixelMapfv(GLenum map, GLfloat *values)

void glGetPixelMapuiv(GLenum map, GLuint *values)

void glGetPixelMapusv(GLenum map, GLushort *values)

void glGetPointerv(GLenum pname, void* *params)

void glGetPolygonStipple(GLubyte *mask)

GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexEnviv(GLenum target, GLenum pname, GLint *params)

void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)

void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)

void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type, GLsizei stride, const void *pointer)

void glIndexd(GLdouble c)

void glIndexdv(const GLdouble *c)

void glIndexf(GLfloat c)

void glIndexfv(const GLfloat *c)

void glIndexi(GLint c)

void glIndexiv(const GLint *c)

void glIndexs(GLshort c)

void glIndexsv(const GLshort *c)

void glIndexub(GLubyte c)

void glIndexubv(const GLubyte *c)

void glInitNames(void)

void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsTexture(GLuint texture)

void glLightModelf(GLenum pname, GLfloat param)

void glLightModelfv(GLenum pname, const GLfloat *params)

void glLightModeli(GLenum pname, GLint param)

void glLightModeliv(GLenum pname, const GLint *params)

void glLightf(GLenum light, GLenum pname, GLfloat param)

void glLightfv(GLenum light, GLenum pname, const GLfloat *params)

void glLighti(GLenum light, GLenum pname, GLint param)

void glLightiv(GLenum light, GLenum pname, const GLint *params)

void glLineStipple(GLint factor, GLushort pattern)

void glLineWidth(GLfloat width)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble *m)

void glLoadMatrixf(const GLfloat *m)

void glLoadName(GLuint name)

void glLogicOp(GLenum opcode)

void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)

void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)

void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)

void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)

void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)

void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)

void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)

void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)

void glMaterialf(GLenum face, GLenum pname, GLfloat param)

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)

void glMateriali(GLenum face, GLenum pname, GLint param)

void glMaterialiv(GLenum face, GLenum pname, const GLint *params)

void glMatrixMode(GLenum mode)

void glMultMatrixd(const GLdouble *m)

void glMultMatrixf(const GLfloat *m)

void glNewList(GLuint list, GLenum mode)

void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)

void glNormal3bv(const GLbyte *v)

void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)

void glNormal3dv(const GLdouble *v)

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

void glNormal3fv(const GLfloat *v)

void glNormal3i(GLint nx, GLint ny, GLint nz)

void glNormal3iv(const GLint *v)

void glNormal3s(GLshort nx, GLshort ny, GLshort nz)

void glNormal3sv(const GLshort *v)

void glNormalPointer(GLenum type, GLsizei stride, const void *pointer)

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)

void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)

void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)

void glPixelStoref(GLenum pname, GLfloat param)

void glPixelStorei(GLenum pname, GLint param)

void glPixelTransferf(GLenum pname, GLfloat param)

void glPixelTransferi(GLenum pname, GLint param)

void glPixelZoom(GLfloat xfactor, GLfloat yfactor)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPolygonStipple(const GLubyte *mask)

void glPopAttrib(void)

void glPopClientAttrib(void)

void glPopMatrix(void)

void glPopName(void)

void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glRasterPos2d(GLdouble x, GLdouble y)

void glRasterPos2dv(const GLdouble *v)

void glRasterPos2f(GLfloat x, GLfloat y)

void glRasterPos2fv(const GLfloat *v)

void glRasterPos2i(GLint x, GLint y)

void glRasterPos2iv(const GLint *v)

void glRasterPos2s(GLshort x, GLshort y)

void glRasterPos2sv(const GLshort *v)

void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)

void glRasterPos3dv(const GLdouble *v)

void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)

void glRasterPos3fv(const GLfloat *v)

void glRasterPos3i(GLint x, GLint y, GLint z)

void glRasterPos3iv(const GLint *v)

void glRasterPos3s(GLshort x, GLshort y, GLshort z)

void glRasterPos3sv(const GLshort *v)

void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glRasterPos4dv(const GLdouble *v)

void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glRasterPos4fv(const GLfloat *v)

void glRasterPos4i(GLint x, GLint y, GLint z, GLint w)

void glRasterPos4iv(const GLint *v)

void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glRasterPos4sv(const GLshort *v)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)

void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)

void glRectdv(const GLdouble *v1, const GLdouble *v2)

void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)

void glRectfv(const GLfloat *v1, const GLfloat *v2)

void glRecti(GLint x1, GLint y1, GLint x2, GLint y2)

void glRectiv(const GLint *v1, const GLint *v2)

void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)

void glRectsv(const GLshort *v1, const GLshort *v2)

GLint glRenderMode(GLenum mode)

void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)

void glScaled(GLdouble x, GLdouble y, GLdouble z)

void glScalef(GLfloat x, GLfloat y, GLfloat z)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glSelectBuffer(GLsizei size, GLuint *buffer)

void glShadeModel(GLenum mode)

void glStencilFunc(GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glTexCoord1d(GLdouble s)

void glTexCoord1dv(const GLdouble *v)

void glTexCoord1f(GLfloat s)

void glTexCoord1fv(const GLfloat *v)

void glTexCoord1i(GLint s)

void glTexCoord1iv(const GLint *v)

void glTexCoord1s(GLshort s)

void glTexCoord1sv(const GLshort *v)

void glTexCoord2d(GLdouble s, GLdouble t)

void glTexCoord2dv(const GLdouble *v)

void glTexCoord2f(GLfloat s, GLfloat t)

void glTexCoord2fv(const GLfloat *v)

void glTexCoord2i(GLint s, GLint t)

void glTexCoord2iv(const GLint *v)

void glTexCoord2s(GLshort s, GLshort t)

void glTexCoord2sv(const GLshort *v)

void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)

void glTexCoord3dv(const GLdouble *v)

void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)

void glTexCoord3fv(const GLfloat *v)

void glTexCoord3i(GLint s, GLint t, GLint r)

void glTexCoord3iv(const GLint *v)

void glTexCoord3s(GLshort s, GLshort t, GLshort r)

void glTexCoord3sv(const GLshort *v)

void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)

void glTexCoord4dv(const GLdouble *v)

void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)

void glTexCoord4fv(const GLfloat *v)

void glTexCoord4i(GLint s, GLint t, GLint r, GLint q)

void glTexCoord4iv(const GLint *v)

void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)

void glTexCoord4sv(const GLshort *v)

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glTexEnvf(GLenum target, GLenum pname, GLfloat param)

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexEnvi(GLenum target, GLenum pname, GLint param)

void glTexEnviv(GLenum target, GLenum pname, const GLint *params)

void glTexGend(GLenum coord, GLenum pname, GLdouble param)

void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params)

void glTexGenf(GLenum coord, GLenum pname, GLfloat param)

void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)

void glTexGeni(GLenum coord, GLenum pname, GLint param)

void glTexGeniv(GLenum coord, GLenum pname, const GLint *params)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glTranslated(GLdouble x, GLdouble y, GLdouble z)

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glVertex2d(GLdouble x, GLdouble y)

void glVertex2dv(const GLdouble *v)

void glVertex2f(GLfloat x, GLfloat y)

void glVertex2fv(const GLfloat *v)

void glVertex2i(GLint x, GLint y)

void glVertex2iv(const GLint *v)

void glVertex2s(GLshort x, GLshort y)

void glVertex2sv(const GLshort *v)

void glVertex3d(GLdouble x, GLdouble y, GLdouble z)

void glVertex3dv(const GLdouble *v)

void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

void glVertex3fv(const GLfloat *v)

void glVertex3i(GLint x, GLint y, GLint z)

void glVertex3iv(const GLint *v)

void glVertex3s(GLshort x, GLshort y, GLshort z)

void glVertex3sv(const GLshort *v)

void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glVertex4dv(const GLdouble *v)

void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertex4fv(const GLfloat *v)

void glVertex4i(GLint x, GLint y, GLint z, GLint w)

void glVertex4iv(const GLint *v)

void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glVertex4sv(const GLshort *v)

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 1.5) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

void glAccum(GLenum op, GLfloat value)

void glAlphaFunc(GLenum func, GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)

void glArrayElement(GLint i)

void glBegin(GLenum mode)

void glBindTexture(GLenum target, GLuint texture)

void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glCallList(GLuint list)

void glCallLists(GLsizei n, GLenum type, const void *lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClipPlane(GLenum plane, const GLdouble *equation)

void glColor3b(GLbyte red, GLbyte green, GLbyte blue)

void glColor3bv(const GLbyte *v)

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

void glColor3dv(const GLdouble *v)

void glColor3f(GLfloat red, GLfloat green, GLfloat blue)

void glColor3fv(const GLfloat *v)

void glColor3i(GLint red, GLint green, GLint blue)

void glColor3iv(const GLint *v)

void glColor3s(GLshort red, GLshort green, GLshort blue)

void glColor3sv(const GLshort *v)

void glColor3ub(GLubyte red, GLubyte green, GLubyte blue)

void glColor3ubv(const GLubyte *v)

void glColor3ui(GLuint red, GLuint green, GLuint blue)

void glColor3uiv(const GLuint *v)

void glColor3us(GLushort red, GLushort green, GLushort blue)

void glColor3usv(const GLushort *v)

void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)

void glColor4bv(const GLbyte *v)

void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)

void glColor4dv(const GLdouble *v)

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glColor4fv(const GLfloat *v)

void glColor4i(GLint red, GLint green, GLint blue, GLint alpha)

void glColor4iv(const GLint *v)

void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)

void glColor4sv(const GLshort *v)

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)

void glColor4ubv(const GLubyte *v)

void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)

void glColor4uiv(const GLuint *v)

void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)

void glColor4usv(const GLushort *v)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaterial(GLenum face, GLenum mode)

void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCullFace(GLenum mode)

void glDeleteLists(GLuint list, GLsizei range)

void glDeleteTextures(GLsizei n, const GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd zNear, GLclampd zFar)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)

void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride, const void *pointer)

void glEdgeFlagv(const GLboolean *flag)

void glEnable(GLenum cap)

void glEnableClientState(GLenum array)

void glEnd(void)

void glEndList(void)

void glEvalCoord1d(GLdouble u)

void glEvalCoord1dv(const GLdouble *u)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1fv(const GLfloat *u)

void glEvalCoord2d(GLdouble u, GLdouble v)

void glEvalCoord2dv(const GLdouble *u)

void glEvalCoord2f(GLfloat u, GLfloat v)

void glEvalCoord2fv(const GLfloat *u)

void glEvalMesh1(GLenum mode, GLint i1, GLint i2)

void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i, GLint j)

void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname, GLfloat param)

void glFogfv(GLenum pname, const GLfloat *params)

void glFogi(GLenum pname, GLint param)

void glFogiv(GLenum pname, const GLint *params)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

GLuint glGenLists(GLsizei range)

void glGenTextures(GLsizei n, GLuint *textures)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetClipPlane(GLenum plane, GLdouble *equation)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)

void glGetLightiv(GLenum light, GLenum pname, GLint *params)

void glGetMapdv(GLenum target, GLenum query, GLdouble *v)

void glGetMapfv(GLenum target, GLenum query, GLfloat *v)

void glGetMapiv(GLenum target, GLenum query, GLint *v)

void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)

void glGetMaterialiv(GLenum face, GLenum pname, GLint *params)

void glGetPixelMapfv(GLenum map, GLfloat *values)

void glGetPixelMapuiv(GLenum map, GLuint *values)

void glGetPixelMapusv(GLenum map, GLushort *values)

void glGetPointerv(GLenum pname, void* *params)

void glGetPolygonStipple(GLubyte *mask)

GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexEnviv(GLenum target, GLenum pname, GLint *params)

void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)

void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)

void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type, GLsizei stride, const void *pointer)

void glIndexd(GLdouble c)

void glIndexdv(const GLdouble *c)

void glIndexf(GLfloat c)

void glIndexfv(const GLfloat *c)

void glIndexi(GLint c)

void glIndexiv(const GLint *c)

void glIndexs(GLshort c)

void glIndexsv(const GLshort *c)

void glIndexub(GLubyte c)

void glIndexubv(const GLubyte *c)

void glInitNames(void)

void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsTexture(GLuint texture)

void glLightModelf(GLenum pname, GLfloat param)

void glLightModelfv(GLenum pname, const GLfloat *params)

void glLightModeli(GLenum pname, GLint param)

void glLightModeliv(GLenum pname, const GLint *params)

void glLightf(GLenum light, GLenum pname, GLfloat param)

void glLightfv(GLenum light, GLenum pname, const GLfloat *params)

void glLighti(GLenum light, GLenum pname, GLint param)

void glLightiv(GLenum light, GLenum pname, const GLint *params)

void glLineStipple(GLint factor, GLushort pattern)

void glLineWidth(GLfloat width)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble *m)

void glLoadMatrixf(const GLfloat *m)

void glLoadName(GLuint name)

void glLogicOp(GLenum opcode)

void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)

void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)

void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)

void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)

void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)

void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)

void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)

void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)

void glMaterialf(GLenum face, GLenum pname, GLfloat param)

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)

void glMateriali(GLenum face, GLenum pname, GLint param)

void glMaterialiv(GLenum face, GLenum pname, const GLint *params)

void glMatrixMode(GLenum mode)

void glMultMatrixd(const GLdouble *m)

void glMultMatrixf(const GLfloat *m)

void glNewList(GLuint list, GLenum mode)

void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)

void glNormal3bv(const GLbyte *v)

void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)

void glNormal3dv(const GLdouble *v)

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

void glNormal3fv(const GLfloat *v)

void glNormal3i(GLint nx, GLint ny, GLint nz)

void glNormal3iv(const GLint *v)

void glNormal3s(GLshort nx, GLshort ny, GLshort nz)

void glNormal3sv(const GLshort *v)

void glNormalPointer(GLenum type, GLsizei stride, const void *pointer)

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)

void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)

void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)

void glPixelStoref(GLenum pname, GLfloat param)

void glPixelStorei(GLenum pname, GLint param)

void glPixelTransferf(GLenum pname, GLfloat param)

void glPixelTransferi(GLenum pname, GLint param)

void glPixelZoom(GLfloat xfactor, GLfloat yfactor)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPolygonStipple(const GLubyte *mask)

void glPopAttrib(void)

void glPopClientAttrib(void)

void glPopMatrix(void)

void glPopName(void)

void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glRasterPos2d(GLdouble x, GLdouble y)

void glRasterPos2dv(const GLdouble *v)

void glRasterPos2f(GLfloat x, GLfloat y)

void glRasterPos2fv(const GLfloat *v)

void glRasterPos2i(GLint x, GLint y)

void glRasterPos2iv(const GLint *v)

void glRasterPos2s(GLshort x, GLshort y)

void glRasterPos2sv(const GLshort *v)

void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)

void glRasterPos3dv(const GLdouble *v)

void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)

void glRasterPos3fv(const GLfloat *v)

void glRasterPos3i(GLint x, GLint y, GLint z)

void glRasterPos3iv(const GLint *v)

void glRasterPos3s(GLshort x, GLshort y, GLshort z)

void glRasterPos3sv(const GLshort *v)

void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glRasterPos4dv(const GLdouble *v)

void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glRasterPos4fv(const GLfloat *v)

void glRasterPos4i(GLint x, GLint y, GLint z, GLint w)

void glRasterPos4iv(const GLint *v)

void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glRasterPos4sv(const GLshort *v)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)

void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)

void glRectdv(const GLdouble *v1, const GLdouble *v2)

void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)

void glRectfv(const GLfloat *v1, const GLfloat *v2)

void glRecti(GLint x1, GLint y1, GLint x2, GLint y2)

void glRectiv(const GLint *v1, const GLint *v2)

void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)

void glRectsv(const GLshort *v1, const GLshort *v2)

GLint glRenderMode(GLenum mode)

void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)

void glScaled(GLdouble x, GLdouble y, GLdouble z)

void glScalef(GLfloat x, GLfloat y, GLfloat z)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glSelectBuffer(GLsizei size, GLuint *buffer)

void glShadeModel(GLenum mode)

void glStencilFunc(GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glTexCoord1d(GLdouble s)

void glTexCoord1dv(const GLdouble *v)

void glTexCoord1f(GLfloat s)

void glTexCoord1fv(const GLfloat *v)

void glTexCoord1i(GLint s)

void glTexCoord1iv(const GLint *v)

void glTexCoord1s(GLshort s)

void glTexCoord1sv(const GLshort *v)

void glTexCoord2d(GLdouble s, GLdouble t)

void glTexCoord2dv(const GLdouble *v)

void glTexCoord2f(GLfloat s, GLfloat t)

void glTexCoord2fv(const GLfloat *v)

void glTexCoord2i(GLint s, GLint t)

void glTexCoord2iv(const GLint *v)

void glTexCoord2s(GLshort s, GLshort t)

void glTexCoord2sv(const GLshort *v)

void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)

void glTexCoord3dv(const GLdouble *v)

void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)

void glTexCoord3fv(const GLfloat *v)

void glTexCoord3i(GLint s, GLint t, GLint r)

void glTexCoord3iv(const GLint *v)

void glTexCoord3s(GLshort s, GLshort t, GLshort r)

void glTexCoord3sv(const GLshort *v)

void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)

void glTexCoord4dv(const GLdouble *v)

void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)

void glTexCoord4fv(const GLfloat *v)

void glTexCoord4i(GLint s, GLint t, GLint r, GLint q)

void glTexCoord4iv(const GLint *v)

void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)

void glTexCoord4sv(const GLshort *v)

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glTexEnvf(GLenum target, GLenum pname, GLfloat param)

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexEnvi(GLenum target, GLenum pname, GLint param)

void glTexEnviv(GLenum target, GLenum pname, const GLint *params)

void glTexGend(GLenum coord, GLenum pname, GLdouble param)

void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params)

void glTexGenf(GLenum coord, GLenum pname, GLfloat param)

void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)

void glTexGeni(GLenum coord, GLenum pname, GLint param)

void glTexGeniv(GLenum coord, GLenum pname, const GLint *params)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glTranslated(GLdouble x, GLdouble y, GLdouble z)

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glVertex2d(GLdouble x, GLdouble y)

void glVertex2dv(const GLdouble *v)

void glVertex2f(GLfloat x, GLfloat y)

void glVertex2fv(const GLfloat *v)

void glVertex2i(GLint x, GLint y)

void glVertex2iv(const GLint *v)

void glVertex2s(GLshort x, GLshort y)

void glVertex2sv(const GLshort *v)

void glVertex3d(GLdouble x, GLdouble y, GLdouble z)

void glVertex3dv(const GLdouble *v)

void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

void glVertex3fv(const GLfloat *v)

void glVertex3i(GLint x, GLint y, GLint z)

void glVertex3iv(const GLint *v)

void glVertex3s(GLshort x, GLshort y, GLshort z)

void glVertex3sv(const GLshort *v)

void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glVertex4dv(const GLdouble *v)

void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertex4fv(const GLfloat *v)

void glVertex4i(GLint x, GLint y, GLint z, GLint w)

void glVertex4iv(const GLint *v)

void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glVertex4sv(const GLshort *v)

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 2.0) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

void glAccum(GLenum op, GLfloat value)

void glAlphaFunc(GLenum func, GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)

void glArrayElement(GLint i)

void glBegin(GLenum mode)

void glBindTexture(GLenum target, GLuint texture)

void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glCallList(GLuint list)

void glCallLists(GLsizei n, GLenum type, const void *lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClipPlane(GLenum plane, const GLdouble *equation)

void glColor3b(GLbyte red, GLbyte green, GLbyte blue)

void glColor3bv(const GLbyte *v)

void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

void glColor3dv(const GLdouble *v)

void glColor3f(GLfloat red, GLfloat green, GLfloat blue)

void glColor3fv(const GLfloat *v)

void glColor3i(GLint red, GLint green, GLint blue)

void glColor3iv(const GLint *v)

void glColor3s(GLshort red, GLshort green, GLshort blue)

void glColor3sv(const GLshort *v)

void glColor3ub(GLubyte red, GLubyte green, GLubyte blue)

void glColor3ubv(const GLubyte *v)

void glColor3ui(GLuint red, GLuint green, GLuint blue)

void glColor3uiv(const GLuint *v)

void glColor3us(GLushort red, GLushort green, GLushort blue)

void glColor3usv(const GLushort *v)

void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)

void glColor4bv(const GLbyte *v)

void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)

void glColor4dv(const GLdouble *v)

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glColor4fv(const GLfloat *v)

void glColor4i(GLint red, GLint green, GLint blue, GLint alpha)

void glColor4iv(const GLint *v)

void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)

void glColor4sv(const GLshort *v)

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)

void glColor4ubv(const GLubyte *v)

void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)

void glColor4uiv(const GLuint *v)

void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)

void glColor4usv(const GLushort *v)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaterial(GLenum face, GLenum mode)

void glColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCullFace(GLenum mode)

void glDeleteLists(GLuint list, GLsizei range)

void glDeleteTextures(GLsizei n, const GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd zNear, GLclampd zFar)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)

void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride, const void *pointer)

void glEdgeFlagv(const GLboolean *flag)

void glEnable(GLenum cap)

void glEnableClientState(GLenum array)

void glEnd(void)

void glEndList(void)

void glEvalCoord1d(GLdouble u)

void glEvalCoord1dv(const GLdouble *u)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1fv(const GLfloat *u)

void glEvalCoord2d(GLdouble u, GLdouble v)

void glEvalCoord2dv(const GLdouble *u)

void glEvalCoord2f(GLfloat u, GLfloat v)

void glEvalCoord2fv(const GLfloat *u)

void glEvalMesh1(GLenum mode, GLint i1, GLint i2)

void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i, GLint j)

void glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname, GLfloat param)

void glFogfv(GLenum pname, const GLfloat *params)

void glFogi(GLenum pname, GLint param)

void glFogiv(GLenum pname, const GLint *params)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

GLuint glGenLists(GLsizei range)

void glGenTextures(GLsizei n, GLuint *textures)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetClipPlane(GLenum plane, GLdouble *equation)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)

void glGetLightiv(GLenum light, GLenum pname, GLint *params)

void glGetMapdv(GLenum target, GLenum query, GLdouble *v)

void glGetMapfv(GLenum target, GLenum query, GLfloat *v)

void glGetMapiv(GLenum target, GLenum query, GLint *v)

void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)

void glGetMaterialiv(GLenum face, GLenum pname, GLint *params)

void glGetPixelMapfv(GLenum map, GLfloat *values)

void glGetPixelMapuiv(GLenum map, GLuint *values)

void glGetPixelMapusv(GLenum map, GLushort *values)

void glGetPointerv(GLenum pname, void* *params)

void glGetPolygonStipple(GLubyte *mask)

GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexEnviv(GLenum target, GLenum pname, GLint *params)

void glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)

void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)

void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type, GLsizei stride, const void *pointer)

void glIndexd(GLdouble c)

void glIndexdv(const GLdouble *c)

void glIndexf(GLfloat c)

void glIndexfv(const GLfloat *c)

void glIndexi(GLint c)

void glIndexiv(const GLint *c)

void glIndexs(GLshort c)

void glIndexsv(const GLshort *c)

void glIndexub(GLubyte c)

void glIndexubv(const GLubyte *c)

void glInitNames(void)

void glInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsTexture(GLuint texture)

void glLightModelf(GLenum pname, GLfloat param)

void glLightModelfv(GLenum pname, const GLfloat *params)

void glLightModeli(GLenum pname, GLint param)

void glLightModeliv(GLenum pname, const GLint *params)

void glLightf(GLenum light, GLenum pname, GLfloat param)

void glLightfv(GLenum light, GLenum pname, const GLfloat *params)

void glLighti(GLenum light, GLenum pname, GLint param)

void glLightiv(GLenum light, GLenum pname, const GLint *params)

void glLineStipple(GLint factor, GLushort pattern)

void glLineWidth(GLfloat width)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble *m)

void glLoadMatrixf(const GLfloat *m)

void glLoadName(GLuint name)

void glLogicOp(GLenum opcode)

void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)

void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)

void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)

void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)

void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)

void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)

void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)

void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)

void glMaterialf(GLenum face, GLenum pname, GLfloat param)

void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params)

void glMateriali(GLenum face, GLenum pname, GLint param)

void glMaterialiv(GLenum face, GLenum pname, const GLint *params)

void glMatrixMode(GLenum mode)

void glMultMatrixd(const GLdouble *m)

void glMultMatrixf(const GLfloat *m)

void glNewList(GLuint list, GLenum mode)

void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)

void glNormal3bv(const GLbyte *v)

void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)

void glNormal3dv(const GLdouble *v)

void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

void glNormal3fv(const GLfloat *v)

void glNormal3i(GLint nx, GLint ny, GLint nz)

void glNormal3iv(const GLint *v)

void glNormal3s(GLshort nx, GLshort ny, GLshort nz)

void glNormal3sv(const GLshort *v)

void glNormalPointer(GLenum type, GLsizei stride, const void *pointer)

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)

void glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)

void glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)

void glPixelStoref(GLenum pname, GLfloat param)

void glPixelStorei(GLenum pname, GLint param)

void glPixelTransferf(GLenum pname, GLfloat param)

void glPixelTransferi(GLenum pname, GLint param)

void glPixelZoom(GLfloat xfactor, GLfloat yfactor)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPolygonStipple(const GLubyte *mask)

void glPopAttrib(void)

void glPopClientAttrib(void)

void glPopMatrix(void)

void glPopName(void)

void glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glRasterPos2d(GLdouble x, GLdouble y)

void glRasterPos2dv(const GLdouble *v)

void glRasterPos2f(GLfloat x, GLfloat y)

void glRasterPos2fv(const GLfloat *v)

void glRasterPos2i(GLint x, GLint y)

void glRasterPos2iv(const GLint *v)

void glRasterPos2s(GLshort x, GLshort y)

void glRasterPos2sv(const GLshort *v)

void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)

void glRasterPos3dv(const GLdouble *v)

void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)

void glRasterPos3fv(const GLfloat *v)

void glRasterPos3i(GLint x, GLint y, GLint z)

void glRasterPos3iv(const GLint *v)

void glRasterPos3s(GLshort x, GLshort y, GLshort z)

void glRasterPos3sv(const GLshort *v)

void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glRasterPos4dv(const GLdouble *v)

void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glRasterPos4fv(const GLfloat *v)

void glRasterPos4i(GLint x, GLint y, GLint z, GLint w)

void glRasterPos4iv(const GLint *v)

void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glRasterPos4sv(const GLshort *v)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)

void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)

void glRectdv(const GLdouble *v1, const GLdouble *v2)

void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)

void glRectfv(const GLfloat *v1, const GLfloat *v2)

void glRecti(GLint x1, GLint y1, GLint x2, GLint y2)

void glRectiv(const GLint *v1, const GLint *v2)

void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)

void glRectsv(const GLshort *v1, const GLshort *v2)

GLint glRenderMode(GLenum mode)

void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)

void glScaled(GLdouble x, GLdouble y, GLdouble z)

void glScalef(GLfloat x, GLfloat y, GLfloat z)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glSelectBuffer(GLsizei size, GLuint *buffer)

void glShadeModel(GLenum mode)

void glStencilFunc(GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glTexCoord1d(GLdouble s)

void glTexCoord1dv(const GLdouble *v)

void glTexCoord1f(GLfloat s)

void glTexCoord1fv(const GLfloat *v)

void glTexCoord1i(GLint s)

void glTexCoord1iv(const GLint *v)

void glTexCoord1s(GLshort s)

void glTexCoord1sv(const GLshort *v)

void glTexCoord2d(GLdouble s, GLdouble t)

void glTexCoord2dv(const GLdouble *v)

void glTexCoord2f(GLfloat s, GLfloat t)

void glTexCoord2fv(const GLfloat *v)

void glTexCoord2i(GLint s, GLint t)

void glTexCoord2iv(const GLint *v)

void glTexCoord2s(GLshort s, GLshort t)

void glTexCoord2sv(const GLshort *v)

void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)

void glTexCoord3dv(const GLdouble *v)

void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)

void glTexCoord3fv(const GLfloat *v)

void glTexCoord3i(GLint s, GLint t, GLint r)

void glTexCoord3iv(const GLint *v)

void glTexCoord3s(GLshort s, GLshort t, GLshort r)

void glTexCoord3sv(const GLshort *v)

void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)

void glTexCoord4dv(const GLdouble *v)

void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)

void glTexCoord4fv(const GLfloat *v)

void glTexCoord4i(GLint s, GLint t, GLint r, GLint q)

void glTexCoord4iv(const GLint *v)

void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)

void glTexCoord4sv(const GLshort *v)

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glTexEnvf(GLenum target, GLenum pname, GLfloat param)

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexEnvi(GLenum target, GLenum pname, GLint param)

void glTexEnviv(GLenum target, GLenum pname, const GLint *params)

void glTexGend(GLenum coord, GLenum pname, GLdouble param)

void glTexGendv(GLenum coord, GLenum pname, const GLdouble *params)

void glTexGenf(GLenum coord, GLenum pname, GLfloat param)

void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)

void glTexGeni(GLenum coord, GLenum pname, GLint param)

void glTexGeniv(GLenum coord, GLenum pname, const GLint *params)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)

void glTranslated(GLdouble x, GLdouble y, GLdouble z)

void glTranslatef(GLfloat x, GLfloat y, GLfloat z)

void glVertex2d(GLdouble x, GLdouble y)

void glVertex2dv(const GLdouble *v)

void glVertex2f(GLfloat x, GLfloat y)

void glVertex2fv(const GLfloat *v)

void glVertex2i(GLint x, GLint y)

void glVertex2iv(const GLint *v)

void glVertex2s(GLshort x, GLshort y)

void glVertex2sv(const GLshort *v)

void glVertex3d(GLdouble x, GLdouble y, GLdouble z)

void glVertex3dv(const GLdouble *v)

void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

void glVertex3fv(const GLfloat *v)

void glVertex3i(GLint x, GLint y, GLint z)

void glVertex3iv(const GLint *v)

void glVertex3s(GLshort x, GLshort y, GLshort z)

void glVertex3sv(const GLshort *v)

void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)

void glVertex4dv(const GLdouble *v)

void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertex4fv(const GLfloat *v)

void glVertex4i(GLint x, GLint y, GLint z, GLint w)

void glVertex4iv(const GLint *v)

void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)

void glVertex4sv(const GLshort *v)

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 2.1) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte *gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte *gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 3.0) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 3.1) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 3.2) 関数リファレンス

はじめに

RingOpenGL (OpenGL 3.2) 拡張機能の関数一覧です。

リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 3.3) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_RGB10_A2UI

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.0) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.1) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.2) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

GL_TRANSFORM_FEEDBACK_PAUSED

GL_TRANSFORM_FEEDBACK_ACTIVE

GL_COMPRESSED_RGBA_BPTC_UNORM

GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM

GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT

GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT

GL_COPY_READ_BUFFER_BINDING

GL_COPY_WRITE_BUFFER_BINDING

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.3) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

GL_TRANSFORM_FEEDBACK_PAUSED

GL_TRANSFORM_FEEDBACK_ACTIVE

GL_COMPRESSED_RGBA_BPTC_UNORM

GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM

GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT

GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT

GL_COPY_READ_BUFFER_BINDING

GL_COPY_WRITE_BUFFER_BINDING

GL_NUM_SHADING_LANGUAGE_VERSIONS

GL_VERTEX_ATTRIB_ARRAY_LONG

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.4) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

GL_TRANSFORM_FEEDBACK_PAUSED

GL_TRANSFORM_FEEDBACK_ACTIVE

GL_COMPRESSED_RGBA_BPTC_UNORM

GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM

GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT

GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT

GL_COPY_READ_BUFFER_BINDING

GL_COPY_WRITE_BUFFER_BINDING

GL_NUM_SHADING_LANGUAGE_VERSIONS

GL_VERTEX_ATTRIB_ARRAY_LONG

GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED

GL_MAX_VERTEX_ATTRIB_STRIDE

GL_TEXTURE_BUFFER_BINDING

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.5) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

GL_TRANSFORM_FEEDBACK_PAUSED

GL_TRANSFORM_FEEDBACK_ACTIVE

GL_COMPRESSED_RGBA_BPTC_UNORM

GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM

GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT

GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT

GL_COPY_READ_BUFFER_BINDING

GL_COPY_WRITE_BUFFER_BINDING

GL_NUM_SHADING_LANGUAGE_VERSIONS

GL_VERTEX_ATTRIB_ARRAY_LONG

GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED

GL_MAX_VERTEX_ATTRIB_STRIDE

GL_TEXTURE_BUFFER_BINDING

GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingOpenGL (OpenGL 4.6) 関数リファレンス

GL_ZERO

GL_FALSE

GL_LOGIC_OP

GL_NONE

GL_TEXTURE_COMPONENTS

GL_NO_ERROR

GL_POINTS

GL_CURRENT_BIT

GL_TRUE

GL_ONE

GL_CLIENT_PIXEL_STORE_BIT

GL_LINES

GL_LINE_LOOP

GL_POINT_BIT

GL_CLIENT_VERTEX_ARRAY_BIT

GL_LINE_STRIP

GL_LINE_BIT

GL_TRIANGLES

GL_TRIANGLE_STRIP

GL_TRIANGLE_FAN

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON_BIT

GL_POLYGON

GL_POLYGON_STIPPLE_BIT

GL_PIXEL_MODE_BIT

GL_LIGHTING_BIT

GL_FOG_BIT

GL_DEPTH_BUFFER_BIT

GL_ACCUM

GL_LOAD

GL_RETURN

GL_MULT

GL_ADD

GL_NEVER

GL_ACCUM_BUFFER_BIT

GL_LESS

GL_EQUAL

GL_LEQUAL

GL_GREATER

GL_NOTEQUAL

GL_GEQUAL

GL_ALWAYS

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

GL_DST_COLOR

GL_ONE_MINUS_DST_COLOR

GL_SRC_ALPHA_SATURATE

GL_STENCIL_BUFFER_BIT

GL_FRONT_LEFT

GL_FRONT_RIGHT

GL_BACK_LEFT

GL_BACK_RIGHT

GL_FRONT

GL_BACK

GL_LEFT

GL_RIGHT

GL_FRONT_AND_BACK

GL_AUX0

GL_AUX1

GL_AUX2

GL_AUX3

GL_INVALID_ENUM

GL_INVALID_VALUE

GL_INVALID_OPERATION

GL_STACK_OVERFLOW

GL_STACK_UNDERFLOW

GL_OUT_OF_MEMORY

GL_2D

GL_3D

GL_3D_COLOR

GL_3D_COLOR_TEXTURE

GL_4D_COLOR_TEXTURE

GL_PASS_THROUGH_TOKEN

GL_POINT_TOKEN

GL_LINE_TOKEN

GL_POLYGON_TOKEN

GL_BITMAP_TOKEN

GL_DRAW_PIXEL_TOKEN

GL_COPY_PIXEL_TOKEN

GL_LINE_RESET_TOKEN

GL_EXP

GL_VIEWPORT_BIT

GL_EXP2

GL_CW

GL_CCW

GL_COEFF

GL_ORDER

GL_DOMAIN

GL_CURRENT_COLOR

GL_CURRENT_INDEX

GL_CURRENT_NORMAL

GL_CURRENT_TEXTURE_COORDS

GL_CURRENT_RASTER_COLOR

GL_CURRENT_RASTER_INDEX

GL_CURRENT_RASTER_TEXTURE_COORDS

GL_CURRENT_RASTER_POSITION

GL_CURRENT_RASTER_POSITION_VALID

GL_CURRENT_RASTER_DISTANCE

GL_POINT_SMOOTH

GL_POINT_SIZE

GL_POINT_SIZE_RANGE

GL_POINT_SIZE_GRANULARITY

GL_LINE_SMOOTH

GL_LINE_WIDTH

GL_LINE_WIDTH_RANGE

GL_LINE_WIDTH_GRANULARITY

GL_LINE_STIPPLE

GL_LINE_STIPPLE_PATTERN

GL_LINE_STIPPLE_REPEAT

GL_LIST_MODE

GL_MAX_LIST_NESTING

GL_LIST_BASE

GL_LIST_INDEX

GL_POLYGON_MODE

GL_POLYGON_SMOOTH

GL_POLYGON_STIPPLE

GL_EDGE_FLAG

GL_CULL_FACE

GL_CULL_FACE_MODE

GL_FRONT_FACE

GL_LIGHTING

GL_LIGHT_MODEL_LOCAL_VIEWER

GL_LIGHT_MODEL_TWO_SIDE

GL_LIGHT_MODEL_AMBIENT

GL_SHADE_MODEL

GL_COLOR_MATERIAL_FACE

GL_COLOR_MATERIAL_PARAMETER

GL_COLOR_MATERIAL

GL_FOG

GL_FOG_INDEX

GL_FOG_DENSITY

GL_FOG_START

GL_FOG_END

GL_FOG_MODE

GL_FOG_COLOR

GL_DEPTH_RANGE

GL_DEPTH_TEST

GL_DEPTH_WRITEMASK

GL_DEPTH_CLEAR_VALUE

GL_DEPTH_FUNC

GL_ACCUM_CLEAR_VALUE

GL_STENCIL_TEST

GL_STENCIL_CLEAR_VALUE

GL_STENCIL_FUNC

GL_STENCIL_VALUE_MASK

GL_STENCIL_FAIL

GL_STENCIL_PASS_DEPTH_FAIL

GL_STENCIL_PASS_DEPTH_PASS

GL_STENCIL_REF

GL_STENCIL_WRITEMASK

GL_MATRIX_MODE

GL_NORMALIZE

GL_VIEWPORT

GL_MODELVIEW_STACK_DEPTH

GL_PROJECTION_STACK_DEPTH

GL_TEXTURE_STACK_DEPTH

GL_MODELVIEW_MATRIX

GL_PROJECTION_MATRIX

GL_TEXTURE_MATRIX

GL_ATTRIB_STACK_DEPTH

GL_CLIENT_ATTRIB_STACK_DEPTH

GL_ALPHA_TEST

GL_ALPHA_TEST_FUNC

GL_ALPHA_TEST_REF

GL_DITHER

GL_BLEND_DST

GL_BLEND_SRC

GL_BLEND

GL_LOGIC_OP_MODE

GL_INDEX_LOGIC_OP

GL_COLOR_LOGIC_OP

GL_AUX_BUFFERS

GL_DRAW_BUFFER

GL_READ_BUFFER

GL_SCISSOR_BOX

GL_SCISSOR_TEST

GL_INDEX_CLEAR_VALUE

GL_INDEX_WRITEMASK

GL_COLOR_CLEAR_VALUE

GL_COLOR_WRITEMASK

GL_INDEX_MODE

GL_RGBA_MODE

GL_DOUBLEBUFFER

GL_STEREO

GL_RENDER_MODE

GL_PERSPECTIVE_CORRECTION_HINT

GL_POINT_SMOOTH_HINT

GL_LINE_SMOOTH_HINT

GL_POLYGON_SMOOTH_HINT

GL_FOG_HINT

GL_TEXTURE_GEN_S

GL_TEXTURE_GEN_T

GL_TEXTURE_GEN_R

GL_TEXTURE_GEN_Q

GL_PIXEL_MAP_I_TO_I

GL_PIXEL_MAP_S_TO_S

GL_PIXEL_MAP_I_TO_R

GL_PIXEL_MAP_I_TO_G

GL_PIXEL_MAP_I_TO_B

GL_PIXEL_MAP_I_TO_A

GL_PIXEL_MAP_R_TO_R

GL_PIXEL_MAP_G_TO_G

GL_PIXEL_MAP_B_TO_B

GL_PIXEL_MAP_A_TO_A

GL_PIXEL_MAP_I_TO_I_SIZE

GL_PIXEL_MAP_S_TO_S_SIZE

GL_PIXEL_MAP_I_TO_R_SIZE

GL_PIXEL_MAP_I_TO_G_SIZE

GL_PIXEL_MAP_I_TO_B_SIZE

GL_PIXEL_MAP_I_TO_A_SIZE

GL_PIXEL_MAP_R_TO_R_SIZE

GL_PIXEL_MAP_G_TO_G_SIZE

GL_PIXEL_MAP_B_TO_B_SIZE

GL_PIXEL_MAP_A_TO_A_SIZE

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXELS

GL_UNPACK_ALIGNMENT

GL_PACK_SWAP_BYTES

GL_PACK_LSB_FIRST

GL_PACK_ROW_LENGTH

GL_PACK_SKIP_ROWS

GL_PACK_SKIP_PIXELS

GL_PACK_ALIGNMENT

GL_MAP_COLOR

GL_MAP_STENCIL

GL_INDEX_SHIFT

GL_INDEX_OFFSET

GL_RED_SCALE

GL_RED_BIAS

GL_ZOOM_X

GL_ZOOM_Y

GL_GREEN_SCALE

GL_GREEN_BIAS

GL_BLUE_SCALE

GL_BLUE_BIAS

GL_ALPHA_SCALE

GL_ALPHA_BIAS

GL_DEPTH_SCALE

GL_DEPTH_BIAS

GL_MAX_EVAL_ORDER

GL_MAX_LIGHTS

GL_MAX_CLIP_PLANES

GL_MAX_TEXTURE_SIZE

GL_MAX_PIXEL_MAP_TABLE

GL_MAX_ATTRIB_STACK_DEPTH

GL_MAX_MODELVIEW_STACK_DEPTH

GL_MAX_NAME_STACK_DEPTH

GL_MAX_PROJECTION_STACK_DEPTH

GL_MAX_TEXTURE_STACK_DEPTH

GL_MAX_VIEWPORT_DIMS

GL_MAX_CLIENT_ATTRIB_STACK_DEPTH

GL_SUBPIXEL_BITS

GL_INDEX_BITS

GL_RED_BITS

GL_GREEN_BITS

GL_BLUE_BITS

GL_ALPHA_BITS

GL_DEPTH_BITS

GL_STENCIL_BITS

GL_ACCUM_RED_BITS

GL_ACCUM_GREEN_BITS

GL_ACCUM_BLUE_BITS

GL_ACCUM_ALPHA_BITS

GL_NAME_STACK_DEPTH

GL_AUTO_NORMAL

GL_MAP1_COLOR_4

GL_MAP1_INDEX

GL_MAP1_NORMAL

GL_MAP1_TEXTURE_COORD_1

GL_MAP1_TEXTURE_COORD_2

GL_MAP1_TEXTURE_COORD_3

GL_MAP1_TEXTURE_COORD_4

GL_MAP1_VERTEX_3

GL_MAP1_VERTEX_4

GL_MAP2_COLOR_4

GL_MAP2_INDEX

GL_MAP2_NORMAL

GL_MAP2_TEXTURE_COORD_1

GL_MAP2_TEXTURE_COORD_2

GL_MAP2_TEXTURE_COORD_3

GL_MAP2_TEXTURE_COORD_4

GL_MAP2_VERTEX_3

GL_MAP2_VERTEX_4

GL_MAP1_GRID_DOMAIN

GL_MAP1_GRID_SEGMENTS

GL_MAP2_GRID_DOMAIN

GL_MAP2_GRID_SEGMENTS

GL_TEXTURE_1D

GL_TEXTURE_2D

GL_FEEDBACK_BUFFER_POINTER

GL_FEEDBACK_BUFFER_SIZE

GL_FEEDBACK_BUFFER_TYPE

GL_SELECTION_BUFFER_POINTER

GL_SELECTION_BUFFER_SIZE

GL_TEXTURE_WIDTH

GL_TRANSFORM_BIT

GL_TEXTURE_HEIGHT

GL_TEXTURE_INTERNAL_FORMAT

GL_TEXTURE_BORDER_COLOR

GL_TEXTURE_BORDER

GL_DONT_CARE

GL_FASTEST

GL_NICEST

GL_AMBIENT

GL_DIFFUSE

GL_SPECULAR

GL_POSITION

GL_SPOT_DIRECTION

GL_SPOT_EXPONENT

GL_SPOT_CUTOFF

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

GL_COMPILE

GL_COMPILE_AND_EXECUTE

GL_BYTE

GL_UNSIGNED_BYTE

GL_SHORT

GL_UNSIGNED_SHORT

GL_INT

GL_UNSIGNED_INT

GL_FLOAT

GL_2_BYTES

GL_3_BYTES

GL_4_BYTES

GL_DOUBLE

GL_CLEAR

GL_AND

GL_AND_REVERSE

GL_COPY

GL_AND_INVERTED

GL_NOOP

GL_XOR

GL_OR

GL_NOR

GL_EQUIV

GL_INVERT

GL_OR_REVERSE

GL_COPY_INVERTED

GL_OR_INVERTED

GL_NAND

GL_SET

GL_EMISSION

GL_SHININESS

GL_AMBIENT_AND_DIFFUSE

GL_COLOR_INDEXES

GL_MODELVIEW

GL_PROJECTION

GL_TEXTURE

GL_COLOR

GL_DEPTH

GL_STENCIL

GL_COLOR_INDEX

GL_STENCIL_INDEX

GL_DEPTH_COMPONENT

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA

GL_RGB

GL_RGBA

GL_LUMINANCE

GL_LUMINANCE_ALPHA

GL_BITMAP

GL_POINT

GL_LINE

GL_FILL

GL_RENDER

GL_FEEDBACK

GL_SELECT

GL_FLAT

GL_SMOOTH

GL_KEEP

GL_REPLACE

GL_INCR

GL_DECR

GL_VENDOR

GL_RENDERER

GL_VERSION

GL_EXTENSIONS

GL_S

GL_ENABLE_BIT

GL_T

GL_R

GL_Q

GL_MODULATE

GL_DECAL

GL_TEXTURE_ENV_MODE

GL_TEXTURE_ENV_COLOR

GL_TEXTURE_ENV

GL_EYE_LINEAR

GL_OBJECT_LINEAR

GL_SPHERE_MAP

GL_TEXTURE_GEN_MODE

GL_OBJECT_PLANE

GL_EYE_PLANE

GL_NEAREST

GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST

GL_LINEAR_MIPMAP_NEAREST

GL_NEAREST_MIPMAP_LINEAR

GL_LINEAR_MIPMAP_LINEAR

GL_TEXTURE_MAG_FILTER

GL_TEXTURE_MIN_FILTER

GL_TEXTURE_WRAP_S

GL_TEXTURE_WRAP_T

GL_CLAMP

GL_REPEAT

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_LINE

GL_R3_G3_B2

GL_V2F

GL_V3F

GL_C4UB_V2F

GL_C4UB_V3F

GL_C3F_V3F

GL_N3F_V3F

GL_C4F_N3F_V3F

GL_T2F_V3F

GL_T4F_V4F

GL_T2F_C4UB_V3F

GL_T2F_C3F_V3F

GL_T2F_N3F_V3F

GL_T2F_C4F_N3F_V3F

GL_T4F_C4F_N3F_V4F

GL_CLIP_PLANE0

GL_CLIP_PLANE1

GL_CLIP_PLANE2

GL_CLIP_PLANE3

GL_CLIP_PLANE4

GL_CLIP_PLANE5

GL_LIGHT0

GL_COLOR_BUFFER_BIT

GL_LIGHT1

GL_LIGHT2

GL_LIGHT3

GL_LIGHT4

GL_LIGHT5

GL_LIGHT6

GL_LIGHT7

GL_HINT_BIT

GL_POLYGON_OFFSET_FILL

GL_POLYGON_OFFSET_FACTOR

GL_ALPHA4

GL_ALPHA8

GL_ALPHA12

GL_ALPHA16

GL_LUMINANCE4

GL_LUMINANCE8

GL_LUMINANCE12

GL_LUMINANCE16

GL_LUMINANCE4_ALPHA4

GL_LUMINANCE6_ALPHA2

GL_LUMINANCE8_ALPHA8

GL_LUMINANCE12_ALPHA4

GL_LUMINANCE12_ALPHA12

GL_LUMINANCE16_ALPHA16

GL_INTENSITY

GL_INTENSITY4

GL_INTENSITY8

GL_INTENSITY12

GL_INTENSITY16

GL_RGB4

GL_RGB5

GL_RGB8

GL_RGB10

GL_RGB12

GL_RGB16

GL_RGBA2

GL_RGBA4

GL_RGB5_A1

GL_RGBA8

GL_RGB10_A2

GL_RGBA12

GL_RGBA16

GL_TEXTURE_RED_SIZE

GL_TEXTURE_GREEN_SIZE

GL_TEXTURE_BLUE_SIZE

GL_TEXTURE_ALPHA_SIZE

GL_TEXTURE_LUMINANCE_SIZE

GL_TEXTURE_INTENSITY_SIZE

GL_PROXY_TEXTURE_1D

GL_PROXY_TEXTURE_2D

GL_TEXTURE_PRIORITY

GL_TEXTURE_RESIDENT

GL_TEXTURE_BINDING_1D

GL_TEXTURE_BINDING_2D

GL_VERTEX_ARRAY

GL_NORMAL_ARRAY

GL_COLOR_ARRAY

GL_INDEX_ARRAY

GL_TEXTURE_COORD_ARRAY

GL_EDGE_FLAG_ARRAY

GL_VERTEX_ARRAY_SIZE

GL_VERTEX_ARRAY_TYPE

GL_VERTEX_ARRAY_STRIDE

GL_NORMAL_ARRAY_TYPE

GL_NORMAL_ARRAY_STRIDE

GL_COLOR_ARRAY_SIZE

GL_COLOR_ARRAY_TYPE

GL_COLOR_ARRAY_STRIDE

GL_INDEX_ARRAY_TYPE

GL_INDEX_ARRAY_STRIDE

GL_TEXTURE_COORD_ARRAY_SIZE

GL_TEXTURE_COORD_ARRAY_TYPE

GL_TEXTURE_COORD_ARRAY_STRIDE

GL_EDGE_FLAG_ARRAY_STRIDE

GL_VERTEX_ARRAY_POINTER

GL_NORMAL_ARRAY_POINTER

GL_COLOR_ARRAY_POINTER

GL_INDEX_ARRAY_POINTER

GL_TEXTURE_COORD_ARRAY_POINTER

GL_EDGE_FLAG_ARRAY_POINTER

GL_COLOR_INDEX1_EXT

GL_COLOR_INDEX2_EXT

GL_COLOR_INDEX4_EXT

GL_COLOR_INDEX8_EXT

GL_COLOR_INDEX12_EXT

GL_COLOR_INDEX16_EXT

GL_EVAL_BIT

GL_LIST_BIT

GL_TEXTURE_BIT

GL_SCISSOR_BIT

GL_ALL_ATTRIB_BITS

GL_CLIENT_ALL_ATTRIB_BITS

GL_SMOOTH_POINT_SIZE_RANGE

GL_SMOOTH_POINT_SIZE_GRANULARITY

GL_SMOOTH_LINE_WIDTH_RANGE

GL_SMOOTH_LINE_WIDTH_GRANULARITY

GL_UNSIGNED_BYTE_3_3_2

GL_UNSIGNED_SHORT_4_4_4_4

GL_UNSIGNED_SHORT_5_5_5_1

GL_UNSIGNED_INT_8_8_8_8

GL_UNSIGNED_INT_10_10_10_2

GL_RESCALE_NORMAL

GL_TEXTURE_BINDING_3D

GL_PACK_SKIP_IMAGES

GL_PACK_IMAGE_HEIGHT

GL_UNPACK_SKIP_IMAGES

GL_UNPACK_IMAGE_HEIGHT

GL_TEXTURE_3D

GL_PROXY_TEXTURE_3D

GL_TEXTURE_DEPTH

GL_TEXTURE_WRAP_R

GL_MAX_3D_TEXTURE_SIZE

GL_BGR

GL_BGRA

GL_MAX_ELEMENTS_VERTICES

GL_MAX_ELEMENTS_INDICES

GL_CLAMP_TO_EDGE

GL_TEXTURE_MIN_LOD

GL_TEXTURE_MAX_LOD

GL_TEXTURE_BASE_LEVEL

GL_TEXTURE_MAX_LEVEL

GL_LIGHT_MODEL_COLOR_CONTROL

GL_SINGLE_COLOR

GL_SEPARATE_SPECULAR_COLOR

GL_UNSIGNED_BYTE_2_3_3_REV

GL_UNSIGNED_SHORT_5_6_5

GL_UNSIGNED_SHORT_5_6_5_REV

GL_UNSIGNED_SHORT_4_4_4_4_REV

GL_UNSIGNED_SHORT_1_5_5_5_REV

GL_UNSIGNED_INT_8_8_8_8_REV

GL_ALIASED_POINT_SIZE_RANGE

GL_ALIASED_LINE_WIDTH_RANGE

GL_MULTISAMPLE

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_ALPHA_TO_ONE

GL_SAMPLE_COVERAGE

GL_SAMPLE_BUFFERS

GL_SAMPLES

GL_SAMPLE_COVERAGE_VALUE

GL_SAMPLE_COVERAGE_INVERT

GL_CLAMP_TO_BORDER

GL_TEXTURE0

GL_TEXTURE1

GL_TEXTURE2

GL_TEXTURE3

GL_TEXTURE4

GL_TEXTURE5

GL_TEXTURE6

GL_TEXTURE7

GL_TEXTURE8

GL_TEXTURE9

GL_TEXTURE10

GL_TEXTURE11

GL_TEXTURE12

GL_TEXTURE13

GL_TEXTURE14

GL_TEXTURE15

GL_TEXTURE16

GL_TEXTURE17

GL_TEXTURE18

GL_TEXTURE19

GL_TEXTURE20

GL_TEXTURE21

GL_TEXTURE22

GL_TEXTURE23

GL_TEXTURE24

GL_TEXTURE25

GL_TEXTURE26

GL_TEXTURE27

GL_TEXTURE28

GL_TEXTURE29

GL_TEXTURE30

GL_TEXTURE31

GL_ACTIVE_TEXTURE

GL_CLIENT_ACTIVE_TEXTURE

GL_MAX_TEXTURE_UNITS

GL_TRANSPOSE_MODELVIEW_MATRIX

GL_TRANSPOSE_PROJECTION_MATRIX

GL_TRANSPOSE_TEXTURE_MATRIX

GL_TRANSPOSE_COLOR_MATRIX

GL_SUBTRACT

GL_COMPRESSED_ALPHA

GL_COMPRESSED_LUMINANCE

GL_COMPRESSED_LUMINANCE_ALPHA

GL_COMPRESSED_INTENSITY

GL_COMPRESSED_RGB

GL_COMPRESSED_RGBA

GL_TEXTURE_COMPRESSION_HINT

GL_NORMAL_MAP

GL_REFLECTION_MAP

GL_TEXTURE_CUBE_MAP

GL_TEXTURE_BINDING_CUBE_MAP

GL_TEXTURE_CUBE_MAP_POSITIVE_X

GL_TEXTURE_CUBE_MAP_NEGATIVE_X

GL_TEXTURE_CUBE_MAP_POSITIVE_Y

GL_TEXTURE_CUBE_MAP_NEGATIVE_Y

GL_TEXTURE_CUBE_MAP_POSITIVE_Z

GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

GL_PROXY_TEXTURE_CUBE_MAP

GL_MAX_CUBE_MAP_TEXTURE_SIZE

GL_COMBINE

GL_COMBINE_RGB

GL_COMBINE_ALPHA

GL_RGB_SCALE

GL_ADD_SIGNED

GL_INTERPOLATE

GL_CONSTANT

GL_PRIMARY_COLOR

GL_PREVIOUS

GL_SOURCE0_RGB

GL_SOURCE1_RGB

GL_SOURCE2_RGB

GL_SOURCE0_ALPHA

GL_SOURCE1_ALPHA

GL_SOURCE2_ALPHA

GL_OPERAND0_RGB

GL_OPERAND1_RGB

GL_OPERAND2_RGB

GL_OPERAND0_ALPHA

GL_OPERAND1_ALPHA

GL_OPERAND2_ALPHA

GL_TEXTURE_COMPRESSED_IMAGE_SIZE

GL_TEXTURE_COMPRESSED

GL_NUM_COMPRESSED_TEXTURE_FORMATS

GL_COMPRESSED_TEXTURE_FORMATS

GL_DOT3_RGB

GL_DOT3_RGBA

GL_MULTISAMPLE_BIT

GL_BLEND_DST_RGB

GL_BLEND_SRC_RGB

GL_BLEND_DST_ALPHA

GL_BLEND_SRC_ALPHA

GL_POINT_SIZE_MIN

GL_POINT_SIZE_MAX

GL_POINT_FADE_THRESHOLD_SIZE

GL_POINT_DISTANCE_ATTENUATION

GL_GENERATE_MIPMAP

GL_GENERATE_MIPMAP_HINT

GL_DEPTH_COMPONENT16

GL_DEPTH_COMPONENT24

GL_DEPTH_COMPONENT32

GL_MIRRORED_REPEAT

GL_FOG_COORDINATE_SOURCE

GL_FOG_COORDINATE

GL_FRAGMENT_DEPTH

GL_CURRENT_FOG_COORDINATE

GL_FOG_COORDINATE_ARRAY_TYPE

GL_FOG_COORDINATE_ARRAY_STRIDE

GL_FOG_COORDINATE_ARRAY_POINTER

GL_FOG_COORDINATE_ARRAY

GL_COLOR_SUM

GL_CURRENT_SECONDARY_COLOR

GL_SECONDARY_COLOR_ARRAY_SIZE

GL_SECONDARY_COLOR_ARRAY_TYPE

GL_SECONDARY_COLOR_ARRAY_STRIDE

GL_SECONDARY_COLOR_ARRAY_POINTER

GL_SECONDARY_COLOR_ARRAY

GL_MAX_TEXTURE_LOD_BIAS

GL_TEXTURE_FILTER_CONTROL

GL_TEXTURE_LOD_BIAS

GL_INCR_WRAP

GL_DECR_WRAP

GL_TEXTURE_DEPTH_SIZE

GL_DEPTH_TEXTURE_MODE

GL_TEXTURE_COMPARE_MODE

GL_TEXTURE_COMPARE_FUNC

GL_COMPARE_R_TO_TEXTURE

GL_CURRENT_FOG_COORD

GL_FOG_COORD

GL_FOG_COORD_ARRAY

GL_FOG_COORD_ARRAY_BUFFER_BINDING

GL_FOG_COORD_ARRAY_POINTER

GL_FOG_COORD_ARRAY_STRIDE

GL_FOG_COORD_ARRAY_TYPE

GL_FOG_COORD_SRC

GL_SRC0_ALPHA

GL_SRC0_RGB

GL_SRC1_ALPHA

GL_SRC1_RGB

GL_SRC2_ALPHA

GL_SRC2_RGB

GL_BUFFER_SIZE

GL_BUFFER_USAGE

GL_QUERY_COUNTER_BITS

GL_CURRENT_QUERY

GL_QUERY_RESULT

GL_QUERY_RESULT_AVAILABLE

GL_ARRAY_BUFFER

GL_ELEMENT_ARRAY_BUFFER

GL_ARRAY_BUFFER_BINDING

GL_ELEMENT_ARRAY_BUFFER_BINDING

GL_VERTEX_ARRAY_BUFFER_BINDING

GL_NORMAL_ARRAY_BUFFER_BINDING

GL_COLOR_ARRAY_BUFFER_BINDING

GL_INDEX_ARRAY_BUFFER_BINDING

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING

GL_EDGE_FLAG_ARRAY_BUFFER_BINDING

GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING

GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING

GL_WEIGHT_ARRAY_BUFFER_BINDING

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING

GL_READ_ONLY

GL_WRITE_ONLY

GL_READ_WRITE

GL_BUFFER_ACCESS

GL_BUFFER_MAPPED

GL_BUFFER_MAP_POINTER

GL_STREAM_DRAW

GL_STREAM_READ

GL_STREAM_COPY

GL_STATIC_DRAW

GL_STATIC_READ

GL_STATIC_COPY

GL_DYNAMIC_DRAW

GL_DYNAMIC_READ

GL_DYNAMIC_COPY

GL_SAMPLES_PASSED

GL_BLEND_EQUATION_RGB

GL_VERTEX_ATTRIB_ARRAY_ENABLED

GL_VERTEX_ATTRIB_ARRAY_SIZE

GL_VERTEX_ATTRIB_ARRAY_STRIDE

GL_VERTEX_ATTRIB_ARRAY_TYPE

GL_CURRENT_VERTEX_ATTRIB

GL_VERTEX_PROGRAM_POINT_SIZE

GL_VERTEX_PROGRAM_TWO_SIDE

GL_VERTEX_ATTRIB_ARRAY_POINTER

GL_STENCIL_BACK_FUNC

GL_STENCIL_BACK_FAIL

GL_STENCIL_BACK_PASS_DEPTH_FAIL

GL_STENCIL_BACK_PASS_DEPTH_PASS

GL_MAX_DRAW_BUFFERS

GL_DRAW_BUFFER0

GL_DRAW_BUFFER1

GL_DRAW_BUFFER2

GL_DRAW_BUFFER3

GL_DRAW_BUFFER4

GL_DRAW_BUFFER5

GL_DRAW_BUFFER6

GL_DRAW_BUFFER7

GL_DRAW_BUFFER8

GL_DRAW_BUFFER9

GL_DRAW_BUFFER10

GL_DRAW_BUFFER11

GL_DRAW_BUFFER12

GL_DRAW_BUFFER13

GL_DRAW_BUFFER14

GL_DRAW_BUFFER15

GL_BLEND_EQUATION_ALPHA

GL_POINT_SPRITE

GL_COORD_REPLACE

GL_MAX_VERTEX_ATTRIBS

GL_VERTEX_ATTRIB_ARRAY_NORMALIZED

GL_MAX_TEXTURE_COORDS

GL_MAX_TEXTURE_IMAGE_UNITS

GL_FRAGMENT_SHADER

GL_VERTEX_SHADER

GL_MAX_FRAGMENT_UNIFORM_COMPONENTS

GL_MAX_VERTEX_UNIFORM_COMPONENTS

GL_MAX_VARYING_FLOATS

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS

GL_SHADER_TYPE

GL_FLOAT_VEC2

GL_FLOAT_VEC3

GL_FLOAT_VEC4

GL_INT_VEC2

GL_INT_VEC3

GL_INT_VEC4

GL_BOOL

GL_BOOL_VEC2

GL_BOOL_VEC3

GL_BOOL_VEC4

GL_FLOAT_MAT2

GL_FLOAT_MAT3

GL_FLOAT_MAT4

GL_SAMPLER_1D

GL_SAMPLER_2D

GL_SAMPLER_3D

GL_SAMPLER_CUBE

GL_SAMPLER_1D_SHADOW

GL_SAMPLER_2D_SHADOW

GL_DELETE_STATUS

GL_COMPILE_STATUS

GL_LINK_STATUS

GL_VALIDATE_STATUS

GL_INFO_LOG_LENGTH

GL_ATTACHED_SHADERS

GL_ACTIVE_UNIFORMS

GL_ACTIVE_UNIFORM_MAX_LENGTH

GL_SHADER_SOURCE_LENGTH

GL_ACTIVE_ATTRIBUTES

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

GL_FRAGMENT_SHADER_DERIVATIVE_HINT

GL_SHADING_LANGUAGE_VERSION

GL_CURRENT_PROGRAM

GL_POINT_SPRITE_COORD_ORIGIN

GL_LOWER_LEFT

GL_UPPER_LEFT

GL_STENCIL_BACK_REF

GL_STENCIL_BACK_VALUE_MASK

GL_STENCIL_BACK_WRITEMASK

GL_CURRENT_RASTER_SECONDARY_COLOR

GL_PIXEL_PACK_BUFFER

GL_PIXEL_UNPACK_BUFFER

GL_PIXEL_PACK_BUFFER_BINDING

GL_PIXEL_UNPACK_BUFFER_BINDING

GL_FLOAT_MAT2x3

GL_FLOAT_MAT2x4

GL_FLOAT_MAT3x2

GL_FLOAT_MAT3x4

GL_FLOAT_MAT4x2

GL_FLOAT_MAT4x3

GL_SRGB

GL_SRGB8

GL_SRGB_ALPHA

GL_SRGB8_ALPHA8

GL_SLUMINANCE_ALPHA

GL_SLUMINANCE8_ALPHA8

GL_SLUMINANCE

GL_SLUMINANCE8

GL_COMPRESSED_SRGB

GL_COMPRESSED_SRGB_ALPHA

GL_COMPRESSED_SLUMINANCE

GL_COMPRESSED_SLUMINANCE_ALPHA

GL_CLIP_DISTANCE0

GL_CLIP_DISTANCE1

GL_CLIP_DISTANCE2

GL_CLIP_DISTANCE3

GL_CLIP_DISTANCE4

GL_CLIP_DISTANCE5

GL_COMPARE_REF_TO_TEXTURE

GL_MAX_CLIP_DISTANCES

GL_MAX_VARYING_COMPONENTS

GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT

GL_MAJOR_VERSION

GL_MINOR_VERSION

GL_NUM_EXTENSIONS

GL_CONTEXT_FLAGS

GL_DEPTH_BUFFER

GL_STENCIL_BUFFER

GL_RGBA32F

GL_RGB32F

GL_RGBA16F

GL_RGB16F

GL_VERTEX_ATTRIB_ARRAY_INTEGER

GL_MAX_ARRAY_TEXTURE_LAYERS

GL_MIN_PROGRAM_TEXEL_OFFSET

GL_MAX_PROGRAM_TEXEL_OFFSET

GL_CLAMP_VERTEX_COLOR

GL_CLAMP_FRAGMENT_COLOR

GL_CLAMP_READ_COLOR

GL_FIXED_ONLY

GL_TEXTURE_RED_TYPE

GL_TEXTURE_GREEN_TYPE

GL_TEXTURE_BLUE_TYPE

GL_TEXTURE_ALPHA_TYPE

GL_TEXTURE_LUMINANCE_TYPE

GL_TEXTURE_INTENSITY_TYPE

GL_TEXTURE_DEPTH_TYPE

GL_TEXTURE_1D_ARRAY

GL_PROXY_TEXTURE_1D_ARRAY

GL_TEXTURE_2D_ARRAY

GL_PROXY_TEXTURE_2D_ARRAY

GL_TEXTURE_BINDING_1D_ARRAY

GL_TEXTURE_BINDING_2D_ARRAY

GL_R11F_G11F_B10F

GL_UNSIGNED_INT_10F_11F_11F_REV

GL_RGB9_E5

GL_UNSIGNED_INT_5_9_9_9_REV

GL_TEXTURE_SHARED_SIZE

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS

GL_TRANSFORM_FEEDBACK_VARYINGS

GL_TRANSFORM_FEEDBACK_BUFFER_START

GL_TRANSFORM_FEEDBACK_BUFFER_SIZE

GL_PRIMITIVES_GENERATED

GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN

GL_RASTERIZER_DISCARD

GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS

GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS

GL_INTERLEAVED_ATTRIBS

GL_SEPARATE_ATTRIBS

GL_TRANSFORM_FEEDBACK_BUFFER

GL_TRANSFORM_FEEDBACK_BUFFER_BINDING

GL_RGBA32UI

GL_RGB32UI

GL_RGBA16UI

GL_RGB16UI

GL_RGBA8UI

GL_RGB8UI

GL_RGBA32I

GL_RGB32I

GL_RGBA16I

GL_RGB16I

GL_RGBA8I

GL_RGB8I

GL_RED_INTEGER

GL_GREEN_INTEGER

GL_BLUE_INTEGER

GL_ALPHA_INTEGER

GL_RGB_INTEGER

GL_RGBA_INTEGER

GL_BGR_INTEGER

GL_BGRA_INTEGER

GL_SAMPLER_1D_ARRAY

GL_SAMPLER_2D_ARRAY

GL_SAMPLER_1D_ARRAY_SHADOW

GL_SAMPLER_2D_ARRAY_SHADOW

GL_SAMPLER_CUBE_SHADOW

GL_UNSIGNED_INT_VEC2

GL_UNSIGNED_INT_VEC3

GL_UNSIGNED_INT_VEC4

GL_INT_SAMPLER_1D

GL_INT_SAMPLER_2D

GL_INT_SAMPLER_3D

GL_INT_SAMPLER_CUBE

GL_INT_SAMPLER_1D_ARRAY

GL_INT_SAMPLER_2D_ARRAY

GL_UNSIGNED_INT_SAMPLER_1D

GL_UNSIGNED_INT_SAMPLER_2D

GL_UNSIGNED_INT_SAMPLER_3D

GL_UNSIGNED_INT_SAMPLER_CUBE

GL_UNSIGNED_INT_SAMPLER_1D_ARRAY

GL_UNSIGNED_INT_SAMPLER_2D_ARRAY

GL_QUERY_WAIT

GL_QUERY_NO_WAIT

GL_QUERY_BY_REGION_WAIT

GL_QUERY_BY_REGION_NO_WAIT

GL_TEXTURE_RECTANGLE

GL_TEXTURE_BINDING_RECTANGLE

GL_PROXY_TEXTURE_RECTANGLE

GL_MAX_RECTANGLE_TEXTURE_SIZE

GL_SAMPLER_2D_RECT

GL_SAMPLER_2D_RECT_SHADOW

GL_TEXTURE_BUFFER

GL_MAX_TEXTURE_BUFFER_SIZE

GL_TEXTURE_BINDING_BUFFER

GL_TEXTURE_BUFFER_DATA_STORE_BINDING

GL_TEXTURE_BUFFER_FORMAT

GL_SAMPLER_BUFFER

GL_INT_SAMPLER_2D_RECT

GL_INT_SAMPLER_BUFFER

GL_UNSIGNED_INT_SAMPLER_2D_RECT

GL_UNSIGNED_INT_SAMPLER_BUFFER

GL_RED_SNORM

GL_RG_SNORM

GL_RGB_SNORM

GL_RGBA_SNORM

GL_R8_SNORM

GL_RG8_SNORM

GL_RGB8_SNORM

GL_RGBA8_SNORM

GL_R16_SNORM

GL_RG16_SNORM

GL_RGB16_SNORM

GL_RGBA16_SNORM

GL_SIGNED_NORMALIZED

GL_PRIMITIVE_RESTART

GL_PRIMITIVE_RESTART_INDEX

GL_BUFFER_ACCESS_FLAGS

GL_BUFFER_MAP_LENGTH

GL_BUFFER_MAP_OFFSET

GL_CONTEXT_CORE_PROFILE_BIT

GL_CONTEXT_COMPATIBILITY_PROFILE_BIT

GL_LINES_ADJACENCY

GL_LINE_STRIP_ADJACENCY

GL_TRIANGLES_ADJACENCY

GL_TRIANGLE_STRIP_ADJACENCY

GL_PROGRAM_POINT_SIZE

GL_GEOMETRY_VERTICES_OUT

GL_GEOMETRY_INPUT_TYPE

GL_GEOMETRY_OUTPUT_TYPE

GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS

GL_FRAMEBUFFER_ATTACHMENT_LAYERED

GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS

GL_GEOMETRY_SHADER

GL_MAX_GEOMETRY_UNIFORM_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_VERTICES

GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS

GL_MAX_VERTEX_OUTPUT_COMPONENTS

GL_MAX_GEOMETRY_INPUT_COMPONENTS

GL_MAX_GEOMETRY_OUTPUT_COMPONENTS

GL_MAX_FRAGMENT_INPUT_COMPONENTS

GL_CONTEXT_PROFILE_MASK

GL_VERTEX_ATTRIB_ARRAY_DIVISOR

GL_RGB10_A2UI

GL_SAMPLE_SHADING

GL_MIN_SAMPLE_SHADING_VALUE

GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET

GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS

GL_TEXTURE_CUBE_MAP_ARRAY

GL_TEXTURE_BINDING_CUBE_MAP_ARRAY

GL_PROXY_TEXTURE_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY

GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW

GL_INT_SAMPLER_CUBE_MAP_ARRAY

GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY

GL_TRANSFORM_FEEDBACK_PAUSED

GL_TRANSFORM_FEEDBACK_ACTIVE

GL_COMPRESSED_RGBA_BPTC_UNORM

GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM

GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT

GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT

GL_COPY_READ_BUFFER_BINDING

GL_COPY_WRITE_BUFFER_BINDING

GL_NUM_SHADING_LANGUAGE_VERSIONS

GL_VERTEX_ATTRIB_ARRAY_LONG

GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED

GL_MAX_VERTEX_ATTRIB_STRIDE

GL_TEXTURE_BUFFER_BINDING

GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT

GL_PARAMETER_BUFFER

GL_PARAMETER_BUFFER_BINDING

GL_TRANSFORM_FEEDBACK_OVERFLOW

GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW

GL_VERTICES_SUBMITTED

GL_PRIMITIVES_SUBMITTED

GL_VERTEX_SHADER_INVOCATIONS

GL_TESS_CONTROL_SHADER_PATCHES

GL_TESS_EVALUATION_SHADER_INVOCATIONS

GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED

GL_FRAGMENT_SHADER_INVOCATIONS

GL_COMPUTE_SHADER_INVOCATIONS

GL_CLIPPING_INPUT_PRIMITIVES

GL_CLIPPING_OUTPUT_PRIMITIVES

GL_TEXTURE_MAX_ANISOTROPY

GL_MAX_TEXTURE_MAX_ANISOTROPY

GL_POLYGON_OFFSET_CLAMP

GL_SHADER_BINARY_FORMAT_SPIR_V

GL_SPIR_V_BINARY

GL_SPIR_V_EXTENSIONS

GL_NUM_SPIR_V_EXTENSIONS

void glAccum(GLenum op,GLfloat value)

void glActiveTexture(GLenum texture)

void glAlphaFunc(GLenum func,GLclampf ref)

GLboolean glAreTexturesResident(GLsizei n,const GLuint * textures,GLboolean * residences)

void glArrayElement(GLint i)

void glAttachShader(GLuint program,GLuint shader)

void glBegin(GLenum mode)

void glBeginQuery(GLenum target,GLuint id)

void glBindAttribLocation(GLuint program,GLuint index,const GLchar *name)

void glBindBuffer(GLenum target,GLuint buffer)

void glBindTexture(GLenum target,GLuint texture)

void glBitmap(GLsizei width,GLsizei height,GLfloat xorig,GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte * bitmap)

void glBlendColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB,GLenum modeAlpha)

void glBlendFunc(GLenum sfactor,GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)

void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage)

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data)

void glCallList(GLuint list)

void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)

void glClear(GLbitfield mask)

void glClearAccum(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha)

void glClearDepth(GLclampd depth)

void glClearIndex(GLfloat c)

void glClearStencil(GLint s)

void glClientActiveTexture(GLenum texture)

void glClipPlane(GLenum plane,const GLdouble * equation)

void glColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glColor3s(GLshort red,GLshort green,GLshort blue)

void glColor3i(GLint red,GLint green,GLint blue)

void glColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glColor3us(GLushort red,GLushort green,GLushort blue)

void glColor3ui(GLuint red,GLuint green,GLuint blue)

void glColor4b(GLbyte red,GLbyte green,GLbyte blue,GLbyte alpha)

void glColor4s(GLshort red,GLshort green,GLshort blue,GLshort alpha)

void glColor4i(GLint red,GLint green,GLint blue,GLint alpha)

void glColor4f(GLfloat red,GLfloat green,GLfloat blue,GLfloat alpha)

void glColor4d(GLdouble red,GLdouble green,GLdouble blue,GLdouble alpha)

void glColor4ub(GLubyte red,GLubyte green,GLubyte blue,GLubyte alpha)

void glColor4us(GLushort red,GLushort green,GLushort blue,GLushort alpha)

void glColor4ui(GLuint red,GLuint green,GLuint blue,GLuint alpha)

void glColor3bv(const GLbyte * v)

void glColor3sv(const GLshort * v)

void glColor3iv(const GLint * v)

void glColor3fv(const GLfloat * v)

void glColor3dv(const GLdouble * v)

void glColor3ubv(const GLubyte * v)

void glColor3usv(const GLushort * v)

void glColor3uiv(const GLuint * v)

void glColor4bv(const GLbyte * v)

void glColor4sv(const GLshort * v)

void glColor4iv(const GLint * v)

void glColor4fv(const GLfloat * v)

void glColor4dv(const GLdouble * v)

void glColor4ubv(const GLubyte * v)

void glColor4usv(const GLushort * v)

void glColor4uiv(const GLuint * v)

void glColorMask(GLboolean red,GLboolean green,GLboolean blue,GLboolean alpha)

void glColorMaterial(GLenum face,GLenum mode)

void glColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glColorSubTable(GLenum target,GLsizei start,GLsizei count,GLenum format,GLenum type,const GLvoid * data)

void glColorTable(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glColorTableParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glColorTableParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage2D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,const GLvoid * data)

void glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const GLvoid * data)

void glConvolutionFilter1D(GLenum target,GLenum internalformat,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glConvolutionParameterf(GLenum target,GLenum pname,GLfloat params)

void glConvolutionParameteri(GLenum target,GLenum pname,GLint params)

void glConvolutionParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glConvolutionParameteriv(GLenum target,GLenum pname,const GLint * params)

void glCopyColorSubTable(GLenum target,GLsizei start,GLint x,GLint y,GLsizei width)

void glCopyColorTable(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter1D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width)

void glCopyConvolutionFilter2D(GLenum target,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type)

void glCopyTexImage1D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLint border)

void glCopyTexImage2D(GLenum target,GLint level,GLenum internalformat,GLint x,GLint y,GLsizei width,GLsizei height,GLint border)

void glCopyTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLint x,GLint y,GLsizei width)

void glCopyTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint x,GLint y,GLsizei width,GLsizei height)

void glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum shaderType)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n,const GLuint * buffers)

void glDeleteLists(GLuint list,GLsizei range)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n,const GLuint * ids)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n,const GLuint * textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLclampd nearVal,GLclampd farVal)

void glDetachShader(GLuint program,GLuint shader)

void glEnable(GLenum cap)

void glEnableClientState(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode,GLint first,GLsizei count)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n,const GLenum *bufs)

void glDrawElements(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices)

void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const GLvoid * indices)

void glEdgeFlag(GLboolean flag)

void glEdgeFlagPointer(GLsizei stride,const GLvoid * pointer)

void glEnd(void)

void glEndList(void)

void glEndQuery(GLenum target)

void glEvalCoord1f(GLfloat u)

void glEvalCoord1d(GLdouble u)

void glEvalCoord2f(GLfloat u,GLfloat v)

void glEvalCoord2d(GLdouble u,GLdouble v)

void glEvalMesh1(GLenum mode,GLint i1,GLint i2)

void glEvalPoint1(GLint i)

void glEvalPoint2(GLint i,GLint j)

void glFeedbackBuffer(GLsizei size,GLenum type,GLfloat * buffer)

void glFinish(void)

void glFlush(void)

void glFogf(GLenum pname,GLfloat param)

void glFogi(GLenum pname,GLint param)

void glFogfv(GLenum pname,const GLfloat * params)

void glFogiv(GLenum pname,const GLint * params)

void glFogCoordd(GLdouble coord)

void glFogCoordf(GLfloat coord)

void glFogCoorddv(GLdouble * coord)

void glFogCoordfv(GLfloat * coord)

void glFogCoordPointer(GLenum type,GLsizei stride,GLvoid * pointer)

void glFrontFace(GLenum mode)

void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glGenBuffers(GLsizei n,GLuint * buffers)

GLuint glGenLists(GLsizei range)

void glGenQueries(GLsizei n,GLuint * ids)

void glGenTextures(GLsizei n,GLuint * textures)

void glGetBooleanv(GLenum pname,GLboolean * params)

void glGetDoublev(GLenum pname,GLdouble * params)

void glGetFloatv(GLenum pname,GLfloat * params)

void glGetIntegerv(GLenum pname,GLint * params)

void glGetActiveAttrib(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetActiveUniform(GLuint program,GLuint index,GLsizei bufSize,GLsizei *length,GLint *size,GLenum *type,GLchar *name)

void glGetAttachedShaders(GLuint program,GLsizei maxCount,GLsizei *count,GLuint *shaders)

GLint glGetAttribLocation(GLuint program,const GLchar *name)

void glGetBufferParameteriv(GLenum target,GLenum value,GLint * data)

void glGetBufferPointerv(GLenum target,GLenum pname,GLvoid ** params)

void glGetBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,GLvoid * data)

void glGetClipPlane(GLenum plane,GLdouble * equation)

void glGetColorTable(GLenum target,GLenum format,GLenum type,GLvoid * table)

void glGetColorTableParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetColorTableParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetCompressedTexImage(GLenum target,GLint lod,GLvoid * img)

void glGetConvolutionFilter(GLenum target,GLenum format,GLenum type,GLvoid * image)

void glGetConvolutionParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetConvolutionParameteriv(GLenum target,GLenum pname,GLint * params)

GLenum glGetError(void)

void glGetHistogram(GLenum target,GLboolean reset,GLenum format,GLenum type,GLvoid * values)

void glGetHistogramParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetHistogramParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetLightfv(GLenum light,GLenum pname,GLfloat * params)

void glGetLightiv(GLenum light,GLenum pname,GLint * params)

void glGetMapdv(GLenum target,GLenum query,GLdouble * v)

void glGetMapfv(GLenum target,GLenum query,GLfloat * v)

void glGetMapiv(GLenum target,GLenum query,GLint * v)

void glGetMaterialfv(GLenum face,GLenum pname,GLfloat * params)

void glGetMaterialiv(GLenum face,GLenum pname,GLint * params)

void glGetMinmax(GLenum target,GLboolean reset,GLenum format,GLenum types,GLvoid * values)

void glGetMinmaxParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetMinmaxParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetPixelMapfv(GLenum map,GLfloat * data)

void glGetPixelMapuiv(GLenum map,GLuint * data)

void glGetPixelMapusv(GLenum map,GLushort * data)

void glGetPointerv(GLenum pname,GLvoid ** params)

void glGetPolygonStipple(GLubyte * pattern)

void glGetProgramiv(GLuint program,GLenum pname,GLint *params)

void glGetProgramInfoLog(GLuint program,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetQueryObjectiv(GLuint id,GLenum pname,GLint * params)

void glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)

void glGetQueryiv(GLenum target,GLenum pname,GLint * params)

void glGetSeparableFilter(GLenum target,GLenum format,GLenum type,GLvoid * row,GLvoid * column,GLvoid * span)

void glGetShaderiv(GLuint shader,GLenum pname,GLint *params)

void glGetShaderInfoLog(GLuint shader,GLsizei maxLength,GLsizei *length,GLchar *infoLog)

void glGetShaderSource(GLuint shader,GLsizei bufSize,GLsizei *length,GLchar *source)

const GLubyte *glGetString(GLenum name)

void glGetTexEnvfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexEnviv(GLenum target,GLenum pname,GLint * params)

void glGetTexGendv(GLenum coord,GLenum pname,GLdouble * params)

void glGetTexGenfv(GLenum coord,GLenum pname,GLfloat * params)

void glGetTexGeniv(GLenum coord,GLenum pname,GLint * params)

void glGetTexImage(GLenum target,GLint level,GLenum format,GLenum type,GLvoid * img)

void glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)

void glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)

void glGetTexParameterfv(GLenum target,GLenum pname,GLfloat * params)

void glGetTexParameteriv(GLenum target,GLenum pname,GLint * params)

void glGetUniformfv(GLuint program,GLint location,GLfloat *params)

void glGetUniformiv(GLuint program,GLint location,GLint *params)

GLint glGetUniformLocation(GLuint program,const GLchar *name)

void glGetVertexAttribdv(GLuint index,GLenum pname,GLdouble *params)

void glGetVertexAttribfv(GLuint index,GLenum pname,GLfloat *params)

void glGetVertexAttribiv(GLuint index,GLenum pname,GLint *params)

void glGetVertexAttribPointerv(GLuint index,GLenum pname,GLvoid **pointer)

void glHint(GLenum target,GLenum mode)

void glHistogram(GLenum target,GLsizei width,GLenum internalformat,GLboolean sink)

void glIndexs(GLshort c)

void glIndexi(GLint c)

void glIndexf(GLfloat c)

void glIndexd(GLdouble c)

void glIndexub(GLubyte c)

void glIndexsv(const GLshort * c)

void glIndexiv(const GLint * c)

void glIndexfv(const GLfloat * c)

void glIndexdv(const GLdouble * c)

void glIndexubv(const GLubyte * c)

void glIndexMask(GLuint mask)

void glIndexPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glInitNames(void)

void glInterleavedArrays(GLenum format,GLsizei stride,const GLvoid * pointer)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsList(GLuint list)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLightf(GLenum light,GLenum pname,GLfloat param)

void glLighti(GLenum light,GLenum pname,GLint param)

void glLightfv(GLenum light,GLenum pname,const GLfloat * params)

void glLightiv(GLenum light,GLenum pname,const GLint * params)

void glLightModelf(GLenum pname,GLfloat param)

void glLightModeli(GLenum pname,GLint param)

void glLightModelfv(GLenum pname,const GLfloat * params)

void glLightModeliv(GLenum pname,const GLint * params)

void glLineStipple(GLint factor,GLushort pattern)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glListBase(GLuint base)

void glLoadIdentity(void)

void glLoadMatrixd(const GLdouble * m)

void glLoadMatrixf(const GLfloat * m)

void glLoadName(GLuint name)

void glLoadTransposeMatrixd(const GLdouble * m)

void glLoadTransposeMatrixf(const GLfloat * m)

void glLogicOp(GLenum opcode)

void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat * points)

void glMap1d(GLenum target,GLdouble u1,GLdouble u2,GLint stride,GLint order,const GLdouble * points)

void glMap2f(GLenum target,GLfloat u1,GLfloat u2,GLint ustride,GLint uorder,GLfloat v1,GLfloat v2,GLint vstride,GLint vorder,const GLfloat * points)

void glMap2d(GLenum target,GLdouble u1,GLdouble u2,GLint ustride,GLint uorder,GLdouble v1,GLdouble v2,GLint vstride,GLint vorder,const GLdouble * points)

void * glMapBuffer(GLenum target,GLenum access)

void glMapGrid1d(GLint un,GLdouble u1,GLdouble u2)

void glMapGrid1f(GLint un,GLfloat u1,GLfloat u2)

void glMapGrid2d(GLint un,GLdouble u1,GLdouble u2,GLint vn,GLdouble v1,GLdouble v2)

void glMapGrid2f(GLint un,GLfloat u1,GLfloat u2,GLint vn,GLfloat v1,GLfloat v2)

void glMaterialf(GLenum face,GLenum pname,GLfloat param)

void glMateriali(GLenum face,GLenum pname,GLint param)

void glMatrixMode(GLenum mode)

void glMinmax(GLenum target,GLenum internalformat,GLboolean sink)

void glMultMatrixd(const GLdouble * m)

void glMultMatrixf(const GLfloat * m)

void glMultTransposeMatrixd(const GLdouble * m)

void glMultTransposeMatrixf(const GLfloat * m)

void glMultiDrawArrays(GLenum mode,GLint * first,GLsizei * count,GLsizei primcount)

void glMultiDrawElements(GLenum mode,const GLsizei * count,GLenum type,const GLvoid ** indices,GLsizei primcount)

void glMultiTexCoord1s(GLenum target,GLshort s)

void glMultiTexCoord1i(GLenum target,GLint s)

void glMultiTexCoord1f(GLenum target,GLfloat s)

void glMultiTexCoord1d(GLenum target,GLdouble s)

void glMultiTexCoord2s(GLenum target,GLshort s,GLshort t)

void glMultiTexCoord2i(GLenum target,GLint s,GLint t)

void glMultiTexCoord2f(GLenum target,GLfloat s,GLfloat t)

void glMultiTexCoord2d(GLenum target,GLdouble s,GLdouble t)

void glMultiTexCoord3s(GLenum target,GLshort s,GLshort t,GLshort r)

void glMultiTexCoord3i(GLenum target,GLint s,GLint t,GLint r)

void glMultiTexCoord3f(GLenum target,GLfloat s,GLfloat t,GLfloat r)

void glMultiTexCoord3d(GLenum target,GLdouble s,GLdouble t,GLdouble r)

void glMultiTexCoord4s(GLenum target,GLshort s,GLshort t,GLshort r,GLshort q)

void glMultiTexCoord4i(GLenum target,GLint s,GLint t,GLint r,GLint q)

void glMultiTexCoord4f(GLenum target,GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glMultiTexCoord4d(GLenum target,GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glMultiTexCoord1sv(GLenum target,const GLshort * v)

void glMultiTexCoord1iv(GLenum target,const GLint * v)

void glMultiTexCoord1fv(GLenum target,const GLfloat * v)

void glMultiTexCoord1dv(GLenum target,const GLdouble * v)

void glMultiTexCoord2sv(GLenum target,const GLshort * v)

void glMultiTexCoord2iv(GLenum target,const GLint * v)

void glMultiTexCoord2fv(GLenum target,const GLfloat * v)

void glMultiTexCoord2dv(GLenum target,const GLdouble * v)

void glMultiTexCoord3sv(GLenum target,const GLshort * v)

void glMultiTexCoord3iv(GLenum target,const GLint * v)

void glMultiTexCoord3fv(GLenum target,const GLfloat * v)

void glMultiTexCoord3dv(GLenum target,const GLdouble * v)

void glMultiTexCoord4sv(GLenum target,const GLshort * v)

void glMultiTexCoord4iv(GLenum target,const GLint * v)

void glMultiTexCoord4fv(GLenum target,const GLfloat * v)

void glMultiTexCoord4dv(GLenum target,const GLdouble * v)

void glNewList(GLuint list,GLenum mode)

void glNormal3b(GLbyte nx,GLbyte ny,GLbyte nz)

void glNormal3d(GLdouble nx,GLdouble ny,GLdouble nz)

void glNormal3f(GLfloat nx,GLfloat ny,GLfloat nz)

void glNormal3i(GLint nx,GLint ny,GLint nz)

void glNormal3s(GLshort nx,GLshort ny,GLshort nz)

void glNormal3bv(const GLbyte * v)

void glNormal3dv(const GLdouble * v)

void glNormal3fv(const GLfloat * v)

void glNormal3iv(const GLint * v)

void glNormal3sv(const GLshort * v)

void glNormalPointer(GLenum type,GLsizei stride,const GLvoid * pointer)

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble nearVal,GLdouble farVal)

void glPassThrough(GLfloat token)

void glPixelMapfv(GLenum map,GLsizei mapsize,const GLfloat * values)

void glPixelMapuiv(GLenum map,GLsizei mapsize,const GLuint * values)

void glPixelMapusv(GLenum map,GLsizei mapsize,const GLushort * values)

void glPixelStoref(GLenum pname,GLfloat param)

void glPixelStorei(GLenum pname,GLint param)

void glPixelTransferf(GLenum pname,GLfloat param)

void glPixelTransferi(GLenum pname,GLint param)

void glPixelZoom(GLfloat xfactor,GLfloat yfactor)

void glPointParameterf(GLenum pname,GLfloat param)

void glPointParameteri(GLenum pname,GLint param)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face,GLenum mode)

void glPolygonOffset(GLfloat factor,GLfloat units)

void glPolygonStipple(const GLubyte * pattern)

void glPushAttrib(GLbitfield mask)

void glPushClientAttrib(GLbitfield mask)

void glPushMatrix(void)

void glPushName(GLuint name)

void glPrioritizeTextures(GLsizei n,const GLuint * textures,const GLclampf * priorities)

void glPopMatrix(void)

void glRasterPos2s(GLshort x,GLshort y)

void glRasterPos2i(GLint x,GLint y)

void glRasterPos2f(GLfloat x,GLfloat y)

void glRasterPos2d(GLdouble x,GLdouble y)

void glRasterPos3s(GLshort x,GLshort y,GLshort z)

void glRasterPos3i(GLint x,GLint y,GLint z)

void glRasterPos3f(GLfloat x,GLfloat y,GLfloat z)

void glRasterPos3d(GLdouble x,GLdouble y,GLdouble z)

void glRasterPos4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glRasterPos4i(GLint x,GLint y,GLint z,GLint w)

void glRasterPos4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glRasterPos4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid * data)

void glRectd(GLdouble x1,GLdouble y1,GLdouble x2,GLdouble y2)

void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)

void glRecti(GLint x1,GLint y1,GLint x2,GLint y2)

void glRects(GLshort x1,GLshort y1,GLshort x2,GLshort y2)

void glRectdv(const GLdouble * v1,const GLdouble * v2)

void glRectfv(const GLfloat * v1,const GLfloat * v2)

void glRectiv(const GLint * v1,const GLint * v2)

void glRectsv(const GLshort * v1,const GLshort * v2)

GLint glRenderMode(GLenum mode)

void glResetHistogram(GLenum target)

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)

void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

void glSampleCoverage(GLclampf value,GLboolean invert)

void glScaled(GLdouble x,GLdouble y,GLdouble z)

void glScalef(GLfloat x,GLfloat y,GLfloat z)

void glScissor(GLint x,GLint y,GLsizei width,GLsizei height)

void glSecondaryColor3b(GLbyte red,GLbyte green,GLbyte blue)

void glSecondaryColor3s(GLshort red,GLshort green,GLshort blue)

void glSecondaryColor3i(GLint red,GLint green,GLint blue)

void glSecondaryColor3f(GLfloat red,GLfloat green,GLfloat blue)

void glSecondaryColor3d(GLdouble red,GLdouble green,GLdouble blue)

void glSecondaryColor3ub(GLubyte red,GLubyte green,GLubyte blue)

void glSecondaryColor3us(GLushort red,GLushort green,GLushort blue)

void glSecondaryColor3ui(GLuint red,GLuint green,GLuint blue)

void glSecondaryColor3bv(const GLbyte * v)

void glSecondaryColor3sv(const GLshort * v)

void glSecondaryColor3iv(const GLint * v)

void glSecondaryColor3fv(const GLfloat * v)

void glSecondaryColor3dv(const GLdouble * v)

void glSecondaryColor3ubv(const GLubyte * v)

void glSecondaryColor3usv(const GLushort * v)

void glSecondaryColor3uiv(const GLuint * v)

void glSecondaryColorPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glSelectBuffer(GLsizei size,GLuint * buffer)

void glSeparableFilter2D(GLenum target,GLenum internalformat,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * row,const GLvoid * column)

void glShadeModel(GLenum mode)

void glShaderSource(GLuint shader,GLsizei count,const GLchar **string,const GLint *length)

void glStencilFunc(GLenum func,GLint ref,GLuint mask)

void glStencilFuncSeparate(GLenum face,GLenum func,GLint ref,GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face,GLuint mask)

void glStencilOp(GLenum sfail,GLenum dpfail,GLenum dppass)

void glStencilOpSeparate(GLenum face,GLenum sfail,GLenum dpfail,GLenum dppass)

void glTexCoord1s(GLshort s)

void glTexCoord1i(GLint s)

void glTexCoord1f(GLfloat s)

void glTexCoord1d(GLdouble s)

void glTexCoord2s(GLshort s,GLshort t)

void glTexCoord2i(GLint s,GLint t)

void glTexCoord2f(GLfloat s,GLfloat t)

void glTexCoord2d(GLdouble s,GLdouble t)

void glTexCoord3s(GLshort s,GLshort t,GLshort r)

void glTexCoord3i(GLint s,GLint t,GLint r)

void glTexCoord3f(GLfloat s,GLfloat t,GLfloat r)

void glTexCoord3d(GLdouble s,GLdouble t,GLdouble r)

void glTexCoord4s(GLshort s,GLshort t,GLshort r,GLshort q)

void glTexCoord4i(GLint s,GLint t,GLint r,GLint q)

void glTexCoord4f(GLfloat s,GLfloat t,GLfloat r,GLfloat q)

void glTexCoord4d(GLdouble s,GLdouble t,GLdouble r,GLdouble q)

void glTexCoord1sv(const GLshort * v)

void glTexCoord1iv(const GLint * v)

void glTexCoord1fv(const GLfloat * v)

void glTexCoord1dv(const GLdouble * v)

void glTexCoord2sv(const GLshort * v)

void glTexCoord2iv(const GLint * v)

void glTexCoord2fv(const GLfloat * v)

void glTexCoord2dv(const GLdouble * v)

void glTexCoord3sv(const GLshort * v)

void glTexCoord3iv(const GLint * v)

void glTexCoord3fv(const GLfloat * v)

void glTexCoord3dv(const GLdouble * v)

void glTexCoord4sv(const GLshort * v)

void glTexCoord4iv(const GLint * v)

void glTexCoord4fv(const GLfloat * v)

void glTexCoord4dv(const GLdouble * v)

void glTexCoordPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glTexEnvf(GLenum target,GLenum pname,GLfloat param)

void glTexEnvi(GLenum target,GLenum pname,GLint param)

void glTexGeni(GLenum coord,GLenum pname,GLint param)

void glTexGenf(GLenum coord,GLenum pname,GLfloat param)

void glTexGend(GLenum coord,GLenum pname,GLdouble param)

void glTexGeniv(GLenum coord,GLenum pname,const GLint * params)

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat * params)

void glTexGendv(GLenum coord,GLenum pname,const GLdouble * params)

void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexImage3D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const GLvoid * data)

void glTexParameterf(GLenum target,GLenum pname,GLfloat param)

void glTexParameteri(GLenum target,GLenum pname,GLint param)

void glTexParameterfv(GLenum target,GLenum pname,const GLfloat * params)

void glTexParameteriv(GLenum target,GLenum pname,const GLint * params)

void glTexSubImage1D(GLenum target,GLint level,GLint xoffset,GLsizei width,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage2D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid * data)

void glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const GLvoid * data)

void glTranslated(GLdouble x,GLdouble y,GLdouble z)

void glTranslatef(GLfloat x,GLfloat y,GLfloat z)

void glUniform1f(GLint location,GLfloat v0)

void glUniform2f(GLint location,GLfloat v0,GLfloat v1)

void glUniform3f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2)

void glUniform4f(GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glUniform1i(GLint location,GLint v0)

void glUniform2i(GLint location,GLint v0,GLint v1)

void glUniform3i(GLint location,GLint v0,GLint v1,GLint v2)

void glUniform4i(GLint location,GLint v0,GLint v1,GLint v2,GLint v3)

void glUniform1fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform2fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform3fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform4fv(GLint location,GLsizei count,const GLfloat *value)

void glUniform1iv(GLint location,GLsizei count,const GLint *value)

void glUniform2iv(GLint location,GLsizei count,const GLint *value)

void glUniform3iv(GLint location,GLsizei count,const GLint *value)

void glUniform4iv(GLint location,GLsizei count,const GLint *value)

void glUniformMatrix2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertex2s(GLshort x,GLshort y)

void glVertex2i(GLint x,GLint y)

void glVertex2f(GLfloat x,GLfloat y)

void glVertex2d(GLdouble x,GLdouble y)

void glVertex3s(GLshort x,GLshort y,GLshort z)

void glVertex3i(GLint x,GLint y,GLint z)

void glVertex3f(GLfloat x,GLfloat y,GLfloat z)

void glVertex3d(GLdouble x,GLdouble y,GLdouble z)

void glVertex4s(GLshort x,GLshort y,GLshort z,GLshort w)

void glVertex4i(GLint x,GLint y,GLint z,GLint w)

void glVertex4f(GLfloat x,GLfloat y,GLfloat z,GLfloat w)

void glVertex4d(GLdouble x,GLdouble y,GLdouble z,GLdouble w)

void glVertex2sv(const GLshort * v)

void glVertex2iv(const GLint * v)

void glVertex2fv(const GLfloat * v)

void glVertex2dv(const GLdouble * v)

void glVertex3sv(const GLshort * v)

void glVertex3iv(const GLint * v)

void glVertex3fv(const GLfloat * v)

void glVertex3dv(const GLdouble * v)

void glVertex4sv(const GLshort * v)

void glVertex4iv(const GLint * v)

void glVertex4fv(const GLfloat * v)

void glVertex4dv(const GLdouble * v)

void glVertexAttrib1f(GLuint index,GLfloat v0)

void glVertexAttrib1s(GLuint index,GLshort v0)

void glVertexAttrib1d(GLuint index,GLdouble v0)

void glVertexAttrib2f(GLuint index,GLfloat v0,GLfloat v1)

void glVertexAttrib2s(GLuint index,GLshort v0,GLshort v1)

void glVertexAttrib2d(GLuint index,GLdouble v0,GLdouble v1)

void glVertexAttrib3f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2)

void glVertexAttrib3s(GLuint index,GLshort v0,GLshort v1,GLshort v2)

void glVertexAttrib3d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2)

void glVertexAttrib4f(GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)

void glVertexAttrib4s(GLuint index,GLshort v0,GLshort v1,GLshort v2,GLshort v3)

void glVertexAttrib4d(GLuint index,GLdouble v0,GLdouble v1,GLdouble v2,GLdouble v3)

void glVertexAttrib4Nub(GLuint index,GLubyte v0,GLubyte v1,GLubyte v2,GLubyte v3)

void glVertexAttrib1fv(GLuint index,const GLfloat *v)

void glVertexAttrib1sv(GLuint index,const GLshort *v)

void glVertexAttrib1dv(GLuint index,const GLdouble *v)

void glVertexAttrib2fv(GLuint index,const GLfloat *v)

void glVertexAttrib2sv(GLuint index,const GLshort *v)

void glVertexAttrib2dv(GLuint index,const GLdouble *v)

void glVertexAttrib3fv(GLuint index,const GLfloat *v)

void glVertexAttrib3sv(GLuint index,const GLshort *v)

void glVertexAttrib3dv(GLuint index,const GLdouble *v)

void glVertexAttrib4fv(GLuint index,const GLfloat *v)

void glVertexAttrib4sv(GLuint index,const GLshort *v)

void glVertexAttrib4dv(GLuint index,const GLdouble *v)

void glVertexAttrib4iv(GLuint index,const GLint *v)

void glVertexAttrib4bv(GLuint index,const GLbyte *v)

void glVertexAttrib4ubv(GLuint index,const GLubyte *v)

void glVertexAttrib4usv(GLuint index,const GLushort *v)

void glVertexAttrib4uiv(GLuint index,const GLuint *v)

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const GLvoid * pointer)

void glVertexPointer(GLint size,GLenum type,GLsizei stride,const GLvoid * pointer)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

void glWindowPos2s(GLshort x,GLshort y)

void glWindowPos2i(GLint x,GLint y)

void glWindowPos2f(GLfloat x,GLfloat y)

void glWindowPos2d(GLdouble x,GLdouble y)

void glWindowPos3s(GLshort x,GLshort y,GLshort z)

void glWindowPos3i(GLint x,GLint y,GLint z)

void glWindowPos3f(GLfloat x,GLfloat y,GLfloat z)

void glWindowPos3d(GLdouble x,GLdouble y,GLdouble z)

void glWindowPos2sv(const GLshort * v)

void glWindowPos2iv(const GLint * v)

void glWindowPos2fv(const GLfloat * v)

void glWindowPos2dv(const GLdouble * v)

void glWindowPos3sv(const GLshort * v)

void glWindowPos3iv(const GLint * v)

void glWindowPos3fv(const GLfloat * v)

void glWindowPos3dv(const GLdouble * v)

void gluBeginCurve(GLUnurbs* nurb)

void gluBeginPolygon(GLUtesselator* tess)

void gluBeginSurface(GLUnurbs* nurb)

void gluBeginTrim(GLUnurbs* nurb)

void gluCylinder(GLUquadric* quad,GLdouble base,GLdouble top,GLdouble height,GLint slices,GLint stacks)

void gluDeleteNurbsRenderer(GLUnurbs* nurb)

void gluDeleteQuadric(GLUquadric* quad)

void gluDeleteTess(GLUtesselator* tess)

void gluDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops)

void gluEndCurve(GLUnurbs* nurb)

void gluEndPolygon(GLUtesselator* tess)

void gluEndSurface(GLUnurbs* nurb)

void gluEndTrim(GLUnurbs* nurb)

const GLubyte * gluErrorString(GLenum error)

void gluGetNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat* data)

const GLubyte * gluGetString(GLenum name)

void gluGetTessProperty(GLUtesselator* tess,GLenum which,GLdouble* data)

void gluLoadSamplingMatrices(GLUnurbs* nurb,const GLfloat * model,const GLfloat * perspective,const GLint * view)

void gluLookAt(GLdouble eyeX,GLdouble eyeY,GLdouble eyeZ,GLdouble centerX,GLdouble centerY,GLdouble centerZ,GLdouble upX,GLdouble upY,GLdouble upZ)

GLUnurbs *gluNewNurbsRenderer(void)

GLUquadric *gluNewQuadric(void)

GLUtesselator* gluNewTess(void)

void gluNextContour(GLUtesselator* tess,GLenum type)

void gluNurbsCurve(GLUnurbs* nurb,GLint knotCount,GLfloat * knots,GLint stride,GLfloat * control,GLint order,GLenum type)

void gluNurbsProperty(GLUnurbs* nurb,GLenum property,GLfloat value)

void gluNurbsSurface(GLUnurbs* nurb,GLint sKnotCount,GLfloat* sKnots,GLint tKnotCount,GLfloat* tKnots,GLint sStride,GLint tStride,GLfloat* control,GLint sOrder,GLint tOrder,GLenum type)

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

void gluPartialDisk(GLUquadric* quad,GLdouble inner,GLdouble outer,GLint slices,GLint loops,GLdouble start,GLdouble sweep)

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

void gluPickMatrix(GLdouble x,GLdouble y,GLdouble delX,GLdouble delY,GLint * viewport)

GLint gluProject(GLdouble objX,GLdouble objY,GLdouble objZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* winX,GLdouble* winY,GLdouble* winZ)

void gluPwlCurve(GLUnurbs* nurb,GLint count,GLfloat* data,GLint stride,GLenum type)

void gluQuadricDrawStyle(GLUquadric* quad,GLenum draw)

void gluQuadricNormals(GLUquadric* quad,GLenum normal)

void gluQuadricOrientation(GLUquadric* quad,GLenum orientation)

void gluQuadricTexture(GLUquadric* quad,GLboolean texture)

GLint gluScaleImage(GLenum format,GLsizei wIn,GLsizei hIn,GLenum typeIn,const void * dataIn,GLsizei wOut,GLsizei hOut,GLenum typeOut,GLvoid* dataOut)

void gluSphere(GLUquadric* quad,GLdouble radius,GLint slices,GLint stacks)

void gluTessBeginContour(GLUtesselator* tess)

void gluTessBeginPolygon(GLUtesselator* tess,GLvoid* data)

void gluTessEndContour(GLUtesselator* tess)

void gluTessEndPolygon(GLUtesselator* tess)

void gluTessNormal(GLUtesselator* tess,GLdouble valueX,GLdouble valueY,GLdouble valueZ)

void gluTessProperty(GLUtesselator* tess,GLenum which,GLdouble data)

void gluTessVertex(GLUtesselator* tess,GLdouble * location,GLvoid* data)

GLint gluUnProject(GLdouble winX,GLdouble winY,GLdouble winZ,const GLdouble * model,const GLdouble * proj,const GLint * view,GLdouble* objX,GLdouble* objY,GLdouble* objZ)

void glDisable(GLenum cap)

void glDisableClientState(GLenum array)

void glBindVertexArray(GLuint array)

void glGenVertexArrays(GLsizei n,const GLuint * arrays)

GLenum glewInit(void)

GLboolean glewIsSupported(const char *name)

GLboolean glewGetExtension(const char *name)

const GLubyte *glewGetErrorString(GLenum error)

const GLubyte *glewGetString(GLenum name)

RingQt クラスリファレンス

AbstractAxis クラス

仮引数 : void

Qt::Alignment alignment(void)

QColor gridLineColor(void)

QPen gridLinePen(void)

void hide(void)

bool isGridLineVisible(void)

bool isLineVisible(void)

bool isMinorGridLineVisible(void)

bool isReverse(void)

bool isTitleVisible(void)

bool isVisible(void)

int labelsAngle(void)

QBrush labelsBrush(void)

QColor labelsColor(void)

bool labelsVisible(void)

QPen linePen(void)

QColor linePenColor(void)

QColor minorGridLineColor(void)

QPen minorGridLinePen(void)

Qt::Orientation orientation(void)

void setGridLineColor(QColor color)

void setGridLinePen(QPen pen)

void setGridLineVisible(bool visible)

void setLabelsAngle(int angle)

void setLabelsBrush(QBrush brush)

void setLabelsColor(QColor color)

void setLabelsVisible(bool visible)

void setLinePen(QPen pen)

void setLinePenColor(QColor color)

void setLineVisible(bool visible)

void setMax(QVariant max)

void setMin(QVariant min)

void setMinorGridLineColor(QColor color)

void setMinorGridLinePen(QPen pen)

void setMinorGridLineVisible(bool visible)

void setRange(QVariant min, QVariant max)

void setReverse(bool reverse)

void setShadesBorderColor(QColor color)

void setShadesBrush(QBrush brush)

void setShadesColor(QColor color)

void setShadesPen(QPen pen)

void setShadesVisible(bool visible)

void setTitleBrush(QBrush brush)

void setTitleFont(QFont font)

void setTitleText(QString title)

void setTitleVisible(bool visible)

void setVisible(bool visible)

QColor shadesBorderColor(void)

QBrush shadesBrush(void)

QColor shadesColor(void)

QPen shadesPen(void)

bool shadesVisible(void)

void show(void)

QBrush titleBrush(void)

QFont titleFont(void)

QString titleText(void)

void setcolorChangedEvent(const char *)

void setgridLineColorChangedEvent(const char *)

void setgridLinePenChangedEvent(const char *)

void setgridVisibleChangedEvent(const char *)

void setlabelsAngleChangedEvent(const char *)

void setlabelsBrushChangedEvent(const char *)

void setlabelsColorChangedEvent(const char *)

void setlabelsEditableChangedEvent(const char *)

void setlabelsFontChangedEvent(const char *)

void setlabelsVisibleChangedEvent(const char *)

void setlinePenChangedEvent(const char *)

void setlineVisibleChangedEvent(const char *)

void setminorGridLineColorChangedEvent(const char *)

void setminorGridLinePenChangedEvent(const char *)

void setminorGridVisibleChangedEvent(const char *)

void setreverseChangedEvent(const char *)

void setshadesBorderColorChangedEvent(const char *)

void setshadesBrushChangedEvent(const char *)

void setshadesColorChangedEvent(const char *)

void setshadesPenChangedEvent(const char *)

void setshadesVisibleChangedEvent(const char *)

void settitleBrushChangedEvent(const char *)

void settitleFontChangedEvent(const char *)

void settitleTextChangedEvent(const char *)

void settitleVisibleChangedEvent(const char *)

void setvisibleChangedEvent(const char *)

const char *getcolorChangedEvent(void)

const char *getgridLineColorChangedEvent(void)

const char *getgridLinePenChangedEvent(void)

const char *getgridVisibleChangedEvent(void)

const char *getlabelsAngleChangedEvent(void)

const char *getlabelsBrushChangedEvent(void)

const char *getlabelsColorChangedEvent(void)

const char *getlabelsEditableChangedEvent(void)

const char *getlabelsFontChangedEvent(void)

const char *getlabelsVisibleChangedEvent(void)

const char *getlinePenChangedEvent(void)

const char *getlineVisibleChangedEvent(void)

const char *getminorGridLineColorChangedEvent(void)

const char *getminorGridLinePenChangedEvent(void)

const char *getminorGridVisibleChangedEvent(void)

const char *getreverseChangedEvent(void)

const char *getshadesBorderColorChangedEvent(void)

const char *getshadesBrushChangedEvent(void)

const char *getshadesColorChangedEvent(void)

const char *getshadesPenChangedEvent(void)

const char *getshadesVisibleChangedEvent(void)

const char *gettitleBrushChangedEvent(void)

const char *gettitleFontChangedEvent(void)

const char *gettitleTextChangedEvent(void)

const char *gettitleVisibleChangedEvent(void)

const char *getvisibleChangedEvent(void)

AbstractBarSeries クラス

仮引数 : void

親クラス : AbstractSeries

bool append(QBarSet *set)

void clear(void)

int count(void)

bool insert(int index, QBarSet *set)

bool isLabelsVisible(void)

qreal labelsAngle(void)

QString labelsFormat(void)

QAbstractBarSeries::LabelsPosition labelsPosition(void)

int labelsPrecision(void)

bool remove(QBarSet *set)

void setBarWidth(qreal width)

void setLabelsAngle(qreal angle)

void setLabelsFormat(QString format)

void setLabelsPosition(QAbstractBarSeries::LabelsPosition position)

void setLabelsPrecision(int precision)

void setLabelsVisible(bool visible)

bool take(QBarSet *set)

void setbarsetsAddedEvent(const char *)

void setbarsetsRemovedEvent(const char *)

void setclickedEvent(const char *)

void setcountChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setlabelsAngleChangedEvent(const char *)

void setlabelsFormatChangedEvent(const char *)

void setlabelsPositionChangedEvent(const char *)

void setlabelsPrecisionChangedEvent(const char *)

void setlabelsVisibleChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

const char *getbarsetsAddedEvent(void)

const char *getbarsetsRemovedEvent(void)

const char *getclickedEvent(void)

const char *getcountChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getlabelsAngleChangedEvent(void)

const char *getlabelsFormatChangedEvent(void)

const char *getlabelsPositionChangedEvent(void)

const char *getlabelsPrecisionChangedEvent(void)

const char *getlabelsVisibleChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

CodeEditor クラス

仮引数 : QWidget *

親クラス : QPlainTextEdit

void setCompleter(QCompleter *c)

QCompleter *completer(void)

void setLineNumbersAreaColor(QColor oColor)

void setLineNumbersAreaBackColor(QColor oColor)

QAbstractAspect クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dcore-qabstractaspect.html

仮引数 : QObject *

親クラス : QObject

void scheduleSingleShotJob(Qt3DCore::QAspectJobPtr job)

QAbstractButton クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractbutton.html

仮引数 : QWidget *parent

親クラス : QWidget

bool autoExclusive(void)

bool autoRepeat(void)

int autoRepeatDelay(void)

int autoRepeatInterval(void)

QButtonGroup *group(void)

QIcon icon(void)

QSize iconSize(void)

bool isCheckable(void)

bool isChecked(void)

bool isDown(void)

void setAutoExclusive(bool)

void setAutoRepeat(bool)

void setAutoRepeatDelay(int)

void setAutoRepeatInterval(int)

void setCheckable(bool)

void setDown(bool)

void setIcon(QIcon)

void setShortcut(QKeySequence)

void setText(QString)

QKeySequence shortcut(void)

QString text(void)

void animateClick(int msec)

void click(void)

void setChecked(bool)

void setIconSize(QSize)

void toggle(void)

QAbstractCameraController クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qabstractcameracontroller.html

親クラス : QEntity

float acceleration(void)

Qt3DRender::QCamera * camera(void)

float deceleration(void)

float linearSpeed(void)

float lookSpeed(void)

void setAcceleration(float acceleration)

void setCamera(Qt3DRender::QCamera *camera)

void setDeceleration(float deceleration)

void setLinearSpeed(float linearSpeed)

void setLookSpeed(float lookSpeed)

QAbstractItemView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractitemview.html

仮引数 : QWidget *parent

親クラス : QAbstractScrollArea

bool alternatingRowColors(void)

int autoScrollMargin(void)

void closePersistentEditor(QModelIndex)

QModelIndex currentIndex(void)

int defaultDropAction(void)

int dragDropMode(void)

bool dragDropOverwriteMode(void)

bool dragEnabled(void)

int editTriggers(void)

bool hasAutoScroll(void)

int horizontalScrollMode(void)

QSize iconSize(void)

QModelIndex indexAt(QPoint)

QWidget *indexWidget(QModelIndex)

QAbstractItemDelegate *itemDelegate(QModelIndex)

QAbstractItemDelegate *itemDelegateForColumn(int column)

QAbstractItemDelegate *itemDelegateForRow(int row)

void keyboardSearch(QString)

QAbstractItemModel *model(void)

void openPersistentEditor(QModelIndex)

QModelIndex rootIndex(void)

void scrollTo(QModelIndex,QAbstractItemView::ScrollHint)

int selectionBehavior(void)

int selectionMode(void)

QItemSelectionModel *selectionModel(void)

void setAlternatingRowColors(bool enable)

void setAutoScroll(bool enable)

void setAutoScrollMargin(int margin)

void setDefaultDropAction(Qt::DropAction dropAction)

void setDragDropMode(QAbstractItemView::DragDropMode behavior)

void setDragDropOverwriteMode(bool overwrite)

void setDragEnabled(bool enable)

void setDropIndicatorShown(bool enable)

void setEditTriggers(QAbstractItemView::EditTrigger triggers)

void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)

void setIconSize(QSize)

void setIndexWidget(QModelIndex, QWidget *widget)

void setItemDelegate(QAbstractItemDelegate *delegate)

void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)

void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)

void setModel(QAbstractItemModel *model)

void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

void setSelectionMode(QAbstractItemView::SelectionMode mode)

void setSelectionModel(QItemSelectionModel *selectionModel)

void setTabKeyNavigation(bool enable)

void setTextElideMode(Qt::TextElideMode mode)

void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)

bool showDropIndicator(void)

int sizeHintForColumn(int column)

QSize sizeHintForIndex(QModelIndex)

int sizeHintForRow(int row)

bool tabKeyNavigation(void)

int textElideMode(void)

int verticalScrollMode(void)

QRect visualRect(QModelIndex)

void clearSelection(void)

void edit(QModelIndex)

void scrollToBottom(void)

void scrollToTop(void)

void setCurrentIndex(QModelIndex)

void update(QModelIndex)

QAbstractPrintDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractprintdialog.html

仮引数 : QPrinter *,QWidget *

親クラス : QDialog

int fromPage(void)

int maxPage(void)

int minPage(void)

QAbstractPrintDialog::PrintRange printRange(void)

QPrinter * printer(void)

void setFromTo(int from, int to)

void setMinMax(int min, int max)

void setOptionTabs(QList<QWidget *> tabs)

void setPrintRange(QAbstractPrintDialog::PrintRange range)

int toPage(void)

QAbstractScrollArea クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractscrollarea.html

仮引数 : QWidget *parent

親クラス : QFrame

void addScrollBarWidget(QWidget *widget, Qt::AlignmentFlag alignment)

QWidget *cornerWidget(void)

QScrollBar *horizontalScrollBar(void)

int horizontalScrollBarPolicy(void)

QSize maximumViewportSize(void)

QWidgetList scrollBarWidgets(Qt::AlignmentFlag)

void setCornerWidget(QWidget *widget)

void setHorizontalScrollBar(QScrollBar *scrollBar)

void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)

void setVerticalScrollBar(QScrollBar *scrollBar)

void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy)

void setViewport(QWidget *widget)

QScrollBar *verticalScrollBar(void)

int verticalScrollBarPolicy(void)

QWidget *viewport(void)

QAbstractSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractseries.html

仮引数 : void

親クラス : QObject

bool attachAxis(QAbstractAxis *axis)

QList<QAbstractAxis *> attachedAxes(void)

QChart *chart(void)

bool detachAxis(QAbstractAxis *axis)

void hide(void)

bool isVisible(void)

QString name(void)

qreal opacity(void)

void setName(QString name)

void setOpacity(qreal opacity)

void setUseOpenGL(bool enable)

void setVisible(bool visible)

void show(void)

bool useOpenGL(void)

void setnameChangedEvent(const char *)

void setopacityChangedEvent(const char *)

void setuseOpenGLChangedEvent(const char *)

void setvisibleChangedEvent(const char *)

const char *getnameChangedEvent(void)

const char *getopacityChangedEvent(void)

const char *getuseOpenGLChangedEvent(void)

const char *getvisibleChangedEvent(void)

QAbstractSlider クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractslider.html

仮引数 : QWidget *parent

親クラス : QWidget

bool hasTracking(void)

bool invertedAppearance(void)

bool invertedControls(void)

bool isSliderDown(void)

int maximum(void)

int minimum(void)

int orientation(void)

int pageStep(void)

void setInvertedAppearance(bool)

void setInvertedControls(bool)

void setMaximum(int)

void setMinimum(int)

void setPageStep(int)

void setSingleStep(int)

void setSliderDown(bool)

void setSliderPosition(int)

void setTracking(bool enable)

int singleStep(void)

int sliderPosition(void)

void triggerAction(QAbstractSlider::SliderAction action)

int value(void)

void setOrientation(Qt::Orientation)

void setRange(int min, int max)

void setValue(int)

QAbstractSocket クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractsocket.html

仮引数 : void

親クラス : QIODevice

void abort(void)

bool bind(QHostAddress address, int port, QAbstractSocket::BindFlag mode)

void connectToHost(QString hostName, int port, QIODevice::OpenModeFlag openMode, QAbstractSocket::NetworkLayerProtocol protocol)

void disconnectFromHost(void)

int error(void)

bool flush(void)

bool isValid(void)

QHostAddress localAddress(void)

int localPort(void)

int pauseMode(void)

QHostAddress peerAddress(void)

QString peerName(void)

int peerPort(void)

QNetworkProxy proxy(void)

int readBufferSize(void)

void resume(void)

void setPauseMode(QAbstractSocket::PauseMode pauseMode)

void setProxy(QNetworkProxy networkProxy)

void setReadBufferSize(int size)

bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState, QIODevice::OpenModeFlag openMode)

void setSocketOption(QAbstractSocket::SocketOption option, QVariant value)

int *socketDescriptor(void)

QVariant socketOption(QAbstractSocket::SocketOption option)

int socketType(void)

int state(void)

bool waitForConnected(int msecs)

bool waitForDisconnected(int msecs)

bool atEnd(void)

int bytesAvailable(void)

int bytesToWrite(void)

bool canReadLine(void)

void close(void)

bool isSequential(void)

bool waitForBytesWritten(int msecs)

bool waitForReadyRead(int msecs)

void setconnectedEvent(const char *)

void setdisconnectedEvent(const char *)

void seterrorEvent(const char *)

void sethostFoundEvent(const char *)

void setproxyAuthenticationRequiredEvent(const char *)

void setstateChangedEvent(const char *)

const char *getconnectedEvent(void)

const char *getdisconnectedEvent(void)

const char *geterrorEvent(void)

const char *gethostFoundEvent(void)

const char *getproxyAuthenticationRequiredEvent(void)

const char *getstateChangedEvent(void)

QAbstractSpinBox クラス

C++ リファレンス : http://doc.qt.io/qt-5/qabstractspinbox.html

仮引数 : QWidget *parent

親クラス : QWidget

int alignment(void)

int buttonSymbols(void)

int correctionMode(void)

bool hasAcceptableInput(void)

bool hasFrame(void)

void interpretText(void)

bool isAccelerated(void)

bool keyboardTracking(void)

void setAccelerated(bool on)

void setAlignment(Qt::AlignmentFlag flag)

void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)

void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)

void setFrame(bool)

void setReadOnly(bool r)

void setSpecialValueText(QString)

void setWrapping(bool w)

QString specialValueText(void)

void stepBy(int steps)

QString text(void)

bool wrapping(void)

void clear(void)

void selectAll(void)

void stepDown(void)

void stepUp(void)

QAction クラス

C++ リファレンス : http://doc.qt.io/qt-5/qaction.html

仮引数 : QWidget *parent

QActionGroup *actionGroup(void)

void activate(QAction::ActionEvent event)

bool autoRepeat(void)

QVariant data(void)

QFont font(void)

QIcon icon(void)

QString iconText(void)

bool isCheckable(void)

bool isChecked(void)

bool isEnabled(void)

bool isIconVisibleInMenu(void)

bool isSeparator(void)

bool isVisible(void)

QMenu *menu(void)

int menuRole(void)

QWidget *parentWidget(void)

int priority(void)

void setActionGroup(QActionGroup *group)

void setAutoRepeat(bool)

void setCheckable(bool)

void setData(QVariant)

void setFont(QFont)

void setIcon(QIcon)

void setIconText(QString)

void setIconVisibleInMenu(bool visible)

void setMenu(QMenu *menu)

void setMenuRole(QAction::MenuRole menuRole)

void setPriority(QAction::Priority priority)

void setSeparator(bool b)

void setShortcut(QKeySequence)

void setShortcutContext(Qt::ShortcutContext context)

void setShortcuts(QKeySequence::StandardKey key)

void setStatusTip(QString)

void setText(QString)

void setToolTip(QString)

void setWhatsThis(QString)

QKeySequence shortcut(void)

int shortcutContext(void)

bool showStatusText(QWidget *widget)

QString statusTip(void)

QString text(void)

QString toolTip(void)

QString whatsThis(void)

void hover(void)

void setChecked(bool)

void setDisabled(bool)

void setEnabled(bool)

void setVisible(bool)

void toggle(void)

void trigger(void)

void setClickEvent(const char *)

const char *getClickEvent(void)

QAllEvents クラス

仮引数 : QWidget *

親クラス : QWidget

void accept(void)

void ignore(void)

int getKeyCode(void)

QString getKeyText(void)

int getModifiers(void)

int getx(void)

int gety(void)

int getglobalx(void)

int getglobaly(void)

int getbutton(void)

int getbuttons(void)

void setKeyPressEvent(const char *cStr)

void setMouseButtonPressEvent(const char *cStr)

void setMouseButtonReleaseEvent(const char *cStr)

void setMouseButtonDblClickEvent(const char *cStr)

void setMouseMoveEvent(const char *cStr)

void setCloseEvent(const char *cStr)

void setContextMenuEvent(const char *cStr)

void setDragEnterEvent(const char *cStr)

void setDragLeaveEvent(const char *cStr)

void setDragMoveEvent(const char *cStr)

void setDropEvent(const char *cStr)

void setEnterEvent(const char *cStr)

void setFocusInEvent(const char *cStr)

void setFocusOutEvent(const char *cStr)

void setKeyReleaseEvent(const char *cStr)

void setLeaveEvent(const char *cStr)

void setNonClientAreaMouseButtonDblClickEvent(const char *cStr)

void setNonClientAreaMouseButtonPressEvent(const char *cStr)

void setNonClientAreaMouseButtonReleaseEvent(const char *cStr)

void setNonClientAreaMouseMoveEvent(const char *cStr)

void setMoveEvent(const char *cStr)

void setResizeEvent(const char *cStr)

void setWindowActivateEvent(const char *cStr)

void setWindowBlockedEvent(const char *cStr)

void setWindowDeactivateEvent(const char *cStr)

void setWindowStateChangeEvent(const char *cStr)

void setWindowUnblockedEvent(const char *cStr)

void setPaintEvent(const char *cStr)

void setChildAddedEvent(const char *cStr)

void setChildPolishedEvent(const char *cStr)

void setChildRemovedEvent(const char *cStr)

const char *getKeyPressEvent(void)

const char *getMouseButtonPressEvent(void)

const char *getMouseButtonReleaseEvent(void)

const char *getMouseButtonDblClickEvent(void)

const char *getMouseMoveEvent(void)

const char *getCloseEvent(void)

const char *getContextMenuEvent(void)

const char *getDragEnterEvent(void)

const char *getDragLeaveEvent(void)

const char *getDragMoveEvent(void)

const char *getDropEvent(void)

const char *getEnterEvent(void)

const char *getFocusInEvent(void)

const char *getFocusOutEvent(void)

const char *getKeyReleaseEvent(void)

const char *getLeaveEvent(void)

const char *getNonClientAreaMouseButtonDblClickEvent(void)

const char *getNonClientAreaMouseButtonPressEvent(void)

const char *getNonClientAreaMouseButtonReleaseEvent(void)

const char *getNonClientAreaMouseMoveEvent(void)

const char *getMoveEvent(void)

const char *getResizeEvent(void)

const char *getWindowActivateEvent(void)

const char *getWindowBlockedEvent(void)

const char *getWindowDeactivateEvent(void)

const char *getWindowStateChangeEvent(void)

const char *getWindowUnblockedEvent(void)

const char *getPaintEvent(void)

const char *getChildAddedEvent(void)

const char *getChildPolishedEvent(void)

const char *getChildRemovedEvent(void)

void setEventOutput(bool x)

QObject *getParentObject(void)

QWidget *getParentWidget(void)

void setKeyPressFunc(const char *cStr)

void setMouseButtonPressFunc(const char *cStr)

void setMouseButtonReleaseFunc(const char *cStr)

void setMouseButtonDblClickFunc(const char *cStr)

void setMouseMoveFunc(const char *cStr)

void setCloseFunc(const char *cStr)

void setContextMenuFunc(const char *cStr)

void setDragEnterFunc(const char *cStr)

void setDragLeaveFunc(const char *cStr)

void setDragMoveFunc(const char *cStr)

void setDropFunc(const char *cStr)

void setEnterFunc(const char *cStr)

void setFocusInFunc(const char *cStr)

void setFocusOutFunc(const char *cStr)

void setKeyReleaseFunc(const char *cStr)

void setLeaveFunc(const char *cStr)

void setNonClientAreaMouseButtonDblClickFunc(const char *cStr)

void setNonClientAreaMouseButtonPressFunc(const char *cStr)

void setNonClientAreaMouseButtonReleaseFunc(const char *cStr)

void setNonClientAreaMouseMoveFunc(const char *cStr)

void setMoveFunc(const char *cStr)

void setResizeFunc(const char *cStr)

void setWindowActivateFunc(const char *cStr)

void setWindowBlockedFunc(const char *cStr)

void setWindowDeactivateFunc(const char *cStr)

void setWindowStateChangeFunc(const char *cStr)

void setWindowUnblockedFunc(const char *cStr)

void setPaintFunc(const char *cStr)

void setChildAddedFunc(const char *cStr)

void setChildPolishedFunc(const char *cStr)

void setChildRemovedFunc(const char *cStr)

const char *getKeyPressFunc(void)

const char *getMouseButtonPressFunc(void)

const char *getMouseButtonReleaseFunc(void)

const char *getMouseButtonDblClickFunc(void)

const char *getMouseMoveFunc(void)

const char *getCloseFunc(void)

const char *getContextMenuFunc(void)

const char *getDragEnterFunc(void)

const char *getDragLeaveFunc(void)

const char *getDragMoveFunc(void)

const char *getDropFunc(void)

const char *getEnterFunc(void)

const char *getFocusInFunc(void)

const char *getFocusOutFunc(void)

const char *getKeyReleaseFunc(void)

const char *getLeaveFunc(void)

const char *getNonClientAreaMouseButtonDblClickFunc(void)

const char *getNonClientAreaMouseButtonPressFunc(void)

const char *getNonClientAreaMouseButtonReleaseFunc(void)

const char *getNonClientAreaMouseMoveFunc(void)

const char *getMoveFunc(void)

const char *getResizeFunc(void)

const char *getWindowActivateFunc(void)

const char *getWindowBlockedFunc(void)

const char *getWindowDeactivateFunc(void)

const char *getWindowStateChangeFunc(void)

const char *getWindowUnblockedFunc(void)

const char *getPaintFunc(void)

const char *getChildAddedFunc(void)

const char *getChildPolishedFunc(void)

const char *getChildRemovedFunc(void)

QDropEvent *getDropEventObject(void)

QDragMoveEvent *getDragMoveEventObject(void)

QDragEnterEvent *getDragEnterEventObject(void)

QDragLeaveEvent *getDragLeaveEventObject(void)

QChildEvent *getChildEventObject(void)

QApp クラス

C++ リファレンス : http://doc.qt.io/qt-5/qapplication.html

親クラス : QGuiApplication

void exec(void)

void quit(void)

void processEvents(void)

void styleWindows(void)

void styleWindowsVista(void)

void styleFusion(void)

void styleFusionBlack(void)

void styleFusionCustom(QColor,QColor,QColor,QColor,QColor,QColor,QColor,QColor,QColor,QColor,QColor,QColor)

void closeAllWindows(void)

Qt::KeyboardModifiers keyboardModifiers(void)

QAreaLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qarealegendmarker.html

親クラス : QLegendMarker

QAreaSeries * series(void)

QLegendMarker::LegendMarkerType type(void)

QAreaSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qareaseries.html

仮引数 : QObject *

親クラス : QAbstractSeries

QColor borderColor(void)

QBrush brush(void)

QColor color(void)

QLineSeries * lowerSeries(void)

QPen pen(void)

bool pointLabelsClipping(void)

QColor pointLabelsColor(void)

QFont pointLabelsFont(void)

QString pointLabelsFormat(void)

bool pointLabelsVisible(void)

bool pointsVisible(void)

void setBorderColor(QColor color)

void setBrush(QBrush brush)

void setColor(QColor color)

void setLowerSeries(QLineSeries *series)

void setPen(QPen pen)

void setPointLabelsClipping(bool enabled)

void setPointLabelsColor(QColor color)

void setPointLabelsFont(QFont font)

void setPointLabelsFormat(QString format)

void setPointLabelsVisible(bool visible)

void setPointsVisible(bool visible)

void setUpperSeries(QLineSeries *series)

QLineSeries * upperSeries(void)

void setborderColorChangedEvent(const char *)

void setclickedEvent(const char *)

void setcolorChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setpointLabelsClippingChangedEvent(const char *)

void setpointLabelsColorChangedEvent(const char *)

void setpointLabelsFontChangedEvent(const char *)

void setpointLabelsFormatChangedEvent(const char *)

void setpointLabelsVisibilityChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

const char *getborderColorChangedEvent(void)

const char *getclickedEvent(void)

const char *getcolorChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getpointLabelsClippingChangedEvent(void)

const char *getpointLabelsColorChangedEvent(void)

const char *getpointLabelsFontChangedEvent(void)

const char *getpointLabelsFormatChangedEvent(void)

const char *getpointLabelsVisibilityChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

QAspectEngine クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dcore-qaspectengine.html

仮引数 : QObject *

親クラス : QObject

QVector<Qt3DCore::QAbstractAspect *> aspects(void)

QVariant executeCommand(QString command)

void registerAspect(Qt3DCore::QAbstractAspect *aspect)

void registerAspect_2(QString name)

Qt3DCore::QEntityPtr rootEntity(void)

void setRootEntity(Qt3DCore::QEntityPtr root)

void unregisterAspect(Qt3DCore::QAbstractAspect *aspect)

void unregisterAspect_2(QString name)

QAxBase クラス

C++ リファレンス : http://doc.qt.io/qt-5/qaxbase.html

仮引数 : QWidget *

親クラス : QObject

QVariant asVariant(void)

QString control(void)

void disableClassInfo(void)

void disableEventSink(void)

void disableMetaObject(void)

QVariant dynamicCall(char *function)

QVariant dynamicCall_2(char *function,QVariant)

QVariant dynamicCall_3(char *function,QVariant,QVariant)

QVariant dynamicCall_4(char *function,QVariant,QVariant,QVariant)

QVariant dynamicCall_5(char *function,QVariant,QVariant,QVariant,QVariant)

QVariant dynamicCall_6(char *function,QVariant,QVariant,QVariant,QVariant,QVariant)

QVariant dynamicCall_7(char *function,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)

QVariant dynamicCall_8(char *function,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)

QVariant dynamicCall_9(char *function,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)

QVariant dynamicCall_10(const char *function, QList<QVariant> )

QString generateDocumentation(void)

bool isNull(void)

QAxObject *querySubObject(const char *name)

QAxObject *querySubObject_2(const char *name,QVariant)

QAxObject *querySubObject_3(const char *name,QVariant,QVariant)

QAxObject *querySubObject_4(const char *name,QVariant,QVariant,QVariant)

QAxObject *querySubObject_5(const char *name,QVariant,QVariant,QVariant,QVariant)

QAxObject *querySubObject_6(const char *name,QVariant,QVariant,QVariant,QVariant,QVariant)

QAxObject *querySubObject_7(const char *name,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)

QAxObject *querySubObject_8(const char *name,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)

QAxObject *querySubObject_9(const char *name,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)

bool setControl( QString )

QStringList verbs(void)

QAxObject クラス

C++ リファレンス : http://doc.qt.io/qt-5/qaxobject.html

仮引数 : QString

親クラス : QAxBase

bool doVerb(QString)

QAxWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qaxwidget.html

仮引数 : QWidget *parent, Qt::WindowFlags f

親クラス : QAxBase

bool doVerb(QString)

QAxWidget2 クラス

仮引数 : QString c, QWidget *parent, Qt::WindowFlags f

親クラス : QAxWidget

QBarCategoryAxis クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbarcategoryaxis.html

仮引数 : QObject *

親クラス : QAbstractAxis

void append(QStringList categories)

void append_2(QString category)

QString at(int index)

QStringList categories(void)

void clear(void)

int count(void)

void insert(int index, QString category)

QString max(void)

QString min(void)

void remove(QString category)

void replace(QString oldCategory, QString newCategory)

void setCategories(QStringList categories)

void setMax(QString max)

void setMin(QString min)

void setRange(QString minCategory, QString maxCategory)

void setcategoriesChangedEvent(const char *)

void setcountChangedEvent(const char *)

void setmaxChangedEvent(const char *)

void setminChangedEvent(const char *)

void setrangeChangedEvent(const char *)

const char *getcategoriesChangedEvent(void)

const char *getcountChangedEvent(void)

const char *getmaxChangedEvent(void)

const char *getminChangedEvent(void)

const char *getrangeChangedEvent(void)

QBarLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbarlegendmarker.html

親クラス : QLegendMarker

QBarSet * barset(void)

QAbstractBarSeries * series(void)

QBarSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbarseries.html

仮引数 : QObject *

親クラス : QAbstractBarSeries

QAbstractSeries::SeriesType type(void)

QBarSet クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbarset.html

仮引数 : QString,QObject *

親クラス : QObject

void append(qreal value)

void append_2(QList<qreal> values)

qreal at(int index)

QColor borderColor(void)

QBrush brush(void)

QColor color(void)

int count(void)

void insert(int index, qreal value)

QString label(void)

QBrush labelBrush(void)

QColor labelColor(void)

QFont labelFont(void)

QPen pen(void)

void remove(int index, int count)

void replace(int index, qreal value)

void setBorderColor(QColor color)

void setBrush(QBrush brush)

void setColor(QColor color)

void setLabel(QString label)

void setLabelBrush(QBrush brush)

void setLabelColor(QColor color)

void setLabelFont(QFont font)

void setPen(QPen pen)

qreal sum(void)

void setborderColorChangedEvent(const char *)

void setbrushChangedEvent(const char *)

void setclickedEvent(const char *)

void setcolorChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setlabelBrushChangedEvent(const char *)

void setlabelChangedEvent(const char *)

void setlabelColorChangedEvent(const char *)

void setlabelFontChangedEvent(const char *)

void setpenChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void setvalueChangedEvent(const char *)

void setvaluesAddedEvent(const char *)

void setvaluesRemovedEvent(const char *)

const char *getborderColorChangedEvent(void)

const char *getbrushChangedEvent(void)

const char *getclickedEvent(void)

const char *getcolorChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getlabelBrushChangedEvent(void)

const char *getlabelChangedEvent(void)

const char *getlabelColorChangedEvent(void)

const char *getlabelFontChangedEvent(void)

const char *getpenChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *getvalueChangedEvent(void)

const char *getvaluesAddedEvent(void)

const char *getvaluesRemovedEvent(void)

QBitmap クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbitmap.html

仮引数 : void

親クラス : QPixmap

void clear(void)

void swap(QBitmap)

QBitmap transformed(QTransform)

QBitmap fromData(QSize, const uchar * bits, QImage::Format monoFormat)

QBitmap fromImage(QImage, Qt::ImageConversionFlags flags)

QBluetoothAddress クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothaddress.html

仮引数 : void

void clear(void)

bool isNull(void)

QString toString(void)

quint64 toUInt64(void)

QBluetoothDeviceDiscoveryAgent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothdevicediscoveryagent.html

仮引数 : QObject *

QList<QBluetoothDeviceInfo> discoveredDevices(void)

QBluetoothDeviceDiscoveryAgent::Error error(void)

QString errorString(void)

QBluetoothDeviceDiscoveryAgent::InquiryType inquiryType(void)

bool isActive(void)

void setInquiryType(QBluetoothDeviceDiscoveryAgent::InquiryType type)

void start(void)

void stop(void)

void setcanceledEvent(const char *)

void setdeviceDiscoveredEvent(const char *)

void seterrorEvent(const char *)

void setfinishedEvent(const char *)

const char *getcanceledEvent(void)

const char *getdeviceDiscoveredEvent(void)

const char *geterrorEvent(void)

const char *getfinishedEvent(void)

QBluetoothDeviceInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothdeviceinfo.html

仮引数 : void

QBluetoothAddress address(void)

bool isValid(void)

QBluetoothDeviceInfo::MajorDeviceClass majorDeviceClass(void)

quint8 minorDeviceClass(void)

QString name(void)

qint16 rssi(void)

QBluetoothDeviceInfo::ServiceClasses serviceClasses(void)

QList<QBluetoothUuid> serviceUuids(QBluetoothDeviceInfo::DataCompleteness *completeness)

QBluetoothDeviceInfo::DataCompleteness serviceUuidsCompleteness(void)

void setCached(bool cached)

void setServiceUuids(QList<QBluetoothUuid> uuids, QBluetoothDeviceInfo::DataCompleteness completeness)

QBluetoothHostInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothhostinfo.html

仮引数 : void

QBluetoothAddress address(void)

QString name(void)

void setAddress(QBluetoothAddress address)

void setName(QString name)

QBluetoothLocalDevice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothlocaldevice.html

仮引数 : QObject *

QBluetoothAddress address(void)

QBluetoothLocalDevice::HostMode hostMode(void)

bool isValid(void)

QString name(void)

QBluetoothLocalDevice::Pairing pairingStatus(QBluetoothAddress address)

void powerOn(void)

void requestPairing(QBluetoothAddress address, QBluetoothLocalDevice::Pairing pairing)

void setHostMode(QBluetoothLocalDevice::HostMode mode)

void pairingConfirmation(bool accept)

QList<QBluetoothHostInfo> allDevices(void)

void setdeviceConnectedEvent(const char *)

void setdeviceDisconnectedEvent(const char *)

void seterrorEvent(const char *)

void sethostModeStateChangedEvent(const char *)

void setpairingDisplayConfirmationEvent(const char *)

void setpairingDisplayPinCodeEvent(const char *)

void setpairingFinishedEvent(const char *)

const char *getdeviceConnectedEvent(void)

const char *getdeviceDisconnectedEvent(void)

const char *geterrorEvent(void)

const char *gethostModeStateChangedEvent(void)

const char *getpairingDisplayConfirmationEvent(void)

const char *getpairingDisplayPinCodeEvent(void)

const char *getpairingFinishedEvent(void)

QBluetoothServer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothserver.html

仮引数 : QBluetoothServiceInfo::Protocol,QObject *

親クラス : QObject

void close(void)

QBluetoothServer::Error error(void)

bool hasPendingConnections(void)

bool isListening(void)

bool listen(QBluetoothAddress address, quint16 port)

QBluetoothServiceInfo listen_2(QBluetoothUuid uuid, QString serviceName))

int maxPendingConnections(void)

QBluetoothSocket * nextPendingConnection(void)

QBluetooth::SecurityFlags securityFlags(void)

QBluetoothAddress serverAddress(void)

quint16 serverPort(void)

QBluetoothServiceInfo::Protocol serverType(void)

void setMaxPendingConnections(int numConnections)

void setSecurityFlags(QBluetooth::SecurityFlags security)

void seterrorEvent(const char *)

void setnewConnectionEvent(const char *)

const char *geterrorEvent(void)

const char *getnewConnectionEvent(void)

QBluetoothServiceDiscoveryAgent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothservicediscoveryagent.html

仮引数 : QObject *

親クラス : QObject

QList<QBluetoothServiceInfo> discoveredServices(void)

QBluetoothServiceDiscoveryAgent::Error error(void)

QString errorString(void)

bool isActive(void)

QBluetoothAddress remoteAddress(void)

bool setRemoteAddress(QBluetoothAddress address)

void setUuidFilter(QList<QBluetoothUuid> uuids)

void setUuidFilter_2(QBluetoothUuid uuid)

QList<QBluetoothUuid> uuidFilter(void)

void clear(void)

void start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode)

void stop(void)

void setcanceledEvent(const char *)

void seterrorEvent(const char *)

void setfinishedEvent(const char *)

void setserviceDiscoveredEvent(const char *)

const char *getcanceledEvent(void)

const char *geterrorEvent(void)

const char *getfinishedEvent(void)

const char *getserviceDiscoveredEvent(void)

QBluetoothServiceInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothserviceinfo.html

仮引数 : void

QVariant attribute(quint16 attributeId)

QList<quint16> attributes(void)

bool contains(quint16 attributeId)

QBluetoothDeviceInfo device(void)

bool isComplete(void)

bool isRegistered(void)

bool isValid(void)

QBluetoothServiceInfo::Sequence protocolDescriptor(QBluetoothUuid::ProtocolUuid protocol)

int protocolServiceMultiplexer(void)

bool registerService(QBluetoothAddress localAdapter))

void removeAttribute(quint16 attributeId)

int serverChannel(void)

quint8 serviceAvailability(void)

QList<QBluetoothUuid> serviceClassUuids(void)

QString serviceDescription(void)

QString serviceName(void)

QString serviceProvider(void)

QBluetoothUuid serviceUuid(void)

void setAttribute(quint16 attributeId, QVariant value)

void setAttribute_2(quint16 attributeId, QBluetoothUuid value)

void setAttribute_3(quint16 attributeId, QBluetoothServiceInfo::Sequence value)

void setDevice(QBluetoothDeviceInfo device)

void setServiceAvailability(quint8 availability)

void setServiceDescription(QString description)

void setServiceName(QString name)

void setServiceProvider(QString provider)

void setServiceUuid(QBluetoothUuid uuid)

bool unregisterService(void)

QBluetoothSocket クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothsocket.html

仮引数 : QBluetoothServiceInfo::Protocol,QObject *

親クラス : QIODevice

void abort(void)

void connectToService(QBluetoothServiceInfo service, QIODevice::OpenMode openMode)

void connectToService_2(QBluetoothAddress address, QBluetoothUuid uuid, QIODevice::OpenMode openMode)

void connectToService_3(QBluetoothAddress address, quint16 port, QIODevice::OpenMode openMode)

void disconnectFromService(void)

QBluetoothSocket::SocketError error(void)

QString errorString(void)

QBluetoothAddress localAddress(void)

QString localName(void)

quint16 localPort(void)

QBluetoothAddress peerAddress(void)

QString peerName(void)

quint16 peerPort(void)

bool setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, QBluetoothSocket::SocketState socketState, QIODevice::OpenMode openMode)

int socketDescriptor(void)

QBluetoothServiceInfo::Protocol socketType(void)

QBluetoothSocket::SocketState state(void)

void setconnectedEvent(const char *)

void setdisconnectedEvent(const char *)

void seterrorEvent(const char *)

void setstateChangedEvent(const char *)

const char *getconnectedEvent(void)

const char *getdisconnectedEvent(void)

const char *geterrorEvent(void)

const char *getstateChangedEvent(void)

QBluetoothTransferManager クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothtransfermanager.html

仮引数 : QObject *

親クラス : QObject

QBluetoothTransferReply * put(QBluetoothTransferRequest request, QIODevice *data)

void setfinishedEvent(const char *)

const char *getfinishedEvent(void)

QBluetoothTransferReply クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothtransferreply.html

仮引数 : QObject *

親クラス : QObject

QBluetoothTransferManager * manager(void)

QBluetoothTransferRequest request(void)

void abort(void)

void seterrorEvent(const char *)

void setfinishedEvent(const char *)

void settransferProgressEvent(const char *)

const char *geterrorEvent(void)

const char *getfinishedEvent(void)

const char *gettransferProgressEvent(void)

QBluetoothTransferRequest クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothtransferrequest.html

仮引数 : QBluetoothAddress

QBluetoothAddress address(void)

QVariant attribute(QBluetoothTransferRequest::Attribute code, QVariant defaultValue))

void setAttribute(QBluetoothTransferRequest::Attribute code, QVariant value)

QBluetoothUuid クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbluetoothuuid.html

仮引数 : void

親クラス : QUuid

int minimumSize(void)

quint16 toUInt16(bool *ok)

quint32 toUInt32(bool *ok)

quint128 toUInt128(void)

QBoxLayout クラス

C++ リファレンス : http://doc.qt.io/qt-5/qboxlayout.html

仮引数 : QBoxLayout::Direction dir, QWidget *parent

親クラス : QLayout

void addLayout(QLayout * layout, int stretch )

void addSpacerItem(QSpacerItem * spacerItem)

void addSpacing(int size)

void addStretch(int stretch )

void addStrut(int size)

void addWidget(QWidget * widget, int stretch , Qt::Alignment alignment )

QBoxLayout::Direction direction(void)

void insertLayout(int index, QLayout * layout, int stretch )

void insertSpacerItem(int index, QSpacerItem * spacerItem)

void insertSpacing(int index, int size)

void insertStretch(int index, int stretch )

void insertWidget(int index, QWidget * widget, int stretch , Qt::Alignment alignment )

void setDirection(QBoxLayout::Direction direction)

void setSpacing(int spacing)

void setStretch(int index, int stretch)

bool setStretchFactor(QWidget * widget, int stretch)

bool setStretchFactor_2(QLayout * layout, int stretch)

int spacing(void)

int stretch(int index)

QBoxPlotLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qboxplotlegendmarker.html

親クラス : QLegendMarker

QBoxPlotSeries * series(void)

QLegendMarker::LegendMarkerType type(void)

QBoxPlotSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qboxplotseries.html

仮引数 : QObject *

親クラス : QAbstractSeries

bool append(QBoxSet *set)

bool append_2(QList<QBoxSet *> sets)

bool boxOutlineVisible(void)

QList<QBoxSet *> boxSets(void)

qreal boxWidth(void)

QBrush brush(void)

void clear(void)

int count(void)

bool insert(int index, QBoxSet *set)

QPen pen(void)

bool remove(QBoxSet *set)

void setBoxOutlineVisible(bool visible)

void setBoxWidth(qreal width)

void setBrush(QBrush brush)

void setPen(QPen pen)

bool take(QBoxSet *set)

QAbstractSeries::SeriesType type(void)

void setboxOutlineVisibilityChangedEvent(const char *)

void setboxWidthChangedEvent(const char *)

void setboxsetsAddedEvent(const char *)

void setboxsetsRemovedEvent(const char *)

void setbrushChangedEvent(const char *)

void setclickedEvent(const char *)

void setcountChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setpenChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

const char *getboxOutlineVisibilityChangedEvent(void)

const char *getboxWidthChangedEvent(void)

const char *getboxsetsAddedEvent(void)

const char *getboxsetsRemovedEvent(void)

const char *getbrushChangedEvent(void)

const char *getclickedEvent(void)

const char *getcountChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getpenChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

QBoxSet クラス

C++ リファレンス : http://doc.qt.io/qt-5/qboxset.html

仮引数 : QString,QObject *

親クラス : QObject

void append(qreal value)

void append_2(QList<qreal> values)

qreal at(int index)

QBrush brush(void)

void clear(void)

int count(void)

QString label(void)

QPen pen(void)

void setBrush(QBrush brush)

void setLabel(QString label)

void setPen(QPen pen)

void setValue(int index, qreal value)

void setbrushChangedEvent(const char *)

void setclearedEvent(const char *)

void setclickedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setpenChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void setvalueChangedEvent(const char *)

void setvaluesChangedEvent(const char *)

const char *getbrushChangedEvent(void)

const char *getclearedEvent(void)

const char *getclickedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getpenChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *getvalueChangedEvent(void)

const char *getvaluesChangedEvent(void)

QBrush クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbrush.html

仮引数 : void

QColor color(void)

QGradient *gradient(void)

bool isOpaque(void)

QMatrix matrix(void)

void setColor(QColor)

void setMatrix(QMatrix)

void setStyle(Qt::BrushStyle style)

void setTexture(QPixmap)

void setTextureImage(QImage)

void setTransform(QTransform)

int style(void)

void swap(QBrush)

QPixmap texture(void)

QImage textureImage(void)

QTransform transform(void)

QBuffer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbuffer.html

仮引数 : QObject *

親クラス : QIODevice

QByteArray buffer(void)

QByteArray data(void)

void setBuffer(QByteArray *byteArray)

void setData(QByteArray data)

void setData_2(char *data, int size)

QButtonGroup クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbuttongroup.html

仮引数 : QObject *parent

void addButton(QAbstractButton *button, int id)

QAbstractButton *button(int id)

QAbstractButton *checkedButton(void)

int checkedId(void)

bool exclusive(void)

int id(QAbstractButton *button)

void removeButton(QAbstractButton *button)

void setExclusive(bool)

void setId(QAbstractButton *button, int id)

void setbuttonClickedEvent(const char *)

void setbuttonPressedEvent(const char *)

void setbuttonReleasedEvent(const char *)

const char *getbuttonClickedEvent(void)

const char *getbuttonPressedEvent(void)

const char *getbuttonReleasedEvent(void)

QByteArray クラス

C++ リファレンス : http://doc.qt.io/qt-5/qbytearray.html

仮引数 : void

QByteArray append(const char *str)

char at(int i)

int capacity(void)

void chop(int n)

void clear(void)

const char *constData(void)

bool contains(const char *str)

int count(const char *str)

const char *data(void)

bool endsWith(const char *str)

QByteArray fill(char ch, int size)

int indexOf(const char *str, int from)

QByteArray insert(int i, const char *str, int len)

bool isEmpty(void)

bool isNull(void)

int lastIndexOf(const char *str, int from)

QByteArray left(int len)

QByteArray leftJustified(int width, char fill, bool truncate)

int length(void)

QByteArray mid(int pos, int len)

QByteArray prepend(const char *str, int len)

void push_back(const char *str)

void push_front(const char *str)

QByteArray remove(int pos, int len)

QByteArray repeated(int times)

QByteArray replace(int pos, int len, const char *after, int alen)

void reserve(int size)

void resize(int size)

QByteArray right(int len)

QByteArray rightJustified(int width, char fill, bool truncate)

QByteArray setNum(int n, int base)

QByteArray setRawData(const char *data, uint size)

QByteArray simplified(void)

int size(void)

void squeeze(void)

bool startsWith(const char *str)

void swap(QByteArray other)

QByteArray toBase64(void)

double toDouble(bool * ok)

float toFloat(bool * ok)

QByteArray toHex(void)

int toInt(bool *ok, int base)

long toLong(bool *ok, int base)

qlonglong toLongLong(bool *ok, int base)

QByteArray toLower(void)

QByteArray toPercentEncoding(QByteArray,QByteArray, char percent)

short toShort(bool *ok, int base)

int toUInt(bool *ok, int base)

int toULong(bool *ok, int base)

int toULongLong(bool * ok, int base)

int toUShort(bool * ok, int base)

QByteArray toUpper(void)

QByteArray trimmed(void)

void truncate(int pos)

QByteArray fromBase64(QByteArray)

QByteArray fromHex(QByteArray)

QByteArray fromPercentEncoding(QByteArray, char percent)

QByteArray fromRawData(const char *data, int size)

QByteArray number(int n, int base)

QCalendarWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcalendarwidget.html

仮引数 : QWidget *

親クラス : QWidget

int dateEditAcceptDelay(void)

QMap<QDate, QTextCharFormat> dateTextFormat(void)

QTextCharFormat dateTextFormat_2(QDate date)

Qt::DayOfWeek firstDayOfWeek(void)

QTextCharFormat headerTextFormat(void)

QCalendarWidget::HorizontalHeaderFormat horizontalHeaderFormat(void)

bool isDateEditEnabled(void)

bool isGridVisible(void)

bool isNavigationBarVisible(void)

QDate maximumDate(void)

QDate minimumDate(void)

int monthShown(void)

QDate selectedDate(void)

QCalendarWidget::SelectionMode selectionMode(void)

void setDateEditAcceptDelay(int delay)

void setDateEditEnabled(bool enable)

void setDateTextFormat(QDate date, QTextCharFormat format)

void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek)

void setHeaderTextFormat(QTextCharFormat format)

void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format)

void setMaximumDate(QDate date)

void setMinimumDate(QDate date)

void setSelectionMode(QCalendarWidget::SelectionMode mode)

void setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format)

void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, QTextCharFormat format)

QCalendarWidget::VerticalHeaderFormat verticalHeaderFormat(void)

QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek)

int yearShown(void)

void setCurrentPage(int year, int month)

void setDateRange(QDate min, QDate max)

void setGridVisible(bool show)

void setNavigationBarVisible(bool visible)

void setSelectedDate(QDate date)

void showNextMonth(void)

void showNextYear(void)

void showPreviousMonth(void)

void showPreviousYear(void)

void showSelectedDate(void)

void showToday(void)

void setactivatedEvent(const char *)

void setclickedEvent(const char *)

void setcurrentPageChangedEvent(const char *)

void setselectionChangedEvent(const char *)

const char *getactivatedEvent(void)

const char *getclickedEvent(void)

const char *getcurrentPageChangedEvent(void)

const char *getselectionChangedEvent(void)

QCamera クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qcamera.html

仮引数 : void

親クラス : QMediaObject

QCamera::CaptureModes captureMode(void)

QCamera::Error error(void)

QString errorString(void)

QCameraExposure * exposure(void)

QCameraFocus * focus(void)

QCameraImageProcessing * imageProcessing(void)

bool isCaptureModeSupported(QCamera::CaptureModes mode)

QCamera::LockStatus lockStatus(void)

QCamera::LockStatus lockStatus_2(QCamera::LockType lockType)

QCamera::LockTypes requestedLocks(void)

void setViewfinder(QVideoWidget * viewfinder)

void setViewfinder_2(QGraphicsVideoItem * viewfinder)

void setViewfinder_3(QAbstractVideoSurface * surface)

QCamera::State state(void)

QCamera::Status status(void)

QCamera::LockTypes supportedLocks(void)

void load(void)

void searchAndLock(void)

void searchAndLock_2(QCamera::LockTypes locks)

void setCaptureMode(QCamera::CaptureModes mode)

void start(void)

void stop(void)

void unload(void)

void unlock(void)

void unlock_2(QCamera::LockTypes locks)

QCameraImageCapture クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcameraimagecapture.html

仮引数 : QMediaObject * mediaObject

QMultimedia::AvailabilityStatus availability(void)

QVideoFrame::PixelFormat bufferFormat(void)

QCameraImageCapture::CaptureDestinations captureDestination(void)

QImageEncoderSettings encodingSettings(void)

QCameraImageCapture::Error error(void)

QString errorString(void)

QString imageCodecDescription( QString codec)

bool isAvailable(void)

bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination)

bool isReadyForCapture(void)

void setBufferFormat( QVideoFrame::PixelFormat format)

void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination)

void setEncodingSettings( QImageEncoderSettings settings)

QList<QVideoFrame::PixelFormat> supportedBufferFormats(void)

QStringList supportedImageCodecs(void)

QList<QSize> supportedResolutions( QImageEncoderSettings settings , bool * continuous )

void cancelCapture(void)

int capture( QString file )

QCameraLens クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qcameralens.html

仮引数 : Qt3DCore::QNode *

float aspectRatio(void)

float bottom(void)

float exposure(void)

float farPlane(void)

float fieldOfView(void)

float left(void)

float nearPlane(void)

QMatrix4x4 projectionMatrix(void)

Qt3DRender::QCameraLens::ProjectionType projectionType(void)

float right(void)

void setFrustumProjection(float left, float right, float bottom, float top, float nearPlane, float farPlane)

void setOrthographicProjection(float left, float right, float bottom, float top, float nearPlane, float farPlane)

void setPerspectiveProjection(float fieldOfView, float aspectRatio, float nearPlane, float farPlane)

float top(void)

void setBottom(float bottom)

void setExposure(float exposure)

void setFarPlane(float farPlane)

void setFieldOfView(float fieldOfView)

void setLeft(float left)

void setNearPlane(float nearPlane)

void setProjectionMatrix(QMatrix4x4 projectionMatrix)

void setProjectionType(Qt3DRender::QCameraLens::ProjectionType projectionType)

void setRight(float right)

void setTop(float top)

QCameraSelector クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qcameraselector .html

仮引数 : Qt3DCore::QNode *

Qt3DCore::QEntity * camera(void)

void setCamera(Qt3DCore::QEntity *camera)

QCameraViewfinder クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcameraviewfinder.html

仮引数 : QWidget *

親クラス : QVideoWidget

QCandlestickLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcandlesticklegendmarker.html

親クラス : QLegendMarker

QCandlestickSeries * series(void)

QLegendMarker::LegendMarkerType type(void)

QCandlestickModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcandlestickmodelmapper.html

仮引数 : QObject *

親クラス : QObject

QAbstractItemModel * model(void)

Qt::Orientation orientation(void)

QCandlestickSeries * series(void)

void setModel(QAbstractItemModel *model)

void setSeries(QCandlestickSeries *series)

void setmodelReplacedEvent(const char *)

void setseriesReplacedEvent(const char *)

const char *getmodelReplacedEvent(void)

const char *getseriesReplacedEvent(void)

QCandlestickSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcandlestickseries.html

仮引数 : QObject *

親クラス : QAbstractSeries

bool append(QCandlestickSet *set)

bool append_2(QList<QCandlestickSet *> sets)

bool bodyOutlineVisible(void)

qreal bodyWidth(void)

QBrush brush(void)

bool capsVisible(void)

qreal capsWidth(void)

void clear(void)

int count(void)

QColor decreasingColor(void)

QColor increasingColor(void)

bool insert(int index, QCandlestickSet *set)

qreal maximumColumnWidth(void)

qreal minimumColumnWidth(void)

QPen pen(void)

bool remove(QCandlestickSet *set)

bool remove_2(QList<QCandlestickSet *> sets)

void setBodyOutlineVisible(bool bodyOutlineVisible)

void setBodyWidth(qreal bodyWidth)

void setBrush(QBrush brush)

void setCapsVisible(bool capsVisible)

void setCapsWidth(qreal capsWidth)

void setDecreasingColor(QColor decreasingColor)

void setIncreasingColor(QColor increasingColor)

void setMaximumColumnWidth(qreal maximumColumnWidth)

void setMinimumColumnWidth(qreal minimumColumnWidth)

void setPen(QPen pen)

QList<QCandlestickSet *> sets(void)

bool take(QCandlestickSet *set)

void setbodyOutlineVisibilityChangedEvent(const char *)

void setbodyWidthChangedEvent(const char *)

void setbrushChangedEvent(const char *)

void setcandlestickSetsAddedEvent(const char *)

void setcandlestickSetsRemovedEvent(const char *)

void setcapsVisibilityChangedEvent(const char *)

void setcapsWidthChangedEvent(const char *)

void setclickedEvent(const char *)

void setcountChangedEvent(const char *)

void setdecreasingColorChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setincreasingColorChangedEvent(const char *)

void setmaximumColumnWidthChangedEvent(const char *)

void setminimumColumnWidthChangedEvent(const char *)

void setpenChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

const char *getbodyOutlineVisibilityChangedEvent(void)

const char *getbodyWidthChangedEvent(void)

const char *getbrushChangedEvent(void)

const char *getcandlestickSetsAddedEvent(void)

const char *getcandlestickSetsRemovedEvent(void)

const char *getcapsVisibilityChangedEvent(void)

const char *getcapsWidthChangedEvent(void)

const char *getclickedEvent(void)

const char *getcountChangedEvent(void)

const char *getdecreasingColorChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getincreasingColorChangedEvent(void)

const char *getmaximumColumnWidthChangedEvent(void)

const char *getminimumColumnWidthChangedEvent(void)

const char *getpenChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

QCandlestickSet クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcandlestickset.html

仮引数 : qreal,QObject *

親クラス : QObject

QBrush brush(void)

qreal close(void)

qreal high(void)

qreal low(void)

qreal open(void)

QPen pen(void)

void setBrush(QBrush brush)

void setClose(qreal close)

void setHigh(qreal high)

void setLow(qreal low)

void setOpen(qreal open)

void setPen(QPen pen)

void setTimestamp(qreal timestamp)

qreal timestamp(void)

void setbrushChangedEvent(const char *)

void setclickedEvent(const char *)

void setcloseChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethighChangedEvent(const char *)

void sethoveredEvent(const char *)

void setlowChangedEvent(const char *)

void setopenChangedEvent(const char *)

void setpenChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void settimestampChangedEvent(const char *)

const char *getbrushChangedEvent(void)

const char *getclickedEvent(void)

const char *getcloseChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethighChangedEvent(void)

const char *gethoveredEvent(void)

const char *getlowChangedEvent(void)

const char *getopenChangedEvent(void)

const char *getpenChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *gettimestampChangedEvent(void)

QCategoryAxis クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcategoryaxis.html

仮引数 : QObject *

親クラス : QValueAxis

void append(QString categoryLabel, qreal categoryEndValue)

QStringList categoriesLabels(void)

int count(void)

qreal endValue(QString categoryLabel)

QCategoryAxis::AxisLabelsPosition labelsPosition(void)

void remove(QString categoryLabel)

void replaceLabel(QString oldLabel, QString newLabel)

void setLabelsPosition(QCategoryAxis::AxisLabelsPosition position)

void setStartValue(qreal min)

qreal startValue(QString categoryLabel)

void setcategoriesChangedEvent(const char *)

void setlabelsPositionChangedEvent(const char *)

const char *getcategoriesChangedEvent(void)

const char *getlabelsPositionChangedEvent(void)

QChar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qchar.html

仮引数 : int

QChar::Category category(void)

uchar cell(void)

unsigned char combiningClass(void)

QString decomposition(void)

QChar::Decomposition decompositionTag(void)

int digitValue(void)

QChar::Direction direction(void)

bool hasMirrored(void)

bool isDigit(void)

bool isHighSurrogate(void)

bool isLetter(void)

bool isLetterOrNumber(void)

bool isLowSurrogate(void)

bool isLower(void)

bool isMark(void)

bool isNonCharacter(void)

bool isNull(void)

bool isNumber(void)

bool isPrint(void)

bool isPunct(void)

bool isSpace(void)

bool isSurrogate(void)

bool isSymbol(void)

bool isTitleCase(void)

bool isUpper(void)

QChar mirroredChar(void)

uchar row(void)

QChar::Script script(void)

QChar toCaseFolded(void)

char toLatin1(void)

QChar toLower(void)

QChar toTitleCase(void)

QChar toUpper(void)

ushort unicode(void)

ushort unicode_2(void)

QChar::UnicodeVersion unicodeVersion(void)

QChar::Category category_2(uint ucs4)

unsigned char combiningClass_2(uint ucs4)

QChar::UnicodeVersion currentUnicodeVersion(void)

QString decomposition_2(uint ucs4)

QChar::Decomposition decompositionTag_2(uint ucs4)

int digitValue_2(uint ucs4)

QChar::Direction direction_2(uint ucs4)

QChar fromLatin1(char c)

bool hasMirrored_2(uint ucs4)

ushort highSurrogate(uint ucs4)

bool isDigit_2(uint ucs4)

bool isHighSurrogate_2(uint ucs4)

bool isLetter_2(uint ucs4)

bool isLetterOrNumber_2(uint ucs4)

bool isLowSurrogate_2(uint ucs4)

bool isLower_2(uint ucs4)

bool isMark_2(uint ucs4)

bool isNonCharacter_2(uint ucs4)

bool isNumber_2(uint ucs4)

bool isPrint_2(uint ucs4)

bool isPunct_2(uint ucs4)

bool isSpace_2(uint ucs4)

bool isSurrogate_2(uint ucs4)

bool isSymbol_2(uint ucs4)

bool isTitleCase_2(uint ucs4)

bool isUpper_2(uint ucs4)

ushort lowSurrogate(uint ucs4)

uint mirroredChar_2(uint ucs4)

bool requiresSurrogates(uint ucs4)

QChar::Script script_2(uint ucs4)

uint surrogateToUcs4(ushort high, ushort low)

uint surrogateToUcs4_2(QChar high, QChar low)

uint toCaseFolded_2(uint ucs4)

uint toLower_2(uint ucs4)

uint toTitleCase_2(uint ucs4)

uint toUpper_2(uint ucs4)

QChar::UnicodeVersion unicodeVersion_2(uint ucs4)

QChart クラス

C++ リファレンス : http://doc.qt.io/qt-5/qchart.html

仮引数 : QGraphicsItem *,Qt::WindowFlags

親クラス : QGraphicsWidget

void addAxis(QAbstractAxis *axis, Qt::Alignment alignment)

void addSeries(QAbstractSeries *series)

int animationDuration(void)

QEasingCurve animationEasingCurve(void)

QChart::AnimationOptions animationOptions(void)

QList<QAbstractAxis *> axes(Qt::Orientations orientation, QAbstractSeries *series)

QBrush backgroundBrush(void)

QPen backgroundPen(void)

qreal backgroundRoundness(void)

QChart::ChartType chartType(void)

void createDefaultAxes(void)

bool isBackgroundVisible(void)

bool isDropShadowEnabled(void)

bool isPlotAreaBackgroundVisible(void)

bool isZoomed(void)

QLegend *legend(void)

QLocale locale(void)

bool localizeNumbers(void)

QPointF mapToPosition(QPointF value, QAbstractSeries *series)

QPointF mapToValue(QPointF position, QAbstractSeries *series)

QMargins margins(void)

QRectF plotArea(void)

QBrush plotAreaBackgroundBrush(void)

QPen plotAreaBackgroundPen(void)

void removeAllSeries(void)

void removeAxis(QAbstractAxis *axis)

void removeSeries(QAbstractSeries *series)

void scroll(qreal dx, qreal dy)

QList<QAbstractSeries *> series(void)

void setAnimationDuration(int msecs)

void setAnimationEasingCurve(QEasingCurve curve)

void setAnimationOptions(QChart::AnimationOptions options)

void setBackgroundBrush(QBrush brush)

void setBackgroundPen(QPen pen)

void setBackgroundRoundness(qreal diameter)

void setBackgroundVisible(bool visible)

void setDropShadowEnabled(bool enabled)

void setLocale(QLocale locale)

void setLocalizeNumbers(bool localize)

void setMargins(QMargins margins)

void setPlotArea(QRectF rect)

void setPlotAreaBackgroundBrush(QBrush brush)

void setPlotAreaBackgroundPen(QPen pen)

void setPlotAreaBackgroundVisible(bool visible)

void setTheme(QChart::ChartTheme theme)

void setTitle(QString title)

void setTitleBrush(QBrush brush)

void setTitleFont(QFont font)

QChart::ChartTheme theme(void)

QString title(void)

QBrush titleBrush(void)

QFont titleFont(void)

void zoom(qreal factor)

void zoomIn(void)

void zoomIn_2(QRectF rect)

void zoomOut(void)

void zoomReset(void)

void setplotAreaChangedEvent(const char *)

const char *getplotAreaChangedEvent(void)

QChartView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qchartview.html

仮引数 : QWidget *

親クラス : QGraphicsView

QChart * chart(void)

QChartView::RubberBands rubberBand(void)

void setChart(QChart *chart)

void setRubberBand(QChartView::RubberBands rubberBand)

QCheckBox クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcheckbox.html

仮引数 : QWidget *parent

親クラス : QAbstractButton

int checkState(void)

bool isTristate(void)

void setCheckState(Qt::CheckState state)

void setTristate(bool y)

QSize minimumSizeHint(void)

QSize sizeHint(void)

void setstateChangedEvent(const char *)

void setclickedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void settoggledEvent(const char *)

const char *getstateChangedEvent(void)

const char *getclickedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *gettoggledEvent(void)

QChildEvent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qchildevent.html

仮引数 : QEvent::Type,QObject *

親クラス : QEvent

bool added(void)

QObject *child(void)

bool polished(void)

bool removed(void)

QClipboard クラス

C++ リファレンス : http://doc.qt.io/qt-5/qclipboard.html

void clear(QClipboard::Mode mode)

QImage image(QClipboard::Mode mode)

QMimeData * mimeData(QClipboard::Mode mode)

bool ownsClipboard(void)

bool ownsFindBuffer(void)

bool ownsSelection(void)

QPixmap pixmap(QClipboard::Mode mode)

void setImage(QImage image, QClipboard::Mode mode)

void setMimeData(QMimeData * src, QClipboard::Mode mode)

void setPixmap(QPixmap pixmap, QClipboard::Mode mode)

void setText(QString text, QClipboard::Mode mode)

bool supportsFindBuffer(void)

bool supportsSelection(void)

QString text(QClipboard::Mode mode)

QColor クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcolor.html

仮引数 : void

int alpha(void)

double alphaF(void)

int black(void)

double blackF(void)

int blue(void)

double blueF(void)

QColor convertTo(QColor::Spec colorSpec)

int cyan(void)

double cyanF(void)

QColor darker(int factor)

void getCmyk(int *c, int *m, int *y, int *k, int *a)

void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a)

void getHsl(int *h, int *s, int *l, int *a)

void getHslF(qreal *h, qreal *s, qreal *l, qreal *a)

void getHsv(int *h, int *s, int *v, int *a)

void getHsvF(qreal *h, qreal *s, qreal *v, qreal *a)

void getRgb(int *r, int *g, int *b, int *a)

void getRgbF(qreal *r, qreal *g, qreal *b, qreal *a)

int green(void)

double greenF(void)

int hslHue(void)

double hslHueF(void)

int hslSaturation(void)

double hslSaturationF(void)

int hsvHue(void)

double hsvHueF(void)

int hsvSaturation(void)

double hsvSaturationF(void)

int hue(void)

double hueF(void)

bool isValid(void)

QColor lighter(int factor)

int lightness(void)

double lightnessF(void)

int magenta(void)

double magentaF(void)

QString name(void)

int red(void)

double redF(void)

QRgb rgb(void)

QRgb rgba(void)

int saturation(void)

double saturationF(void)

void setAlpha(int alpha)

void setAlphaF(double alpha)

void setBlue(int blue)

void setBlueF(double blue)

void setCmyk(int c, int m, int y, int k, int a)

void setCmykF(double c, double m, double y, double k, double a)

void setGreen(int green)

void setGreenF(double green)

void setHsl(int h, int s, int l, int a)

void setHslF(double h, double s, double l, double a)

void setHsv(int h, int s, int v, int a)

void setHsvF(double h, double s, double v, double a)

void setNamedColor(QString)

void setRed(int red)

void setRedF(double red)

void setRgb(int r, int g, int b, int a)

void setRgbF(double r, double g, double b, double a)

void setRgba(QRgb rgba)

int spec(void)

QColor toCmyk(void)

QColor toHsl(void)

QColor toHsv(void)

QColor toRgb(void)

int value(void)

double valueF(void)

int yellow(void)

double yellowF(void)

QStringList colorNames(void)

QColor fromCmyk(int c, int m, int y, int k, int a)

QColor fromCmykF(double c, double m, double y, double k, double a)

QColor fromHsl(int h, int s, int l, int a)

QColor fromHslF(double h, double s, double l, double a)

QColor fromHsv(int h, int s, int v, int a)

QColor fromHsvF(double h, double s, double v, double a)

QColor fromRgb(int r, int g, int b, int a)

QColor fromRgbF(double r, double g, double b, double a)

QColor fromRgba(QRgb rgba)

bool isValidColor(QString)

QColorDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcolordialog.html

仮引数 : void

親クラス : QDialog

QColor currentColor(void)

void open(QObject * receiver, char * member)

QColorDialog::ColorDialogOptions options(void)

QColor selectedColor(void)

void setCurrentColor(QColor color)

void setOption(QColorDialog::ColorDialogOption option, bool on)

void setOptions(QColorDialog::ColorDialogOptions options)

bool testOption(QColorDialog::ColorDialogOption option)

QColor customColor(int index)

int customCount(void)

QColor getColor_2(QColor initial, QWidget * parent, QString title, QColorDialog::ColorDialogOptions options)

void setCustomColor(int index, QColor color)

void setStandardColor(int index, QColor color)

QColor standardColor(int index)

void setcolorSelectedEvent(const char *)

void setcurrentColorChangedEvent(const char *)

const char *getcolorSelectedEvent(void)

const char *getcurrentColorChangedEvent(void)

int getcolor(void)

QComboBox クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcombobox.html

仮引数 : QWidget *

親クラス : QWidget

void addItem(QString,int)

void addItems(QStringList)

QCompleter *completer(void)

int count(void)

int currentIndex(void)

QString currentText(void)

bool duplicatesEnabled(void)

int findData(QVariant, int role, Qt::MatchFlag flags)

int findText(QString, Qt::MatchFlag flags)

bool hasFrame(void)

void hidePopup(void)

QSize iconSize(void)

void insertItem(int index, QString, QVariant)

bool isEditable(void)

QVariant itemData(int index, int role)

QAbstractItemDelegate *itemDelegate(void)

QIcon itemIcon(int index)

QString itemText(int index)

QLineEdit *lineEdit(void)

int maxCount(void)

int maxVisibleItems(void)

int minimumContentsLength(void)

QAbstractItemModel *model(void)

int modelColumn(void)

void removeItem(int index)

QModelIndex rootModelIndex(void)

void setCompleter(QCompleter *completer)

void setDuplicatesEnabled(bool enable)

void setEditable(bool editable)

void setFrame(bool)

void setIconSize(QSize)

void setItemDelegate(QAbstractItemDelegate *delegate)

void setItemIcon(int index, QIcon)

void setItemText(int index, QString)

void setLineEdit(QLineEdit *edit)

void setMaxCount(int max)

void setMaxVisibleItems(int maxItems)

void setMinimumContentsLength(int characters)

void setModel(QAbstractItemModel *model)

void setModelColumn(int visibleColumn)

void setRootModelIndex(QModelIndex)

void setView(QAbstractItemView *itemView)

void showPopup(void)

QAbstractItemView *view(void)

void clear(void)

void clearEditText(void)

void setCurrentIndex(int index)

void setCurrentText(QString)

void setEditText(QString)

void setactivatedEvent(const char *)

void setcurrentIndexChangedEvent(const char *)

void seteditTextChangedEvent(const char *)

void sethighlightedEvent(const char *)

const char *getactivatedEvent(void)

const char *getcurrentIndexChangedEvent(void)

const char *geteditTextChangedEvent(void)

const char *gethighlightedEvent(void)

QCompleter クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcompleter.html

仮引数 : QObject *parent

親クラス : QObject

Qt::CaseSensitivity caseSensitivity(void)

int completionColumn(void)

int completionCount(void)

QCompleter::CompletionMode completionMode(void)

QAbstractItemModel *completionModel(void)

QString completionPrefix(void)

int completionRole(void)

QString currentCompletion(void)

QModelIndex currentIndex(void)

int currentRow(void)

Qt::MatchFlags filterMode(void)

int maxVisibleItems(void)

QAbstractItemModel * model(void)

QCompleter::ModelSorting modelSorting(void)

QAbstractItemView * popup(void)

void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity)

void setCompletionColumn(int column)

void setCompletionMode(QCompleter::CompletionMode mode)

void setCompletionRole(int role)

bool setCurrentRow(int row)

void setFilterMode(Qt::MatchFlags filterMode)

void setMaxVisibleItems(int maxItems)

void setModel(QAbstractItemModel *model)

void setModelSorting(QCompleter::ModelSorting sorting)

void setPopup(QAbstractItemView *popup)

void setWidget(QWidget *widget)

QWidget * widget(void)

bool wrapAround(void)

void complete(QRect rect)

void setCompletionPrefix(QString prefix)

void setWrapAround(bool wrap)

QCompleter2 クラス

仮引数 : QAbstractItemModel *model, QObject *parent

親クラス : QCompleter

QCompleter3 クラス

仮引数 : QStringList list, QObject *parent

親クラス : QCompleter

QConeGeometry クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qconegeometry.html

仮引数 : Qt3DCore::QNode *

float bottomRadius(void)

bool hasBottomEndcap(void)

bool hasTopEndcap(void)

Qt3DRender::QAttribute * indexAttribute(void)

float length(void)

Qt3DRender::QAttribute * normalAttribute(void)

Qt3DRender::QAttribute * positionAttribute(void)

int rings(void)

int slices(void)

Qt3DRender::QAttribute * texCoordAttribute(void)

float topRadius(void)

void updateIndices(void)

void updateVertices(void)

void setBottomRadius(float bottomRadius)

void setHasBottomEndcap(bool hasBottomEndcap)

void setHasTopEndcap(bool hasTopEndcap)

void setLength(float length)

void setRings(int rings)

void setSlices(int slices)

void setTopRadius(float topRadius)

QConeMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qconemesh.html

仮引数 : Qt3DCore::QNode *

float bottomRadius(void)

bool hasBottomEndcap(void)

bool hasTopEndcap(void)

float length(void)

int rings(void)

int slices(void)

float topRadius(void)

void setBottomRadius(float bottomRadius)

void setHasBottomEndcap(bool hasBottomEndcap)

void setHasTopEndcap(bool hasTopEndcap)

void setLength(float length)

void setRings(int rings)

void setSlices(int slices)

void setTopRadius(float topRadius)

QCoreApplication クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcoreapplication.html

親クラス : QObject

void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

void removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)

void quit(void)

void addLibraryPath(QString path)

QString applicationDirPath(void)

QString applicationFilePath(void)

QString applicationName(void)

qint64 applicationPid(void)

QString applicationVersion(void)

QStringList arguments(void)

bool closingDown(void)

QAbstractEventDispatcher * eventDispatcher(void)

int exec(void)

void exit(int returnCode)

bool installTranslator(QTranslator *translationFile)

QCoreApplication * instance(void)

bool isQuitLockEnabled(void)

QStringList libraryPaths(void)

QString organizationDomain(void)

QString organizationName(void)

void postEvent(QObject *receiver, QEvent *event, int priority)

void processEvents(QEventLoop::ProcessEventsFlags flags)

void processEvents_2(QEventLoop::ProcessEventsFlags flags, int maxtime)

void removeLibraryPath(QString path)

void removePostedEvents(QObject *receiver, int eventType)

bool removeTranslator(QTranslator *translationFile)

bool sendEvent(QObject *receiver, QEvent *event)

void sendPostedEvents(QObject *receiver, int event_type)

void setApplicationName(QString application)

void setApplicationVersion(QString version)

void setAttribute(Qt::ApplicationAttribute attribute, bool on)

void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)

void setLibraryPaths(QStringList paths)

void setOrganizationDomain(QString orgDomain)

void setOrganizationName(QString orgName)

void setQuitLockEnabled(bool enabled)

bool startingUp(void)

bool testAttribute(Qt::ApplicationAttribute attribute)

QString translate(char *context, char *sourceText, char *disambiguation, int n)

QCuboidMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qcuboidmesh.html

仮引数 : Qt3DCore::QNode *

float xExtent(void)

QSize xyMeshResolution(void)

QSize xzMeshResolution(void)

float yExtent(void)

QSize yzMeshResolution(void)

float zExtent(void)

void setXExtent(float xExtent)

void setXYMeshResolution(QSize resolution)

void setXZMeshResolution(QSize resolution)

void setYExtent(float yExtent)

void setYZMeshResolution(QSize resolution)

void setZExtent(float zExtent)

QCullFace クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qcullface.html

仮引数 : Qt3DCore::QNode *

Qt3DRender::QCullFace::CullingMode mode(void)

void setMode(Qt3DRender::QCullFace::CullingMode mode)

QCursor クラス

C++ リファレンス : http://doc.qt.io/qt-5/qcursor.html

仮引数 : void

QBitmap *bitmap(void)

QPoint hotSpot(void)

QBitmap *mask(void)

QPixmap pixmap(void)

void setShape(Qt::CursorShape shape)

Qt::CursorShape shape(void)

QPoint pos(void)

QPoint pos_2(QScreen *)

void setPos(int x, int y)

void setPos_2(QScreen *screen, int x, int y)

void setPos_3(QPoint)

void setPos_4(QScreen *screen, QPoint)

QCylinderMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qcylindermesh.html

仮引数 : Qt3DCore::QNode *

float length(void)

float radius(void)

int rings(void)

int slices(void)

void setLength(float length)

void setRadius(float radius)

void setRings(int rings)

void setSlices(int slices)

QDate クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdate.html

仮引数 : void

QDate addDays(int ndays)

QDate addMonths(int nmonths)

QDate addYears(int nyears)

int day(void)

int dayOfWeek(void)

int dayOfYear(void)

int daysInMonth(void)

int daysInYear(void)

int daysTo(QDate)

void getDate(int * year, int * month, int * day)

bool isNull(void)

bool isValid(void)

int month(void)

bool setDate(int year, int month, int day)

int toJulianDay(void)

QString toString(QString)

int weekNumber(int * yearNumber)

int year(void)

QDate currentDate(void)

QDate fromJulianDay(int jd)

QDate fromString(QString, QString)

bool isLeapYear(int year)

QString longDayName(int weekday)

QString longMonthName(int month)

QString shortDayName(int weekday)

QString shortMonthName(int month)

QDateEdit クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdateedit.html

仮引数 : QWidget *parent

親クラス : QDateTimeEdit

QDateTime クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdatetime.html

仮引数 : void

QDateTime addDays(int ndays)

QDateTime addMSecs(qint64 msecs)

QDateTime addMonths(int nmonths)

QDateTime addSecs(int s)

QDateTime addYears(int nyears)

QDate date(void)

int daysTo(QDateTime other)

bool isNull(void)

bool isValid(void)

qint64 msecsTo(QDateTime other)

int secsTo(QDateTime other)

void setDate(QDate date)

void setMSecsSinceEpoch(qint64 msecs)

void setTime(QTime time)

void setTimeSpec(Qt::TimeSpec spec)

void setTime_t(uint seconds)

QTime time(void)

Qt::TimeSpec timeSpec(void)

QDateTime toLocalTime(void)

qint64 toMSecsSinceEpoch(void)

QString toString(QString format)

QString toString_2(Qt::DateFormat format)

QDateTime toTimeSpec(Qt::TimeSpec specification)

uint toTime_t(void)

QDateTime toUTC(void)

QDateTime currentDateTime(void)

QDateTime currentDateTimeUtc(void)

qint64 currentMSecsSinceEpoch(void)

QDateTime fromMSecsSinceEpoch(qint64 msecs)

QDateTime fromString(QString string, Qt::DateFormat format)

QDateTime fromString_2(QString string, QString format)

QDateTime fromTime_t(uint seconds)

QDateTimeAxis クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdatetimeaxis.html

仮引数 : QObject *

親クラス : QAbstractAxis

QString format(void)

QDateTime max(void)

QDateTime min(void)

void setFormat(QString format)

void setMax(QDateTime max)

void setMin(QDateTime min)

void setRange(QDateTime min, QDateTime max)

void setTickCount(int count)

int tickCount(void)

void setformatChangedEvent(const char *)

void setmaxChangedEvent(const char *)

void setminChangedEvent(const char *)

void setrangeChangedEvent(const char *)

void settickCountChangedEvent(const char *)

const char *getformatChangedEvent(void)

const char *getmaxChangedEvent(void)

const char *getminChangedEvent(void)

const char *getrangeChangedEvent(void)

const char *gettickCountChangedEvent(void)

QDateTimeEdit クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdatetimeedit.html

仮引数 : QWidget *parent

親クラス : QAbstractSpinBox

bool calendarPopup(void)

QCalendarWidget *calendarWidget(void)

void clearMaximumDate(void)

void clearMaximumDateTime(void)

void clearMaximumTime(void)

void clearMinimumDate(void)

void clearMinimumDateTime(void)

void clearMinimumTime(void)

int currentSection(void)

int currentSectionIndex(void)

QDate date(void)

QDateTime dateTime(void)

QString displayFormat(void)

int displayedSections(void)

QDate maximumDate(void)

QDateTime maximumDateTime(void)

QTime maximumTime(void)

QDate minimumDate(void)

QDateTime minimumDateTime(void)

QTime minimumTime(void)

int sectionAt(int index)

int sectionCount(void)

QString sectionText(QDateTimeEdit::Section section)

void setCalendarPopup(bool enable)

void setCalendarWidget(QCalendarWidget *calendarWidget)

void setCurrentSection(QDateTimeEdit::Section section)

void setCurrentSectionIndex(int index)

void setDateRange(QDate,QDate)

void setDateTimeRange(QDateTime,QDateTime)

void setDisplayFormat(QString)

void setMaximumDate(QDate)

void setMaximumDateTime(QDateTime)

void setMaximumTime(QTime)

void setMinimumDate(QDate)

void setMinimumDateTime(QDateTime)

void setMinimumTime(QTime)

void setSelectedSection(QDateTimeEdit::Section section)

void setTimeRange(QTime,QTime)

void setTimeSpec(Qt::TimeSpec spec)

QTime time(void)

Qt::TimeSpec timeSpec(void)

void setDate(QDate)

void setDateTime(QDateTime)

void setTime(QTime)

QDepthTest クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qdepthtest.html

仮引数 : Qt3DCore::QNode *

Qt3DRender::QDepthTest::DepthFunction depthFunction(void)

void setDepthFunction(Qt3DRender::QDepthTest::DepthFunction depthFunction)

QDesktopServices クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdesktopservices.html

bool openUrl(QUrl)

void setUrlHandler(QString, QObject *receiver, const char *method)

void unsetUrlHandler(QString)

QDesktopWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdesktopwidget.html

仮引数 : void

親クラス : QWidget

QRect availableGeometry(int screen)

bool isVirtualDesktop(void)

int primaryScreen(void)

QWidget *screen(int screen)

int screenCount(void)

QRect screenGeometry(int screen)

int screenNumber(QWidget *widget)

QDial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdial.html

仮引数 : QWidget *parent

親クラス : QAbstractSlider

int notchSize(void)

qreal notchTarget(void)

bool notchesVisible(void)

void setNotchTarget(double target)

bool wrapping(void)

QSize minimumSizeHint(void)

QSize sizeHint(void)

void setNotchesVisible(bool visible)

void setWrapping(bool on)

void setactionTriggeredEvent(const char *)

void setrangeChangedEvent(const char *)

void setsliderMovedEvent(const char *)

void setsliderPressedEvent(const char *)

void setsliderReleasedEvent(const char *)

void setvalueChangedEvent(const char *)

const char *getactionTriggeredEvent(void)

const char *getrangeChangedEvent(void)

const char *getsliderMovedEvent(void)

const char *getsliderPressedEvent(void)

const char *getsliderReleasedEvent(void)

const char *getvalueChangedEvent(void)

QDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdialog.html

仮引数 : QWidget *parent

親クラス : QWidget

bool isSizeGripEnabled(void)

int result(void)

void setModal(bool modal)

void setResult(int i)

void setSizeGripEnabled(bool)

void accept(void)

void done(int r) # RingQt では void donedialog(int r) を使用

int exec(void)

void open(void)

void reject(void)

QDiffuseSpecularMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qdiffusespecularmaterial.html

仮引数 : Qt3DCore::QNode *

QColor ambient(void)

QVariant diffuse(void)

bool isAlphaBlendingEnabled(void)

QVariant normal(void)

float shininess(void)

QVariant specular(void)

float textureScale(void)

void setAlphaBlendingEnabled(bool enabled)

void setAmbient(QColor ambient)

void setDiffuse(QVariant diffuse)

void setNormal(QVariant normal)

void setShininess(float shininess)

void setSpecular(QVariant specular)

void setTextureScale(float textureScale)

QDir クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdir.html

仮引数 : void

QString absoluteFilePath(QString fileName)

QString absolutePath(void)

QString canonicalPath(void)

bool cd(QString dirName)

bool cdUp(void)

uint count(void)

QString dirName(void)

QFileInfoList entryInfoList(QStringList nameFilters, QDir::Filters filters, QDir::SortFlags sort)

QFileInfoList entryInfoList_2(QDir::Filters filters, QDir::SortFlags sort)

QStringList entryList(QStringList nameQDir::Filters, QDir::Filters filters, QDir::SortFlags sort)

QStringList entryList_2(QDir::Filters filters, QDir::SortFlags sort)

bool exists(QString name)

bool exists_2(void)

QString filePath(QString fileName)

QDir::Filters filter(void)

bool isAbsolute(void)

bool isReadable(void)

bool isRelative(void)

bool isRoot(void)

bool makeAbsolute(void)

bool mkdir(QString dirName)

bool mkpath(QString dirPath)

QStringList nameFilters(void)

QString path(void)

void refresh(void)

QString relativeFilePath(QString fileName)

bool remove(QString fileName)

bool removeRecursively(void)

bool rename(QString oldName, QString newName)

bool rmdir(QString dirName)

bool rmpath(QString dirPath)

void setFilter(QDir::Filters filters)

void setNameFilters(QStringList nameQDir::Filters)

void setPath(QString path)

void setSorting(QDir::SortFlags sort)

QDir::SortFlags sorting(void)

void swap(QDir other)

void addSearchPath(QString prefix, QString path)

QString cleanPath(QString path)

QDir current(void)

QString currentPath(void)

QFileInfoList drives(void)

QString fromNativeSeparators(QString pathName)

QDir home(void)

QString homePath(void)

bool isAbsolutePath(QString path)

bool isRelativePath(QString path)

bool match(QString filter, QString fileName)

bool match_2(QStringList filters, QString fileName)

QDir root(void)

QString rootPath(void)

QStringList searchPaths(QString prefix)

QChar separator(void)

bool setCurrent(QString path)

void setSearchPaths(QString prefix, QStringList searchPaths)

QDir temp(void)

QString tempPath(void)

QString toNativeSeparators(QString pathName)

QDirModel クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdirmodel.html

仮引数 : void

QIcon fileIcon(QModelIndex)

QFileInfo fileInfo(QModelIndex)

QString fileName(QModelIndex)

QString filePath(QModelIndex)

int filter(void)

QFileIconProvider *iconProvider(void)

QModelIndex index(QString path, int column)

bool isDir(QModelIndex)

bool isReadOnly(void)

bool lazyChildCount(void)

QModelIndex mkdir(QModelIndex parent, QString name)

QStringList nameFilters(void)

bool remove(QModelIndex index)

bool resolveSymlinks(void)

bool rmdir(QModelIndex index)

void setFilter(QDir::Filter filters)

void setIconProvider(QFileIconProvider *provider)

void setLazyChildCount(bool enable)

void setNameFilters(QStringList filters)

void setReadOnly(bool enable)

void setResolveSymlinks(bool enable)

void setSorting(QDir::SortFlag sort)

int sorting(void)

void refresh(QModelIndex parent)

QDockWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdockwidget.html

仮引数 : QWidget *parent,Qt::WindowType flag

親クラス : QWidget

int allowedAreas(void)

int features(void)

bool isAreaAllowed(Qt::DockWidgetArea area)

bool isFloating(void)

void setAllowedAreas(Qt::DockWidgetArea areas)

void setFeatures(QDockWidget::DockWidgetFeature features)

void setFloating(bool floating)

void setTitleBarWidget(QWidget *widget)

void setWidget(QWidget *widget)

QWidget *titleBarWidget(void)

QAction *toggleViewAction(void)

QWidget *widget(void)

void allowedAreasChanged(Qt::DockWidgetArea allowedAreas)

void dockLocationChanged(Qt::DockWidgetArea area)

void featuresChanged(QDockWidget::DockWidgetFeature features)

void topLevelChanged(bool topLevel)

void visibilityChanged(bool visible)

void setallowedAreasChangedEvent(const char *)

void setdockLocationChangedEvent(const char *)

void setfeaturesChangedEvent(const char *)

void settopLevelChangedEvent(const char *)

void setvisibilityChangedEvent(const char *)

const char *getallowedAreasChangedEvent(void)

const char *getdockLocationChangedEvent(void)

const char *getfeaturesChangedEvent(void)

const char *gettopLevelChangedEvent(void)

const char *getvisibilityChangedEvent(void)

QDrag クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdrag.html

仮引数 : QObject *

親クラス : QObject

Qt::DropAction defaultAction(void)

QPixmap dragCursor(Qt::DropAction action)

Qt::DropAction exec(Qt::DropActions supportedActions)

Qt::DropAction exec_2(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction)

QPoint hotSpot(void)

QMimeData *mimeData(void)

QPixmap pixmap(void)

void setDragCursor(QPixmap cursor, Qt::DropAction action)

void setHotSpot(QPoint hotspot)

void setMimeData(QMimeData * data)

void setPixmap(QPixmap pixmap)

QObject * source(void)

Qt::DropActions supportedActions(void)

QObject * target(void)

void setactionChangedEvent(const char *)

void settargetChangedEvent(const char *)

const char *getactionChangedEvent(void)

const char *gettargetChangedEvent(void)

QDragEnterEvent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdragenterevent.html

仮引数 : QPoint,Qt::DropActions,const QMimeData *,Qt::MouseButtons,Qt::KeyboardModifiers

親クラス : QDragMoveEvent

QDragLeaveEvent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdragleaveevent.html

仮引数 : void

親クラス : QEvent

QDragMoveEvent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdragmoveevent.html

仮引数 : QPoint,Qt::DropActions,const QMimeData *,Qt::MouseButtons,Qt::KeyboardModifiers,QEvent::Type

親クラス : QDropEvent

void accept(QRect rectangle)

void accept_2(void)

QRect answerRect(void)

void ignore(QRect rectangle)

void ignore_2(void)

QDropEvent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qdropevent.html

仮引数 : QPointF,Qt::DropActions,const QMimeData *,Qt::MouseButtons,Qt::KeyboardModifiers,QEvent::Type

親クラス : QEvent

void acceptProposedAction(void)

Qt::DropAction dropAction(void)

Qt::KeyboardModifiers keyboardModifiers(void)

QMimeData * mimeData(void)

Qt::MouseButtons mouseButtons(void)

QPoint pos(void)

QPointF posF(void)

Qt::DropActions possibleActions(void)

Qt::DropAction proposedAction(void)

void setDropAction(Qt::DropAction action)

QObject * source(void)

QEffect クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qeffect.html

仮引数 : Qt3DCore::QNode *

void addParameter(Qt3DRender::QParameter *parameter)

void addTechnique(Qt3DRender::QTechnique *t)

QVector<Qt3DRender::QParameter *> parameters(void)

void removeParameter(Qt3DRender::QParameter *parameter)

void removeTechnique(Qt3DRender::QTechnique *t)

QVector<Qt3DRender::QTechnique *> techniques(void)

QEntity クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dcore-qentity.html

仮引数 : Qt3DCore::QNode *

親クラス : QNode

void addComponent(Qt3DCore::QComponent *comp)

Qt3DCore::QComponentVector components(void)

Qt3DCore::QEntity * parentEntity(void)

void removeComponent(Qt3DCore::QComponent *comp)

QEvent クラス

C++ リファレンス : http://doc.qt.io/qt-5/qevent.html

仮引数 : QEvent::Type Type

void accept(void)

void ignore(void)

bool isAccepted(void)

void setAccepted(bool accepted)

bool spontaneous(void)

int type(void)

QExtrudedTextMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qextrudedtextmesh.html

仮引数 : Qt3DCore::QNode *

float depth(void)

QFont font(void)

QString text(void)

void setDepth(float depth)

void setFont(QFont font)

void setText(QString text)

QFile クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfile.html

仮引数 : void

親クラス : QFileDevice

bool copy(QString newName)

bool exists(void)

bool link(QString linkName)

bool open(FILE *fh, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)

bool open_2(int fd, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)

bool open_3(QIODevice::OpenMode mode)

bool remove(void)

bool rename(QString newName)

void setFileName(QString name)

QString symLinkTarget(void)

bool copy_2(QString fileName, QString newName)

QString decodeName(QByteArray localFileName)

QString decodeName_2(char *localFileName)

QByteArray encodeName(QString fileName)

bool exists_2(QString fileName)

bool link_2(QString fileName, QString linkName)

QFile::Permissions permissions(QString fileName)

bool remove_2(QString fileName)

bool rename_2(QString oldName, QString newName)

bool resize(QString fileName, qint64 sz)

bool setPermissions(QString fileName, QFile::Permissions permissions)

QString symLinkTarget_2(QString fileName)

QFile2 クラス

仮引数 : QString

親クラス : QFile

QFileDevice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfiledevice.html

親クラス : QIODevice

QFileDevice::FileError error(void)

bool flush(void)

int handle(void)

uchar * map(qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags)

QFileDevice::Permissions permissions(void)

bool resize(qint64 sz)

QString fileName(void)

bool unmap(uchar *address)

void unsetError(void)

QFileDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfiledialog.html

仮引数 : QWidget *parent

親クラス : QDialog

QFileDialog::AcceptMode acceptMode(void)

QString defaultSuffix(void)

QDir directory(void)

QUrl directoryUrl(void)

QFileDialog::FileMode fileMode(void)

QDir::Filters filter(void)

QStringList history(void)

QFileIconProvider * iconProvider(void)

QAbstractItemDelegate * itemDelegate(void)

QString labelText(QFileDialog::DialogLabel label)

QStringList mimeTypeFilters(void)

QStringList nameFilters(void)

void open(QObject * receiver, char * member)

QFileDialog::Options options(void)

QAbstractProxyModel * proxyModel(void)

bool restoreState(QByteArray state)

QByteArray saveState(void)

void selectFile(QString filename)

void selectMimeTypeFilter(QString filter)

void selectNameFilter(QString filter)

void selectUrl(QUrl url)

QStringList selectedFiles(void)

QString selectedNameFilter(void)

QList<QUrl> selectedUrls(void)

void setAcceptMode(QFileDialog::AcceptMode mode)

void setDefaultSuffix(QString suffix)

void setDirectory(QString directory)

void setDirectory_2(QDir directory)

void setDirectoryUrl(QUrl directory)

void setFileMode(QFileDialog::FileMode mode)

void setFilter(QDir::Filters filters)

void setHistory(QStringList paths)

void setIconProvider(QFileIconProvider * provider)

void setItemDelegate(QAbstractItemDelegate * delegate)

void setLabelText(QFileDialog::DialogLabel label, QString text)

void setMimeTypeFilters(QStringList filters)

void setNameFilter(QString filter)

void setNameFilters(QStringList filters)

void setOption(QFileDialog::Option option, bool on)

void setOptions(QFileDialog::Options options)

void setProxyModel(QAbstractProxyModel * proxyModel)

void setSidebarUrls(QList<QUrl> urls)

void setViewMode(QFileDialog::ViewMode mode)

QList<QUrl> sidebarUrls(void)

bool testOption(QFileDialog::Option option)

QFileDialog::ViewMode viewMode(void)

QString getExistingDirectory(QWidget * parent, QString caption, QString dir, QFileDialog::Options options)

QUrl getExistingDirectoryUrl(QWidget * parent, QString caption, QUrl dir, QFileDialog::Options options, QStringList supportedSchemes)

QString getOpenFileName(QWidget * parent, QString caption, QString dir, QString filter)

QString getOpenFileName_2(QWidget * parent, QString caption, QString dir, QString filter, QString * selectedFilter, QFileDialog::Options options)

QStringList getOpenFileNames(QWidget * parent, QString caption, QString dir, QString filter, QString * selectedFilter, QFileDialog::Options options)

QUrl getOpenFileUrl(QWidget * parent, QString caption, QUrl dir, QString filter, QString * selectedFilter, QFileDialog::Options options, QStringList supportedSchemes)

QList<QUrl> getOpenFileUrls(QWidget * parent, QString caption, QUrl dir, QString filter, QString * selectedFilter, QFileDialog::Options options, QStringList supportedSchemes)

QString getSaveFileName(QWidget * parent, QString caption, QString dir, QString filter)

QString getSaveFileName_2(QWidget * parent, QString caption, QString dir, QString filter, QString * selectedFilter, QFileDialog::Options options)

QUrl getSaveFileUrl(QWidget * parent, QString caption, QUrl dir, QString filter, QString * selectedFilter, QFileDialog::Options options, QStringList supportedSchemes)

void setcurrentChangedEvent(const char *)

void setcurrentUrlChangedEvent(const char *)

void setdirectoryEnteredEvent(const char *)

void setdirectoryUrlEnteredEvent(const char *)

void setfileSelectedEvent(const char *)

void setfilesSelectedEvent(const char *)

void setfilterSelectedEvent(const char *)

void seturlSelectedEvent(const char *)

void seturlsSelectedEvent(const char *)

const char *getcurrentChangedEvent(void)

const char *getcurrentUrlChangedEvent(void)

const char *getdirectoryEnteredEvent(void)

const char *getdirectoryUrlEnteredEvent(void)

const char *getfileSelectedEvent(void)

const char *getfilesSelectedEvent(void)

const char *getfilterSelectedEvent(void)

const char *geturlSelectedEvent(void)

const char *geturlsSelectedEvent(void)

void saveFileContent(QByteArray fileContent,QString fileNameHint)

void getOpenFileContent(const char *cFileTypes, const char *cCode)

List *FileContentList(void)

QFileInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfileinfo.html

仮引数 : void

QDir absoluteDir(void)

QString absoluteFilePath(void)

QString absolutePath(void)

QString baseName(void)

QString bundleName(void)

bool caching(void)

QString canonicalFilePath(void)

QString canonicalPath(void)

QString completeBaseName(void)

QString completeSuffix(void)

QDateTime created(void)

QDir dir(void)

bool exists(void)

QString fileName(void)

QString filePath(void)

QString group(void)

int groupId(void)

bool isAbsolute(void)

bool isBundle(void)

bool isDir(void)

bool isExecutable(void)

bool isFile(void)

bool isHidden(void)

bool isNativePath(void)

bool isReadable(void)

bool isRelative(void)

bool isRoot(void)

bool isSymLink(void)

bool isWritable(void)

QDateTime lastModified(void)

QDateTime lastRead(void)

bool makeAbsolute(void)

QString owner(void)

uint ownerId(void)

QString path(void)

bool permission(QFileDevice::Permission permissions)

int permissions(void)

void refresh(void)

void setCaching(bool enable)

void setFile(QString)

int size(void)

QString suffix(void)

void swap(QFileInfo)

QString symLinkTarget(void)

QFileSystemModel クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfilesystemmodel.html

仮引数 : void

QIcon fileIcon(QModelIndex)

QFileInfo fileInfo(QModelIndex)

QString fileName(QModelIndex)

QString filePath(QModelIndex)

int filter(void)

QFileIconProvider *iconProvider(void)

QModelIndex index(QString, int column)

bool isDir(QModelIndex)

bool isReadOnly(void)

QDateTime lastModified(QModelIndex)

QModelIndex mkdir(QModelIndex,QString)

QVariant myComputer(int role)

bool nameFilterDisables(void)

QStringList nameFilters(void)

int permissions(QModelIndex)

bool remove(QModelIndex)

bool resolveSymlinks(void)

bool rmdir(QModelIndex)

QDir rootDirectory(void)

QString rootPath(void)

void setFilter(QDir::Filter filters)

void setIconProvider(QFileIconProvider *provider)

void setNameFilterDisables(bool enable)

void setNameFilters(QStringList)

void setReadOnly(bool enable)

void setResolveSymlinks(bool enable)

QModelIndex setRootPath(QString)

int size(QModelIndex)

QString type(QModelIndex)

bool canFetchMore(QModelIndex)

int columnCount(void)

QVariant data( QModelIndex index, int role)

bool dropMimeData( QMimeData *data, Qt::DropAction action, int row, int column, QModelIndex parent)

void fetchMore( QModelIndex parent)

int flags( QModelIndex index)

bool hasChildren( QModelIndex parent )

QVariant headerData(int section, Qt::Orientation orientation, int role )

QMimeData * mimeData( QModelIndexList indexes)

QStringList mimeTypes(void)

QModelIndex parent( QModelIndex index)

int rowCount( QModelIndex parent)

bool setData( QModelIndex idx, QVariant value, int role)

void sort(int column, Qt::SortOrder order )

int supportedDropActions(void)

QFirstPersonCameraController クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qfirstpersoncameracontroller.html

仮引数 : Qt3DCore::QNode *

親クラス : QAbstractCameraController

QFont クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfont.html

仮引数 : QString, int, int, bool

bool bold(void)

int capitalization(void)

QString defaultFamily(void)

bool exactMatch(void)

QString family(void)

bool fixedPitch(void)

bool fromString(QString)

int hintingPreference(void)

bool isCopyOf(QFont)

bool italic(void)

bool kerning(void)

QString key(void)

QString lastResortFamily(void)

QString lastResortFont(void)

double letterSpacing(void)

int letterSpacingType(void)

bool overline(void)

int pixelSize(void)

int pointSize(void)

double pointSizeF(void)

bool rawMode(void)

QString rawName(void)

QFont resolve(QFont)

void setBold(bool enable)

void setCapitalization(QFont::Capitalization caps)

void setFamily(QString)

void setFixedPitch(bool enable)

void setHintingPreference(QFont::HintingPreference hintingPreference)

void setItalic(bool enable)

void setKerning(bool enable)

void setLetterSpacing(QFont::SpacingType type, double spacing)

void setOverline(bool enable)

void setPixelSize(int pixelSize)

void setPointSize(int pointSize)

void setPointSizeF(double pointSize)

void setRawMode(bool enable)

void setRawName(QString)

void setStretch(int factor)

void setStrikeOut(bool enable)

void setStyle(QFont::Style style)

void setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy)

void setStyleName(QString)

void setStyleStrategy(QFont::StyleStrategy s)

void setUnderline(bool enable)

void setWeight(int weight)

void setWordSpacing(double spacing)

int stretch(void)

bool strikeOut(void)

int style(void)

int styleHint(void)

QString styleName(void)

int styleStrategy(void)

QString toString(void)

bool underline(void)

int weight(void)

double wordSpacing(void)

void insertSubstitution(QString,QString)

void insertSubstitutions(QString,QStringList)

QString substitute(QString)

QStringList substitutes(QString)

QStringList substitutions(void)

QFontDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfontdialog.html

仮引数 : void

親クラス : QDialog

QFont currentFont(void)

void open(QObject * receiver, char * member)

QFontDialog::FontDialogOptions options(void)

QFont selectedFont(void)

void setCurrentFont(QFont font)

void setOption(QFontDialog::FontDialogOption option, bool on)

void setOptions(QFontDialog::FontDialogOptions options)

bool testOption(QFontDialog::FontDialogOption option)

QFont getFont_2(bool * ok, QFont initial, QWidget * parent, QString title, QFontDialog::FontDialogOptions options)

QFont getFont_3(bool * ok, QWidget * parent)

void setcurrentFontChangedEvent(const char *)

void setfontSelectedEvent(const char *)

const char *getcurrentFontChangedEvent(void)

const char *getfontSelectedEvent(void)

int getfont(void)

QFontMetrics クラス

C++ リファレンス : http://doc.qt.io/qt-5/qfontmetrics.html

仮引数 : QFont

int ascent(void)

int averageCharWidth(void)

QRect boundingRect(QChar ch)

QRect boundingRect_2( QString text)

QRect boundingRect_3(int x, int y, int width, int height, int flags, QString text, int tabStops , int * tabArray )

QRect boundingRect_4( QRect rect, int flags, QString text, int tabStops , int * tabArray )

int descent(void)

QString elidedText( QString text, Qt::TextElideMode mode, int width, int flags )

int height(void)

bool inFont(QChar ch)

bool inFontUcs4(uint character)

int leading(void)

int leftBearing(QChar ch)

int lineSpacing(void)

int lineWidth(void)

int maxWidth(void)

int minLeftBearing(void)

int minRightBearing(void)

int overlinePos(void)

int rightBearing(QChar ch)

QSize size(int flags, QString text, int tabStops , int * tabArray )

int strikeOutPos(void)

QRect tightBoundingRect( QString text)

int underlinePos(void)

int width( QString text, int len )

int width_2(QChar ch)

int xHeight(void)

QForwardRenderer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qforwardrenderer.html

仮引数 : Qt3DCore::QNode *

Qt3DCore::QEntity * camera(void)

QColor clearColor(void)

QSize externalRenderTargetSize(void)

float gamma(void)

bool isFrustumCullingEnabled(void)

QObject * surface(void)

QRectF viewportRect(void)

void setCamera(Qt3DCore::QEntity *camera)

void setClearColor(QColor clearColor)

void setExternalRenderTargetSize(QSize size)

void setFrustumCullingEnabled(bool enabled)

void setGamma(float gamma)

void setSurface(QObject *surface)

void setViewportRect(QRectF viewportRect)

QFrame クラス

C++ リファレンス : http://doc.qt.io/qt-5/qframe.html

仮引数 : QWidget *parent, Qt::WindowType flag

親クラス : QWidget

QRect frameRect(void)

int frameShadow(void)

int frameShape(void)

int frameStyle(void)

int frameWidth(void)

int lineWidth(void)

int midLineWidth(void)

void setFrameRect(QRect)

void setFrameShadow(QFrame::Shadow)

void setFrameShape(QFrame::Shape)

void setFrameStyle(int style)

void setLineWidth(int)

void setMidLineWidth(int)

QSize sizeHint(void)

QFrame2 クラス

仮引数 : void

親クラス : QFrame

QFrame3 クラス

仮引数 : QWidget *parent

親クラス : QFrame

QFrameAction クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dlogic-qframeaction.html

仮引数 : Qt3DCore::QNode *

void settriggeredEvent(const char *)

const char *gettriggeredEvent(void)

QGeoAddress クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeoaddress.html

仮引数 : void

QString city(void)

void clear(void)

QString country(void)

QString countryCode(void)

QString county(void)

QString district(void)

bool isEmpty(void)

bool isTextGenerated(void)

QString postalCode(void)

void setCity(QString city)

void setCountry(QString country)

void setCountryCode(QString countryCode)

void setCounty(QString county)

void setDistrict(QString district)

void setPostalCode(QString postalCode)

void setState(QString state)

void setStreet(QString street)

void setText(QString text)

QString state(void)

QString street(void)

QString text(void)

QGeoAreaMonitorInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeoareamonitorinfo.html

仮引数 : QString

QGeoShape area(void)

QDateTime expiration(void)

QString identifier(void)

bool isPersistent(void)

bool isValid(void)

QString name(void)

QVariantMap notificationParameters(void)

void setArea(QGeoShape newShape)

void setExpiration(QDateTime expiry)

void setName(QString name)

void setNotificationParameters(QVariantMap parameters)

void setPersistent(bool isPersistent)

QGeoAreaMonitorSource クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeoareamonitorsource.html

仮引数 : QObject *

親クラス : QObject

QString sourceName(void)

QStringList availableSources(void)

QGeoAreaMonitorSource * createDefaultSource(QObject * parent)

QGeoAreaMonitorSource * createSource(QString sourceName, QObject * parent)

QGeoCircle クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeocircle.html

仮引数 : void

QGeoCoordinate center(void)

qreal radius(void)

void setCenter(QGeoCoordinate center)

void setRadius(qreal radius)

void translate(double degreesLatitude, double degreesLongitude)

QGeoCircle translated(double degreesLatitude, double degreesLongitude)

QGeoCoordinate クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeocoordinate.html

仮引数 : void

double altitude(void)

QGeoCoordinate atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp)

qreal azimuthTo(QGeoCoordinate other)

qreal distanceTo(QGeoCoordinate other)

bool isValid(void)

double latitude(void)

double longitude(void)

void setAltitude(double altitude)

void setLatitude(double latitude)

void setLongitude(double longitude)

QString toString(QGeoCoordinate::CoordinateFormat format)

QGeoCoordinate::CoordinateType type(void)

QGeoPositionInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeopositioninfo.html

仮引数 : void

qreal attribute(QGeoPositionInfo::Attribute attribute)

QGeoCoordinate coordinate(void)

bool hasAttribute(QGeoPositionInfo::Attribute attribute)

bool isValid(void)

void removeAttribute(QGeoPositionInfo::Attribute attribute)

void setAttribute(QGeoPositionInfo::Attribute attribute, qreal value)

void setCoordinate(QGeoCoordinate coordinate)

void setTimestamp(QDateTime timestamp)

QDateTime timestamp(void)

QGeoPositionInfoSource クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeopositioninfosource.html

親クラス : QObject

QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods(void)

QString sourceName(void)

int updateInterval(void)

void seterrorEvent(const char *)

void setpositionUpdatedEvent(const char *)

void setupdateTimeoutEvent(const char *)

const char *geterrorEvent(void)

const char *getpositionUpdatedEvent(void)

const char *getupdateTimeoutEvent(void)

QStringList availableSources(void)

QGeoPositionInfoSource *createDefaultSource(QObject *parent)

QGeoPositionInfoSource *createSource(QString sourceName, QObject *parent)

QGeoRectangle クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeorectangle.html

仮引数 : void

親クラス : QGeoShape

QGeoCoordinate bottomLeft(void)

QGeoCoordinate bottomRight(void)

QGeoCoordinate center(void)

bool contains(QGeoRectangle rectangle)

double height(void)

bool intersects(QGeoRectangle rectangle)

void setBottomLeft(QGeoCoordinate bottomLeft)

void setBottomRight(QGeoCoordinate bottomRight)

void setCenter(QGeoCoordinate center)

void setHeight(double degreesHeight)

void setTopLeft(QGeoCoordinate topLeft)

void setTopRight(QGeoCoordinate topRight)

void setWidth(double degreesWidth)

QGeoCoordinate topLeft(void)

QGeoCoordinate topRight(void)

void translate(double degreesLatitude, double degreesLongitude)

QGeoRectangle translated(double degreesLatitude, double degreesLongitude)

QGeoRectangle united(QGeoRectangle rectangle)

double width(void)

QGeoSatelliteInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeosatelliteinfo.html

仮引数 : void

qreal attribute(QGeoSatelliteInfo::Attribute attribute)

bool hasAttribute(QGeoSatelliteInfo::Attribute attribute)

void removeAttribute(QGeoSatelliteInfo::Attribute attribute)

int satelliteIdentifier(void)

QGeoSatelliteInfo::SatelliteSystem satelliteSystem(void)

void setAttribute(QGeoSatelliteInfo::Attribute attribute, qreal value)

void setSatelliteIdentifier(int satId)

void setSatelliteSystem(QGeoSatelliteInfo::SatelliteSystem system)

void setSignalStrength(int signalStrength)

int signalStrength(void)

QGeoSatelliteInfoSource クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeosatelliteinfosource.html

QString sourceName(void)

int updateInterval(void)

QGeoShape クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgeoshape.html

仮引数 : void

bool contains(QGeoCoordinate coordinate)

bool isEmpty(void)

bool isValid(void)

QGeoShape::ShapeType type(void)

QGoochMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qgoochmaterial.html

仮引数 : Qt3DCore::QNode *

float alpha(void)

float beta(void)

QColor cool(void)

QColor diffuse(void)

float shininess(void)

QColor specular(void)

QColor warm(void)

void setAlpha(float alpha)

void setBeta(float beta)

void setCool(QColor cool)

void setDiffuse(QColor diffuse)

void setShininess(float shininess)

void setSpecular(QColor specular)

void setWarm(QColor warm)

QGradient クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgradient.html

仮引数 : void

QGradient::CoordinateMode coordinateMode(void)

void setColorAt(qreal position, QColor color)

void setCoordinateMode(QGradient::CoordinateMode mode)

void setSpread(QGradient::Spread method)

void setStops(QGradientStops stopPoints)

QGradient::Spread spread(void)

QGradientStops stops(void)

QGradient::Type type(void)

QGraphicsScene クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgraphicsscene.html

仮引数 : QObject *

親クラス : QObject

QGraphicsItem * activePanel(void)

QGraphicsWidget * activeWindow(void)

QGraphicsEllipseItem * addEllipse(QRectF rect, QPen pen, QBrush brush)

QGraphicsEllipseItem * addEllipse_2(qreal x, qreal y, qreal w, qreal h, QPen pen, QBrush brush)

void addItem(QGraphicsItem *item)

QGraphicsLineItem * addLine(QLineF line, QPen pen)

QGraphicsLineItem * addLine_2(qreal x1, qreal y1, qreal x2, qreal y2, QPen pen)

QGraphicsPathItem * addPath(QPainterPath path, QPen pen, QBrush brush)

QGraphicsPixmapItem * addPixmap(QPixmap pixmap)

QGraphicsPolygonItem * addPolygon(QPolygonF polygon, QPen pen, QBrush brush)

QGraphicsRectItem * addRect(QRectF rect, QPen pen, QBrush brush)

QGraphicsRectItem * addRect_2(qreal x, qreal y, qreal w, qreal h, QPen pen, QBrush brush)

QGraphicsSimpleTextItem * addSimpleText(QString text, QFont font)

QGraphicsTextItem * addText(QString text, QFont font)

QGraphicsProxyWidget * addWidget(QWidget *widget, Qt::WindowFlags wFlags)

QBrush backgroundBrush(void)

int bspTreeDepth(void)

void clearFocus(void)

QList<QGraphicsItem *> collidingItems(QGraphicsItem *item, Qt::ItemSelectionMode mode)

QGraphicsItemGroup * createItemGroup(QList<QGraphicsItem *> items)

void destroyItemGroup(QGraphicsItemGroup *group)

QGraphicsItem * focusItem(void)

QBrush foregroundBrush(void)

bool hasFocus(void)

qreal height(void)

QVariant inputMethodQuery(Qt::InputMethodQuery query)

void invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers)

bool isActive(void)

QGraphicsItem * itemAt(QPointF position, QTransform deviceTransform)

QGraphicsItem * itemAt_2(qreal x, qreal y, QTransform deviceTransform)

QGraphicsScene::ItemIndexMethod itemIndexMethod(void)

QList<QGraphicsItem *> items(Qt::SortOrder order)

QList<QGraphicsItem *> items_2(QPointF pos, Qt::ItemSelectionMode mode, Qt::SortOrder order, QTransform deviceTransform)

QList<QGraphicsItem *> items_3(QRectF rect, Qt::ItemSelectionMode mode, Qt::SortOrder order, QTransform deviceTransform)

QList<QGraphicsItem *> items_4(QPolygonF polygon, Qt::ItemSelectionMode mode, Qt::SortOrder order, QTransform deviceTransform)

QList<QGraphicsItem *> items_5(QPainterPath path, Qt::ItemSelectionMode mode, Qt::SortOrder order, QTransform deviceTransform)

QList<QGraphicsItem *> items_6(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, QTransform deviceTransform)

QRectF itemsBoundingRect(void)

qreal minimumRenderSize(void)

QGraphicsItem * mouseGrabberItem(void)

QPalette palette(void)

void removeItem(QGraphicsItem *item)

void render(QPainter *painter, QRectF target, QRectF source, Qt::AspectRatioMode aspectRatioMode)

QRectF sceneRect(void)

QList<QGraphicsItem *> selectedItems(void)

QPainterPath selectionArea(void)

bool sendEvent(QGraphicsItem *item, QEvent *event)

void setActivePanel(QGraphicsItem *item)

void setActiveWindow(QGraphicsWidget *widget)

void setBackgroundBrush(QBrush brush)

void setBspTreeDepth(int depth)

void setFocus(Qt::FocusReason focusReason)

void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason)

void setForegroundBrush(QBrush brush)

void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)

void setMinimumRenderSize(qreal minSize)

void setPalette(QPalette palette)

void setSceneRect(QRectF rect)

void setSceneRect_2(qreal x, qreal y, qreal w, qreal h)

void setSelectionArea(QPainterPath path, QTransform deviceTransform)

void setSelectionArea_2(QPainterPath path, Qt::ItemSelectionMode mode, QTransform deviceTransform)

void setSelectionArea_3(QPainterPath path, Qt::ItemSelectionOperation selectionOperation, Qt::ItemSelectionMode mode, QTransform deviceTransform)

void setStickyFocus(bool enabled)

void setStyle(QStyle *style)

bool stickyFocus(void)

QStyle * style(void)

void update(qreal x, qreal y, qreal w, qreal h)

QList<QGraphicsView *> views(void)

qreal width(void)

void advance(void)

void clear(void)

void clearSelection(void)

void invalidate_2(QRectF rect, QGraphicsScene::SceneLayers layers)

void update_2(QRectF rect)

void setchangedEvent(const char *)

void setfocusItemChangedEvent(const char *)

void setsceneRectChangedEvent(const char *)

void setselectionChangedEvent(const char *)

const char *getchangedEvent(void)

const char *getfocusItemChangedEvent(void)

const char *getsceneRectChangedEvent(void)

const char *getselectionChangedEvent(void)

QGraphicsVideoItem クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgraphicsvideoitem.html

仮引数 : void

Qt::AspectRatioMode aspectRatioMode(void)

QSizeF nativeSize(void)

QPointF offset(void)

void setAspectRatioMode(Qt::AspectRatioMode mode)

void setOffset(QPointF offset)

void setSize(QSizeF size)

QSizeF size(void)

QGraphicsView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgraphicsview.html

仮引数 : QWidget *

親クラス : QAbstractScrollArea

Qt::Alignment alignment(void)

QBrush backgroundBrush(void)

QGraphicsView::CacheMode cacheMode(void)

void centerOn(QPointF pos)

void centerOn_2(qreal x, qreal y)

void centerOn_3(QGraphicsItem *item)

QGraphicsView::DragMode dragMode(void)

void ensureVisible(QRectF rect, int xmargin, int ymargin)

void ensureVisible_2(qreal x, qreal y, qreal w, qreal h, int xmargin, int ymargin)

void ensureVisible_3(QGraphicsItem *item, int xmargin, int ymargin)

void fitInView(QRectF rect, Qt::AspectRatioMode aspectRatioMode)

void fitInView_2(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode)

void fitInView_3(QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode)

QBrush foregroundBrush(void)

bool isInteractive(void)

bool isTransformed(void)

QGraphicsItem * itemAt(QPoint pos)

QGraphicsItem * itemAt_2(int x, int y)

QList<QGraphicsItem *> items(void)

QList<QGraphicsItem *> items_2(QPoint pos)

QList<QGraphicsItem *> items_3(int x, int y)

QList<QGraphicsItem *> items_4(QRect rect, Qt::ItemSelectionMode mode)

QList<QGraphicsItem *> items_5(int x, int y, int w, int h, Qt::ItemSelectionMode mode)

QList<QGraphicsItem *> items_6(QPolygon polygon, Qt::ItemSelectionMode mode)

QList<QGraphicsItem *> items_7(QPainterPath path, Qt::ItemSelectionMode mode)

QPoint mapFromScene(QPointF point)

QPolygon mapFromScene_2(QRectF rect)

QPolygon mapFromScene_3(QPolygonF polygon)

QPainterPath mapFromScene_4(QPainterPath path)

QPoint mapFromScene_5(qreal x, qreal y)

QPolygon mapFromScene_6(qreal x, qreal y, qreal w, qreal h)

QPointF mapToScene(QPoint point)

QPolygonF mapToScene_2(QRect rect)

QPolygonF mapToScene_3(QPolygon polygon)

QPainterPath mapToScene_4(QPainterPath path)

QPointF mapToScene_5(int x, int y)

QPolygonF mapToScene_6(int x, int y, int w, int h)

QMatrix matrix(void)

QGraphicsView::OptimizationFlags optimizationFlags(void)

void render(QPainter *painter, QRectF target, QRect source, Qt::AspectRatioMode aspectRatioMode)

QPainter::RenderHints renderHints(void)

void resetCachedContent(void)

void resetMatrix(void)

void resetTransform(void)

QGraphicsView::ViewportAnchor resizeAnchor(void)

void rotate(qreal angle)

QRect rubberBandRect(void)

Qt::ItemSelectionMode rubberBandSelectionMode(void)

void scale(qreal sx, qreal sy)

QGraphicsScene * scene(void)

QRectF sceneRect(void)

void setAlignment(Qt::Alignment alignment)

void setBackgroundBrush(QBrush brush)

void setCacheMode(QGraphicsView::CacheMode mode)

void setDragMode(QGraphicsView::DragMode mode)

void setForegroundBrush(QBrush brush)

void setInteractive(bool allowed)

void setMatrix(QMatrix matrix, bool combine)

void setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled)

void setOptimizationFlags(QGraphicsView::OptimizationFlags flags)

void setRenderHint(QPainter::RenderHint hint, bool enabled)

void setRenderHints(QPainter::RenderHints hints)

void setResizeAnchor(QGraphicsView::ViewportAnchor anchor)

void setRubberBandSelectionMode(Qt::ItemSelectionMode mode)

void setScene(QGraphicsScene *scene)

void setSceneRect(QRectF rect)

void setSceneRect_2(qreal x, qreal y, qreal w, qreal h)

void setTransform(QTransform matrix, bool combine)

void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor)

void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode)

void shear(qreal sh, qreal sv)

QTransform transform(void)

QGraphicsView::ViewportAnchor transformationAnchor(void)

void translate(qreal dx, qreal dy)

QTransform viewportTransform(void)

QGraphicsView::ViewportUpdateMode viewportUpdateMode(void)

void invalidateScene(QRectF rect, QGraphicsScene::SceneLayers layers)

void updateScene(QList<QRectF> rects)

void updateSceneRect(QRectF rect)

QGridLayout クラス

C++ リファレンス : http://doc.qt.io/qt-5/qgridlayout.html

仮引数 : void

void addItem(QLayoutItem * item, int row, int column, int rowSpan , int columnSpan , Qt::Alignment alignment )

void addLayout(QLayout * layout, int row, int column, Qt::Alignment alignment )

void addLayout_2(QLayout * layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment )

void addWidget(QWidget * widget, int row, int column, Qt::Alignment alignment )

void addWidget_2(QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment )

QRect cellRect(int row, int column)

int columnCount(void)

int columnMinimumWidth(int column)

int columnStretch(int column)

void getItemPosition(int index, int * row, int * column, int * rowSpan, int * columnSpan)

int horizontalSpacing(void)

QLayoutItem * itemAtPosition(int row, int column)

Qt::Corner originCorner(void)

int rowCount(void)

int rowMinimumHeight(int row)

int rowStretch(int row)

void setColumnMinimumWidth(int column, int minSize)

void setColumnStretch(int column, int stretch)

void setHorizontalSpacing(int spacing)

void setOriginCorner(Qt::Corner corner)

void setRowMinimumHeight(int row, int minSize)

void setRowStretch(int row, int stretch)

void setSpacing(int spacing)

void setVerticalSpacing(int spacing)

int spacing(void)

int verticalSpacing(void)

QGuiApplication クラス

C++ リファレンス : http://doc.qt.io/qt-5/qguiapplication.html

親クラス : QCoreApplication

仮引数 : int,char **

qreal devicePixelRatio(void)

bool isSavingSession(void)

bool isSessionRestored(void)

QString sessionId(void)

QString sessionKey(void)

QWindowList allWindows(void)

QString applicationDisplayName(void)

Qt::ApplicationState applicationState(void)

void changeOverrideCursor(QCursor cursor)

QClipboard * clipboard(void)

bool desktopSettingsAware(void)

int exec(void)

QObject * focusObject(void)

QWindow * focusWindow(void)

QFont font(void)

QInputMethod * inputMethod(void)

bool isLeftToRight(void)

bool isRightToLeft(void)

Qt::KeyboardModifiers keyboardModifiers(void)

Qt::LayoutDirection layoutDirection(void)

QWindow * modalWindow(void)

Qt::MouseButtons mouseButtons(void)

QCursor * overrideCursor(void)

QPalette palette(void)

QString platformName(void)

QPlatformNativeInterface * platformNativeInterface(void)

QScreen * primaryScreen(void)

Qt::KeyboardModifiers queryKeyboardModifiers(void)

bool quitOnLastWindowClosed(void)

void restoreOverrideCursor(void)

QList<QScreen *> screens(void)

void setApplicationDisplayName(QString name)

void setDesktopSettingsAware(bool on)

void setFont(QFont font)

void setLayoutDirection(Qt::LayoutDirection direction)

void setOverrideCursor(QCursor cursor)

void setPalette(QPalette pal)

void setQuitOnLastWindowClosed(bool quit)

QStyleHints * styleHints(void)

void sync(void)

QWindow * topLevelAt(QPoint pos)

QWindowList topLevelWindows(void)

void setapplicationDisplayNameChangedEvent(const char *)

void setapplicationStateChangedEvent(const char *)

void setcommitDataRequestEvent(const char *)

void setfocusObjectChangedEvent(const char *)

void setfocusWindowChangedEvent(const char *)

void setfontDatabaseChangedEvent(const char *)

void setlastWindowClosedEvent(const char *)

void setlayoutDirectionChangedEvent(const char *)

void setpaletteChangedEvent(const char *)

void setprimaryScreenChangedEvent(const char *)

void setsaveStateRequestEvent(const char *)

void setscreenAddedEvent(const char *)

void setscreenRemovedEvent(const char *)

const char *getapplicationDisplayNameChangedEvent(void)

const char *getapplicationStateChangedEvent(void)

const char *getcommitDataRequestEvent(void)

const char *getfocusObjectChangedEvent(void)

const char *getfocusWindowChangedEvent(void)

const char *getfontDatabaseChangedEvent(void)

const char *getlastWindowClosedEvent(void)

const char *getlayoutDirectionChangedEvent(void)

const char *getpaletteChangedEvent(void)

const char *getprimaryScreenChangedEvent(void)

const char *getsaveStateRequestEvent(void)

const char *getscreenAddedEvent(void)

const char *getscreenRemovedEvent(void)

QHBarModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhbarmodelmapper.html

仮引数 : QObject *

親クラス : QObject

int columnCount(void)

int firstBarSetRow(void)

int firstColumn(void)

int lastBarSetRow(void)

QAbstractItemModel * model(void)

QAbstractBarSeries * series(void)

void setColumnCount(int columnCount)

void setFirstBarSetRow(int firstBarSetRow)

void setFirstColumn(int firstColumn)

void setLastBarSetRow(int lastBarSetRow)

void setModel(QAbstractItemModel *model)

void setSeries(QAbstractBarSeries *series)

void setcolumnCountChangedEvent(const char *)

void setfirstBarSetRowChangedEvent(const char *)

void setfirstColumnChangedEvent(const char *)

void setlastBarSetRowChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setseriesReplacedEvent(const char *)

const char *getcolumnCountChangedEvent(void)

const char *getfirstBarSetRowChangedEvent(void)

const char *getfirstColumnChangedEvent(void)

const char *getlastBarSetRowChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getseriesReplacedEvent(void)

QHBoxLayout クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhboxlayout.html

仮引数 : void

親クラス : QBoxLayout

void addWidget(QWidget *)

void addLayout(QLayout *)

QHBoxPlotModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhboxplotmodelmapper.html

仮引数 : QObject *

親クラス : QObject

int columnCount(void)

int firstBoxSetRow(void)

int firstColumn(void)

int lastBoxSetRow(void)

QAbstractItemModel * model(void)

QBoxPlotSeries * series(void)

void setColumnCount(int rowCount)

void setFirstBoxSetRow(int firstBoxSetRow)

void setFirstColumn(int firstColumn)

void setLastBoxSetRow(int lastBoxSetRow)

void setModel(QAbstractItemModel *model)

void setSeries(QBoxPlotSeries *series)

void setcolumnCountChangedEvent(const char *)

void setfirstBoxSetRowChangedEvent(const char *)

void setfirstColumnChangedEvent(const char *)

void setlastBoxSetRowChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setseriesReplacedEvent(const char *)

const char *getcolumnCountChangedEvent(void)

const char *getfirstBoxSetRowChangedEvent(void)

const char *getfirstColumnChangedEvent(void)

const char *getlastBoxSetRowChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getseriesReplacedEvent(void)

QHCandlestickModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhcandlestickmodelmapper.html

仮引数 : QObject *

親クラス : QCandlestickModelMapper

int closeColumn(void)

int firstSetRow(void)

int highColumn(void)

int lastSetRow(void)

int lowColumn(void)

int openColumn(void)

void setCloseColumn(int closeColumn)

void setFirstSetRow(int firstSetRow)

void setHighColumn(int highColumn)

void setLastSetRow(int lastSetRow)

void setLowColumn(int lowColumn)

void setOpenColumn(int openColumn)

void setTimestampColumn(int timestampColumn)

int timestampColumn(void)

void setcloseColumnChangedEvent(const char *)

void setfirstSetRowChangedEvent(const char *)

void sethighColumnChangedEvent(const char *)

void setlastSetRowChangedEvent(const char *)

void setlowColumnChangedEvent(const char *)

void setopenColumnChangedEvent(const char *)

void settimestampColumnChangedEvent(const char *)

const char *getcloseColumnChangedEvent(void)

const char *getfirstSetRowChangedEvent(void)

const char *gethighColumnChangedEvent(void)

const char *getlastSetRowChangedEvent(void)

const char *getlowColumnChangedEvent(void)

const char *getopenColumnChangedEvent(void)

const char *gettimestampColumnChangedEvent(void)

QHPieModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhpiemodelmapper.html

仮引数 : QObject *

親クラス : QPieModelMapper

int columnCount(void)

int firstColumn(void)

int labelsRow(void)

QAbstractItemModel * model(void)

QPieSeries * series(void)

void setColumnCount(int columnCount)

void setFirstColumn(int firstColumn)

void setLabelsRow(int labelsRow)

void setModel(QAbstractItemModel *model)

void setSeries(QPieSeries *series)

void setValuesRow(int valuesRow)

int valuesRow(void)

void setcolumnCountChangedEvent(const char *)

void setfirstColumnChangedEvent(const char *)

void setlabelsRowChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setseriesReplacedEvent(const char *)

void setvaluesRowChangedEvent(const char *)

const char *getcolumnCountChangedEvent(void)

const char *getfirstColumnChangedEvent(void)

const char *getlabelsRowChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getseriesReplacedEvent(void)

const char *getvaluesRowChangedEvent(void)

QHXYModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhxymodelmapper.html

仮引数 : QObject *

親クラス : QXYModelMapper

int columnCount(void)

int firstColumn(void)

QAbstractItemModel * model(void)

QXYSeries * series(void)

void setColumnCount(int columnCount)

void setFirstColumn(int firstColumn)

void setModel(QAbstractItemModel *model)

void setSeries(QXYSeries *series)

void setXRow(int xRow)

void setYRow(int yRow)

int xRow(void)

int yRow(void)

void setcolumnCountChangedEvent(const char *)

void setfirstColumnChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setseriesReplacedEvent(const char *)

void setxRowChangedEvent(const char *)

void setyRowChangedEvent(const char *)

const char *getcolumnCountChangedEvent(void)

const char *getfirstColumnChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getseriesReplacedEvent(void)

const char *getxRowChangedEvent(void)

const char *getyRowChangedEvent(void)

QHeaderView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qheaderview.html

仮引数 : Qt::Orientation, QWidget *

親クラス : QAbstractItemView

bool cascadingSectionResizes(void)

int count(void)

Qt::Alignment defaultAlignment(void)

int defaultSectionSize(void)

int hiddenSectionCount(void)

void hideSection(int logicalIndex)

bool highlightSections(void)

bool isSectionHidden(int logicalIndex)

bool isSortIndicatorShown(void)

int length(void)

int logicalIndex(int visualIndex)

int logicalIndexAt(int position)

int logicalIndexAt_2(int x, int y)

int logicalIndexAt_3( QPoint pos)

int maximumSectionSize(void)

int minimumSectionSize_2(void)

void moveSection(int from, int to)

int offset(void)

Qt::Orientation orientation(void)

int resizeContentsPrecision(void)

void resizeSection(int logicalIndex, int size)

void resizeSections(QHeaderView::ResizeMode mode)

bool restoreState( QByteArray state)

QByteArray saveState(void)

int sectionPosition(int logicalIndex)

QHeaderView::ResizeMode sectionResizeMode(int logicalIndex)

int sectionSize(int logicalIndex)

int sectionSizeHint(int logicalIndex)

int sectionViewportPosition(int logicalIndex)

bool sectionsClickable(void)

bool sectionsHidden(void)

bool sectionsMovable(void)

bool sectionsMoved(void)

void setCascadingSectionResizes(bool enable)

void setDefaultAlignment(Qt::Alignment alignment)

void setDefaultSectionSize(int size)

void setHighlightSections(bool highlight)

void setMaximumSectionSize(int size)

void setMinimumSectionSize(int size)

void setResizeContentsPrecision(int precision)

void setSectionHidden(int logicalIndex, bool hide)

void setSectionResizeMode(QHeaderView::ResizeMode mode)

void setSectionResizeMode_2(int logicalIndex, QHeaderView::ResizeMode mode)

void setSectionsClickable(bool clickable)

void setSectionsMovable(bool movable)

void setSortIndicator(int logicalIndex, Qt::SortOrder order)

void setSortIndicatorShown(bool show)

void setStretchLastSection(bool stretch)

void showSection(int logicalIndex)

Qt::SortOrder sortIndicatorOrder(void)

int sortIndicatorSection(void)

bool stretchLastSection(void)

int stretchSectionCount(void)

void swapSections(int first, int second)

int visualIndex(int logicalIndex)

int visualIndexAt(int position)

void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast)

void setOffset(int offset)

void setOffsetToLastSection(void)

void setOffsetToSectionPosition(int visualSectionNumber)

void setgeometriesChangedEvent(const char *)

void setsectionClickedEvent(const char *)

void setsectionCountChangedEvent(const char *)

void setsectionDoubleClickedEvent(const char *)

void setsectionEnteredEvent(const char *)

void setsectionHandleDoubleClickedEvent(const char *)

void setsectionMovedEvent(const char *)

void setsectionPressedEvent(const char *)

void setsectionResizedEvent(const char *)

void setsortIndicatorChangedEvent(const char *)

const char *getgeometriesChangedEvent(void)

const char *getsectionClickedEvent(void)

const char *getsectionCountChangedEvent(void)

const char *getsectionDoubleClickedEvent(void)

const char *getsectionEnteredEvent(void)

const char *getsectionHandleDoubleClickedEvent(void)

const char *getsectionMovedEvent(void)

const char *getsectionPressedEvent(void)

const char *getsectionResizedEvent(void)

const char *getsortIndicatorChangedEvent(void)

void geteventparameters(void)

QHorizontalBarSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhorizontalbarseries.html

仮引数 : QObject *

親クラス : QAbstractBarSeries

QAbstractSeries::SeriesType type(void)

QHorizontalPercentBarSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhorizontalpercentbarseries.html

仮引数 : QObject *

親クラス : QAbstractBarSeries

QAbstractSeries::SeriesType type(void)

QHorizontalStackedBarSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhorizontalstackedbarseries.html

仮引数 : QObject *

親クラス : QAbstractBarSeries

QAbstractSeries::SeriesType type(void)

QHostAddress クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhostaddress.html

仮引数 : void

void clear(void)

bool isInSubnet(QHostAddress, int netmask)

bool isNull(void)

int protocol(void)

QString scopeId(void)

bool setAddress(QString)

int toIPv4Address(void)

Q_IPV6ADDR toIPv6Address(void)

QString toString(void)

QHostInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qhostinfo.html

仮引数 : void

int error(void)

QString errorString(void)

QString hostName(void)

int lookupId(void)

void setError(QHostInfo::HostInfoError error)

void setErrorString(QString)

void setHostName(QString)

void setLookupId(int id)

void abortHostLookup(int id)

QHostInfo fromName(QString)

QString localDomainName(void)

QString localHostName(void)

QIODevice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qiodevice.html

仮引数 : void

親クラス : QObject

QString errorString(void)

bool getChar(char *c)

bool isOpen(void)

bool isReadable(void)

bool isTextModeEnabled(void)

bool isWritable(void)

int openMode(void)

int peek(char *data, int maxSize)

int read(char *data, int maxSize)

int readLine(char *data, int maxSize)

void ungetChar(char c)

int write(const char *data, int maxSize)

bool atEnd(void)

bool canReadLine(void)

void close(void)

bool open(QIODevice::OpenMode flags)

qint64 pos(void)

bool seek(qint64 pos)

qint64 size(void)

void setaboutToCloseEvent(const char *)

void setbytesWrittenEvent(const char *)

void setreadChannelFinishedEvent(const char *)

void setreadyReadEvent(const char *)

const char *getaboutToCloseEvent(void)

const char *getbytesWrittenEvent(void)

const char *getreadChannelFinishedEvent(void)

const char *getreadyReadEvent(void)

QIcon クラス

C++ リファレンス : http://doc.qt.io/qt-5/qicon.html

仮引数 : QPixmap

QImage クラス

C++ リファレンス : http://doc.qt.io/qt-5/qimage.html

仮引数 : void

bool allGray(void)

int bitPlaneCount(void)

uchar *bits(void)

int byteCount(void)

int bytesPerLine(void)

qint64 cacheKey(void)

QRgb color(int i)

int colorCount(void)

const uchar *constBits(void)

const uchar *constScanLine(int i)

QImage convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags)

QImage copy(int x, int y, int width, int height)

QImage createAlphaMask(Qt::ImageConversionFlags flags)

QImage createHeuristicMask(bool clipTight)

QImage createMaskFromColor(QRgb color, Qt::MaskMode mode)

int depth(void)

int dotsPerMeterX(void)

int dotsPerMeterY(void)

void fill(QColor)

QImage::Format format(void)

bool hasAlphaChannel(void)

int height(void)

void invertPixels(QImage::InvertMode mode)

bool isGrayscale(void)

bool isNull(void)

bool load(QString, const char *format) # RingQt では bool loadimage(QString, const char *format) を使用

bool loadFromData(QByteArray, const char * format)

QImage mirrored(bool horizontal, bool vertical)

QPoint offset(void)

QRgb pixel(int x, int y)

int pixelIndex(int x, int y)

QRect rect(void)

QImage rgbSwapped(void)

bool save(QString, const char * format, int quality)

QImage scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode, Qt::TransformationMode transformMode)

QImage scaledToHeight(int height, Qt::TransformationMode mode )

QImage scaledToWidth(int width, Qt::TransformationMode mode)

uchar *scanLine(int i)

void setColor(int index, QRgb colorValue)

void setColorCount(int colorCount)

void setDotsPerMeterX(int x)

void setDotsPerMeterY(int y)

void setOffset(QPoint)

void setPixel(int x, int y, uint index_or_rgb)

void setText(QString,QString)

QSize size(void)

void swap(QImage)

QString text(QString)

QStringList textKeys(void)

QImage transformed(QMatrix, Qt::TransformationMode mode)

bool valid(int x, int y)

int width(void)

QInputAspect クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dinput-qinputaspect.html

仮引数 : QObject *

QStringList availablePhysicalDevices(void)

Qt3DInput::QAbstractPhysicalDevice * createPhysicalDevice(QString name)

QInputDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qinputdialog.html

仮引数 : QWidget *

親クラス : QDialog

QString cancelButtonText(void)

QStringList comboBoxItems(void)

int doubleDecimals(void)

double doubleMaximum(void)

double doubleMinimum(void)

double doubleValue(void)

int inputMode(void)

int intMaximum(void)

int intMinimum(void)

int intStep(void)

int intValue(void)

bool isComboBoxEditable(void)

QString labelText(void)

QString okButtonText(void)

void open(QObject *receiver, const char *member)

int options(void)

void setCancelButtonText(QString)

void setComboBoxEditable(bool editable)

void setComboBoxItems(QStringList)

void setDoubleDecimals(int decimals)

void setDoubleMaximum(double max)

void setDoubleMinimum(double min)

void setDoubleRange(double min, double max)

void setDoubleValue(double value)

void setInputMode(QInputDialog::InputMode mode)

void setIntMaximum(int max)

void setIntMinimum(int min)

void setIntRange(int min, int max)

void setIntStep(int step)

void setIntValue(int value)

void setLabelText(QString)

void setOkButtonText(QString)

void setOption(QInputDialog::InputDialogOption option, bool on)

void setOptions(QInputDialog::InputDialogOption options)

void setTextEchoMode(QLineEdit::EchoMode mode)

void setTextValue(QString)

bool testOption(QInputDialog::InputDialogOption option)

int textEchoMode(void)

QString textValue(void)

double getDouble(QWidget *parent,QString,QString, double value, double min, double max , int decimals, bool *ok, Qt::WindowType flags)

int getInt(QWidget *parent,QString,QString, int value, int min, int max, int step, bool *ok, Qt::WindowType flags)

QJsonArray クラス

C++ リファレンス : http://doc.qt.io/qt-5/qjsonarray.html

仮引数 : void

void append(QJsonValue value)

QJsonValue at(int i)

bool contains(QJsonValue value)

int count(void)

bool empty(void)

QJsonValue first(void)

void insert(int i, QJsonValue value)

bool isEmpty(void)

QJsonValue last(void)

void pop_back(void)

void pop_front(void)

void prepend(QJsonValue value)

void push_back(QJsonValue value)

void push_front(QJsonValue value)

void removeAt(int i)

void removeFirst(void)

void removeLast(void)

void replace(int i, QJsonValue value)

int size(void)

QJsonValue takeAt(int i)

QVariantList toVariantList(void)

QJsonArray fromStringList(QStringList list)

QJsonArray fromVariantList(QVariantList list)

QJsonDocument クラス

C++ リファレンス : http://doc.qt.io/qt-5/qjsondocument.html

仮引数 : void

QJsonArray array(void)

bool isArray(void)

bool isEmpty(void)

bool isNull(void)

bool isObject(void)

QJsonObject object(void)

const char * rawData(int * size)

void setArray(QJsonArray array)

void setObject(QJsonObject object)

QByteArray toBinaryData(void)

QByteArray toJson(QJsonDocument::JsonFormat format)

QVariant toVariant(void)

QJsonDocument fromBinaryData( QByteArray data, QJsonDocument::DataValidation validation)

QJsonDocument fromJson( QByteArray json, QJsonParseError * error)

QJsonDocument fromRawData( char * data, int size, QJsonDocument::DataValidation validation)

QJsonDocument fromVariant( QVariant variant)

QJsonObject クラス

C++ リファレンス : http://doc.qt.io/qt-5/qjsonobject.html

仮引数 : void

bool contains(QString key)

int count(void)

bool empty(void)

bool isEmpty(void)

QStringList keys(void)

int length(void)

void remove(QString key)

int size(void)

QJsonValue take(QString key)

QVariantMap toVariantMap(void)

QJsonValue value(QString key)

QJsonObject fromVariantMap(QVariantMap map)

QJsonParseError クラス

C++ リファレンス : http://doc.qt.io/qt-5/qjsonparseerror.html

仮引数 : void

QString errorString(void)

QJsonValue クラス

C++ リファレンス : http://doc.qt.io/qt-5/qjsonvalue.html

仮引数 : void

bool isArray(void)

bool isBool(void)

bool isDouble(void)

bool isNull(void)

bool isObject(void)

bool isString(void)

bool isUndefined(void)

QJsonArray toArray(QJsonArray defaultValue)

QJsonArray toArray_2(void)

bool toBool(bool defaultValue )

double toDouble(double defaultValue )

int toInt(int defaultValue )

QJsonObject toObject(QJsonObject defaultValue)

QJsonObject toObject_2(void)

QString toString(QString defaultValue )

QVariant toVariant(void)

QJsonValue::Type type(void)

QJsonValue fromVariant(QVariant variant)

QKeySequence クラス

C++ リファレンス : http://doc.qt.io/qt-5/qkeysequence.html

仮引数 : QString

QLCDNumber クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlcdnumber.html

仮引数 : QWidget *

親クラス : QFrame

bool checkOverflow(double num)

int digitCount(void)

int intValue(void)

int mode(void)

int segmentStyle(void)

void setDigitCount(int numDigits)

void setMode(QLCDNumber::Mode)

void setSegmentStyle(QLCDNumber::SegmentStyle)

bool smallDecimalPoint(void)

double value(void)

void display(double)

void setBinMode(void)

void setDecMode(void)

void setHexMode(void)

void setOctMode(void)

void setSmallDecimalPoint(bool)

QLabel クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlabel.html

仮引数 : QWidget *

親クラス : QWidget

int alignment(void)

QWidget *buddy(void)

bool hasScaledContents(void)

bool hasSelectedText(void)

int indent(void)

int margin(void)

QMovie *movie(void)

bool openExternalLinks(void)

QPicture *picture(void)

QPixmap *pixmap(void)

QString selectedText(void)

int selectionStart(void)

void setAlignment(Qt::AlignmentFlag)

void setBuddy(QWidget *buddy)

void setIndent(int)

void setMargin(int)

void setOpenExternalLinks(bool open)

void setScaledContents(bool)

void setSelection(int start, int length)

void setTextFormat(Qt::TextFormat)

void setTextInteractionFlags(Qt::TextInteractionFlag flags)

void setWordWrap(bool on)

QString text(void)

int textFormat(void)

int textInteractionFlags(void)

bool wordWrap(void)

void clear(void)

void setMovie(QMovie *movie)

void setNum(double num)

void setPicture(QPicture)

void setPixmap(QPixmap)

void setText(QString)

QLayout クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlayout.html

仮引数 : QWidget *

親クラス : QObject

bool activate(void)

void addWidget(QWidget *w)

QMargins contentsMargins(void)

QRect contentsRect(void)

void getContentsMargins(int *left, int *top, int *right, int *bottom)

bool isEnabled(void)

QWidget *menuBar(void)

QWidget *parentWidget(void)

void removeItem(QLayoutItem *item)

void removeWidget(QWidget *widget)

bool setAlignment(QWidget *w, Qt::Alignment alignment)

void setAlignment_2(Qt::Alignment alignment)

bool setAlignment_3(QLayout *l, Qt::Alignment alignment)

void setContentsMargins(int left, int top, int right, int bottom)

void setContentsMargins_2(QMargins margins)

void setEnabled(bool enable)

void setMenuBar(QWidget *widget)

void setSizeConstraint(QLayout::SizeConstraint)

void setSpacing(int)

QLayout::SizeConstraint sizeConstraint(void)

int spacing(void)

void update(void)

QSize closestAcceptableSize( QWidget * widget, QSize size)

QLegend クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlegend.html

親クラス : QGraphicsWidget

Qt::Alignment alignment(void)

void attachToChart(void)

QColor borderColor(void)

QBrush brush(void)

QColor color(void)

void detachFromChart(void)

QFont font(void)

bool isAttachedToChart(void)

bool isBackgroundVisible(void)

QBrush labelBrush(void)

QColor labelColor(void)

QLegend::MarkerShape markerShape(void)

QList<QLegendMarker *> markers(QAbstractSeries *series)

QPen pen(void)

bool reverseMarkers(void)

void setAlignment(Qt::Alignment alignment)

void setBackgroundVisible(bool visible)

void setBorderColor(QColor color)

void setBrush(QBrush brush)

void setColor(QColor color)

void setFont(QFont font)

void setLabelBrush(QBrush brush)

void setLabelColor(QColor color)

void setMarkerShape(QLegend::MarkerShape shape)

void setPen(QPen pen)

void setReverseMarkers(bool reverseMarkers)

void setShowToolTips(bool show)

bool showToolTips(void)

QLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlegendmarker.html

仮引数 : void

親クラス : QObject

QBrush brush(void)

QFont font(void)

bool isVisible(void)

QString label(void)

QBrush labelBrush(void)

QPen pen(void)

QAbstractSeries * series(void)

void setBrush(QBrush brush)

void setFont(QFont font)

void setLabel(QString label)

void setLabelBrush(QBrush brush)

void setPen(QPen pen)

void setShape(QLegend::MarkerShape shape)

void setVisible(bool visible)

QLegend::MarkerShape shape(void)

void setbrushChangedEvent(const char *)

void setclickedEvent(const char *)

void setfontChangedEvent(const char *)

void sethoveredEvent(const char *)

void setlabelBrushChangedEvent(const char *)

void setlabelChangedEvent(const char *)

void setpenChangedEvent(const char *)

void setshapeChangedEvent(const char *)

void setvisibleChangedEvent(const char *)

const char *getbrushChangedEvent(void)

const char *getclickedEvent(void)

const char *getfontChangedEvent(void)

const char *gethoveredEvent(void)

const char *getlabelBrushChangedEvent(void)

const char *getlabelChangedEvent(void)

const char *getpenChangedEvent(void)

const char *getshapeChangedEvent(void)

const char *getvisibleChangedEvent(void)

QLineEdit クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlineedit.html

仮引数 : QWidget *

親クラス : QWidget

int alignment(void)

void backspace(void)

QCompleter *completer(void)

QMenu *createStandardContextMenu(void)

void cursorBackward(bool mark, int steps)

void cursorForward(bool mark, int steps)

int cursorMoveStyle(void)

int cursorPosition(void)

int cursorPositionAt(QPoint)

void cursorWordBackward(bool mark)

void cursorWordForward(bool mark)

void del(void)

void deselect(void)

QString displayText(void)

bool dragEnabled(void)

int echoMode(void)

void end(bool mark) # RingQt では void endtext(bool mark) を使用

void getTextMargins(int *left, int *top, int *right, int *bottom)

bool hasAcceptableInput(void)

bool hasFrame(void)

bool hasSelectedText(void)

void home(bool mark)

QString inputMask(void)

void insert(QString)

bool isModified(void)

bool isReadOnly(void)

bool isRedoAvailable(void)

bool isUndoAvailable(void)

int maxLength(void)

QString placeholderText(void)

QString selectedText(void)

int selectionStart(void)

void setAlignment(Qt::AlignmentFlag flag)

void setCompleter(QCompleter *c)

void setCursorMoveStyle(Qt::CursorMoveStyle style)

void setCursorPosition(int)

void setDragEnabled(bool b)

void setEchoMode(QLineEdit::EchoMode)

void setFrame(bool)

void setInputMask(QString)

void setMaxLength(int)

void setModified(bool)

void setPlaceholderText(QString)

void setReadOnly(bool)

void setSelection(int start, int length)

void setTextMargins(int left, int top, int right, int bottom)

void setValidator(QValidator *v)

QString text(void)

QMargins textMargins(void)

QValidator *validator(void)

void clear(void)

void copy(void)

void cut(void)

void paste(void)

void redo(void)

void selectAll(void)

void setText(QString)

void undo(void)

void setTextChangedEvent(const char *)

void setcursorPositionChangedEvent(const char *)

void seteditingFinishedEvent(const char *)

void setreturnPressedEvent(const char *)

void setselectionChangedEvent(const char *)

void settextEditedEvent(const char *)

const char *getTextChangedEvent(void)

const char *getcursorPositionChangedEvent(void)

const char *geteditingFinishedEvent(void)

const char *getreturnPressedEvent(void)

const char *getselectionChangedEvent(void)

const char *gettextEditedEvent(void)

QLineSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlineseries.html

仮引数 : QObject *

親クラス : QXYSeries

QAbstractSeries::SeriesType type(void)

QLinearGradient クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlineargradient.html

仮引数 : void

親クラス : QGradient

QPointF finalStop(void)

void setFinalStop(QPointF stop)

void setFinalStop_2(qreal x,qreal y)

void setStart(QPointF start)

void setStart_2(qreal x,qreal y)

QPointF start(void)

QListView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlistview.html

仮引数 : QWidget *

親クラス : QAbstractItemView

int batchSize(void)

void clearPropertyFlags(void)

QListView::Flow flow(void)

QSize gridSize(void)

bool isRowHidden(int row)

bool isSelectionRectVisible(void)

bool isWrapping(void)

QListView::LayoutMode layoutMode(void)

int modelColumn(void)

QListView::Movement movement(void)

QListView::ResizeMode resizeMode(void)

void setBatchSize(int batchSize)

void setFlow(QListView::Flow flow)

void setGridSize( QSize size)

void setLayoutMode(QListView::LayoutMode mode)

void setModelColumn(int column)

void setMovement(QListView::Movement movement)

void setResizeMode(QListView::ResizeMode mode)

void setRowHidden(int row, bool hide)

void setSelectionRectVisible(bool show)

void setSpacing(int space)

void setUniformItemSizes(bool enable)

void setViewMode(QListView::ViewMode mode)

void setWordWrap(bool on)

void setWrapping(bool enable)

int spacing(void)

bool uniformItemSizes(void)

QListView::ViewMode viewMode(void)

bool wordWrap(void)

QListWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlistwidget.html

仮引数 : QWidget *

親クラス : QListView

void addItem(QString)

int count(void)

void editItem(QListWidgetItem *item)

bool isSortingEnabled(void)

QListWidgetItem *item(int row)

QListWidgetItem *itemAt(int x, int y)

QWidget *itemWidget(QListWidgetItem *item)

void openPersistentEditor(QListWidgetItem *item)

void removeItemWidget(QListWidgetItem *item)

int row(QListWidgetItem *item)

void setCurrentRow(int row, QItemSelectionModel::SelectionFlag command)

void setItemWidget(QListWidgetItem *item, QWidget *widget)

void setSortingEnabled(bool enable)

void sortItems(Qt::SortOrder order)

QListWidgetItem *takeItem(int row)

QRect visualItemRect(QListWidgetItem *item)

void clear(void)

void scrollToItem(QListWidgetItem *item,QAbstractItemView::ScrollHint hint)

void setcurrentItemChangedEvent(const char *)

void setcurrentRowChangedEvent(const char *)

void setcurrentTextChangedEvent(const char *)

void setitemActivatedEvent(const char *)

void setitemChangedEvent(const char *)

void setitemClickedEvent(const char *)

void setitemDoubleClickedEvent(const char *)

void setitemEnteredEvent(const char *)

void setitemPressedEvent(const char *)

void setitemSelectionChangedEvent(const char *)

const char *getcurrentItemChangedEvent(void)

const char *getcurrentRowChangedEvent(void)

const char *getcurrentTextChangedEvent(void)

const char *getitemActivatedEvent(void)

const char *getitemChangedEvent(void)

const char *getitemClickedEvent(void)

const char *getitemDoubleClickedEvent(void)

const char *getitemEnteredEvent(void)

const char *getitemPressedEvent(void)

const char *getitemSelectionChangedEvent(void)

QListWidgetItem クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlistwidgetitem.html

仮引数 : void

QBrush background(void)

Qt::CheckState checkState(void)

Qt::ItemFlags flags(void)

QFont font(void)

QBrush foreground(void)

QIcon icon(void)

bool isHidden(void)

bool isSelected(void)

QListWidget *listWidget(void)

void setBackground(QBrush brush)

void setCheckState(Qt::CheckState state)

void setFlags(Qt::ItemFlags flags)

void setFont(QFont font)

void setForeground(QBrush brush)

void setHidden(bool hide)

void setIcon(QIcon icon)

void setSelected(bool select)

void setSizeHint(QSize size)

void setStatusTip(QString statusTip)

void setText(QString text)

void setTextAlignment(int alignment)

void setToolTip(QString toolTip)

void setWhatsThis(QString whatsThis)

QSize sizeHint(void)

QString statusTip(void)

QString text(void)

int textAlignment(void)

QString toolTip(void)

int type(void)

QString whatsThis(void)

QLocale クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlocale.html

仮引数 : QString

QString amText(void)

QString bcp47Name(void)

QString createSeparatedList(QStringList list)

QString currencySymbol(QLocale::CurrencySymbolFormat format)

QString dateFormat(QLocale::FormatType format)

QString dateTimeFormat(QLocale::FormatType format)

QString dayName(int day, QLocale::FormatType type)

QChar decimalPoint(void)

QChar exponential(void)

Qt::DayOfWeek firstDayOfWeek(void)

QLocale::Language language(void)

QLocale::MeasurementSystem measurementSystem(void)

QString monthName(int month, QLocale::FormatType type)

QString name(void)

QString nativeCountryName(void)

QString nativeLanguageName(void)

QChar negativeSign(void)

QLocale::NumberOptions numberOptions(void)

QChar percent(void)

QString pmText(void)

QChar positiveSign(void)

QString quoteString(QString str, QLocale::QuotationStyle style)

QString quoteString_2(QStringRef str, QLocale::QuotationStyle style)

QLocale::Script script(void)

void setNumberOptions(QLocale::NumberOptions options)

QString standaloneDayName(int day, QLocale::FormatType type)

QString standaloneMonthName(int month, QLocale::FormatType type)

Qt::LayoutDirection textDirection(void)

QString timeFormat(QLocale::FormatType format)

double toDouble_2(QStringRef s, bool *ok)

float toFloat(QString s, bool *ok)

float toFloat_2(QStringRef s, bool *ok)

int toInt(QString s, bool *ok)

int toInt_2(QStringRef s, bool *ok)

qlonglong toLongLong(QString s, bool *ok)

qlonglong toLongLong_2(QStringRef s, bool *ok)

QString toLower(QString str)

short toShort(QString s, bool *ok)

short toShort_2(QStringRef s, bool *ok)

QString toString(qlonglong i)

QString toString_2(qulonglong i)

QString toString_4(short i)

QString toString_5(ushort i)

QString toString_6(int i)

QString toString_7(uint i)

QString toString_8(double i, char f, int prec)

QString toString_9(float i, char f, int prec)

QString toString_10(QDate date, QString format)

QString toString_11(QTime time, QString format)

QString toString_12(QDateTime dateTime, QString format)

QString toString_13(QDate date, QLocale::FormatType format)

QString toString_14(QTime time, QLocale::FormatType format)

QString toString_15(QDateTime dateTime, QLocale::FormatType format)

QTime toTime(QString string, QLocale::FormatType format)

QTime toTime_2(QString string, QString format)

uint toUInt(QString s, bool *ok)

uint toUInt_2(QStringRef s, bool *ok)

qulonglong toULongLong(QString s, bool *ok)

qulonglong toULongLong_2(QStringRef s, bool *ok)

ushort toUShort(QString s, bool *ok)

ushort toUShort_2(QStringRef s, bool *ok)

QString toUpper(QString str)

QStringList uiLanguages(void)

QList<Qt::DayOfWeek> weekdays(void)

QChar zeroDigit(void)

QLocale c(void)

QString countryToString(QLocale::Country country)

QString languageToString(QLocale::Language language)

QList<QLocale> matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country)

QString scriptToString(QLocale::Script script)

void setDefault(QLocale locale)

QLocale system(void)

QLogValueAxis クラス

C++ リファレンス : http://doc.qt.io/qt-5/qlogvalueaxis.html

仮引数 : QObject *

親クラス : QAbstractAxis

qreal base(void)

QString labelFormat(void)

qreal max(void)

qreal min(void)

int minorTickCount(void)

void setBase(qreal base)

void setLabelFormat(QString format)

void setMax(qreal max)

void setMin(qreal min)

void setMinorTickCount(int minorTickCount)

void setRange(qreal min, qreal max)

int tickCount(void)

void setbaseChangedEvent(const char *)

void setlabelFormatChangedEvent(const char *)

void setmaxChangedEvent(const char *)

void setminChangedEvent(const char *)

void setminorTickCountChangedEvent(const char *)

void setrangeChangedEvent(const char *)

void settickCountChangedEvent(const char *)

const char *getbaseChangedEvent(void)

const char *getlabelFormatChangedEvent(void)

const char *getmaxChangedEvent(void)

const char *getminChangedEvent(void)

const char *getminorTickCountChangedEvent(void)

const char *getrangeChangedEvent(void)

const char *gettickCountChangedEvent(void)

QLogicAspect クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dlogic-qlogicaspect.html

仮引数 : QObject *

親クラス : Qt3DCore::QAbstractAspect

QMainWindow クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmainwindow.html

仮引数 : void

親クラス : QWidget

void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)

QToolBar *addToolBar(QString)

void addToolBar_2(Qt::ToolBarArea area, QToolBar *toolbar)

void addToolBarBreak(Qt::ToolBarArea)

QWidget *centralWidget(void)

int corner(Qt::Corner corner)

QMenu *createPopupMenu(void)

int dockOptions(void)

int dockWidgetArea(QDockWidget *dockwidget)

bool documentMode(void)

QSize iconSize(void)

void insertToolBar(QToolBar *before, QToolBar *toolbar)

void insertToolBarBreak(QToolBar *before)

bool isAnimated(void)

bool isDockNestingEnabled(void)

QMenuBar *menuBar(void)

QWidget *menuWidget(void)

void removeDockWidget(QDockWidget *dockwidget)

void removeToolBar(QToolBar *toolbar)

void removeToolBarBreak(QToolBar *before)

bool restoreDockWidget(QDockWidget *dockwidget)

bool restoreState(QByteArray state, int version)

QByteArray saveState(int version)

void setCentralWidget(QWidget *widget)

void setCorner(Qt::Corner corner, Qt::DockWidgetArea area)

void setDockOptions(QMainWindow::DockOption options)

void setDocumentMode(bool enabled)

void setIconSize(QSize)

void setMenuBar(QMenuBar *menuBar)

void setMenuWidget(QWidget *menuBar)

void setStatusBar(QStatusBar *statusbar)

void setTabPosition(Qt::DockWidgetArea areas, QTabWidget::TabPosition tabPosition)

void setTabShape(QTabWidget::TabShape tabShape)

void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)

void setUnifiedTitleAndToolBarOnMac(bool set)

void splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)

QStatusBar *statusBar(void)

int tabPosition(Qt::DockWidgetArea area)

int tabShape(void)

void tabifyDockWidget(QDockWidget *first, QDockWidget *second)

int toolBarArea(QToolBar *toolbar)

bool toolBarBreak(QToolBar *toolbar)

int toolButtonStyle(void)

bool unifiedTitleAndToolBarOnMac(void)

QMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qmaterial.html

仮引数 : Qt3DCore::QNode *

親クラス : Qt3DCore::QComponent

void addParameter(Qt3DRender::QParameter *parameter)

Qt3DRender::QEffect * effect(void)

QVector<Qt3DRender::QParameter *> parameters(void)

void removeParameter(Qt3DRender::QParameter *parameter)

void setEffect(Qt3DRender::QEffect *effect)

QMatrix4x4 クラス

仮引数 : qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal,qreal

QVector4D column(int index)

qreal * constData(void)

qreal * data_2(void)

qreal determinant(void)

void fill(qreal value)

void flipCoordinates(void)

void frustum(qreal left, qreal right, qreal bottom, qreal top, qreal nearPlane, qreal farPlane)

QMatrix4x4 inverted(bool * invertible)

bool isIdentity(void)

void lookAt(QVector3D eye, QVector3D center, QVector3D up)

QPoint map(QPoint point)

QPointF map_2(QPointF point)

QVector3D map_3(QVector3D point)

QVector4D map_4(QVector4D point)

QRect mapRect(QRect rect)

QRectF mapRect_2(QRectF rect)

QVector3D mapVector(QVector3D vector)

QMatrix3x3 normalMatrix(void)

void optimize(void)

void ortho(qreal left, qreal right, qreal bottom, qreal top, qreal nearPlane, qreal farPlane)

void ortho_2(QRect rect)

void ortho_3(QRectF rect)

void perspective(qreal angle, qreal aspect, qreal nearPlane, qreal farPlane)

void rotate(qreal angle, QVector3D vector)

void rotate_2(QQuaternion quaternion)

void rotate_3(qreal angle, qreal x, qreal y, qreal z)

QVector4D row(int index)

void scale(QVector3D vector)

void scale_2(qreal x, qreal y)

void scale_3(qreal x, qreal y, qreal z)

void scale_4(qreal factor)

void setColumn(int index, QVector4D value)

void setRow(int index, QVector4D value)

void setToIdentity(void)

QMatrix toAffine(void)

QTransform toTransform_2(qreal distanceToPlane)

void translate(QVector3D vector)

void translate_2(qreal x, qreal y)

void translate_3(qreal x, qreal y, qreal z)

QMatrix4x4 transposed(void)

QMdiArea クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmdiarea.html

仮引数 : QWidget *

親クラス : QAbstractScrollArea

QMdiArea::WindowOrder activationOrder(void)

QMdiSubWindow * activeSubWindow(void)

QMdiSubWindow * addSubWindow(QWidget * widget, Qt::WindowFlags windowFlags )

QBrush background(void)

QMdiSubWindow * currentSubWindow(void)

bool documentMode(void)

void removeSubWindow(QWidget * widget)

void setActivationOrder(QMdiArea::WindowOrder order)

void setBackground( QBrush background)

void setDocumentMode(bool enabled)

void setOption(QMdiArea::AreaOption option, bool on )

void setTabPosition(QTabWidget::TabPosition position)

void setTabShape(QTabWidget::TabShape shape)

void setTabsClosable(bool closable)

void setTabsMovable(bool movable)

void setViewMode(QMdiArea::ViewMode mode)

QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder order )

QTabWidget::TabPosition tabPosition(void)

QTabWidget::TabShape tabShape(void)

bool tabsClosable(void)

bool tabsMovable(void)

bool testOption(QMdiArea::AreaOption option)

QMdiArea::ViewMode viewMode(void)

void activateNextSubWindow(void)

void activatePreviousSubWindow(void)

void cascadeSubWindows(void)

void closeActiveSubWindow(void)

void closeAllSubWindows(void)

void setActiveSubWindow(QMdiSubWindow * window)

void tileSubWindows(void)

QMdiSubWindow クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmdisubwindow.html

仮引数 : QWidget *

親クラス : QWidget

bool isShaded(void)

int keyboardPageStep(void)

int keyboardSingleStep(void)

QMdiArea * mdiArea(void)

void setKeyboardPageStep(int step)

void setKeyboardSingleStep(int step)

void setOption(QMdiSubWindow::SubWindowOption option, bool on )

void setSystemMenu(QMenu * systemMenu)

void setWidget(QWidget * widget)

QMenu * systemMenu(void)

bool testOption(QMdiSubWindow::SubWindowOption option)

QWidget * widget(void)

void showShaded(void)

void showSystemMenu(void)

QMediaObject クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmediaobject.html

仮引数 : void

親クラス : QWidget

QStringList availableMetaData(void)

bool isMetaDataAvailable(void)

QVariant metaData( QString key)

int notifyInterval(void)

void setNotifyInterval(int milliSeconds)

QMediaPlayer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmediaplayer.html

仮引数 : void

int bufferStatus(void)

QMediaContent currentMedia(void)

QNetworkConfiguration currentNetworkConfiguration(void)

int duration(void)

int error(void)

QString errorString(void)

bool isAudioAvailable(void)

bool isMuted(void)

bool isSeekable(void)

bool isVideoAvailable(void)

QMediaContent media(void)

int mediaStatus(void)

QIODevice *mediaStream(void)

qreal playbackRate(void)

QMediaPlaylist *playlist(void)

int position(void)

void setVideoOutput(QVideoWidget *output)

int volume(void)

void pause(void)

void play(void)

void setMuted(bool muted)

void setPlaylist(QMediaPlaylist *playlist)

void setPosition(int position)

void setVolume(int volume)

void stop(void)

QMediaPlaylist クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmediaplaylist.html

仮引数 : void

int currentIndex(void)

QMediaContent currentMedia(void)

int error(void)

QString errorString(void)

bool insertMedia(int pos, QMediaContent)

bool isReadOnly(void)

QMediaContent media(int index)

int mediaCount(void)

int nextIndex(int steps)

int playbackMode(void)

int previousIndex(int steps)

bool save(QUrl, const char * format)

void next(void) # RingQt では void movenext(void) を使用

void previous(void)

void setCurrentIndex(int playlistPosition)

void shuffle(void)

QMenu クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmenu.html

仮引数 : QWidget *

親クラス : QWidget

QAction *actionAt(QPoint)

QRect actionGeometry(QAction *act)

QAction *activeAction(void)

void addAction(QAction *)

QMenu *addMenu(QString)

QAction *addSeparator(void)

void clear(void)

QAction *defaultAction(void)

QAction *exec(const QPoint &)

QAction *exec_2(void)

QAction *exec_3(const QPoint &,QAction *)

void hideTearOffMenu(void)

QIcon icon(void)

QAction *insertMenu(QAction *before, QMenu *menu)

QAction *insertSeparator(QAction *before)

bool isEmpty(void)

bool isTearOffEnabled(void)

bool isTearOffMenuVisible(void)

QAction *menuAction(void)

void popup(QPoint, QAction *atAction)

bool separatorsCollapsible(void)

void setActiveAction(QAction *act)

void setDefaultAction(QAction *act)

void setIcon(QIcon)

void setSeparatorsCollapsible(bool collapse)

void setTearOffEnabled(bool)

void setTitle(QString)

QString title(void)

QMenuBar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmenubar.html

仮引数 : QWidget *

親クラス : QWidget

QAction *actionAt(QPoint)

QRect actionGeometry(QAction *act)

QAction *activeAction(void)

QAction *addAction(QString)

QAction *addSeparator(void)

void clear(void)

QWidget *cornerWidget(Qt::Corner)

QAction *insertSeparator(QAction *before)

bool isDefaultUp(void)

bool isNativeMenuBar(void)

void setActiveAction(QAction *act)

void setCornerWidget(QWidget *widget, Qt::Corner)

void setNativeMenuBar(bool nativeMenuBar)

QMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qmesh.html

仮引数 : Qt3DCore::QNode *

QString meshName(void)

QUrl source(void)

Qt3DRender::QMesh::Status status(void)

void setMeshName(QString meshName)

void setSource(QUrl source)

QMessageBox クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmessagebox.html

仮引数 : QWidget *parent

親クラス : QDialog

void addButton(QAbstractButton *button, QMessageBox::ButtonRole role)

QAbstractButton *button(QMessageBox::StandardButton which)

int buttonRole(QAbstractButton *button)

QAbstractButton *clickedButton(void)

QPushButton *defaultButton(void)

QString detailedText(void)

QAbstractButton *escapeButton(void)

QPixmap iconPixmap(void)

QString informativeText(void)

void open(QObject *receiver, const char *member)

void removeButton(QAbstractButton *button)

void setDefaultButton(QPushButton *button)

void setDetailedText(QString)

void setEscapeButton(QAbstractButton *button)

void setIconPixmap(QPixmap)

void setInformativeText(QString)

void setStandardButtons(QMessageBox::StandardButton buttons)

void setText(QString)

void setTextFormat(Qt::TextFormat format)

void setWindowModality(Qt::WindowModality windowModality)

void setWindowTitle(QString)

int standardButton(QAbstractButton *button)

int standardButtons(void)

QString text(void)

int textFormat(void)

int exec(void)

void about(QWidget *parent, QString,QString)

void aboutQt(QWidget *parent, QString)

int critical(QWidget * parent, QString , QString, int buttons, int defaultButton)

int information(QWidget * parent, QString ,QString, int buttons,int defaultButton)

int question(QWidget * parent,QString,QString, int buttons ,int defaultButton)

int warning(QWidget *parent, QString,QString, int buttons,int defaultButton)

QMetalRoughMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qmetalroughmaterial.html

仮引数 : Qt3DCore::QNode *

QVariant ambientOcclusion(void)

QVariant baseColor(void)

QVariant metalness(void)

QVariant normal(void)

QVariant roughness(void)

float textureScale(void)

void setAmbientOcclusion(QVariant ambientOcclusion)

void setBaseColor(QVariant baseColor)

void setMetalness(QVariant metalness)

void setNormal(QVariant normal)

void setRoughness(QVariant roughness)

void setTextureScale(float textureScale)

QMimeData クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmimedata.html

仮引数 : void

親クラス : QObject

void clear(void)

QVariant colorData(void)

QByteArray data(QString mimeType)

QStringList formats(void)

bool hasColor(void)

bool hasFormat(QString mimeType)

bool hasHtml(void)

bool hasImage(void)

bool hasText(void)

bool hasUrls(void)

QString html(void)

QVariant imageData(void)

void removeFormat(QString mimeType)

void setColorData(QVariant color)

void setData(QString mimeType, QByteArray data)

void setHtml(QString html)

void setImageData(QVariant image)

void setText(QString text)

void setUrls(QList<QUrl> urls)

QString text(void)

QList<QUrl> urls(void)

QMorphPhongMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmorphphongmaterial.html

仮引数 : Qt3DCore::QNode *

QColor ambient(void)

QColor diffuse(void)

float interpolator(void)

float shininess(void)

QColor specular(void)

void setAmbient(QColor ambient)

void setDiffuse(QColor diffuse)

void setInterpolator(float interpolator)

void setShininess(float shininess)

void setSpecular(QColor specular)

QMovie クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmovie.html

仮引数 : QObject *

親クラス : QObject

QColor backgroundColor(void)

QMovie::CacheMode cacheMode(void)

int currentFrameNumber(void)

QImage currentImage(void)

QPixmap currentPixmap(void)

QIODevice * device(void)

QString fileName(void)

QByteArray format(void)

int frameCount(void)

QRect frameRect(void)

bool isValid(void)

bool jumpToFrame(int frameNumber)

int nextFrameDelay(void)

QSize scaledSize(void)

void setBackgroundColor(QColor color)

void setCacheMode(QMovie::CacheMode mode)

void setDevice(QIODevice *device)

void setFileName(QString fileName)

void setFormat(QByteArray format)

void setScaledSize(QSize size)

int speed(void)

QMovie::MovieState state(void)

bool jumpToNextFrame(void)

void setPaused(bool paused)

void setSpeed(int percentSpeed)

void start(void)

void stop(void)

void seterrorEvent(const char *)

void setfinishedEvent(const char *)

void setframeChangedEvent(const char *)

void setresizedEvent(const char *)

void setstartedEvent(const char *)

void setstateChangedEvent(const char *)

void setupdatedEvent(const char *)

const char *geterrorEvent(void)

const char *getfinishedEvent(void)

const char *getframeChangedEvent(void)

const char *getresizedEvent(void)

const char *getstartedEvent(void)

const char *getstateChangedEvent(void)

const char *getupdatedEvent(void)

QMutex クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmutex.html

仮引数 : QMutex::RecursionMode

bool isRecursive(void)

void lock(void)

void unlock(void)

QMutexLocker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qmutexlocker.html

仮引数 : QMutex *

QMutex * mutex(void)

void relock(void)

void unlock(void)

QNetworkAccessManager クラス

C++ リファレンス : http://doc.qt.io/qt-5/qnetworkaccessmanager.html

仮引数 : QObject *

親クラス : QObject

void setfinishedEvent(const char *)

const char *getfinishedEvent(void)

QNetworkConfiguration activeConfiguration(void)

QAbstractNetworkCache *cache(void)

void clearAccessCache(void)

QNetworkConfiguration configuration(void)

void connectToHost(QString, quint16)

QNetworkReply *deleteResource(QNetworkRequest)

QNetworkReply *get(QNetworkRequest) # RingQt では QNetworkReply *getvalue(QNetworkRequest) を使用

QNetworkReply *head(QNetworkRequest)

QNetworkAccessManager::NetworkAccessibility networkAccessible(void)

QNetworkReply *post(QNetworkRequest, QByteArray)

QNetworkProxy proxy(void)

QNetworkProxyFactory *proxyFactory(void)

QNetworkReply *put(QNetworkRequest, QByteArray) # RingQt では QNetworkReply *putvalue(QNetworkRequest, QByteArray) を使用

QNetworkReply *sendCustomRequest(QNetworkRequest, QByteArray, QIODevice *)

void setCache(QAbstractNetworkCache *cache)

void setConfiguration(QNetworkConfiguration)

void setCookieJar(QNetworkCookieJar *cookieJar)

void setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible)

void setProxy(QNetworkProxy)

void setProxyFactory(QNetworkProxyFactory *factory)

QStringList supportedSchemes(void)

void geteventparameters(void)

QNetworkProxy クラス

C++ リファレンス : http://doc.qt.io/qt-5/qnetworkproxy.html

仮引数 : void

int capabilities(void)

bool hasRawHeader(QByteArray headerName)

QVariant header(QNetworkRequest::KnownHeaders header)

QString hostName(void)

bool isCachingProxy(void)

bool isTransparentProxy(void)

QString password(void)

int port(void)

QByteArray rawHeader(QByteArray headerName)

void setCapabilities(QNetworkProxy::Capability capabilities)

void setHeader(QNetworkRequest::KnownHeaders header, QVariant value)

void setHostName(QString hostName)

void setPassword(QString password)

void setPort(int port)

void setRawHeader(QByteArray headerName, QByteArray headerValue)

void setType(QNetworkProxy::ProxyType type)

void setUser(QString user)

void swap(QNetworkProxy other)

int type(void)

QString user(void)

QNetworkProxy applicationProxy(void)

void setApplicationProxy(QNetworkProxy networkProxy)

QNetworkReply クラス

C++ リファレンス : http://doc.qt.io/qt-5/qnetworkreply.html

仮引数 : void

親クラス : QIODevice

QVariant attribute(QNetworkRequest::Attribute code)

QNetworkReply::NetworkError error(void)

bool hasRawHeader(QByteArray)

QVariant header(QNetworkRequest::KnownHeaders header)

bool isFinished(void)

bool isRunning(void)

QNetworkAccessManager *manager(void)

QNetworkAccessManager::Operation operation(void)

QByteArray rawHeader(QByteArray)

qint64 readBufferSize(void)

QNetworkRequest request(void)

QNetworkRequest クラス

C++ リファレンス : http://doc.qt.io/qt-5/qnetworkrequest.html

仮引数 : QUrl

QVariant attribute(QNetworkRequest::Attribute, QVariant)

bool hasRawHeader(QByteArray)

QVariant header(QNetworkRequest::KnownHeaders)

QObject *originatingObject(void)

QNetworkRequest::Priority priority(void)

QByteArray rawHeader(QByteArray)

void setAttribute(QNetworkRequest::Attribute, QVariant)

void setHeader(QNetworkRequest::KnownHeaders, QVariant)

void setOriginatingObject(QObject *object)

void setPriority(QNetworkRequest::Priority priority)

void setRawHeader(QByteArray, QByteArray)

void swap(QNetworkRequest)

QUrl url(void)

QNmeaPositionInfoSource クラス

C++ リファレンス : http://doc.qt.io/qt-5/qnmeapositioninfosource.html

仮引数 : QNmeaPositionInfoSource::UpdateMode,QObject *

親クラス : QGeoPositionInfoSource

QIODevice * device(void)

void setDevice(QIODevice * device)

QNmeaPositionInfoSource::UpdateMode updateMode(void)

QNode クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dcore-qnode.html

仮引数 : Qt3DCore::QNode *

親クラス : QObject

bool blockNotifications(bool block)

Qt3DCore::QNodeVector childNodes(void)

void clearPropertyTracking(QString propertyName)

void clearPropertyTrackings(void)

Qt3DCore::QNode::PropertyTrackingMode defaultPropertyTrackingMode(void)

Qt3DCore::QNodeId id(void)

bool isEnabled(void)

bool notificationsBlocked(void)

Qt3DCore::QNode * parentNode(void)

Qt3DCore::QNode::PropertyTrackingMode propertyTracking(QString propertyName)

void setPropertyTracking(QString propertyName, Qt3DCore::QNode::PropertyTrackingMode trackMode)

void setDefaultPropertyTrackingMode(Qt3DCore::QNode::PropertyTrackingMode mode)

void setEnabled(bool isEnabled)

void setParent(Qt3DCore::QNode *parent)

QObject クラス

C++ リファレンス : http://doc.qt.io/qt-5/qobject.html

仮引数 : void

bool blockSignals(bool block)

QObjectList children(void)

void dumpObjectInfo(void)

void dumpObjectTree(void)

bool inherits(const char *className)

void installEventFilter(QObject *filterObj)

bool isWidgetType(void)

void killTimer(int id)

void moveToThread(QThread *targetThread)

QString objectName(void)

QObject *parent(void)

QVariant property(const char *name)

void removeEventFilter(QObject *obj)

void setObjectName(QString)

void setParent(QObject *parent)

bool setProperty(const char *name, QVariant)

bool setProperty_2(const char *name, int)

bool setProperty_3(const char *name, float)

bool setProperty_4(const char *name, double)

bool setProperty_5(const char *name, QString)

bool setProperty_int(const char *name, int)

bool setProperty_float(const char *name, float)

bool setProperty_double(const char *name, double)

bool setProperty_string(const char *name, QString)

bool signalsBlocked(void)

int startTimer(int interval)

QThread *thread(void)

void deleteLater(void)

QObjectPicker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qobjectpicker.html

仮引数 : Qt3DCore::QNode *

bool containsMouse(void)

bool isDragEnabled(void)

bool isHoverEnabled(void)

bool isPressed(void)

void setDragEnabled(bool dragEnabled)

void setHoverEnabled(bool hoverEnabled)

void setclickedEvent(const char *)

void setcontainsMouseChangedEvent(const char *)

void setdragEnabledChangedEvent(const char *)

void setenteredEvent(const char *)

void setexitedEvent(const char *)

void sethoverEnabledChangedEvent(const char *)

void setmovedEvent(const char *)

void setpressedEvent(const char *)

void setpressedChangedEvent(const char *)

void setreleasedEvent(const char *)

const char *getclickedEvent(void)

const char *getcontainsMouseChangedEvent(void)

const char *getdragEnabledChangedEvent(void)

const char *getenteredEvent(void)

const char *getexitedEvent(void)

const char *gethoverEnabledChangedEvent(void)

const char *getmovedEvent(void)

const char *getpressedEvent(void)

const char *getpressedChangedEvent(void)

const char *getreleasedEvent(void)

QOpenGLBuffer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglbuffer.html

仮引数 : void

void allocate(void *data, int count)

void allocate_2(int count)

bool bind(void)

GLuint bufferId(void)

bool create(void)

void destroy(void)

bool isCreated(void)

void * map(QOpenGLBuffer::Access access)

void release(void)

void setUsagePattern(QOpenGLBuffer::UsagePattern value)

int size(void)

QOpenGLBuffer::Type type(void)

bool unmap(void)

QOpenGLBuffer::UsagePattern usagePattern(void)

void write(int offset, void *data, int count)

void release_2(QOpenGLBuffer::Type type)

QOpenGLContext クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglcontext.html

仮引数 : QObject *

親クラス : QObject

bool create(void)

GLuint defaultFramebufferObject(void)

void doneCurrent(void)

QSet<QByteArray> extensions(void)

QOpenGLFunctions * functions(void)

QFunctionPointer getProcAddress(QByteArray procName)

QFunctionPointer getProcAddress_2(char *procName)

bool hasExtension(QByteArray extension)

bool isOpenGLES(void)

bool isValid(void)

bool makeCurrent(QSurface *surface)

QVariant nativeHandle(void)

QScreen * screen(void)

void setFormat(QSurfaceFormat format)

void setNativeHandle(QVariant handle)

void setScreen(QScreen *screen)

void setShareContext(QOpenGLContext *shareContext)

QOpenGLContext * shareContext(void)

QOpenGLContextGroup * shareGroup(void)

QSurface * surface(void)

void swapBuffers(QSurface *surface)

QAbstractOpenGLFunctions * versionFunctions(QOpenGLVersionProfile versionProfile))

TYPE * versionFunctions_2(void)

bool areSharing(QOpenGLContext *first, QOpenGLContext *second)

QOpenGLContext * currentContext(void)

QOpenGLContext * globalShareContext(void)

void * openGLModuleHandle(void)

QOpenGLContext::OpenGLModuleType openGLModuleType(void)

bool supportsThreadedOpenGL(void)

QOpenGLFunctions_3_2_Core *opengl32(void)

QOpenGLDebugLogger クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopengldebuglogger.html

仮引数 : QObject *

void disableMessages(QOpenGLDebugMessage::Sources sources, QOpenGLDebugMessage::Types types, QOpenGLDebugMessage::Severities severities)

void disableMessages_2(QVector<GLuint> ids, QOpenGLDebugMessage::Sources sources, QOpenGLDebugMessage::Types types)

void enableMessages(QOpenGLDebugMessage::Sources sources, QOpenGLDebugMessage::Types types, QOpenGLDebugMessage::Severities severities)

void enableMessages_2(QVector<GLuint> ids, QOpenGLDebugMessage::Sources sources, QOpenGLDebugMessage::Types types)

bool initialize(void)

bool isLogging(void)

QList<QOpenGLDebugMessage> loggedMessages(void)

QOpenGLDebugLogger::LoggingMode loggingMode(void)

qint64 maximumMessageLength(void)

void popGroup(void)

void pushGroup(QString name, GLuint id, QOpenGLDebugMessage::Source source)

void logMessage(QOpenGLDebugMessage debugMessage)

void startLogging(QOpenGLDebugLogger::LoggingMode loggingMode)

void stopLogging(void)

QOpenGLFramebufferObject クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglframebufferobject.html

仮引数 : int,int,GLenum

bool bind(void)

QOpenGLFramebufferObjectFormat format(void)

GLuint handle(void)

int height(void)

bool isBound(void)

bool isValid(void)

bool release(void)

void setAttachment(QOpenGLFramebufferObject::Attachment attachment)

QSize size(void)

QImage toImage(bool flipped)

QImage toImage_3(bool flipped, int colorQOpenGLFramebufferObject::AttachmentIndex)

QImage toImage_2(void)

int width(void)

bool bindDefault(void)

bool hasOpenGLFramebufferObjects(void)

QOpenGLFunctions クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglfunctions.html

仮引数 : void

void glActiveTexture(GLenum texture)

void glAttachShader(GLuint program, GLuint shader)

void glBindAttribLocation(GLuint program, GLuint index, char *name)

void glBindBuffer(GLenum target, GLuint buffer)

void glBindFramebuffer(GLenum target, GLuint framebuffer)

void glBindRenderbuffer(GLenum target, GLuint renderbuffer)

void glBindTexture(GLenum target, GLuint texture)

void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)

void glBufferData(GLenum target, qopengl_GLsizeiptr size, void *data, GLenum usage)

void glBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, void *data)

GLenum glCheckFramebufferStatus(GLenum target)

void glClear(GLbitfield mask)

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

void glClearDepthf(GLclampf depth)

void glClearStencil(GLint s)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glCompileShader(GLuint shader)

void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, void *data)

void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, void *data)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum type)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n, GLuint *buffers)

void glDeleteFramebuffers(GLsizei n, GLuint *framebuffers)

void glDeleteProgram(GLuint program)

void glDeleteRenderbuffers(GLsizei n, GLuint *renderbuffers)

void glDeleteShader(GLuint shader)

void glDeleteTextures(GLsizei n, GLuint *textures)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRangef(GLclampf zNear, GLclampf zFar)

void glDetachShader(GLuint program, GLuint shader)

void glDisable(GLenum cap)

void glDisableVertexAttribArray(GLuint index)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, GLvoid *indices)

void glEnable(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glFinish(void)

void glFlush(void)

void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)

void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

void glFrontFace(GLenum mode)

void glGenBuffers(GLsizei n, GLuint *buffers)

void glGenFramebuffers(GLsizei n, GLuint *framebuffers)

void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)

void glGenTextures(GLsizei n, GLuint *textures)

void glGenerateMipmap(GLenum target)

void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name)

void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name)

void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders)

GLint glGetAttribLocation(GLuint program, char *name)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei *length, char *infolog)

void glGetProgramiv(GLuint program, GLenum pname, GLint *params)

void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params)

void glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei *length, char *infolog)

void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)

void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei *length, char *source)

void glGetShaderiv(GLuint shader, GLenum pname, GLint *params)

GLubyte * glGetString(GLenum name)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

GLint glGetUniformLocation(GLuint program, char *name)

void glGetUniformfv(GLuint program, GLint location, GLfloat *params)

void glGetUniformiv(GLuint program, GLint location, GLint *params)

void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsFramebuffer(GLuint framebuffer)

GLboolean glIsProgram(GLuint program)

GLboolean glIsRenderbuffer(GLuint renderbuffer)

GLboolean glIsShader(GLuint shader)

GLboolean glIsTexture(GLuint texture)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glPixelStorei(GLenum pname, GLint param)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)

void glReleaseShaderCompiler(void)

void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)

void glSampleCoverage(GLclampf value, GLboolean invert)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glShaderBinary(GLint n, GLuint *shaders, GLenum binaryformat, void *binary, GLint length)

void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face, GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)

void glUniform1f(GLint location, GLfloat x)

void glUniform1fv(GLint location, GLsizei count, GLfloat *v)

void glUniform1i(GLint location, GLint x)

void glUniform1iv(GLint location, GLsizei count, GLint *v)

void glUniform2f(GLint location, GLfloat x, GLfloat y)

void glUniform2fv(GLint location, GLsizei count, GLfloat *v)

void glUniform2i(GLint location, GLint x, GLint y)

void glUniform2iv(GLint location, GLsizei count, GLint *v)

void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)

void glUniform3fv(GLint location, GLsizei count, GLfloat *v)

void glUniform3i(GLint location, GLint x, GLint y, GLint z)

void glUniform3iv(GLint location, GLsizei count, GLint *v)

void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glUniform4fv(GLint location, GLsizei count, GLfloat *v)

void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)

void glUniform4iv(GLint location, GLsizei count, GLint *v)

void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glVertexAttrib1f(GLuint indx, GLfloat x)

void glVertexAttrib1fv(GLuint indx, GLfloat *values)

void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)

void glVertexAttrib2fv(GLuint indx, GLfloat *values)

void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)

void glVertexAttrib3fv(GLuint indx, GLfloat *values)

void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void glVertexAttrib4fv(GLuint indx, GLfloat *values)

void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *ptr)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

bool hasOpenGLFeature(QOpenGLFunctions::OpenGLFeature feature)

void initializeOpenGLFunctions(void)

QOpenGLFunctions::OpenGLFeatures openGLFeatures(void)

QOpenGLFunctions_3_2_Core クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglfunctions_3_2_core.html

仮引数 : void

void glActiveTexture(GLenum texture)

void glAttachShader(GLuint program, GLuint shader)

void glBeginConditionalRender(GLuint id, GLenum mode)

void glBeginQuery(GLenum target, GLuint id)

void glBeginTransformFeedback(GLenum primitiveMode)

void glBindAttribLocation(GLuint program, GLuint index, GLchar *name)

void glBindBuffer(GLenum target, GLuint buffer)

void glBindBufferBase(GLenum target, GLuint index, GLuint buffer)

void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)

void glBindFragDataLocation(GLuint program, GLuint color, GLchar *name)

void glBindFramebuffer(GLenum target, GLuint framebuffer)

void glBindRenderbuffer(GLenum target, GLuint renderbuffer)

void glBindTexture(GLenum target, GLuint texture)

void glBindVertexArray(GLuint array)

void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glBlendEquation(GLenum mode)

void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)

void glBlendFunc(GLenum sfactor, GLenum dfactor)

void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)

void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)

void glBufferData(GLenum target, GLsizeiptr size, GLvoid *data, GLenum usage)

void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)

GLenum glCheckFramebufferStatus(GLenum target)

void glClampColor(GLenum target, GLenum clamp)

void glClear(GLbitfield mask)

void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)

void glClearBufferfv(GLenum buffer, GLint drawbuffer, GLfloat *value)

void glClearBufferiv(GLenum buffer, GLint drawbuffer, GLint *value)

void glClearBufferuiv(GLenum buffer, GLint drawbuffer, GLuint *value)

void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)

void glClearDepth(GLdouble depth)

void glClearStencil(GLint s)

GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)

void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)

void glCompileShader(GLuint shader)

void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, GLvoid *data)

void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLvoid *data)

void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLvoid *data)

void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, GLvoid *data)

void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLvoid *data)

void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLvoid *data)

void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)

void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)

void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)

void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)

GLuint glCreateProgram(void)

GLuint glCreateShader(GLenum type)

void glCullFace(GLenum mode)

void glDeleteBuffers(GLsizei n, GLuint *buffers)

void glDeleteFramebuffers(GLsizei n, GLuint *framebuffers)

void glDeleteProgram(GLuint program)

void glDeleteQueries(GLsizei n, GLuint *ids)

void glDeleteRenderbuffers(GLsizei n, GLuint *renderbuffers)

void glDeleteShader(GLuint shader)

void glDeleteSync(GLsync sync)

void glDeleteTextures(GLsizei n, GLuint *textures)

void glDeleteVertexArrays(GLsizei n, GLuint *arrays)

void glDepthFunc(GLenum func)

void glDepthMask(GLboolean flag)

void glDepthRange(GLdouble nearVal, GLdouble farVal)

void glDetachShader(GLuint program, GLuint shader)

void glDisable(GLenum cap)

void glDisableVertexAttribArray(GLuint index)

void glDisablei(GLenum target, GLuint index)

void glDrawArrays(GLenum mode, GLint first, GLsizei count)

void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)

void glDrawBuffer(GLenum mode)

void glDrawBuffers(GLsizei n, GLenum *bufs)

void glDrawElements(GLenum mode, GLsizei count, GLenum type, GLvoid *indices)

void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, GLvoid *indices, GLint basevertex)

void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLvoid *indices, GLsizei instancecount)

void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, GLvoid *indices, GLsizei instancecount, GLint basevertex)

void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLvoid *indices)

void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLvoid *indices, GLint basevertex)

void glEnable(GLenum cap)

void glEnableVertexAttribArray(GLuint index)

void glEnablei(GLenum target, GLuint index)

void glEndConditionalRender(void)

void glEndQuery(GLenum target)

void glEndTransformFeedback(void)

GLsync glFenceSync(GLenum condition, GLbitfield flags)

void glFinish(void)

void glFlush(void)

void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)

void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)

void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)

void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)

void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)

void glFrontFace(GLenum mode)

void glGenBuffers(GLsizei n, GLuint *buffers)

void glGenFramebuffers(GLsizei n, GLuint *framebuffers)

void glGenQueries(GLsizei n, GLuint *ids)

void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)

void glGenTextures(GLsizei n, GLuint *textures)

void glGenVertexArrays(GLsizei n, GLuint *arrays)

void glGenerateMipmap(GLenum target)

void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)

void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)

void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)

void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)

void glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)

void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, GLuint *uniformIndices, GLenum pname, GLint *params)

void glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj)

GLint glGetAttribLocation(GLuint program, GLchar *name)

void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data)

void glGetBooleanv(GLenum pname, GLboolean *params)

void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params)

void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params)

void glGetCompressedTexImage(GLenum target, GLint level, GLvoid *img)

void glGetDoublev(GLenum pname, GLdouble *params)

GLenum glGetError(void)

void glGetFloatv(GLenum pname, GLfloat *params)

GLint glGetFragDataLocation(GLuint program, GLchar *name)

void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params)

void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data)

void glGetInteger64v(GLenum pname, GLint64 *params)

void glGetIntegeri_v(GLenum target, GLuint index, GLint *data)

void glGetIntegerv(GLenum pname, GLint *params)

void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val)

void glGetProgramiv(GLuint program, GLenum pname, GLint *params)

void glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params)

void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)

void glGetQueryiv(GLenum target, GLenum pname, GLint *params)

void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params)

void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)

void glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)

void glGetShaderiv(GLuint shader, GLenum pname, GLint *params)

GLubyte * glGetString(GLenum name)

GLubyte * glGetStringi(GLenum name, GLuint index)

void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)

void glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)

void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)

void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)

void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params)

void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)

void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)

GLuint glGetUniformBlockIndex(GLuint program, GLchar *uniformBlockName)

void glGetUniformfv(GLuint program, GLint location, GLfloat *params)

void glGetUniformiv(GLuint program, GLint location, GLint *params)

void glGetUniformuiv(GLuint program, GLint location, GLuint *params)

void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params)

void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params)

void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)

void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params)

void glHint(GLenum target, GLenum mode)

void glIndexub(GLubyte c)

void glIndexubv(GLubyte *c)

GLboolean glIsBuffer(GLuint buffer)

GLboolean glIsEnabled(GLenum cap)

GLboolean glIsEnabledi(GLenum target, GLuint index)

GLboolean glIsFramebuffer(GLuint framebuffer)

GLboolean glIsProgram(GLuint program)

GLboolean glIsQuery(GLuint id)

GLboolean glIsRenderbuffer(GLuint renderbuffer)

GLboolean glIsShader(GLuint shader)

GLboolean glIsSync(GLsync sync)

GLboolean glIsTexture(GLuint texture)

GLboolean glIsVertexArray(GLuint array)

void glLineWidth(GLfloat width)

void glLinkProgram(GLuint program)

void glLogicOp(GLenum opcode)

GLvoid * glMapBuffer(GLenum target, GLenum access)

GLvoid * glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)

void glMultiDrawArrays(GLenum mode, GLint *first, GLsizei *count, GLsizei drawcount)

void glPixelStorei(GLenum pname, GLint param)

void glPointParameterf(GLenum pname, GLfloat param)

void glPointParameterfv(GLenum pname, GLfloat *params)

void glPointParameteri(GLenum pname, GLint param)

void glPointParameteriv(GLenum pname, GLint *params)

void glPointSize(GLfloat size)

void glPolygonMode(GLenum face, GLenum mode)

void glPolygonOffset(GLfloat factor, GLfloat units)

void glPrimitiveRestartIndex(GLuint index)

void glProvokingVertex(GLenum mode)

void glReadBuffer(GLenum mode)

void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)

void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)

void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)

void glSampleCoverage(GLfloat value, GLboolean invert)

void glSampleMaski(GLuint index, GLbitfield mask)

void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)

void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)

void glStencilMask(GLuint mask)

void glStencilMaskSeparate(GLenum face, GLuint mask)

void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)

void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)

void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)

void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, GLvoid *pixels)

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels)

void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)

void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLvoid *pixels)

void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)

void glTexParameterIiv(GLenum target, GLenum pname, GLint *params)

void glTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)

void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

void glTexParameterfv(GLenum target, GLenum pname, GLfloat *params)

void glTexParameteri(GLenum target, GLenum pname, GLint param)

void glTexParameteriv(GLenum target, GLenum pname, GLint *params)

void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, GLvoid *pixels)

void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)

void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *pixels)

void glUniform1fv(GLint location, GLsizei count, GLfloat *value)

void glUniform1i(GLint location, GLint v0)

void glUniform1iv(GLint location, GLsizei count, GLint *value)

void glUniform1ui(GLint location, GLuint v0)

void glUniform1uiv(GLint location, GLsizei count, GLuint *value)

void glUniform2f(GLint location, GLfloat v0, GLfloat v1)

void glUniform2fv(GLint location, GLsizei count, GLfloat *value)

void glUniform2i(GLint location, GLint v0, GLint v1)

void glUniform2iv(GLint location, GLsizei count, GLint *value)

void glUniform2ui(GLint location, GLuint v0, GLuint v1)

void glUniform2uiv(GLint location, GLsizei count, GLuint *value)

void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)

void glUniform3fv(GLint location, GLsizei count, GLfloat *value)

void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2)

void glUniform3iv(GLint location, GLsizei count, GLint *value)

void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)

void glUniform3uiv(GLint location, GLsizei count, GLuint *value)

void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)

void glUniform4fv(GLint location, GLsizei count, GLfloat *value)

void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)

void glUniform4iv(GLint location, GLsizei count, GLint *value)

void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)

void glUniform4uiv(GLint location, GLsizei count, GLuint *value)

void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)

void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)

GLboolean glUnmapBuffer(GLenum target)

void glUseProgram(GLuint program)

void glValidateProgram(GLuint program)

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)

void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)

QOpenGLPaintDevice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglpaintdevice.html

仮引数 : void

親クラス : QPaintDevice

QOpenGLContext * context(void)

qreal dotsPerMeterX(void)

qreal dotsPerMeterY(void)

void ensureActiveTarget(void)

bool paintFlipped(void)

void setDevicePixelRatio(qreal devicePixelRatio)

void setDotsPerMeterX(qreal dpmx)

void setDotsPerMeterY(qreal dpmy)

void setPaintFlipped(bool flipped)

void setSize(QSize size)

QSize size(void)

QOpenGLShader クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglshader.html

仮引数 : QOpenGLShader::ShaderType,QObject *

bool compileSourceCode(char *source)

bool compileSourceCode_2(QByteArray source)

bool compileSourceCode_3(QString source)

bool compileSourceFile(QString fileName)

bool isCompiled(void)

QString log(void)

GLuint shaderId(void)

QOpenGLShader::ShaderType shaderType(void)

QByteArray sourceCode(void)

bool hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context)

QOpenGLShaderProgram クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglshaderprogram.html

仮引数 : QObject *

bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, char *source)

bool addShaderFromSourceCode_2(QOpenGLShader::ShaderType type, QByteArray source)

bool addShaderFromSourceCode_3(QOpenGLShader::ShaderType type, QString source)

bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, QString fileName)

int attributeLocation(char *name)

int attributeLocation_2(QByteArray name)

int attributeLocation_3(QString name)

bool bind(void)

void bindAttributeLocation(char *name, int location)

void bindAttributeLocation_2(QByteArray name, int location)

void bindAttributeLocation_3(QString name, int location)

QVector<float> defaultOuterTessellationLevels(void)

void disableAttributeArray(int location)

void disableAttributeArray_2(char *name)

void enableAttributeArray(int location)

void enableAttributeArray_2(char *name)

bool isLinked(void)

bool link(void)

QString log(void)

int maxGeometryOutputVertices(void)

int patchVertexCount(void)

GLuint programId(void)

void release(void)

void removeAllShaders(void)

void removeShader(QOpenGLShader *shader)

void setAttributeArray(int location, GLfloat *values, int tupleSize, int stride)

void setAttributeArray_2(int location, QVector2D *values, int stride)

void setAttributeArray_3(int location, QVector3D *values, int stride)

void setAttributeArray_4(int location, QVector4D *values, int stride)

void setAttributeArray_5(int location, GLenum type, void *values, int tupleSize, int stride)

void setAttributeArray_6(char *name, GLfloat *values, int tupleSize, int stride)

void setAttributeArray_7(char *name, QVector2D *values, int stride)

void setAttributeArray_8(char *name, QVector3D *values, int stride)

void setAttributeArray_9(char *name, QVector4D *values, int stride)

void setAttributeArray_10(char *name, GLenum type, void *values, int tupleSize, int stride)

void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride)

void setAttributeBuffer_2(char *name, GLenum type, int offset, int tupleSize, int stride)

void setAttributeValue(int location, GLfloat value)

void setAttributeValue_2(int location, GLfloat x, GLfloat y)

void setAttributeValue_3(int location, GLfloat x, GLfloat y, GLfloat z)

void setAttributeValue_4(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void setAttributeValue_5(int location, QVector2D value)

void setAttributeValue_6(int location, QVector3D value)

void setAttributeValue_7(int location, QVector4D value)

void setAttributeValue_8(int location, QColor value)

void setAttributeValue_9(int location, GLfloat *values, int columns, int rows)

void setAttributeValue_10(char *name, GLfloat value)

void setAttributeValue_11(char *name, GLfloat x, GLfloat y)

void setAttributeValue_12(char *name, GLfloat x, GLfloat y, GLfloat z)

void setAttributeValue_13(char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void setAttributeValue_14(char *name, QVector2D value)

void setAttributeValue_15(char *name, QVector3D value)

void setAttributeValue_16(char *name, QVector4D value)

void setDefaultInnerTessellationLevels(QVector<float> levels)

void setDefaultOuterTessellationLevels(QVector<float> levels)

void setPatchVertexCount(int count)

void setUniformValue(int location, GLfloat value)

void setUniformValue_2(int location, GLint value)

void setUniformValue_3(char *name, QColor color)

void setUniformValue_4(char *name, QPoint point)

void setUniformValue_5(char *name, QPointF point)

void setUniformValue_6(char *name, QSize size)

void setUniformValue_7(char *name, QSizeF size)

void setUniformValue_8(char *name, QMatrix2x2 value)

void setUniformValue_9(char *name, QMatrix2x3 value)

void setUniformValue_10(char *name, QMatrix2x4 value)

void setUniformValue_11(char *name, QMatrix3x2 value)

void setUniformValue_12(char *name, QMatrix3x3 value)

void setUniformValue_13(char *name, QMatrix3x4 value)

void setUniformValue_14(char *name, QMatrix4x2 value)

void setUniformValue_15(char *name, QMatrix4x3 value)

void setUniformValue_16(char *name, QMatrix4x4 value)

void setUniformValue_21(int location, GLuint value)

void setUniformValue_22(int location, GLfloat x, GLfloat y)

void setUniformValue_23(int location, GLfloat x, GLfloat y, GLfloat z)

void setUniformValue_24(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void setUniformValue_25(int location, QVector2D value)

void setUniformValue_26(int location, QVector3D value)

void setUniformValue_27(int location, QVector4D value)

void setUniformValue_28(int location, QColor color)

void setUniformValue_29(int location, QPoint point)

void setUniformValue_30(int location, QPointF point)

void setUniformValue_31(int location, QSize size)

void setUniformValue_32(int location, QSizeF size)

void setUniformValue_33(int location, QMatrix2x2 value)

void setUniformValue_34(int location, QMatrix2x3 value)

void setUniformValue_35(int location, QMatrix2x4 value)

void setUniformValue_36(int location, QMatrix3x2 value)

void setUniformValue_37(int location, QMatrix3x3 value)

void setUniformValue_38(int location, QMatrix3x4 value)

void setUniformValue_39(int location, QMatrix4x2 value)

void setUniformValue_40(int location, QMatrix4x3 value)

void setUniformValue_41(int location, QMatrix4x4 value)

void setUniformValue_46(char *name, GLfloat value)

void setUniformValue_47(char *name, GLint value)

void setUniformValue_48(char *name, GLuint value)

void setUniformValue_49(char *name, GLfloat x, GLfloat y)

void setUniformValue_50(char *name, GLfloat x, GLfloat y, GLfloat z)

void setUniformValue_51(char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

void setUniformValue_52(char *name, QVector2D value)

void setUniformValue_53(char *name, QVector3D value)

void setUniformValue_54(char *name, QVector4D value)

void setUniformValueArray(int location, GLfloat *values, int count, int tupleSize)

void setUniformValueArray_2(int location, GLint *values, int count)

void setUniformValueArray_3(int location, GLuint *values, int count)

void setUniformValueArray_4(int location, QVector2D *values, int count)

void setUniformValueArray_5(int location, QVector3D *values, int count)

void setUniformValueArray_6(int location, QVector4D *values, int count)

void setUniformValueArray_7(int location, QMatrix2x2 *values, int count)

void setUniformValueArray_8(int location, QMatrix2x3 *values, int count)

void setUniformValueArray_9(int location, QMatrix2x4 *values, int count)

void setUniformValueArray_10(int location, QMatrix3x2 *values, int count)

void setUniformValueArray_11(int location, QMatrix3x3 *values, int count)

void setUniformValueArray_12(int location, QMatrix3x4 *values, int count)

void setUniformValueArray_13(int location, QMatrix4x2 *values, int count)

void setUniformValueArray_14(int location, QMatrix4x3 *values, int count)

void setUniformValueArray_15(int location, QMatrix4x4 *values, int count)

void setUniformValueArray_16(char *name, GLfloat *values, int count, int tupleSize)

void setUniformValueArray_17(char *name, GLint *values, int count)

void setUniformValueArray_18(char *name, GLuint *values, int count)

void setUniformValueArray_19(char *name, QVector2D *values, int count)

void setUniformValueArray_20(char *name, QVector3D *values, int count)

void setUniformValueArray_21(char *name, QVector4D *values, int count)

void setUniformValueArray_22(char *name, QMatrix2x2 *values, int count)

void setUniformValueArray_23(char *name, QMatrix2x3 *values, int count)

void setUniformValueArray_24(char *name, QMatrix2x4 *values, int count)

void setUniformValueArray_25(char *name, QMatrix3x2 *values, int count)

void setUniformValueArray_26(char *name, QMatrix3x3 *values, int count)

void setUniformValueArray_27(char *name, QMatrix3x4 *values, int count)

void setUniformValueArray_28(char *name, QMatrix4x2 *values, int count)

void setUniformValueArray_29(char *name, QMatrix4x3 *values, int count)

void setUniformValueArray_30(char *name, QMatrix4x4 *values, int count)

QList<QOpenGLShader *> shaders(void)

int uniformLocation(char *name)

int uniformLocation_2(QByteArray name)

int uniformLocation_3(QString name)

bool hasOpenGLShaderPrograms(QOpenGLContext *context)

QOpenGLTexture クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopengltexture.html

仮引数 : QOpenGLTexture::Target

void allocateStorage(void)

void bind_2(uint unit, QOpenGLTexture::TextureUnitReset reset)

QColor borderColor(void)

void borderColor_2(float *border)

void borderColor_3(int *border)

void borderColor_4(unsigned int *border)

QOpenGLTexture * createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, int minimumMipmapLevel, int maximumMipmapLevel, int minimumLayer, int maximumLayer)

int depth(void)

QOpenGLTexture::DepthStencilMode depthStencilMode(void)

void destroy(void)

int faces(void)

QOpenGLTexture::TextureFormat format(void)

void generateMipMaps(void)

void generateMipMaps_2(int baseLevel, bool resetBaseLevel)

int height(void)

bool isAutoMipMapGenerationEnabled(void)

bool isBound(void)

bool isBound_2(uint unit)

bool isCreated(void)

bool isTextureView(void)

int layers(void)

QPair<float, float> levelOfDetailRange(void)

float levelofDetailBias(void)

QOpenGLTexture::Filter magnificationFilter(void)

float maximumAnisotropy(void)

float maximumLevelOfDetail(void)

int maximumMipLevels(void)

float minimumLevelOfDetail(void)

int mipBaseLevel(void)

int mipMaxLevel(void)

void release(void)

void release_2(uint unit, QOpenGLTexture::TextureUnitReset reset)

void setBorderColor(QColor color)

void setBorderColor_4(uint r, uint g, uint b, uint a)

void setCompressedData_4(int mipLevel, int dataSize, void *data, QOpenGLPixelTransferOptions * options)

void setCompressedData_5(int dataSize, void *data, QOpenGLPixelTransferOptions * options)

void setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, QOpenGLPixelTransferOptions * options)

void setData_4(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, QOpenGLPixelTransferOptions * options)

void setData_5(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, QOpenGLPixelTransferOptions * options)

void setData_6(QImage image, QOpenGLTexture::MipMapGeneration genMipMaps)

void setDepthStencilMode(QOpenGLTexture::DepthStencilMode mode)

void setLayers(int layers)

void setLevelOfDetailRange(float min, float max)

void setLevelofDetailBias(float bias)

void setMagnificationFilter(QOpenGLTexture::Filter filter)

void setMaximumAnisotropy(float anisotropy)

void setMaximumLevelOfDetail(float value)

void setMinMagFilters(QOpenGLTexture::Filter minificationQOpenGLTexture::Filter, QOpenGLTexture::Filter magnificationQOpenGLTexture::Filter)

void setMinificationFilter(QOpenGLTexture::Filter filter)

void setMinimumLevelOfDetail(float value)

void setMipBaseLevel(int baseLevel)

void setMipLevelRange(int baseLevel, int maxLevel)

void setMipLevels(int levels)

void setMipMaxLevel(int maxLevel)

void setSwizzleMask(QOpenGLTexture::SwizzleComponent component, QOpenGLTexture::SwizzleValue value)

void setSwizzleMask_2(QOpenGLTexture::SwizzleValue r, QOpenGLTexture::SwizzleValue g, QOpenGLTexture::SwizzleValue b, QOpenGLTexture::SwizzleValue a)

void setWrapMode(QOpenGLTexture::WrapMode mode)

void setWrapMode_2(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode)

QOpenGLTexture::SwizzleValue swizzleMask(QOpenGLTexture::SwizzleComponent component)

int width(void)

QOpenGLTexture::WrapMode wrapMode(QOpenGLTexture::CoordinateDirection direction)

GLuint boundTextureId(QOpenGLTexture::BindingTarget target)

QOpenGLTimerQuery クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopengltimerquery.html

仮引数 : QObject *

void begin(void)

bool create(void)

void destroy(void)

void end(void)

bool isCreated(void)

bool isResultAvailable(void)

GLuint objectId(void)

void recordTimestamp(void)

GLuint64 waitForResult(void)

GLuint64 waitForTimestamp(void)

QOpenGLVersionProfile クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglversionprofile.html

仮引数 : void

bool hasProfiles(void)

bool isLegacyVersion(void)

bool isValid(void)

QSurfaceFormat::OpenGLContextProfile profile(void)

void setProfile(QSurfaceFormat::OpenGLContextProfile profile)

void setVersion(int majorVersion, int minorVersion)

QPair<int, int> version(void)

QOpenGLVertexArrayObject クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglvertexarrayobject.html

仮引数 : QObject *

void bind(void)

bool create(void)

void destroy(void)

bool isCreated(void)

GLuint objectId(void)

void release(void)

QOpenGLWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qopenglwidget.html

仮引数 : QWidget *

親クラス : QWidget

void geteventparameters(void)

void setInitEvent(const char *cStr)

const char *getInitEvent(void)

void setPaintEvent(const char *cStr)

const char *getPaintEvent(void)

void setResizeEvent(const char *cStr)

const char *getResizeEvent(void)

QOpenGLContext * context(void)

GLuint defaultFramebufferObject(void)

void doneCurrent(void)

QSurfaceFormat format(void)

QImage grabFramebuffer(void)

bool isValid(void)

void makeCurrent(void)

void setFormat(QSurfaceFormat format)

QOpenGLWidget::UpdateBehavior updateBehavior(void)

QOrbitCameraController クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qorbitcameracontroller.html

仮引数 : Qt3DCore::QNode *

親クラス : QAbstractCameraController

void setZoomInLimit(float zoomInLimit)

float zoomInLimit(void)

QPageSetupDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpagesetupdialog.html

仮引数 : QPrinter *,QWidget *

親クラス : QDialog

void open(QObject * receiver, char * member)

QPrinter * printer(void)

QPaintDevice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpaintdevice.html

int colorCount(void)

int depth(void)

int devicePixelRatio(void)

int heightMM(void)

int logicalDpiX(void)

int logicalDpiY(void)

QPaintEngine * paintEngine(void)

bool paintingActive(void)

int physicalDpiX(void)

int physicalDpiY(void)

int width(void)

int widthMM(void)

QPainter クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpainter.html

仮引数 : void

QBrush background(void)

int backgroundMode(void)

bool begin(QPaintDevice *device)

void beginNativePainting(void)

QRect boundingRect(int x, int y, int w, int h, int flags, QString text)

QBrush brush(void)

QPoint brushOrigin(void)

QRectF clipBoundingRect(void)

QPainterPath clipPath(void)

QRegion clipRegion(void)

QTransform combinedTransform(void)

int compositionMode(void)

QPaintDevice *device(void)

QTransform deviceTransform(void)

void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)

void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)

void drawEllipse(int x, int y, int width, int height)

void drawGlyphRun(QPointF position, QGlyphRun glyphs)

void drawImage(int x, int y, QImage image)

void drawLine(int x1, int y1, int x2, int y2)

void drawLines(QLine *lines, int lineCount)

void drawPath(QPainterPath path)

void drawPicture(int x, int y, QPicture picture)

void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)

void drawPixmap(int x, int y, QPixmap)

void drawPoint(int x, int y)

void drawRect(int x, int y, int width, int height)

void drawRects(QRectF *rectangles, int rectCount)

void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode)

void drawStaticText(int left, int top, QStaticText staticText)

void drawText(int x, int y, QString text)

void drawTiledPixmap(int x, int y, int width, int height, QPixmap pixmap, int sx, int sy)

bool end(void) # RingQt では bool endpaint(void) を使用

void endNativePainting(void)

void eraseRect(int x, int y, int width, int height)

void fillPath(QPainterPath path, QBrush brush)

void fillRect(int x, int y, int width, int height, QBrush)

QFont font(void)

QFontInfo fontInfo(void)

bool hasClipping(void)

void initFrom(QWidget *widget)

bool isActive(void)

int layoutDirection(void)

double opacity(void)

QPaintEngine *paintEngine(void)

QPen pen(void)

int renderHints(void)

void resetTransform(void)

void restore(void)

void rotate(qreal angle)

void save(void)

void scale(double sx, double sy)

void setBackground(QBrush brush)

void setBackgroundMode(Qt::BGMode mode)

void setBrush(QBrush brush)

void setBrushOrigin(int x, int y)

void setClipPath(QPainterPath path, Qt::ClipOperation operation)

void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation)

void setClipRegion(QRegion region, Qt::ClipOperation operation)

void setClipping(bool enable)

void setCompositionMode(QPainter::CompositionMode mode)

void setFont(QFont font)

void setLayoutDirection(Qt::LayoutDirection direction)

void setOpacity(qreal opacity)

void setPen(QPen pen)

void setRenderHint(QPainter::RenderHint hint, bool on)

void setTransform(QTransform transform, bool combine)

void setViewTransformEnabled(bool enable)

void setViewport(int x, int y, int width, int height)

void setWindow(int x, int y, int width, int height)

void setWorldMatrixEnabled(bool enable)

void setWorldTransform( QTransform matrix, bool combine)

void shear(double sh, double sv)

void strokePath(QPainterPath path, QPen pen)

bool testRenderHint(QPainter::RenderHint hint)

QTransform transform(void)

void translate(double dx, double dy)

bool viewTransformEnabled(void)

QRect viewport(void)

QRect window(void)

bool worldMatrixEnabled(void)

QTransform worldTransform(void)

void drawPolygon(List *pPoints, Qt::FillRule fillRule)

void drawConvexPolygon(List *pPoints)

void drawPoints(List *pPoints)

void drawPolyline(List *pPoints)

QPainter2 クラス

仮引数 : QPaintDevice *

親クラス : QPainter

QPainterPath クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpainterpath.html

仮引数 : void

void addEllipse(qreal x, qreal y, qreal width, qreal height)

void addPath(QPainterPath)

void addPolygon(QPolygonF)

void addRect(qreal x, qreal y, qreal width, qreal height)

void addRegion(QRegion)

void addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode)

void addText(qreal x, qreal y, QFont, QString)

qreal angleAtPercent(qreal t)

void arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle)

void arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength)

QRectF boundingRect(void)

void closeSubpath(void)

void connectPath(QPainterPath)

bool contains(QPointF)

QRectF controlPointRect(void)

void cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY)

QPointF currentPosition(void)

QPainterPath::Element elementAt(int index)

int elementCount(void)

Qt::FillRule fillRule(void)

QPainterPath intersected(QPainterPath)

bool intersects(QRectF)

bool isEmpty(void)

qreal length(void)

void lineTo(qreal x, qreal y)

void moveTo(qreal x, qreal y)

qreal percentAtLength(qreal len)

QPointF pointAtPercent(qreal t)

void quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY)

void setElementPositionAt(int index, qreal x, qreal y)

void setFillRule(Qt::FillRule fillRule)

QPainterPath simplified(void)

qreal slopeAtPercent(qreal t)

QPainterPath subtracted(QPainterPath)

void swap(QPainterPath)

QPolygonF toFillPolygon(QTransform)

QPainterPath toReversed(void)

void translate(qreal dx, qreal dy)

QPainterPath translated(qreal dx, qreal dy)

QPainterPath united(QPainterPath)

QPen クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpen.html

仮引数 : void

QBrush brush(void)

int capStyle(void)

QColor color(void)

double dashOffset(void)

bool isCosmetic(void)

bool isSolid(void)

int joinStyle(void)

double miterLimit(void)

void setBrush(QBrush)

void setCapStyle(Qt::PenCapStyle style)

void setColor(QColor)

void setCosmetic(bool cosmetic)

void setDashOffset(double offset)

void setJoinStyle(Qt::PenJoinStyle style)

void setMiterLimit(double limit)

void setStyle(Qt::PenStyle style)

void setWidth(int width)

void setWidthF(double width)

int style(void)

void swap(QPen)

int width(void)

double widthF(void)

QPerVertexColorMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qpervertexcolormaterial.html

仮引数 : Qt3DCore::QNode *

QPercentBarSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpercentbarseries.html

仮引数 : QObject *

親クラス : QAbstractBarSeries

QAbstractSeries::SeriesType type(void)

QPhongMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qphongmaterial.html

仮引数 : Qt3DCore::QNode *

QColor ambient(void)

QColor diffuse(void)

float shininess(void)

QColor specular(void)

void setAmbient(QColor ambient)

void setDiffuse(QColor diffuse)

void setShininess(float shininess)

void setSpecular(QColor specular)

QPicture クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpicture.html

仮引数 : void

QRect boundingRect(void)

const char *data(void)

bool isNull(void)

bool load(QString, const char *format) # RingQt では bool loadfile(QString, const char *format) を使用

bool play(QPainter *painter)

bool save(QString , const char *format)

void setBoundingRect(QRect)

int size(void)

void swap(QPicture)

QPieLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpielegendmarker.html

親クラス : QLegendMarker

QPieSlice * slice(void)

QPieSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpieseries.html

仮引数 : QObject *

親クラス : QAbstractSeries

bool append_2(QList<QPieSlice *> slices)

QPieSlice * append_3(QString label, qreal value)

void clear(void)

int count(void)

qreal holeSize(void)

qreal horizontalPosition(void)

bool insert(int index, QPieSlice *slice)

bool isEmpty(void)

qreal pieEndAngle(void)

qreal pieSize(void)

qreal pieStartAngle(void)

bool remove(QPieSlice *slice)

void setHoleSize(qreal holeSize)

void setHorizontalPosition(qreal relativePosition)

void setLabelsPosition(QPieSlice::LabelPosition position)

void setLabelsVisible(bool visible)

void setPieEndAngle(qreal angle)

void setPieSize(qreal relativeSize)

void setPieStartAngle(qreal startAngle)

void setVerticalPosition(qreal relativePosition)

QList<QPieSlice *> slices(void)

qreal sum(void)

bool take(QPieSlice *slice)

qreal verticalPosition(void)

void setaddedEvent(const char *)

void setclickedEvent(const char *)

void setcountChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void setremovedEvent(const char *)

void setsumChangedEvent(const char *)

const char *getaddedEvent(void)

const char *getclickedEvent(void)

const char *getcountChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *getremovedEvent(void)

const char *getsumChangedEvent(void)

QPieSlice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpieslice.html

仮引数 : QObject *

親クラス : QObject

QColor borderColor(void)

int borderWidth(void)

QBrush brush(void)

QColor color(void)

qreal explodeDistanceFactor(void)

bool isExploded(void)

bool isLabelVisible(void)

QString label(void)

qreal labelArmLengthFactor(void)

QBrush labelBrush(void)

QColor labelColor(void)

QFont labelFont(void)

QPieSlice::LabelPosition labelPosition(void)

QPen pen(void)

qreal percentage(void)

QPieSeries * series(void)

void setBorderColor(QColor color)

void setBorderWidth(int width)

void setBrush(QBrush brush)

void setColor(QColor color)

void setExplodeDistanceFactor(qreal factor)

void setExploded(bool exploded)

void setLabel(QString label)

void setLabelArmLengthFactor(qreal factor)

void setLabelBrush(QBrush brush)

void setLabelColor(QColor color)

void setLabelFont(QFont font)

void setLabelPosition(QPieSlice::LabelPosition position)

void setLabelVisible(bool visible)

void setPen(QPen pen)

void setValue(qreal value)

qreal startAngle(void)

qreal value(void)

void setangleSpanChangedEvent(const char *)

void setborderColorChangedEvent(const char *)

void setborderWidthChangedEvent(const char *)

void setbrushChangedEvent(const char *)

void setclickedEvent(const char *)

void setcolorChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setlabelBrushChangedEvent(const char *)

void setlabelChangedEvent(const char *)

void setlabelColorChangedEvent(const char *)

void setlabelFontChangedEvent(const char *)

void setlabelVisibleChangedEvent(const char *)

void setpenChangedEvent(const char *)

void setpercentageChangedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void setstartAngleChangedEvent(const char *)

void setvalueChangedEvent(const char *)

const char *getangleSpanChangedEvent(void)

const char *getborderColorChangedEvent(void)

const char *getborderWidthChangedEvent(void)

const char *getbrushChangedEvent(void)

const char *getclickedEvent(void)

const char *getcolorChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getlabelBrushChangedEvent(void)

const char *getlabelChangedEvent(void)

const char *getlabelColorChangedEvent(void)

const char *getlabelFontChangedEvent(void)

const char *getlabelVisibleChangedEvent(void)

const char *getpenChangedEvent(void)

const char *getpercentageChangedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *getstartAngleChangedEvent(void)

const char *getvalueChangedEvent(void)

QPixmap クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpixmap.html

仮引数 : const char *

QPixmap copy(int x, int y, int width, int height)

QPixmap scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode, Qt::TransformationMode transformMode)

int width(void)

int height(void)

QBitmap createMaskFromColor(QColor , Qt::MaskMode)

QBitmap mask(void)

void setMask(QBitmap)

void fill(QColor)

QPixmap fromImage(QImage,Qt::ImageConversionFlags)

bool load(QString, const char *, Qt::ImageConversionFlags )

qint64 cacheKey(void)

bool convertFromImage(QImage image, Qt::ImageConversionFlags flags)

QPixmap copy_2(QRect rectangle)

QBitmap createHeuristicMask(bool clipTight)

int depth(void)

void detach(void)

qreal devicePixelRatio(void)

bool hasAlpha(void)

bool hasAlphaChannel(void)

bool isNull(void)

bool isQBitmap(void)

bool loadFromData(uchar *data, uint len, char *format, Qt::ImageConversionFlags flags)

bool loadFromData_2(QByteArray data, char *format, Qt::ImageConversionFlags flags)

QRect rect(void)

bool save(QString fileName, char *format, int quality)

bool save_2(QIODevice *device, char *format, int quality)

QPixmap scaled_2(QSize size, Qt::AspectRatioMode aspectRatioMode, Qt::TransformationMode transformMode)

QPixmap scaledToHeight(int height, Qt::TransformationMode mode)

QPixmap scaledToWidth(int width, Qt::TransformationMode mode)

void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed)

void scroll_2(int dx, int dy, QRect rect, QRegion *exposed)

void setDevicePixelRatio(qreal scaleFactor)

QSize size(void)

void swap(QPixmap other)

QImage toImage(void)

QPixmap transformed(QTransform transform, Qt::TransformationMode mode)

QPixmap transformed_2(QMatrix matrix, Qt::TransformationMode mode)

int defaultDepth(void)

QPixmap fromImage_2(QImage image, Qt::ImageConversionFlags flags)

QPixmap fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags)

QTransform trueMatrix(QTransform matrix, int width, int height)

QMatrix trueMatrix_2(QMatrix m, int w, int h)

QPixmap2 クラス

仮引数 : int width, int height

親クラス : QPixmap

QPlainTextEdit クラス

C++ リファレンス : http://doc.qt.io/qt-5/qplaintextedit.html

仮引数 : QWidget *

親クラス : QAbstractScrollArea

QString anchorAt(QPoint pos)

bool backgroundVisible(void)

int blockCount(void)

bool canPaste(void)

bool centerOnScroll(void)

QMenu * createStandardContextMenu(void)

QTextCharFormat currentCharFormat(void)

QTextCursor cursorForPosition(QPoint pos)

QRect cursorRect(QTextCursor cursor)

QRect cursorRect_2(void)

int cursorWidth(void)

QTextDocument * document(void)

QString documentTitle(void)

void ensureCursorVisible(void)

QList<QTextEdit::ExtraSelection> extraSelections(void)

bool find(QString exp, QTextDocument::FindFlags options)

bool isReadOnly(void)

bool isUndoRedoEnabled(void)

QPlainTextEdit::LineWrapMode lineWrapMode(void)

int maximumBlockCount(void)

void mergeCurrentCharFormat(QTextCharFormat modifier)

void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode)

bool overwriteMode(void)

void print(QPagedPaintDevice *printer)

void setBackgroundVisible(bool visible)

void setCenterOnScroll(bool enabled)

void setCurrentCharFormat(QTextCharFormat format)

void setCursorWidth(int width)

void setDocument(QTextDocument *document)

void setDocumentTitle(QString title)

void setExtraSelections(QList<QTextEdit::ExtraSelection> selections)

void setLineWrapMode(QPlainTextEdit::LineWrapMode mode)

void setMaximumBlockCount(int maximum)

void setOverwriteMode(bool overwrite)

void setReadOnly(bool ro)

void setTabChangesFocus(bool b)

void setTabStopWidth(int width)

void setTextCursor(QTextCursor cursor)

void setTextInteractionFlags(Qt::TextInteractionFlags flags)

void setUndoRedoEnabled(bool enable)

void setWordWrapMode(QTextOption::WrapMode policy)

bool tabChangesFocus(void)

int tabStopWidth(void)

QTextCursor textCursor(void)

Qt::TextInteractionFlags textInteractionFlags(void)

QString toPlainText(void)

QTextOption::WrapMode wordWrapMode(void)

void appendHtml(QString html)

void appendPlainText(QString text)

void centerCursor(void)

void clear(void)

void copy(void)

void cut(void)

void insertPlainText(QString text)

void paste(void)

void redo(void)

void selectAll(void)

void setPlainText(QString text)

void undo(void)

void zoomIn(int range)

void zoomOut(int range)

void setblockCountChangedEvent(const char *cStr)

void setcopyAvailableEvent(const char *cStr)

void setcursorPositionChangedEvent(const char *cStr)

void setmodificationChangedEvent(const char *cStr)

void setredoAvailableEvent(const char *cStr)

void setselectionChangedEvent(const char *cStr)

void settextChangedEvent(const char *cStr)

void setundoAvailableEvent(const char *cStr)

void setupdateRequestEvent(const char *cStr)

const char *getblockCountChangedEvent(void)

const char *getcopyAvailableEvent(void)

const char *getcursorPositionChangedEvent(void)

const char *getmodificationChangedEvent(void)

const char *getredoAvailableEvent(void)

const char *getselectionChangedEvent(void)

const char *gettextChangedEvent(void)

const char *getundoAvailableEvent(void)

const char *getupdateRequestEvent(void)

void cyanline(void)

void setactivelinecolor(QColor)

QPlaneMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qplanemesh.html

仮引数 : Qt3DCore::QNode *

float height(void)

QSize meshResolution(void)

bool mirrored(void)

float width(void)

void setHeight(float height)

void setMeshResolution(QSize resolution)

void setMirrored(bool mirrored)

void setWidth(float width)

QPoint クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpoint.html

仮引数 : void

bool isNull(void)

int manhattanLength(void)

int rx(void)

int ry(void)

void setX(int x)

void setY(int y)

int x(void)

int y(void)

QPointF クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpointf.html

仮引数 : void

bool isNull(void)

qreal manhattanLength(void)

qreal rx(void)

qreal ry(void)

void setX(qreal x)

void setY(qreal y)

QPoint toPoint(void)

qreal x(void)

qreal y(void)

QPointLight クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qpointlight.html

仮引数 : Qt3DCore::QNode *

float constantAttenuation(void)

float linearAttenuation(void)

float quadraticAttenuation(void)

void setConstantAttenuation(float value)

void setLinearAttenuation(float value)

void setQuadraticAttenuation(float value)

void setColor(QColor)

void setIntensity(float intensity)

QPolarChart クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpolarchart.html

仮引数 : QGraphicsItem *,Qt::WindowFlags

親クラス : QChart

QList<QAbstractAxis *> axes(QPolarChart::PolarOrientations polarOrientation, QAbstractSeries *series )

QPrintDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprintdialog.html

仮引数 : QPrinter *,QWidget *

親クラス : QAbstractPrintDialog

void open(QObject * receiver, char * member)

QAbstractPrintDialog::PrintDialogOptions options(void)

QPrinter * printer(void)

void setOption(QAbstractPrintDialog::PrintDialogOption option, bool on)

void setOptions(QAbstractPrintDialog::PrintDialogOptions options)

bool testOption(QAbstractPrintDialog::PrintDialogOption option)

void setacceptedEvent(const char *)

const char *getacceptedEvent(void)

QPrintPreviewDialog クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprintpreviewdialog.html

仮引数 : QPrinter *

親クラス : QDialog

void open(QObject * receiver, char * member)

QPrinter * printer(void)

void setpaintRequestedEvent(const char *)

const char *getpaintRequestedEvent(void)

QPrintPreviewWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprintpreviewwidget.html

仮引数 : QPrinter *

親クラス : QWidget

int currentPage(void)

QPrinter::Orientation orientation(void)

int pageCount(void)

QPrintPreviewWidget::ViewMode viewMode(void)

qreal zoomFactor(void)

QPrintPreviewWidget::ZoomMode zoomMode(void)

void fitInView(void)

void fitToWidth(void)

void print(void)

void setAllPagesViewMode(void)

void setCurrentPage(int page)

void setFacingPagesViewMode(void)

void setLandscapeOrientation(void)

void setOrientation(QPrinter::Orientation orientation)

void setPortraitOrientation(void)

void setSinglePageViewMode(void)

void setViewMode(QPrintPreviewWidget::ViewMode mode)

void setZoomFactor(qreal factor)

void setZoomMode(QPrintPreviewWidget::ZoomMode zoomMode)

void updatePreview(void)

void zoomIn(qreal factor)

void zoomOut(qreal factor)

void setpaintRequestedEvent(const char *)

void setpreviewChangedEvent(const char *)

const char *getpaintRequestedEvent(void)

const char *getpreviewChangedEvent(void)

QPrinter クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprinter.html

仮引数 : QPrinter::PrinterMode

bool abort(void)

bool collateCopies(void)

int colorMode(void)

int copyCount(void)

QString creator(void)

QString docName(void)

int duplex(void)

bool fontEmbeddingEnabled(void)

int fromPage(void)

bool fullPage(void)

bool isValid(void)

QString outputFileName(void)

int outputFormat(void)

QRectF pageRect(QPrinter::Unit unit)

QRectF paperRect(QPrinter::Unit unit)

int paperSource(void)

QPrintEngine *printEngine(void)

QString printProgram(void)

int printRange(void)

QString printerName(void)

QString printerSelectionOption(void)

int printerState(void)

int resolution(void)

void setCollateCopies(bool collate)

void setColorMode(QPrinter::ColorMode newColorMode)

void setCopyCount(int count)

void setCreator(QString)

void setDocName(QString)

void setDuplex(QPrinter::DuplexMode duplex)

void setFontEmbeddingEnabled(bool enable)

void setFromTo(int from, int to)

void setFullPage(bool fp)

void setOutputFileName(QString)

void setOutputFormat(QPrinter::OutputFormat format)

void setPrintProgram(QString)

void setPrintRange(QPrinter::PrintRange)

void setPrinterName(QString)

void setPrinterSelectionOption(QString)

void setResolution(int dpi)

bool supportsMultipleCopies(void)

int toPage(void)

bool newPage(void)

QPaintEngine *paintEngine(void)

void setPageSizeMM(QSizeF)

QPrinterInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprinterinfo.html

仮引数 : void

QString description(void)

bool isDefault(void)

bool isNull(void)

QString location(void)

QString makeAndModel(void)

QString printerName(void)

QPrinterInfo printerInfo(QString printerName

QProcess クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprocess.html

仮引数 : QObject *

親クラス : QIODevice

QStringList arguments(void)

void closeReadChannel(QProcess::ProcessChannel channel)

void closeWriteChannel(void)

QProcess::ProcessError error(void)

int exitCode(void)

QProcess::ExitStatus exitStatus(void)

QProcess::InputChannelMode inputChannelMode(void)

QProcess::ProcessChannelMode processChannelMode(void)

QProcessEnvironment processEnvironment(void)

QString program(void)

QByteArray readAllStandardError(void)

QByteArray readAllStandardOutput(void)

QProcess::ProcessChannel readChannel(void)

void setArguments( QStringList arguments)

void setInputChannelMode(QProcess::InputChannelMode mode)

void setProcessChannelMode(QProcess::ProcessChannelMode mode)

void setProcessEnvironment( QProcessEnvironment environment)

void setProgram( QString program)

void setReadChannel(QProcess::ProcessChannel channel)

void setStandardErrorFile( QString fileName, QIODevice::OpenMode mode )

void setStandardInputFile( QString fileName)

void setStandardOutputFile( QString fileName, QIODevice::OpenMode mode )

void setStandardOutputProcess(QProcess *destination)

void setWorkingDirectory( QString dir)

void start( QString program, QStringList arguments, QIODevice::OpenMode mode )

void start_2( QString command, QIODevice::OpenMode mode )

void start_3(QIODevice::OpenMode mode )

QProcess::ProcessState state(void)

bool waitForFinished(int msecs )

bool waitForStarted(int msecs )

QString workingDirectory(void)

void kill(void)

void terminate(void)

void setreadyReadStandardErrorEvent(const char *)

void setreadyReadStandardOutputEvent(const char *)

const char *getreadyReadStandardErrorEvent(void)

const char *getreadyReadStandardOutputEvent(void)

QProgressBar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qprogressbar.html

仮引数 : QWidget *parent

親クラス : QWidget

int alignment(void)

QString format(void)

bool invertedAppearance(void)

bool isTextVisible(void)

int maximum(void)

int minimum(void)

int orientation(void)

void resetFormat(void)

void setAlignment(Qt::AlignmentFlag alignment)

void setFormat(QString)

void setInvertedAppearance(bool invert)

void setTextDirection(QProgressBar::Direction textDirection)

void setTextVisible(bool visible)

QString text(void)

int textDirection(void)

int value(void)

void reset(void)

void setMaximum(int maximum)

void setMinimum(int minimum)

void setOrientation(Qt::Orientation)

void setRange(int minimum, int maximum)

void setValue(int value)

void setvalueChangedEvent(const char *)

const char *getvalueChangedEvent(void)

QPushButton クラス

C++ リファレンス : http://doc.qt.io/qt-5/qpushbutton.html

仮引数 : QWidget *

親クラス : QAbstractButton

void setText(const char *)

void setClickEvent(const char *)

void setIcon(QIcon)

void setIconSize(QSize)

const char *getClickEvent(void)

QQmlEngine クラス

C++ リファレンス : http://doc.qt.io/qt-5/qqmlengine.html

仮引数 : QObject *

void addImageProvider(QString providerId, QQmlImageProviderBase *provider)

void addImportPath(QString path)

void addPluginPath(QString path)

QUrl baseUrl(void)

void clearComponentCache(void)

QQmlImageProviderBase *imageProvider(QString providerId)

QStringList importPathList(void)

bool importPlugin(QString filePath, QString uri, QList<QQmlError> *errors)

QQmlIncubationController *incubationController(void)

QNetworkAccessManager *networkAccessManager(void)

QQmlNetworkAccessManagerFactory *networkAccessManagerFactory(void)

QString offlineStorageDatabaseFilePath(QString databaseName)

QString offlineStoragePath(void)

bool outputWarningsToStandardError(void)

QStringList pluginPathList(void)

void removeImageProvider(QString providerId)

QQmlContext *rootContext(void)

void setBaseUrl(QUrl url)

void setImportPathList(QStringList paths)

void setIncubationController(QQmlIncubationController *controller)

void setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory *factory)

void setOfflineStoragePath(QString dir)

void setOutputWarningsToStandardError(bool enabled)

void setPluginPathList(QStringList paths)

void trimComponentCache(void)

void retranslate(void)

QQmlContext * contextForObject(QObject *object)

QQmlEngine::ObjectOwnership objectOwnership(QObject *object)

void setContextForObject(QObject *object, QQmlContext *context)

void setObjectOwnership(QObject *object, QQmlEngine::ObjectOwnership ownership)

QQmlError クラス

C++ リファレンス : http://doc.qt.io/qt-5/qqmlerror.html

仮引数 : void

int column(void)

QString description(void)

bool isValid(void)

int line(void)

QObject * object(void)

void setColumn(int column)

void setDescription(QString description)

void setLine(int line)

void setObject(QObject *object)

void setUrl(QUrl url)

QString toString(void)

QUrl url(void)

QQuaternion クラス

C++ リファレンス : http://doc.qt.io/qt-5/qquaternion.html

仮引数 : float,float,float,float

bool isNull(void)

float length(void)

float lengthSquared(void)

void normalize(void)

QQuaternion normalized(void)

QVector3D rotatedVector(QVector3D vector)

float scalar(void)

void setScalar(float scalar)

void setVector(QVector3D vector)

void setVector_2(float x, float y, float z)

void setX(float x)

void setY(float y)

void setZ(float z)

QVector3D vector(void)

float x(void)

float y(void)

float z(void)

QQuaternion fromAxisAndAngle_2(float x, float y, float z, float angle)

QQuaternion nlerp(QQuaternion q1, QQuaternion q2, float t)

QQuaternion slerp(QQuaternion q1, QQuaternion q2, float t)

QQuickView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qquickview.html

仮引数 : void

親クラス : QWindow

QQmlEngine *engine(void)

QList<QQmlError> errors(void)

QSize initialSize(void)

QQuickWidget::ResizeMode resizeMode(void)

QQmlContext *rootContext(void)

QQuickItem *rootObject(void)

void setFormat(QSurfaceFormat format)

void setResizeMode(QQuickView::ResizeMode)

QUrl source(void)

QQuickWidget::Status status(void)

void setSource(QUrl url)

QQuickWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qquickwidget.html

仮引数 : QWidget *

親クラス : QWidget

QQmlEngine *engine(void)

QList<QQmlError> errors(void)

QSurfaceFormat format(void)

QImage grabFramebuffer(void)

QSize initialSize(void)

QQuickWindow *quickWindow(void)

QQuickWidget::ResizeMode resizeMode(void)

QQmlContext *rootContext(void)

QQuickItem *rootObject(void)

void setClearColor(QColor color)

void setFormat(QSurfaceFormat format)

void setResizeMode(QQuickWidget::ResizeMode)

QUrl source(void)

QQuickWidget::Status status(void)

void setSource(QUrl url)

void setsceneGraphErrorEvent(const char *)

void setstatusChangedEvent(const char *)

const char *getsceneGraphErrorEvent(void)

const char *getstatusChangedEvent(void)

QRadioButton クラス

C++ リファレンス : http://doc.qt.io/qt-5/qradiobutton.html

仮引数 : QWidget *parent

親クラス : QAbstractButton

QSize minimumSizeHint(void)

QSize sizeHint(void)

void setclickedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

void settoggledEvent(const char *)

const char *getclickedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

const char *gettoggledEvent(void)

QRect クラス

C++ リファレンス : http://doc.qt.io/qt-5/qrect.html

仮引数 : void

void adjust(int dx1, int dy1, int dx2, int dy2)

QRect adjusted(int dx1, int dy1, int dx2, int dy2)

int bottom(void)

QPoint bottomLeft(void)

QPoint bottomRight(void)

QPoint center(void)

bool contains(int x, int y, bool proper)

void getCoords(int *x1, int *y1, int *x2, int *y2)

void getRect(int *x, int *y, int *width, int *height)

int height(void)

QRect intersected(QRect)

bool intersects(QRect)

bool isEmpty(void)

bool isNull(void)

bool isValid(void)

int left(void)

void moveBottom(int y)

void moveBottomLeft(QPoint)

void moveBottomRight(QPoint)

void moveCenter(QPoint)

void moveLeft(int x)

void moveRight(int x)

void moveTo(int x, int y)

void moveTop(int y)

void moveTopLeft(QPoint)

void moveTopRight(QPoint)

QRect normalized(void)

int right(void)

void setBottom(int y)

void setBottomLeft(QPoint)

void setBottomRight(QPoint)

void setCoords(int x1, int y1, int x2, int y2)

void setHeight(int height)

void setLeft(int x)

void setRect(int x, int y, int width, int height)

void setRight(int x)

void setSize(QSize)

void setTop(int y)

void setTopLeft(QPoint)

void setTopRight(QPoint)

void setWidth(int width)

void setX(int x)

void setY(int y)

QSize size(void)

int top(void)

QPoint topLeft(void)

QPoint topRight(void)

void translate(int dx, int dy)

QRect translated(int dx, int dy)

QRect united(QRect)

int width(void)

int x(void)

int y(void)

QRegion クラス

C++ リファレンス : http://doc.qt.io/qt-5/qregion.html

仮引数 : void

QRect boundingRect(void)

bool contains(QPoint p)

bool contains_2(QRect r)

QRegion intersected(QRegion r)

QRegion intersected_2(QRect rect)

bool intersects(QRegion region)

bool intersects_2(QRect rect)

bool isEmpty(void)

bool isNull(void)

int rectCount(void)

QVector<QRect> rects(void)

void setRects(QRect *rects, int number)

QRegion subtracted(QRegion r)

void swap(QRegion other)

void translate(int dx, int dy)

void translate_2(QPoint point)

QRegion translated(int dx, int dy)

QRegion translated_2(QPoint p)

QRegion united(QRegion r)

QRegion united_2(QRect rect)

QRegion xored(QRegion r)

QRegularExpression クラス

C++ リファレンス : http://doc.qt.io/qt-5/qregularexpression.html

仮引数 : void

int captureCount(void)

QString errorString(void)

QRegularExpressionMatchIterator globalMatch(QString subject, int offset, QRegularExpression::MatchType matchType, QRegularExpression::MatchOptions matchOptions)

bool isValid(void)

QRegularExpressionMatch match(QString subject, int offset, QRegularExpression::MatchType matchType, QRegularExpression::MatchOptions matchOptions)

QStringList namedCaptureGroups(void)

QString pattern(void)

int patternErrorOffset(void)

QRegularExpression::PatternOptions patternOptions(void)

void setPattern(QString pattern)

void setPatternOptions(QRegularExpression::PatternOptions options)

void swap(QRegularExpression other)

QRegularExpressionMatch クラス

C++ リファレンス : http://doc.qt.io/qt-5/qregularexpressionmatch.html

仮引数 : void

QString captured(int nth)

QString captured_2(const QString name)

int capturedEnd(int nth)

int capturedEnd_2(const QString name)

int capturedLength(int nth)

int capturedLength_2(const QString name)

QStringRef capturedRef(int nth)

QStringRef capturedRef_2(const QString name)

int capturedStart(int nth)

int capturedStart_2(const QString name)

QStringList capturedTexts(void)

bool hasMatch(void)

bool hasPartialMatch(void)

bool isValid(void)

int lastCapturedIndex(void)

QRegularExpression::MatchOptions matchOptions(void)

QRegularExpression::MatchType matchType(void)

QRegularExpression regularExpression(void)

void swap(QRegularExpressionMatch other)

QRegularExpressionMatchIterator クラス

C++ リファレンス : http://doc.qt.io/qt-5/qregularexpressionmatchiterator.html

仮引数 : void

bool hasNext(void)

bool isValid(void)

QRegularExpression::MatchOptions matchOptions(void)

QRegularExpression::MatchType matchType(void)

QRegularExpressionMatch next(void) # RingQt では QRegularExpressionMatch nextitem(void) を使用

QRegularExpressionMatch peekNext(void)

QRegularExpression regularExpression(void)

void swap(QRegularExpressionMatchIterator other)

QRenderAspect クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qrenderaspect.html

仮引数 : QObject *

QRenderPass クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qrenderpass.html

仮引数 : Qt3DCore::QNode *

void addFilterKey(Qt3DRender::QFilterKey *filterKey)

void addParameter(Qt3DRender::QParameter *parameter)

void addRenderState(Qt3DRender::QRenderState *state)

QVector<Qt3DRender::QFilterKey *> filterKeys(void)

QVector<Qt3DRender::QParameter *> parameters(void)

void removeFilterKey(Qt3DRender::QFilterKey *filterKey)

void removeParameter(Qt3DRender::QParameter *parameter)

void removeRenderState(Qt3DRender::QRenderState *state)

QVector<Qt3DRender::QRenderState *> renderStates(void)

Qt3DRender::QShaderProgram * shaderProgram(void)

void setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram)

QScatterSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qscatterseries.html

仮引数 : QObject *

親クラス : QXYSeries

QBrush brush(void)

QScatterSeries::MarkerShape markerShape(void)

qreal markerSize(void)

void setBorderColor(QColor color)

void setMarkerShape(QScatterSeries::MarkerShape shape)

void setMarkerSize(qreal size)

void setborderColorChangedEvent(const char *)

void setcolorChangedEvent(const char *)

void setmarkerShapeChangedEvent(const char *)

void setmarkerSizeChangedEvent(const char *)

const char *getborderColorChangedEvent(void)

const char *getcolorChangedEvent(void)

const char *getmarkerShapeChangedEvent(void)

const char *getmarkerSizeChangedEvent(void)

QSceneLoader クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qsceneloader.html

仮引数 : Qt3DCore::QNode *

親クラス : QComponent

Qt3DCore::QComponent * component(QString entityName, Qt3DRender::QSceneLoader::ComponentType componentType)

Qt3DCore::QEntity * entity(QString entityName)

QStringList entityNames(void)

QUrl source(void)

Qt3DRender::QSceneLoader::Status status(void)

void setSource(QUrl arg)

QScreen クラス

C++ リファレンス : http://doc.qt.io/qt-5/qscreen.html

int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b)

QRect availableGeometry(void)

QSize availableSize(void)

QRect availableVirtualGeometry(void)

QSize availableVirtualSize(void)

int depth(void)

qreal devicePixelRatio(void)

QRect geometry(void)

QPixmap grabWindow(int window, int x, int y, int width, int height)

QPixmap grabWindow_2(int window)

QPlatformScreen * handle(void)

bool isLandscape(Qt::ScreenOrientation o)

bool isPortrait(Qt::ScreenOrientation o)

qreal logicalDotsPerInch(void)

qreal logicalDotsPerInchX(void)

qreal logicalDotsPerInchY(void)

QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, QRect rect)

QString name(void)

Qt::ScreenOrientation nativeOrientation(void)

Qt::ScreenOrientation orientation(void)

Qt::ScreenOrientations orientationUpdateMask(void)

qreal physicalDotsPerInch(void)

qreal physicalDotsPerInchX(void)

qreal physicalDotsPerInchY(void)

QSizeF physicalSize(void)

Qt::ScreenOrientation primaryOrientation(void)

qreal refreshRate(void)

void setOrientationUpdateMask(Qt::ScreenOrientations mask)

QSize size(void)

QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, QRect target)

QScrollArea クラス

C++ リファレンス : http://doc.qt.io/qt-5/qscrollarea.html

仮引数 : QWidget *parent

親クラス : QAbstractScrollArea

Qt::Alignment alignment(void)

void ensureVisible(int x, int y, int xmargin , int ymargin )

void ensureWidgetVisible(QWidget *childWidget, int xmargin , int ymargin )

void setAlignment(Qt::Alignment)

void setWidget(QWidget *widget)

void setWidgetResizable(bool resizable)

QWidget *takeWidget(void)

QWidget *widget(void)

bool widgetResizable(void)

QScrollBar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qscrollbar.html

仮引数 : QWidget *parent

親クラス : QAbstractSlider

QSerialPort クラス

C++ リファレンス : http://doc.qt.io/qt-5/qserialport.html

仮引数 : QObject *

親クラス : QIODevice

qint32 baudRate(QSerialPort::Directions directions)

bool clear(QSerialPort::Directions directions)

void clearError(void)

QSerialPort::DataBits dataBits(void)

QSerialPort::SerialPortError error(void)

QSerialPort::FlowControl flowControl(void)

bool flush(void)

void *handle(void)

bool isDataTerminalReady(void)

bool isRequestToSend(void)

QSerialPort::Parity parity(void)

QSerialPort::PinoutSignals pinoutSignals(void)

QString portName(void)

qint64 readBufferSize(void)

bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions)

bool setBreakEnabled(bool set)

bool setDataBits(QSerialPort::DataBits dataBits)

bool setDataTerminalReady(bool set)

bool setFlowControl(QSerialPort::FlowControl flowControl)

bool setParity(QSerialPort::Parity parity)

void setPort(QSerialPortInfo serialPortInfo)

void setPortName(QString name)

void setReadBufferSize(qint64 size)

bool setRequestToSend(bool set)

bool setStopBits(QSerialPort::StopBits stopBits)

QSerialPort::StopBits stopBits(void)

void setbaudRateChangedEvent(const char *)

void setbreakEnabledChangedEvent(const char *)

void setdataBitsChangedEvent(const char *)

void setdataTerminalReadyChangedEvent(const char *)

void seterrorEvent(const char *)

void setflowControlChangedEvent(const char *)

void setparityChangedEvent(const char *)

void setrequestToSendChangedEvent(const char *)

void setstopBitsChangedEvent(const char *)

const char *getbaudRateChangedEvent(void)

const char *getbreakEnabledChangedEvent(void)

const char *getdataBitsChangedEvent(void)

const char *getdataTerminalReadyChangedEvent(void)

const char *geterrorEvent(void)

const char *getflowControlChangedEvent(void)

const char *getparityChangedEvent(void)

const char *getrequestToSendChangedEvent(void)

const char *getstopBitsChangedEvent(void)

QSerialPortInfo クラス

C++ リファレンス : http://doc.qt.io/qt-5/qserialportinfo.html

仮引数 : void

QString description(void)

bool hasProductIdentifier(void)

bool hasVendorIdentifier(void)

bool isBusy(void)

bool isNull(void)

QString manufacturer(void)

QString portName(void)

quint16 productIdentifier(void)

void swap(QSerialPortInfo other)

QString systemLocation(void)

quint16 vendorIdentifier(void)

QSize クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsize.html

仮引数 : int width, int height

QSkyboxEntity クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qskyboxentity.html

仮引数 : Qt3DCore::QNode *

親クラス : QEntity

QString baseName(void)

QString extension(void)

bool isGammaCorrectEnabled(void)

void setBaseName(QString baseName)

void setExtension(QString extension)

void setGammaCorrectEnabled(bool enabled)

QSlider クラス

C++ リファレンス : http://doc.qt.io/qt-5/qslider.html

仮引数 : QWidget *parent

親クラス : QAbstractSlider

void setTickInterval(int ti)

void setTickPosition(QSlider::TickPosition position)

int tickInterval(void)

int tickPosition(void)

QSize minimumSizeHint(void)

QSize sizeHint(void)

void setactionTriggeredEvent(const char *)

void setrangeChangedEvent(const char *)

void setsliderMovedEvent(const char *)

void setsliderPressedEvent(const char *)

void setsliderReleasedEvent(const char *)

void setvalueChangedEvent(const char *)

const char *getactionTriggeredEvent(void)

const char *getrangeChangedEvent(void)

const char *getsliderMovedEvent(void)

const char *getsliderPressedEvent(void)

const char *getsliderReleasedEvent(void)

const char *getvalueChangedEvent(void)

QSphereMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qspheremesh.html

仮引数 : Qt3DCore::QNode *

bool generateTangents(void)

float radius(void)

int rings(void)

int slices(void)

void setGenerateTangents(bool gen)

void setRadius(float radius)

void setRings(int rings)

void setSlices(int slices)

QSpinBox クラス

C++ リファレンス : http://doc.qt.io/qt-5/qspinbox.html

仮引数 : QWidget *parent

親クラス : QWidget

QString cleanText(void)

int displayIntegerBase(void)

int maximum(void)

int minimum(void)

QString prefix(void)

void setDisplayIntegerBase(int base)

void setMaximum(int max)

void setMinimum(int min)

void setPrefix(QString)

void setRange(int minimum, int maximum)

void setSingleStep(int val)

void setSuffix(QString)

int singleStep(void)

QString suffix(void)

int value(void)

void setValue(int val)

void setvalueChangedEvent(const char *)

const char *getvalueChangedEvent(void)

QSplashScreen クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsplashscreen.html

仮引数 : QPixmap

親クラス : QWidget

void finish(QWidget *mainWin)

QPixmap pixmap(void)

void repaint(void)

void setPixmap(QPixmap pixmap)

void clearMessage(void)

void showMessage(QString message, int alignment ,QColor color)

QSplineSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsplineseries.html

仮引数 : QObject *

親クラス : QLineSeries

QAbstractSeries::SeriesType type(void)

QSplitter クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsplitter.html

仮引数 : QWidget *parent

親クラス : QFrame

void addWidget(QWidget *widget)

bool childrenCollapsible(void)

int count(void)

void getRange(int index, int *min, int *max)

QSplitterHandle * handle(int index)

int handleWidth(void)

int indexOf(QWidget *widget)

void insertWidget(int index, QWidget *widget)

bool isCollapsible(int index)

bool opaqueResize(void)

Qt::Orientation orientation(void)

void refresh(void)

bool restoreState( QByteArray state)

QByteArray saveState(void)

void setChildrenCollapsible(bool)

void setCollapsible(int index, bool collapse)

void setHandleWidth(int)

void setOpaqueResize(bool opaque )

void setOrientation(Qt::Orientation)

void setSizes( QList<int> list)

void setStretchFactor(int index, int stretch)

QList<int> sizes(void)

QWidget * widget(int index)

QSqlDatabase クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqldatabase.html

仮引数 : void

void close(void)

bool commit(void)

QString connectOptions(void)

QString connectionName(void)

QString databaseName(void)

QSqlDriver *driver(void)

QString driverName(void)

QSqlQuery exec(QString)

QString hostName(void)

bool isOpen(void)

bool isOpenError(void)

bool isValid(void)

QSqlError lastError(void)

QSql::NumericalPrecisionPolicy numericalPrecisionPolicy(void)

bool open(void)

QString password(void)

int port(void)

QSqlIndex primaryIndex(QString)

QSqlRecord record(QString)

bool rollback(void)

void setConnectOptions(QString)

void setDatabaseName(QString)

void setHostName(QString)

void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy)

void setPassword(QString)

void setPort(int port)

void setUserName(QString)

QStringList tables(QSql::TableType type)

bool transaction(void)

QString userName(void)

QSqlDatabase addDatabase(QString)

QSqlDatabase cloneDatabase(QSqlDatabase, QString)

QStringList connectionNames(void)

bool contains(QString)

QSqlDatabase database(QString , bool)

QStringList drivers(void)

bool isDriverAvailable(QString)

void registerSqlDriver(QString, QSqlDriverCreatorBase *)

void removeDatabase(QString)

QSqlDriver クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqldriver.html

仮引数 : void

QSqlError lastError(void)

QSql::NumericalPrecisionPolicy numericalPrecisionPolicy(void)

void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy)

QSqlDriverCreatorBase クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqldrivercreatorbase.html

仮引数 : void

QSqlError クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqlerror.html

仮引数 : QString, QString, QSqlError::ErrorType

QString databaseText(void)

QString driverText(void)

bool isValid(void)

int number(void)

void setDatabaseText(QString)

void setDriverText(QString)

void setNumber(int number)

void setType(QSqlError::ErrorType type)

QString text(void)

QSqlError::ErrorType type(void)

QSqlField クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqlfield.html

仮引数 : QString,QVariant::Type

void clear(void)

QVariant defaultValue(void)

bool isAutoValue(void)

bool isGenerated(void)

bool isNull(void)

bool isReadOnly(void)

bool isValid(void)

int length(void)

QString name(void)

int precision(void)

RequiredStatus requiredStatus(void)

void setAutoValue(bool autoVal)

void setDefaultValue(QVariant)

void setGenerated(bool gen)

void setLength(int fieldLength)

void setName(QString)

void setPrecision(int precision)

void setReadOnly(bool readOnly)

void setRequired(bool required)

void setRequiredStatus(QSqlField::RequiredStatus required)

void setType(QVariant::Type type)

void setValue(QVariant)

QVariant::Type type(void)

QVariant value(void)

QSqlIndex クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqlindex.html

仮引数 : QString, QString

親クラス : QSqlRecord

void append(QSqlField, bool)

QString cursorName(void)

bool isDescending(int i)

QString name(void)

void setCursorName(QString)

void setDescending(int i, bool desc)

void setName(QString)

QSqlQuery クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqlquery.html

仮引数 : void

void addBindValue(QVariant, QSql::ParamType paramType)

int at(void)

void bindValue(QString, QVariant, QSql::ParamType paramType)

QVariant boundValue(QString)

void clear(void)

QSqlDriver * driver(void)

bool exec(QString)

bool exec_2(void)

bool execBatch(QSqlQuery::BatchExecutionMode mode)

QString executedQuery(void)

void finish(void)

bool first(void)

bool isActive(void)

bool isForwardOnly(void)

bool isNull(int field)

bool isSelect(void)

bool isValid(void)

bool last(void)

QSqlError lastError(void)

QVariant lastInsertId(void)

QString lastQuery(void)

bool next(void) # RingQt では bool movenext(void) を使用

bool nextResult(void)

int numRowsAffected(void)

QSql::NumericalPrecisionPolicy numericalPrecisionPolicy(void)

bool prepare(QString)

bool previous(void)

QSqlRecord record(void)

QSqlResult *result(void)

bool seek(int index, bool relative)

void setForwardOnly(bool forward)

void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy)

int size(void)

QVariant value(int index)

QSqlRecord クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsqlrecord.html

仮引数 : void

void append(QSqlField)

void clear(void)

void clearValues(void)

bool contains(QString)

int count(void)

QSqlField field(int index)

QString fieldName(int index)

int indexOf(QString)

void insert(int pos, QSqlField)

bool isEmpty(void)

bool isGenerated(QString)

bool isNull(QString)

void remove(int pos)

void replace(int pos, QSqlField)

void setGenerated(QString, bool generated)

void setNull(int index)

void setValue(int index, QVariant)

QVariant value(int index)

QStackedBarSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qstackedbarseries.html

仮引数 : QObject *

親クラス : QAbstractBarSeries

QAbstractSeries::SeriesType type(void)

QStackedWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qstackedwidget.html

仮引数 : QWidget *

親クラス : QFrame

int addWidget(QWidget *widget)

int count(void)

int currentIndex(void)

QWidget * currentWidget(void)

int indexOf(QWidget *widget)

int insertWidget(int index, QWidget *widget)

void removeWidget(QWidget *widget)

QWidget * widget(int index)

void setCurrentIndex(int index)

void setCurrentWidget(QWidget *widget)

void setcurrentChangedEvent(const char *)

void setwidgetRemovedEvent(const char *)

const char *getcurrentChangedEvent(void)

const char *getwidgetRemovedEvent(void)

QStandardPaths クラス

C++ リファレンス : http://doc.qt.io/qt-5/qstandardpaths.html

仮引数 : void

QString displayName(QStandardPaths::StandardLocation type)

QString findExecutable(QString executableName, QStringList paths))

QString locate(QStandardPaths::StandardLocation type, QString fileName, QStandardPaths::LocateOptions options)

QStringList locateAll(QStandardPaths::StandardLocation type, QString fileName, QStandardPaths::LocateOptions options)

void setTestModeEnabled(bool testMode)

QStringList standardLocations(QStandardPaths::StandardLocation type)

QString writableLocation(QStandardPaths::StandardLocation type)

QStatusBar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qstatusbar.html

仮引数 : QWidget *

親クラス : QWidget

void addPermanentWidget(QWidget * widget, int stretch)

void addWidget(QWidget * widget, int stretch)

QString currentMessage(void)

int insertPermanentWidget(int index, QWidget * widget, int stretch)

int insertWidget(int index, QWidget * widget, int stretch)

bool isSizeGripEnabled(void)

void removeWidget(QWidget *widget)

void setSizeGripEnabled(bool)

void clearMessage(void)

void showMessage(QString , int timeout)

QString2 クラス

仮引数 : void

QString append( QString str)

QByteArray toUtf8(void)

QByteArray toLatin1(void)

QByteArray toLocal8Bit(void)

QStringList split( QString sep, QString::SplitBehavior behavior , Qt::CaseSensitivity cs )

QStringList split_2(QChar sep, QString::SplitBehavior behavior , Qt::CaseSensitivity cs )

QStringList split_3( QRegExp rx, QString::SplitBehavior behavior )

QStringList split_4( QRegularExpression re, QString::SplitBehavior behavior )

QChar * unicode(void)

QString number(ulong n, int base)

int count(void)

QString left(int n)

QString mid(int position, int n)

QString right(int n)

int compare(QString other, Qt::CaseSensitivity cs )

bool contains(QString str, Qt::CaseSensitivity cs )

int indexOf(QString str,int from,Qt::CaseSensitivity cs )

QString insert(int position, QString str)

bool isRightToLeft(void)

QString repeated(int times)

QString replace(int position, int n, QString after)

bool startsWith( QString s, Qt::CaseSensitivity cs )

bool endsWith( QString s, Qt::CaseSensitivity cs )

QString toHtmlEscaped(void)

void clear(void)

bool isNull(void)

void resize(int size)

QString fill(QChar ch, int size)

QStringList クラス

C++ リファレンス : http://doc.qt.io/qt-5/qstringlist.html

仮引数 : void

QString join(QString)

void sort(void)

int removeDuplicates(void)

QStringList filter(QString, Qt::CaseSensitivity)

QStringList replaceInStrings(QString,QString, Qt::CaseSensitivity)

void append(QString)

QString at(int)

QString back(void)

void clear(void)

bool contains(QString)

int count(void)

bool empty(void)

bool endsWith(QString)

QString first(void)

QString front(void)

int indexOf(QString, int)

void insert(int, QString)

bool isEmpty(void)

QString last(void)

int lastIndexOf(QString,int)

int length(void)

void move(int,int)

void pop_back(void)

void pop_front(void)

void prepend(QString)

void push_back(QString)

void push_front(QString)

int removeAll(QString)

void removeAt(int)

void removeFirst(void)

void removeLast(void)

bool removeOne(QString)

void replace(int,QString)

void reserve(int)

int size(void)

bool startsWith(QString)

void swap(int,int)

QString takeAt(int)

QString takeFirst(void)

QString takeLast(void)

QString value(int)

QStringRef クラス

C++ リファレンス : http://doc.qt.io/qt-5/qstringref.html

仮引数 : void

QStringRef appendTo(QString * string)

QChar at(int position)

void clear(void)

int compare_3(QLatin1String other, Qt::CaseSensitivity cs)

QChar * constData(void)

bool contains(QString str, Qt::CaseSensitivity cs)

bool contains_2(QChar ch, Qt::CaseSensitivity cs)

bool contains_3(QStringRef str, Qt::CaseSensitivity cs)

bool contains_4(QLatin1String str, Qt::CaseSensitivity cs)

int count(void)

int count_2(QString str, Qt::CaseSensitivity cs)

int count_3(QChar ch, Qt::CaseSensitivity cs)

int count_4(QStringRef str, Qt::CaseSensitivity cs)

QChar * data(void)

bool endsWith(QString str, Qt::CaseSensitivity cs)

bool endsWith_2(QChar ch, Qt::CaseSensitivity cs)

bool endsWith_3(QLatin1String str, Qt::CaseSensitivity cs)

bool endsWith_4(QStringRef str, Qt::CaseSensitivity cs)

int indexOf(QString str, int from, Qt::CaseSensitivity cs)

int indexOf_2(QLatin1String str, int from, Qt::CaseSensitivity cs)

int indexOf_3(QChar ch, int from, Qt::CaseSensitivity cs)

int indexOf_4(QStringRef str, int from, Qt::CaseSensitivity cs)

bool isEmpty(void)

bool isNull(void)

int lastIndexOf(QString str, int from, Qt::CaseSensitivity cs)

int lastIndexOf_2(QChar ch, int from, Qt::CaseSensitivity cs)

int lastIndexOf_3(QLatin1String str, int from, Qt::CaseSensitivity cs)

int lastIndexOf_4(QStringRef str, int from, Qt::CaseSensitivity cs)

int length(void)

int localeAwareCompare(QString other)

int localeAwareCompare_2(QStringRef other)

int position(void)

int size(void)

bool startsWith(QString str, Qt::CaseSensitivity cs)

bool startsWith_2(QLatin1String str, Qt::CaseSensitivity cs)

bool startsWith_3(QStringRef str, Qt::CaseSensitivity cs)

bool startsWith_4(QChar ch, Qt::CaseSensitivity cs)

QString * string(void)

QByteArray toLatin1(void)

QByteArray toLocal8Bit(void)

QString toString(void)

QVector<uint> toUcs4(void)

QByteArray toUtf8(void)

QChar * unicode(void)

int compare_4(QStringRef s1, QString s2, Qt::CaseSensitivity cs)

int compare_5(QStringRef s1, QStringRef s2, Qt::CaseSensitivity cs)

int compare_6(QStringRef s1, QLatin1String s2, Qt::CaseSensitivity cs)

int localeAwareCompare_3(QStringRef s1, QString s2)

int localeAwareCompare_4(QStringRef s1, QStringRef s2)

QSurfaceFormat クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsurfaceformat.html

仮引数 : void

int alphaBufferSize(void)

int blueBufferSize(void)

int greenBufferSize(void)

bool hasAlpha(void)

int majorVersion(void)

int minorVersion(void)

QSurfaceFormat::FormatOptions options(void)

QSurfaceFormat::OpenGLContextProfile profile(void)

int redBufferSize(void)

QSurfaceFormat::RenderableType renderableType(void)

int samples(void)

void setAlphaBufferSize(int size)

void setBlueBufferSize(int size)

void setGreenBufferSize(int size)

void setMajorVersion(int major)

void setMinorVersion(int minor)

void setOption(QSurfaceFormat::FormatOption option, bool on)

void setOptions(QSurfaceFormat::FormatOptions options)

void setProfile(QSurfaceFormat::OpenGLContextProfile profile)

void setRedBufferSize(int size)

void setRenderableType(QSurfaceFormat::RenderableType type)

void setSamples(int numSamples)

void setStencilBufferSize(int size)

void setStereo(bool enable)

void setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)

void setSwapInterval(int interval)

void setVersion(int major, int minor)

int stencilBufferSize(void)

bool stereo(void)

QSurfaceFormat::SwapBehavior swapBehavior(void)

int swapInterval(void)

bool testOption(QSurfaceFormat::FormatOption option)

QSurfaceFormat defaultFormat(void)

void setDefaultFormat(QSurfaceFormat format)

QSystemTrayIcon クラス

C++ リファレンス : http://doc.qt.io/qt-5/qsystemtrayicon.html

仮引数 : void

QMenu *contextMenu(void)

QRect geometry(void)

QIcon icon(void)

bool isVisible(void)

void setContextMenu(QMenu *menu)

void setIcon(QIcon)

void setToolTip(QString)

QString toolTip(void)

void hide(void)

void setVisible(bool visible)

void show(void)

void showMessage(QString, QString, QSystemTrayIcon::MessageIcon, int millisecondsTimeoutHint)

bool isSystemTrayAvailable(void)

bool supportsMessages(void)

QTabBar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtabbar.html

仮引数 : QWidget *

親クラス : QWidget

int addTab(QString text)

int addTab_2(QIcon icon, QString text)

int count(void)

int currentIndex(void)

bool documentMode(void)

bool drawBase(void)

Qt::TextElideMode elideMode(void)

bool expanding(void)

QSize iconSize(void)

int insertTab(int index, QString text)

int insertTab_2(int index, QIcon icon, QString text)

bool isMovable(void)

bool isTabEnabled(int index)

void moveTab(int from, int to)

void removeTab(int index)

QTabBar::SelectionBehavior selectionBehaviorOnRemove(void)

void setDocumentMode(bool set)

void setDrawBase(bool drawTheBase)

void setElideMode(Qt::TextElideMode)

void setExpanding(bool enabled)

void setIconSize(QSize size)

void setMovable(bool movable)

void setSelectionBehaviorOnRemove(QTabBar::SelectionBehavior behavior)

void setShape(QTabBar::Shape shape)

void setTabButton(int index, QTabBar::ButtonPosition position, QWidget * widget)

void setTabData(int index, QVariant data)

void setTabEnabled(int index, bool enabled)

void setTabIcon(int index, QIcon icon)

void setTabText(int index, QString text)

void setTabTextColor(int index, QColor color)

void setTabToolTip(int index, QString tip)

void setTabWhatsThis(int index, QString text)

void setTabsClosable(bool closable)

void setUsesScrollButtons(bool useButtons)

QTabBar::Shape shape(void)

int tabAt(QPoint position)

QWidget * tabButton(int index, QTabBar::ButtonPosition position)

QVariant tabData(int index)

QIcon tabIcon(int index)

QRect tabRect(int index)

QString tabText(int index)

QColor tabTextColor(int index)

QString tabToolTip(int index)

QString tabWhatsThis(int index)

bool tabsClosable(void)

bool usesScrollButtons(void)

void setCurrentIndex(int index)

void setcurrentChangedEvent(const char *)

void settabCloseRequestedEvent(const char *)

void settabMovedEvent(const char *)

const char *getcurrentChangedEvent(void)

const char *gettabCloseRequestedEvent(void)

const char *gettabMovedEvent(void)

QTabWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtabwidget.html

仮引数 : QWidget *parent

親クラス : QWidget

int addTab(QWidget *page, QString)

void clear(void)

QWidget *cornerWidget(Qt::Corner corner)

int count(void)

int currentIndex(void)

QWidget *currentWidget(void)

bool documentMode(void)

int elideMode(void)

QSize iconSize(void)

int indexOf(QWidget *w)

int insertTab(int index, QWidget *page,QString)

bool isMovable(void)

bool isTabEnabled(int index)

void removeTab(int index)

void setCornerWidget(QWidget *widget, Qt::Corner corner)

void setDocumentMode(bool set)

void setElideMode(Qt::TextElideMode)

void setIconSize(QSize)

void setMovable(bool movable)

void setTabEnabled(int index, bool enable)

void setTabIcon(int index, QIcon)

void setTabText(int index,QString)

void setTabToolTip(int index, QString)

void setTabWhatsThis(int index, QString)

void setTabsClosable(bool closeable)

void setUsesScrollButtons(bool useButtons)

QIcon tabIcon(int index)

QString tabText(int index)

QString tabToolTip(int index)

QString tabWhatsThis(int index)

bool tabsClosable(void)

bool usesScrollButtons(void)

QWidget *widget(int index)

int heightForWidth(int width)

QSize minimumSizeHint(void)

QSize sizeHint(void)

void setCurrentIndex(int index)

void setCurrentWidget(QWidget *widget)

void setcurrentChangedEvent(const char *)

void settabCloseRequestedEvent(const char *)

const char *getcurrentChangedEvent(void)

const char *gettabCloseRequestedEvent(void)

void geteventparameters(void)

QTableView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtableview.html

仮引数 : QWidget *parent

親クラス : QAbstractItemView

void clearSpans(void)

int columnAt(int x)

int columnSpan(int row, int column)

int columnViewportPosition(int column)

int columnWidth(int column)

Qt::PenStyle gridStyle(void)

QHeaderView *horizontalHeader(void)

bool isColumnHidden(int column)

bool isCornerButtonEnabled(void)

bool isRowHidden(int row)

bool isSortingEnabled(void)

int rowAt(int y)

int rowHeight(int row)

int rowSpan(int row, int column)

int rowViewportPosition(int row)

void setColumnHidden(int column, bool hide)

void setColumnWidth(int column, int width)

void setCornerButtonEnabled(bool enable)

void setGridStyle(Qt::PenStyle style)

void setHorizontalHeader(QHeaderView *header)

void setRowHeight(int row, int height)

void setRowHidden(int row, bool hide)

void setSortingEnabled(bool enable)

void setSpan(int row, int column, int rowSpanCount, int columnSpanCount)

void setVerticalHeader(QHeaderView *header)

void setWordWrap(bool on)

bool showGrid(void)

void sortByColumn(int column, Qt::SortOrder order)

QHeaderView *verticalHeader(void)

bool wordWrap(void)

void hideColumn(int column)

void hideRow(int row)

void resizeColumnToContents(int column)

void resizeColumnsToContents(void)

void resizeRowToContents(int row)

void resizeRowsToContents(void)

void selectColumn(int column)

void selectRow(int row)

void setShowGrid(bool show)

void showColumn(int column)

void showRow(int row)

QTableWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtablewidget.html

仮引数 : QWidget *parent

親クラス : QTableView

QWidget *cellWidget(int row, int column)

void closePersistentEditor(QTableWidgetItem *item)

int column(QTableWidgetItem *item)

int columnCount(void)

int currentColumn(void)

QTableWidgetItem *currentItem(void)

int currentRow(void)

void editItem(QTableWidgetItem *item)

QTableWidgetItem *horizontalHeaderItem(int column)

QTableWidgetItem *item(int row, int column)

QTableWidgetItem *itemAt(int ax, int ay)

QTableWidgetItem *itemPrototype(void)

void openPersistentEditor(QTableWidgetItem *item)

void removeCellWidget(int row, int column)

int row(const QTableWidgetItem *item)

int rowCount(void)

QList<QTableWidgetItem *> selectedItems(void)

QList<QTableWidgetSelectionRange> selectedRanges(void)

void setCellWidget(int row, int column, QWidget *widget)

void setColumnCount(int columns)

void setCurrentCell(int row, int column)

void setCurrentItem(QTableWidgetItem * item)

void setHorizontalHeaderItem(int column, QTableWidgetItem *item)

void setHorizontalHeaderLabels(QStringList)

void setItem(int row, int column, QTableWidgetItem *item)

void setItemPrototype(QTableWidgetItem *item)

void setRowCount(int rows)

void setVerticalHeaderItem(int row, QTableWidgetItem *item)

void sortItems(int column, Qt::SortOrder order)

QTableWidgetItem *takeHorizontalHeaderItem(int column)

QTableWidgetItem *takeItem(int row, int column)

QTableWidgetItem *takeVerticalHeaderItem(int row)

QTableWidgetItem *verticalHeaderItem(int row)

int visualColumn(int logicalColumn)

QRect visualItemRect(QTableWidgetItem *)

int visualRow(int logicalRow)

void clear(void)

void clearContents(void)

void insertColumn(int column)

void insertRow(int row)

void removeColumn(int column)

void removeRow(int row)

void scrollToItem(QTableWidgetItem *item, QAbstractItemView::ScrollHint hint)

void setcellActivatedEvent(const char *)

void setcellChangedEvent(const char *)

void setcellClickedEvent(const char *)

void setcellDoubleClickedEvent(const char *)

void setcellEnteredEvent(const char *)

void setcellPressedEvent(const char *)

void setcurrentCellChangedEvent(const char *)

void setcurrentItemChangedEvent(const char *)

void setitemActivatedEvent(const char *)

void setitemChangedEvent(const char *)

void setitemClickedEvent(const char *)

void setitemDoubleClickedEvent(const char *)

void setitemEnteredEvent(const char *)

void setitemPressedEvent(const char *)

void setitemSelectionChangedEvent(const char *)

const char *getcellActivatedEvent(void)

const char *getcellChangedEvent(void)

const char *getcellClickedEvent(void)

const char *getcellDoubleClickedEvent(void)

const char *getcellEnteredEvent(void)

const char *getcellPressedEvent(void)

const char *getcurrentCellChangedEvent(void)

const char *getcurrentItemChangedEvent(void)

const char *getitemActivatedEvent(void)

const char *getitemChangedEvent(void)

const char *getitemClickedEvent(void)

const char *getitemDoubleClickedEvent(void)

const char *getitemEnteredEvent(void)

const char *getitemPressedEvent(void)

const char *getitemSelectionChangedEvent(void)

QTableWidgetItem クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtablewidgetitem.html

仮引数 : QString

QBrush background(void)

int checkState(void)

QTableWidgetItem *clone(void)

int column(void)

QVariant data(int role)

int flags(void)

QFont font(void)

QBrush foreground(void)

QIcon icon(void)

bool isSelected(void)

void read(QDataStream)

int row(void)

void setBackground(QBrush)

void setCheckState(Qt::CheckState state)

void setData(int role, QVariant)

void setFlags(Qt::ItemFlag flags)

void setFont(QFont)

void setForeground(QBrush)

void setIcon(QIcon)

void setSelected(bool select)

void setSizeHint(QSize)

void setStatusTip(QString)

void setText(QString)

void setTextAlignment(int alignment)

void setToolTip(QString)

void setWhatsThis(QString)

QSize sizeHint(void)

QString statusTip(void)

QTableWidget *tableWidget(void)

QString text(void)

int textAlignment(void)

QString toolTip(void)

int type(void)

QString whatsThis(void)

void write(QDataStream)

QTcpServer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtcpserver.html

仮引数 : QWidget *

void close(void)

QString errorString(void)

bool hasPendingConnections(void)

bool isListening(void)

bool listen(QHostAddress, int port)

int maxPendingConnections(void)

QTcpSocket *nextPendingConnection(void)

void pauseAccepting(void)

QNetworkProxy proxy(void)

void resumeAccepting(void)

QHostAddress serverAddress(void)

int serverError(void)

int serverPort(void)

void setMaxPendingConnections(int numConnections)

void setProxy(QNetworkProxy)

bool setSocketDescriptor(qintptr socketDescriptor)

int *socketDescriptor(void)

bool waitForNewConnection(int msec, bool *timedOut)

void setacceptErrorEvent(const char *)

void setnewConnectionEvent(const char *)

const char *getacceptErrorEvent(void)

const char *getnewConnectionEvent(void)

QTcpSocket クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtcpsocket.html

仮引数 : QObject *

親クラス : QAbstractSocket

void setconnectedEvent(const char *)

void setdisconnectedEvent(const char *)

void seterrorEvent(const char *)

void sethostFoundEvent(const char *)

void setproxyAuthenticationRequiredEvent(const char *)

void setstateChangedEvent(const char *)

void setaboutToCloseEvent(const char *)

void setbytesWrittenEvent(const char *)

void setreadChannelFinishedEvent(const char *)

void setreadyReadEvent(const char *)

const char *getconnectedEvent(void)

const char *getdisconnectedEvent(void)

const char *geterrorEvent(void)

const char *gethostFoundEvent(void)

const char *getproxyAuthenticationRequiredEvent(void)

const char *getstateChangedEvent(void)

const char *getaboutToCloseEvent(void)

const char *getbytesWrittenEvent(void)

const char *getreadChannelFinishedEvent(void)

const char *getreadyReadEvent(void)

QTechnique クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qtechnique.html

仮引数 : Qt3DCore::QNode *

void addFilterKey(Qt3DRender::QFilterKey *filterKey)

void addParameter(Qt3DRender::QParameter *parameter)

void addRenderPass(Qt3DRender::QRenderPass *pass)

QVector<Qt3DRender::QFilterKey *> filterKeys(void)

Qt3DRender::QGraphicsApiFilter * graphicsApiFilter(void)

QVector<Qt3DRender::QParameter *> parameters(void)

void removeFilterKey(Qt3DRender::QFilterKey *filterKey)

void removeParameter(Qt3DRender::QParameter *parameter)

void removeRenderPass(Qt3DRender::QRenderPass *pass)

QVector<Qt3DRender::QRenderPass *> renderPasses(void)

QTest クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtest.html

void qsleep(int)

QText2DEntity クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qtext2dentity.html

仮引数 : Qt3DCore::QNode *

親クラス : QEntity

QColor color(void)

QFont font(void)

float height(void)

void setColor(QColor color)

void setFont(QFont font)

void setHeight(float height)

void setText(QString text)

void setWidth(float width)

QString text(void)

float width(void)

QTextBlock クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextblock.html

仮引数 : void

int blockFormatIndex(void)

int blockNumber(void)

QTextCharFormat charFormat(void)

int charFormatIndex(void)

void clearLayout(void)

bool contains(int position)

QTextDocument *document(void)

bool isValid(void)

bool isVisible(void)

QTextLayout * layout(void)

int length(void)

int lineCount(void)

QTextBlock next(void) # RingQt では QTextBlock nextblock(void) を使用

int position(void)

QTextBlock previous(void)

int revision(void)

void setLineCount(int count)

void setRevision(int rev)

void setUserData(QTextBlockUserData * data)

void setUserState(int state)

void setVisible(bool visible)

QString text(void)

int textDirection(void)

QTextList * textList(void)

QTextBlockUserData * userData(void)

int userState(void)

QTextBrowser クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextbrowser.html

仮引数 : QWidget *

親クラス : QTextEdit

int backwardHistoryCount(void)

void clearHistory(void)

int forwardHistoryCount(void)

QString historyTitle(int i)

QUrl historyUrl(int i)

bool isBackwardAvailable(void)

bool isForwardAvailable(void)

bool openExternalLinks(void)

bool openLinks(void)

QStringList searchPaths(void)

void setOpenExternalLinks(bool open)

void setOpenLinks(bool open)

void setSearchPaths(QStringList paths)

QUrl source(void)

void setanchorClickedEvent(const char *)

void setbackwardAvailableEvent(const char *)

void setforwardAvailableEvent(const char *)

void sethighlightedEvent(const char *)

void sethistoryChangedEvent(const char *)

void setsourceChangedEvent(const char *)

const char *getanchorClickedEvent(void)

const char *getbackwardAvailableEvent(void)

const char *getforwardAvailableEvent(void)

const char *gethighlightedEvent(void)

const char *gethistoryChangedEvent(void)

const char *getsourceChangedEvent(void)

QTextCharFormat クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextcharformat.html

仮引数 : void

QString anchorHref(void)

QStringList anchorNames(void)

QFont font(void)

QFont::Capitalization fontCapitalization(void)

QString fontFamily(void)

bool fontFixedPitch(void)

QFont::HintingPreference fontHintingPreference(void)

bool fontItalic(void)

bool fontKerning(void)

qreal fontLetterSpacing(void)

QFont::SpacingType fontLetterSpacingType(void)

bool fontOverline(void)

qreal fontPointSize(void)

int fontStretch(void)

bool fontStrikeOut(void)

QFont::StyleHint fontStyleHint(void)

QFont::StyleStrategy fontStyleStrategy(void)

bool fontUnderline(void)

int fontWeight(void)

qreal fontWordSpacing(void)

bool isAnchor(void)

bool isValid(void)

void setAnchor(bool anchor)

void setAnchorHref( QString value)

void setAnchorNames( QStringList names)

void setFontCapitalization(QFont::Capitalization capitalization)

void setFontFamily( QString family)

void setFontFixedPitch(bool fixedPitch)

void setFontHintingPreference(QFont::HintingPreference hintingPreference)

void setFontItalic(bool italic)

void setFontKerning(bool enable)

void setFontLetterSpacing(qreal spacing)

void setFontLetterSpacingType(QFont::SpacingType letterSpacingType)

void setFontOverline(bool overline)

void setFontPointSize(qreal size)

void setFontStretch(int factor)

void setFontStrikeOut(bool strikeOut)

void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy )

void setFontStyleStrategy(QFont::StyleStrategy strategy)

void setFontUnderline(bool underline)

void setFontWeight(int weight)

void setFontWordSpacing(qreal spacing)

void setTextOutline( QPen pen)

void setToolTip( QString text)

void setUnderlineColor( QColor color)

void setUnderlineStyle(QTextCharFormat::UnderlineStyle style)

void setVerticalAlignment(QTextCharFormat::VerticalAlignment alignment)

QPen textOutline(void)

QString toolTip(void)

QColor underlineColor(void)

QTextCharFormat::UnderlineStyle underlineStyle(void)

QTextCharFormat::VerticalAlignment verticalAlignment(void)

QTextCodec クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextcodec.html

QTextCodec *codecForName(const char *name)

void setCodecForLocale(QTextCodec *c)

QTextCursor クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextcursor.html

仮引数 : void

int anchor(void)

bool atBlockEnd(void)

bool atBlockStart(void)

bool atEnd(void)

bool atStart(void)

void beginEditBlock(void)

QTextBlock block(void)

QTextCharFormat blockCharFormat(void)

QTextBlockFormat blockFormat(void)

int blockNumber(void)

QTextCharFormat charFormat(void)

void clearSelection(void)

int columnNumber(void)

QTextList *createList(QTextListFormat)

QTextFrame *currentFrame(void)

QTextList *currentList(void)

QTextTable *currentTable(void)

void deleteChar(void)

void deletePreviousChar(void)

QTextDocument *document(void)

void endEditBlock(void)

bool hasComplexSelection(void)

bool hasSelection(void)

void insertBlock(void)

void insertFragment(QTextDocumentFragment)

QTextFrame *insertFrame(QTextFrameFormat)

void insertHtml(QString)

void insertImage(QTextImageFormat)

QTextList *insertList(QTextListFormat)

QTextTable * insertTable(int rows, int columns, QTextTableFormat)

void insertText(QString)

void insertText_2(QString,QTextCharFormat)

bool isCopyOf(QTextCursor)

bool isNull(void)

void joinPreviousEditBlock(void)

bool keepPositionOnInsert(void)

void mergeBlockCharFormat(QTextCharFormat)

void mergeBlockFormat(QTextBlockFormat)

void mergeCharFormat(QTextCharFormat)

bool movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode, int n)

int position(void)

int positionInBlock(void)

void removeSelectedText(void)

void select(QTextCursor::SelectionType selection)

void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns)

QString selectedText(void)

QTextDocumentFragment selection(void)

int selectionEnd(void)

int selectionStart(void)

void setBlockCharFormat(QTextCharFormat)

void setBlockFormat(QTextBlockFormat)

void setCharFormat(QTextCharFormat)

void setKeepPositionOnInsert(bool b)

void setPosition(int pos, QTextCursor::MoveMode m)

void setVerticalMovementX(int x)

void setVisualNavigation(bool b)

int verticalMovementX(void)

bool visualNavigation(void)

QTextDocument クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextdocument.html

仮引数 : void

親クラス : QObject

void addResource(int type,QUrl name, QVariant resource)

void adjustSize(void)

QVector<QTextFormat> allFormats(void)

int availableRedoSteps(void)

int availableUndoSteps(void)

QTextBlock begin(void)

int blockCount(void)

QChar characterAt(int pos)

int characterCount(void)

void clearUndoRedoStacks(QTextDocument::Stacks stacksToClear )

QTextDocument *clone(QObject *parent )

int defaultCursorMoveStyle(void)

QFont defaultFont(void)

QString defaultStyleSheet(void)

QTextOption defaultTextOption(void)

QAbstractTextDocumentLayout *documentLayout(void)

double documentMargin(void)

void drawContents(QPainter *p, QRectF rect)

QTextBlock end(void) # RingQt では QTextBlock enddoc(void) を使用

QTextCursor find(QString subString, QTextCursor cursor, QTextDocument::FindFlag options )

QTextBlock findBlock(int pos)

QTextBlock findBlockByLineNumber(int lineNumber)

QTextBlock findBlockByNumber(int blockNumber)

QTextBlock firstBlock(void)

double idealWidth(void)

double indentWidth(void)

bool isEmpty(void)

bool isModified(void)

bool isRedoAvailable(void)

bool isUndoAvailable(void)

bool isUndoRedoEnabled(void)

QTextBlock lastBlock(void)

int lineCount(void)

void markContentsDirty(int position, int length)

int maximumBlockCount(void)

QString metaInformation(QTextDocument::MetaInformation info)

QTextObject *object(int objectIndex)

QTextObject *objectForFormat(QTextFormat f)

int pageCount(void)

QSizeF pageSize(void)

void print(QPrinter *printer)

void redo(QTextCursor *cursor)

QVariant resource(int type, QUrl name)

int revision(void)

QTextFrame *rootFrame(void)

void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style)

void setDefaultFont(QFont font)

void setDefaultStyleSheet(QString sheet)

void setDefaultTextOption(QTextOption option)

void setDocumentLayout(QAbstractTextDocumentLayout * layout)

void setDocumentMargin(double margin)

void setHtml(QString html)

void setIndentWidth(double width)

void setMaximumBlockCount(int maximum)

void setMetaInformation(QTextDocument::MetaInformation info, QString string)

void setPageSize(QSizeF size)

void setPlainText(QString text)

void setTextWidth(double width)

void setUndoRedoEnabled(bool enable)

void setUseDesignMetrics(bool b)

QSizeF size(void)

qreal textWidth(void)

QString toHtml(QByteArray encoding)

QString toPlainText(void)

void undo(QTextCursor *cursor)

bool useDesignMetrics(void)

void setModified(bool m)

QTextEdit クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextedit.html

仮引数 : QWidget *

親クラス : QAbstractScrollArea

bool acceptRichText(void)

int alignment(void)

QString anchorAt(QPoint)

bool canPaste(void)

QTextCharFormat currentCharFormat(void)

QFont currentFont(void)

QTextCursor cursorForPosition(QPoint)

QRect cursorRect(void)

int cursorWidth(void)

QTextDocument *document(void)

QString documentTitle(void)

void ensureCursorVisible(void)

bool find(QString, QTextDocument::FindFlag)

QString fontFamily(void)

bool fontItalic(void)

double fontPointSize(void)

bool fontUnderline(void)

int fontWeight(void)

bool isReadOnly(void)

bool isUndoRedoEnabled(void)

int lineWrapColumnOrWidth(void)

QVariant loadResource(int, QUrl)

void mergeCurrentCharFormat(QTextCharFormat)

void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode)

bool overwriteMode(void)

void print(QPrinter * printer)

void setAcceptRichText(bool accept)

void setCurrentCharFormat(QTextCharFormat)

void setCursorWidth(int width)

void setDocument(QTextDocument *document)

void setDocumentTitle(QString)

void setLineWrapColumnOrWidth(int w)

void setLineWrapMode(QTextEdit::LineWrapMode)

void setOverwriteMode(bool overwrite)

void setReadOnly(bool)

void setTabChangesFocus(bool)

void setTabStopWidth(int width)

void setTextCursor(QTextCursor)

void setTextInteractionFlags(Qt::TextInteractionFlag flags)

void setUndoRedoEnabled(bool enable)

void setWordWrapMode(QTextOption::WrapMode policy)

bool tabChangesFocus(void)

int tabStopWidth(void)

QColor textBackgroundColor(void)

QColor textColor(void)

QTextCursor textCursor(void)

int textInteractionFlags(void)

QString toHtml(void)

QString toPlainText(void)

int wordWrapMode(void)

void append(QString)

void clear(void)

void copy(void)

void cut(void)

void insertHtml(QString)

void insertPlainText(QString)

void paste(void)

void redo(void)

void scrollToAnchor(QString)

void selectAll(void)

void setAlignment(Qt::AlignmentFlag a)

void setCurrentFont(QFont)

void setFontFamily(QString)

void setFontItalic(bool italic)

void setFontPointSize(double s)

void setFontUnderline(bool underline)

void setFontWeight(int weight)

void setHtml(QString)

void setPlainText(QString)

void setText(QString)

void setTextBackgroundColor(QColor)

void setTextColor(QColor)

void undo(void)

void zoomIn(int range)

void zoomOut(int range)

void setcopyAvailableEvent(const char *)

void setcurrentCharFormatChangedEvent(const char *)

void setcursorPositionChangedEvent(const char *)

void setredoAvailableEvent(const char *)

void setselectionChangedEvent(const char *)

void settextChangedEvent(const char *)

void setundoAvailableEvent(const char *)

const char *getcopyAvailableEvent(void)

const char *getcurrentCharFormatChangedEvent(void)

const char *getcursorPositionChangedEvent(void)

const char *getredoAvailableEvent(void)

const char *getselectionChangedEvent(void)

const char *gettextChangedEvent(void)

const char *getundoAvailableEvent(void)

void cyanline(void)

void setactivelinecolor(QColor)

QTextStream クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtextstream.html

仮引数 : void

bool atEnd(void)

bool autoDetectUnicode(void)

QTextCodec * codec(void)

QIODevice * device(void)

QTextStream::FieldAlignment fieldAlignment(void)

int fieldWidth(void)

void flush(void)

bool generateByteOrderMark(void)

int integerBase(void)

QLocale locale(void)

QTextStream::NumberFlags numberFlags(void)

QChar padChar(void)

qint64 pos(void)

QString read(qint64 maxlen)

QString readAll(void)

QString readLine(qint64 maxlen)

QTextStream::RealNumberNotation realNumberNotation(void)

int realNumberPrecision(void)

void reset(void)

void resetStatus(void)

bool seek(qint64 pos)

void setAutoDetectUnicode(bool enabled)

void setCodec(QTextCodec * codec)

void setCodec_2(char * codecName)

void setDevice(QIODevice * device)

void setFieldAlignment(QTextStream::FieldAlignment mode)

void setFieldWidth(int width)

void setGenerateByteOrderMark(bool generate)

void setIntegerBase(int base)

void setLocale(QLocale locale)

void setNumberFlags(QTextStream::NumberFlags flags)

void setPadChar(QChar ch)

void setRealNumberNotation(QTextStream::RealNumberNotation notation)

void setRealNumberPrecision(int precision)

void setStatus(QTextStream::Status status)

void setString(QString * string, QIODevice::OpenMode openMode)

void skipWhiteSpace(void)

QTextStream::Status status(void)

QString * string(void)

QTextStream2 クラス

仮引数 : QIODevice * device

親クラス : QTextStream

QTextStream3 クラス

仮引数 : FILE * fileHandle, QIODevice::OpenMode

親クラス : QTextStream

QTextStream4 クラス

仮引数 : QString *, QIODevice::OpenMode

親クラス : QTextStream

QTextStream5 クラス

仮引数 : QByteArray *, QIODevice::OpenMode

親クラス : QTextStream

QTextToSpeech クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtexttospeech.html

仮引数 : QObject *

親クラス : QObject

QVector<QLocale> availableLocales(void)

QVector<QVoice> availableVoices(void)

QLocale locale(void)

double pitch(void)

double rate(void)

QTextToSpeech::State state(void)

QVoice voice(void)

double volume(void)

void pause(void)

void resume(void)

void say(QString text)

void setLocale(QLocale locale)

void setPitch(double pitch)

void setRate(double rate)

void setVoice(QVoice voice)

void setVolume(double volume)

void stop(void)

QStringList availableEngines(void)

void setlocaleChangedEvent(const char *)

void setpitchChangedEvent(const char *)

void setrateChangedEvent(const char *)

void setstateChangedEvent(const char *)

void setvoiceChangedEvent(const char *)

void setvolumeChangedEvent(const char *)

const char *getlocaleChangedEvent(void)

const char *getpitchChangedEvent(void)

const char *getrateChangedEvent(void)

const char *getstateChangedEvent(void)

const char *getvoiceChangedEvent(void)

const char *getvolumeChangedEvent(void)

QTextureLoader クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qtextureloader.html

仮引数 : Qt3DCore::QNode *

bool isMirrored(void)

QUrl source(void)

void setMirrored(bool mirrored)

void setSource(QUrl source)

QTextureMaterial クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qtexturematerial.html

仮引数 : Qt3DCore::QNode *

bool isAlphaBlendingEnabled(void)

Qt3DRender::QAbstractTexture *texture(void)

QVector2D textureOffset(void)

QMatrix3x3 textureTransform(void)

void setAlphaBlendingEnabled(bool enabled)

void setTexture(Qt3DRender::QAbstractTexture *texture)

void setTextureOffset(QVector2D textureOffset)

void setTextureTransform(QMatrix3x3 matrix)

QThread クラス

C++ リファレンス : http://doc.qt.io/qt-5/qthread.html

仮引数 : QObject *

親クラス : QObject

QAbstractEventDispatcher *eventDispatcher(void)

void exit(int returnCode) # RingQt では void exitfromthread(int returnCode) を使用

bool isFinished(void)

bool isInterruptionRequested(void)

bool isRunning(void)

QThread::Priority priority(void)

void requestInterruption(void)

void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)

void setPriority(QThread::Priority priority)

void setStackSize(uint stackSize)

uint stackSize(void)

bool wait(unsigned long time)

void quit(void)

void start(QThread::Priority priority)

void terminate(void)

QThread *currentThread(void)

Qt::HANDLE currentThreadId(void)

int idealThreadCount(void)

void msleep(unsigned long msecs)

void sleep(unsigned long secs)

void usleep(unsigned long usecs)

void yieldCurrentThread(void)

void setStartedEvent(const char *)

void setFinishedEvent(const char *)

const char *getStartedEvent(void)

const char *getFinishedEvent(void)

QThreadPool クラス

C++ リファレンス : http://doc.qt.io/qt-5/qthreadpool.html

仮引数 : void

親クラス : QObject

int activeThreadCount(void)

void clear(void)

int expiryTimeout(void)

int maxThreadCount(void)

void releaseThread(void)

void reserveThread(void)

void setExpiryTimeout(int expiryTimeout)

void setMaxThreadCount(int maxThreadCount)

void start(QRunnable * runnable, int priority)

bool tryStart(QRunnable * runnable)

bool waitForDone(int msecs)

QThreadPool *globalInstance(void)

QTime クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtime.html

仮引数 : void

QTime addMSecs(int ms)

QTime addSecs(int s)

int elapsed(void)

int hour(void)

bool isNull(void)

bool isValid(void)

int minute(void)

int msec(void)

int msecsSinceStartOfDay(void)

int msecsTo(QTime)

int restart(void)

int second(void)

int secsTo(QTime)

bool setHMS(int h, int m, int s, int ms)

void start(void)

QString toString(QString)

QTime currentTime(void)

QTime fromMSecsSinceStartOfDay(int msecs)

QTime fromString(QString,QString)

QTimer クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtimer.html

仮引数 : QObject *parent

int interval(void)

bool isActive(void)

bool isSingleShot(void)

void setInterval(int msec)

void setSingleShot(bool singleShot)

int timerId(void)

void start(void)

void stop(void)

void settimeoutEvent(const char *)

const char *gettimeoutEvent(void)

QToolBar クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtoolbar.html

仮引数 : QWidget *

親クラス : QWidget

QAction *actionAt(int x, int y)

QAction *addAction(QString)

QAction *addSeparator(void)

QAction *addWidget(QWidget *widget)

int allowedAreas(void)

void clear(void)

QSize iconSize(void)

QAction *insertSeparator(QAction *before)

QAction *insertWidget(QAction *before, QWidget *widget)

bool isAreaAllowed(Qt::ToolBarArea area)

bool isFloatable(void)

bool isFloating(void)

bool isMovable(void)

int orientation(void)

void setAllowedAreas(Qt::ToolBarArea areas)

void setFloatable(bool floatable)

void setMovable(bool movable)

void setOrientation(Qt::Orientation orientation)

QAction *toggleViewAction(void)

int toolButtonStyle(void)

QWidget *widgetForAction(QAction *action)

void setIconSize(QSize)

void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)

QToolButton クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtoolbutton.html

仮引数 : QWidget *

親クラス : QAbstractButton

Qt::ArrowType arrowType(void)

bool autoRaise(void)

QAction * defaultAction(void)

QMenu * menu(void)

QToolButton::ToolButtonPopupMode popupMode(void)

void setArrowType(Qt::ArrowType type)

void setAutoRaise(bool enable)

void setMenu(QMenu * menu)

void setPopupMode(QToolButton::ToolButtonPopupMode mode)

Qt::ToolButtonStyle toolButtonStyle(void)

void setDefaultAction(QAction * action)

void setToolButtonStyle(Qt::ToolButtonStyle style)

void showMenu(void)

void settriggeredEvent(const char *)

const char *gettriggeredEvent(void)

void setClickEvent(const char *)

const char *getClickEvent(void)

QTorusMesh クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qtorusmesh.html

仮引数 : Qt3DCore::QNode *

float minorRadius(void)

float radius(void)

int rings(void)

int slices(void)

void setMinorRadius(float minorRadius)

void setRadius(float radius)

void setRings(int rings)

void setSlices(int slices)

QTransform クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dcore-qtransform.html

仮引数 : Qt3DCore::QNode *

QMatrix4x4 matrix(void)

QQuaternion rotation(void)

float rotationX(void)

float rotationY(void)

float rotationZ(void)

float scale(void)

QVector3D scale3D(void)

QVector3D translation(void)

void setMatrix(QMatrix4x4 matrix)

void setRotation(QQuaternion rotation)

void setRotationX(float rotationX)

void setRotationY(float rotationY)

void setRotationZ(float rotationZ)

void setScale(float scale)

void setScale3D(QVector3D scale)

void setTranslation(QVector3D translation)

QQuaternion fromAxes(QVector3D xAxis, QVector3D yAxis, QVector3D zAxis)

QQuaternion fromAxesAndAngles(QVector3D axis1, float angle1, QVector3D axis2, float angle2)

QQuaternion fromAxesAndAngles_2(QVector3D axis1, float angle1, QVector3D axis2, float angle2, QVector3D axis3, float angle3)

QQuaternion fromAxisAndAngle(QVector3D axis, float angle)

QQuaternion fromAxisAndAngle_2(float x, float y, float z, float angle)

QQuaternion fromEulerAngles(QVector3D eulerAngles)

QQuaternion fromEulerAngles_2(float pitch, float yaw, float roll)

QMatrix4x4 rotateAround(QVector3D point, float angle, QVector3D axis)

QMatrix4x4 rotateFromAxes(QVector3D xAxis, QVector3D yAxis, QVector3D zAxis)

QTreeView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtreeview.html

仮引数 : QWidget *

親クラス : QAbstractItemView

bool allColumnsShowFocus(void)

int autoExpandDelay(void)

int columnAt(int x)

int columnViewportPosition(int column)

int columnWidth(int column)

bool expandsOnDoubleClick(void)

QHeaderView *header(void)

int indentation(void)

QModelIndex indexAbove(QModelIndex)

QModelIndex indexBelow(QModelIndex)

bool isAnimated(void)

bool isColumnHidden(int column)

bool isExpanded(QModelIndex)

bool isFirstColumnSpanned(int row, QModelIndex)

bool isHeaderHidden(void)

bool isRowHidden(int row,QModelIndex)

bool isSortingEnabled(void)

bool itemsExpandable(void)

bool rootIsDecorated(void)

void setAllColumnsShowFocus(bool enable)

void setAnimated(bool enable)

void setAutoExpandDelay(int delay)

void setColumnHidden(int column, bool hide)

void setColumnWidth(int column, int width)

void setExpanded(QModelIndex, bool expanded)

void setExpandsOnDoubleClick(bool enable)

void setFirstColumnSpanned(int row, QModelIndex, bool span)

void setHeader(QHeaderView * header)

void setHeaderHidden(bool hide)

void setIndentation(int i)

void setItemsExpandable(bool enable)

void setRootIsDecorated(bool show)

void setRowHidden(int row,QModelIndex, bool hide)

void setSortingEnabled(bool enable)

void setUniformRowHeights(bool uniform)

void setWordWrap(bool on)

void sortByColumn(int column,Qt::SortOrder order)

bool uniformRowHeights(void)

bool wordWrap(void)

void dataChanged(QModelIndex,QModelIndex)

QModelIndex indexAt(QPoint)

void keyboardSearch(QString)

void reset(void)

void scrollTo(QModelIndex, QAbstractItemView::ScrollHint)

void selectAll(void)

void setModel(QAbstractItemModel *model)

void setRootIndex(QModelIndex)

void setSelectionModel(QItemSelectionModel *selectionModel)

QRect visualRect(QModelIndex)

void collapse(QModelIndex)

void collapseAll(void)

void expand(QModelIndex)

void expandAll(void)

void expandToDepth(int depth)

void hideColumn(int column)

void resizeColumnToContents(int column)

void showColumn(int column)

void setcollapsedEvent(const char *)

void setexpandedEvent(const char *)

void setactivatedEvent(const char *)

void setclickedEvent(const char *)

void setdoubleClickedEvent(const char *)

void setenteredEvent(const char *)

void setpressedEvent(const char *)

void setviewportEnteredEvent(const char *)

const char *getcollapsedEvent(void)

const char *getexpandedEvent(void)

const char *getactivatedEvent(void)

const char *getclickedEvent(void)

const char *getdoubleClickedEvent(void)

const char *getenteredEvent(void)

const char *getpressedEvent(void)

const char *getviewportEnteredEvent(void)

QTreeWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtreewidget.html

仮引数 : QWidget *

親クラス : QTreeView

void addTopLevelItem(QTreeWidgetItem *item)

void closePersistentEditor(QTreeWidgetItem *item, int column)

int columnCount(void)

int currentColumn(void)

QTreeWidgetItem *currentItem(void)

void editItem(QTreeWidgetItem *item, int column)

QTreeWidgetItem *headerItem(void)

int indexOfTopLevelItem(QTreeWidgetItem *item)

void insertTopLevelItem(int index, QTreeWidgetItem *item)

QTreeWidgetItem *invisibleRootItem(void)

bool isFirstItemColumnSpanned( QTreeWidgetItem *item)

QTreeWidgetItem *itemAbove(QTreeWidgetItem *item)

QTreeWidgetItem *itemAt(int x, int y)

QTreeWidgetItem *itemBelow(QTreeWidgetItem *item)

QWidget *itemWidget(QTreeWidgetItem *item, int column)

void openPersistentEditor(QTreeWidgetItem *item, int column)

void removeItemWidget(QTreeWidgetItem *item, int column)

void setColumnCount(int columns)

void setCurrentItem(QTreeWidgetItem * item, QItemSelectionModel::SelectionFlag column)

void setFirstItemColumnSpanned(QTreeWidgetItem *item, bool span)

void setHeaderItem(QTreeWidgetItem *item)

void setHeaderLabel(QString)

void setHeaderLabels(QStringList)

void setItemWidget(QTreeWidgetItem *item, int column, QWidget * widget)

int sortColumn(void)

void sortItems(int column, Qt::SortOrder order)

QTreeWidgetItem *takeTopLevelItem(int index)

QTreeWidgetItem *topLevelItem(int index)

int topLevelItemCount(void)

QRect visualItemRect(QTreeWidgetItem *item)

void setSelectionModel(QItemSelectionModel *selectionModel)

void clear(void)

void collapseItem(QTreeWidgetItem *item)

void expandItem(QTreeWidgetItem *item)

void scrollToItem(QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint)

void setcollapsedEvent(const char *)

void setexpandedEvent(const char *)

void setactivatedEvent(const char *)

void setclickedEvent(const char *)

void setdoubleClickedEvent(const char *)

void setenteredEvent(const char *)

void setpressedEvent(const char *)

void setviewportEnteredEvent(const char *)

void setcurrentItemChangedEvent(const char *)

void setitemActivatedEvent(const char *)

void setitemChangedEvent(const char *)

void setitemClickedEvent(const char *)

void setitemCollapsedEvent(const char *)

void setitemDoubleClickedEvent(const char *)

void setitemEnteredEvent(const char *)

void setitemExpandedEvent(const char *)

void setitemPressedEvent(const char *)

void setitemSelectionChangedEvent(const char *)

const char *getcollapsedEvent(void)

const char *getexpandedEvent(void)

const char *getactivatedEvent(void)

const char *getclickedEvent(void)

const char *getdoubleClickedEvent(void)

const char *getenteredEvent(void)

const char *getpressedEvent(void)

const char *getviewportEnteredEvent(void)

const char *getcurrentItemChangedEvent(void)

const char *getitemActivatedEvent(void)

const char *getitemChangedEvent(void)

const char *getitemClickedEvent(void)

const char *getitemCollapsedEvent(void)

const char *getitemDoubleClickedEvent(void)

const char *getitemEnteredEvent(void)

const char *getitemExpandedEvent(void)

const char *getitemPressedEvent(void)

const char *getitemSelectionChangedEvent(void)

QTreeWidgetItem クラス

C++ リファレンス : http://doc.qt.io/qt-5/qtreewidgetitem.html

仮引数 : void

void addChild(QTreeWidgetItem *child)

QBrush background(int column)

int checkState(int column)

QTreeWidgetItem *child(int index)

int childCount(void)

int childIndicatorPolicy(void)

QTreeWidgetItem *clone(void)

int columnCount(void)

QVariant data(int column, int role)

int flags(void)

QFont font(int column)

QBrush foreground(int column)

QIcon icon(int column)

int indexOfChild(QTreeWidgetItem *child)

void insertChild(int index, QTreeWidgetItem *child)

bool isDisabled(void)

bool isExpanded(void)

bool isFirstColumnSpanned(void)

bool isHidden(void)

bool isSelected(void)

QTreeWidgetItem *parent(void)

void read(QDataStream)

void removeChild(QTreeWidgetItem *child)

void setBackground(int column,QBrush)

void setCheckState(int column, Qt::CheckState state)

void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy)

void setData(int column, int role,QVariant)

void setDisabled(bool disabled)

void setExpanded(bool expand)

void setFirstColumnSpanned(bool span)

void setFlags(Qt::ItemFlag flags)

void setFont(int column, QFont)

void setForeground(int column, QBrush)

void setHidden(bool hide)

void setIcon(int column, QIcon)

void setSelected(bool select)

void setSizeHint(int column, QSize)

void setStatusTip(int column, QString)

void setText(int column, QString)

void setTextAlignment(int column, int alignment)

void setToolTip(int column, QString)

void setWhatsThis(int column, QString)

QSize sizeHint(int column)

void sortChildren(int column, Qt::SortOrder order)

QString statusTip(int column)

QTreeWidgetItem *takeChild(int index)

QString text(int column)

int textAlignment(int column)

QString toolTip(int column)

QTreeWidget *treeWidget(void)

int type(void)

QString whatsThis(int column)

void write(QDataStream)

QUrl クラス

C++ リファレンス : http://doc.qt.io/qt-5/qurl.html

仮引数 : QString

void clear(void)

QString errorString(void)

QString fileName(QUrl::ComponentFormattingOption options)

QString fragment(QUrl::ComponentFormattingOption options)

bool hasFragment(void)

bool hasQuery(void)

QString host(QUrl::ComponentFormattingOption options)

bool isEmpty(void)

bool isLocalFile(void)

bool isParentOf(QUrl)

bool isRelative(void)

bool isValid(void)

QString path(QUrl::ComponentFormattingOption options)

int port(int defaultPort)

QString query(QUrl::ComponentFormattingOption options)

QUrl resolved(QUrl)

QString scheme(void)

void setAuthority(QString, QUrl::ParsingMode mode)

void setFragment(QString, QUrl::ParsingMode mode)

void setHost(QString, QUrl::ParsingMode mode)

void setPassword(QString, QUrl::ParsingMode mode)

void setPath(QString, QUrl::ParsingMode mode)

void setPort(int port)

void setQuery(QString, QUrl::ParsingMode mode)

void setScheme(QString)

void setUrl(QString, QUrl::ParsingMode parsingMode)

void setUserInfo(QString, QUrl::ParsingMode mode)

void setUserName(QString, QUrl::ParsingMode mode)

void swap(QUrl)

QString topLevelDomain(QUrl::ComponentFormattingOption options)

QString userInfo(QUrl::ComponentFormattingOption options)

QString userName(QUrl::ComponentFormattingOption options)

QUrl fromLocalFile(QString)

QUuid クラス

C++ リファレンス : http://doc.qt.io/qt-5/quuid.html

仮引数 : void

QString toString(void)

QVBarModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvbarmodelmapper.html

仮引数 : QObject *

親クラス : QObject

int firstRow(void)

int lastBarSetColumn(void)

QAbstractItemModel * model(void)

int rowCount(void)

QAbstractBarSeries * series(void)

void setFirstBarSetColumn(int firstBarSetColumn)

void setFirstRow(int firstRow)

void setLastBarSetColumn(int lastBarSetColumn)

void setModel(QAbstractItemModel *model)

void setRowCount(int rowCount)

void setSeries(QAbstractBarSeries *series)

void setfirstBarSetColumnChangedEvent(const char *)

void setfirstRowChangedEvent(const char *)

void setlastBarSetColumnChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setrowCountChangedEvent(const char *)

void setseriesReplacedEvent(const char *)

const char *getfirstBarSetColumnChangedEvent(void)

const char *getfirstRowChangedEvent(void)

const char *getlastBarSetColumnChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getrowCountChangedEvent(void)

const char *getseriesReplacedEvent(void)

QVBoxLayout クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvboxlayout.html

仮引数 : void

親クラス : QBoxLayout

void addWidget(QWidget *)

void addLayout(QLayout *)

QVBoxPlotModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvboxplotmodelmapper.html

仮引数 : QObject *

親クラス : QObject

int firstRow(void)

int lastBoxSetColumn(void)

QAbstractItemModel * model(void)

int rowCount(void)

QBoxPlotSeries * series(void)

void setFirstBoxSetColumn(int firstBoxSetColumn)

void setFirstRow(int firstRow)

void setLastBoxSetColumn(int lastBoxSetColumn)

void setModel(QAbstractItemModel *model)

void setRowCount(int rowCount)

void setSeries(QBoxPlotSeries *series)

void setfirstBoxSetColumnChangedEvent(const char *)

void setfirstRowChangedEvent(const char *)

void setlastBoxSetColumnChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setrowCountChangedEvent(const char *)

void setseriesReplacedEvent(const char *)

const char *getfirstBoxSetColumnChangedEvent(void)

const char *getfirstRowChangedEvent(void)

const char *getlastBoxSetColumnChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getrowCountChangedEvent(void)

const char *getseriesReplacedEvent(void)

QVCandlestickModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvcandlestickmodelmapper.html

仮引数 : QObject *

親クラス : QCandlestickModelMapper

int closeRow(void)

int firstSetColumn(void)

int highRow(void)

int lastSetColumn(void)

int lowRow(void)

int openRow(void)

void setCloseRow(int closeRow)

void setFirstSetColumn(int firstSetColumn)

void setHighRow(int highRow)

void setLastSetColumn(int lastSetColumn)

void setLowRow(int lowRow)

void setOpenRow(int openRow)

void setTimestampRow(int timestampRow)

int timestampRow(void)

void setcloseRowChangedEvent(const char *)

void setfirstSetColumnChangedEvent(const char *)

void sethighRowChangedEvent(const char *)

void setlastSetColumnChangedEvent(const char *)

void setlowRowChangedEvent(const char *)

void setopenRowChangedEvent(const char *)

void settimestampRowChangedEvent(const char *)

const char *getcloseRowChangedEvent(void)

const char *getfirstSetColumnChangedEvent(void)

const char *gethighRowChangedEvent(void)

const char *getlastSetColumnChangedEvent(void)

const char *getlowRowChangedEvent(void)

const char *getopenRowChangedEvent(void)

const char *gettimestampRowChangedEvent(void)

QVPieModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvpiemodelmapper.html

仮引数 : QObject *

親クラス : QPieModelMapper

int firstRow(void)

int labelsColumn(void)

QAbstractItemModel * model(void)

int rowCount(void)

QPieSeries * series(void)

void setFirstRow(int firstRow)

void setLabelsColumn(int labelsColumn)

void setModel(QAbstractItemModel *model)

void setRowCount(int rowCount)

void setSeries(QPieSeries *series)

void setValuesColumn(int valuesColumn)

int valuesColumn(void)

void setfirstRowChangedEvent(const char *)

void setlabelsColumnChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setrowCountChangedEvent(const char *)

void setseriesReplacedEvent(const char *)

void setvaluesColumnChangedEvent(const char *)

const char *getfirstRowChangedEvent(void)

const char *getlabelsColumnChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getrowCountChangedEvent(void)

const char *getseriesReplacedEvent(void)

const char *getvaluesColumnChangedEvent(void)

QVXYModelMapper クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvxymodelmapper.html

仮引数 : QObject *

親クラス : QXYModelMapper

int firstRow(void)

QAbstractItemModel * model(void)

int rowCount(void)

QXYSeries * series(void)

void setFirstRow(int firstRow)

void setModel(QAbstractItemModel *model)

void setRowCount(int rowCount)

void setSeries(QXYSeries *series)

void setXColumn(int xColumn)

void setYColumn(int yColumn)

int xColumn(void)

int yColumn(void)

void setfirstRowChangedEvent(const char *)

void setmodelReplacedEvent(const char *)

void setrowCountChangedEvent(const char *)

void setseriesReplacedEvent(const char *)

void setxColumnChangedEvent(const char *)

void setyColumnChangedEvent(const char *)

const char *getfirstRowChangedEvent(void)

const char *getmodelReplacedEvent(void)

const char *getrowCountChangedEvent(void)

const char *getseriesReplacedEvent(void)

const char *getxColumnChangedEvent(void)

const char *getyColumnChangedEvent(void)

QValueAxis クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvalueaxis.html

仮引数 : QObject *

親クラス : QAbstractAxis

QString labelFormat(void)

qreal max(void)

qreal min(void)

int minorTickCount(void)

void setLabelFormat(QString format)

void setMax(qreal max)

void setMin(qreal min)

void setMinorTickCount(int count)

void setRange(qreal min, qreal max)

void setTickCount(int count)

void setTickAnchor(qreal anchor)

void setTickInterval(qreal insterval)

void setTickType(QValueAxis::TickType type)

qreal tickAnchor(void)

qreal tickInterval(void)

QValueAxis::TickType tickType(void)

int tickCount(void)

void setlabelFormatChangedEvent(const char *)

void setmaxChangedEvent(const char *)

void setminChangedEvent(const char *)

void setminorTickCountChangedEvent(const char *)

void setrangeChangedEvent(const char *)

void settickAnchorChangedEvent(const char *)

void settickCountChangedEvent(const char *)

void settickIntervalChangedEvent(const char *)

void settickTypeChangedEvent(const char *)

const char *getlabelFormatChangedEvent(void)

const char *getmaxChangedEvent(void)

const char *getminChangedEvent(void)

const char *getminorTickCountChangedEvent(void)

const char *getrangeChangedEvent(void)

const char *gettickAnchorChangedEvent(void)

const char *gettickCountChangedEvent(void)

const char *gettickIntervalChangedEvent(void)

const char *gettickTypeChangedEvent(void)

QVariant クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvariant.html

仮引数 : void

bool canConvert(int targetTypeId)

void clear(void)

bool convert(int targetTypeId)

bool isNull(void)

bool isValid(void)

void swap(QVariant)

QBitArray toBitArray(void)

bool toBool(void)

QByteArray toByteArray(void)

QChar toChar(void)

QDate toDate(void)

QDateTime toDateTime(void)

double toDouble(bool *ok)

QEasingCurve toEasingCurve(void)

float toFloat(bool *ok)

int toInt(bool *ok)

QJsonArray toJsonArray(void)

QJsonDocument toJsonDocument(void)

QJsonObject toJsonObject(void)

QJsonValue toJsonValue(void)

QLine toLine(void)

QLineF toLineF(void)

QLocale toLocale(void)

qlonglong toLongLong(bool *ok)

QModelIndex toModelIndex(void)

QPointF toPointF(void)

qreal toReal(bool *ok)

QRect toRect(void)

QRectF toRectF(void)

QRegExp toRegExp(void)

QRegularExpression toRegularExpression(void)

QSize toSize(void)

QSizeF toSizeF(void)

QStringList toStringList(void)

QTime toTime(void)

uint toUInt(bool *ok)

qulonglong toULongLong(bool *ok)

QUrl toUrl(void)

QUuid toUuid(void)

QVariant::Type type(void)

const char *typeName(void)

int userType(void)

QString toString(void)

QVariant2 クラス

親クラス : QVariant

仮引数 : int

QVariant3 クラス

親クラス : QVariant

仮引数 : float

QVariant4 クラス

親クラス : QVariant

仮引数 : double

QVariant5 クラス

親クラス : QVariant

仮引数 : QString

QVariantDouble クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvariantdouble.html

親クラス : QVariant

仮引数 : double

QVariantFloat クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvariantfloat.html

親クラス : QVariant

仮引数 : float

QVariantInt クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvariantint.html

親クラス : QVariant

仮引数 : int

QVariantString クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvariantstring.html

親クラス : QVariant

仮引数 : QString

QVector2D クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvector2d.html

仮引数 : float,float

float distanceToLine(QVector2D point, QVector2D direction)

float distanceToPoint(QVector2D point)

bool isNull(void)

float length(void)

float lengthSquared(void)

void normalize(void)

QVector2D normalized(void)

void setX(float x)

void setY(float y)

QPoint toPoint(void)

QPointF toPointF(void)

QVector3D toVector3D(void)

QVector4D toVector4D(void)

float x(void)

float y(void)

float dotProduct(QVector2D v1, QVector2D v2)

QVector3D クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvector3d.html

仮引数 : float,float,float

float distanceToLine(QVector3D point, QVector3D direction)

float distanceToPlane(QVector3D plane, QVector3D normal)

float distanceToPlane_2(QVector3D plane1, QVector3D plane2, QVector3D plane3)

float distanceToPoint(QVector3D point)

bool isNull(void)

float length(void)

float lengthSquared(void)

void normalize(void)

QVector3D normalized(void)

void setY(float y)

void setZ(float z)

QPoint toPoint(void)

QPointF toPointF(void)

QVector2D toVector2D(void)

QVector4D toVector4D(void)

float y(void)

float z(void)

QVector3D crossProduct(QVector3D v1, QVector3D v2)

float dotProduct(QVector3D v1, QVector3D v2)

QVector3D normal(QVector3D v1, QVector3D v2)

QVector3D normal_2(QVector3D v1, QVector3D v2, QVector3D v3)

QVector4D クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvector4d.html

仮引数 : float,float,float,float

bool isNull(void)

float length(void)

float lengthSquared(void)

void normalize(void)

QVector4D normalized(void)

void setW(float w)

void setX(float x)

void setY(float y)

void setZ(float z)

QPoint toPoint(void)

QPointF toPointF(void)

QVector2D toVector2D(void)

QVector2D toVector2DAffine(void)

QVector3D toVector3D(void)

QVector3D toVector3DAffine(void)

float w(void)

float x(void)

float y(void)

float z(void)

float dotProduct(QVector4D v1, QVector4D v2)

QVectorQVoice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvectorqvoice.html

仮引数 : void

int count(void)

QVoice value(int i)

QVideoWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvideowidget.html

仮引数 : QWidget *parent

親クラス : QWidget

int aspectRatioMode(void)

int brightness(void)

int contrast(void)

int hue(void)

bool isFullScreen(void)

int saturation(void)

void setAspectRatioMode(Qt::AspectRatioMode mode)

void setBrightness(int brightness)

void setContrast(int contrast)

void setFullScreen(bool fullScreen)

void setHue(int hue)

void setSaturation(int saturation)

void setbrightnessChangedEvent(const char *)

void setcontrastChangedEvent(const char *)

void setfullScreenChangedEvent(const char *)

void sethueChangedEvent(const char *)

void setsaturationChangedEvent(const char *)

const char *getbrightnessChangedEvent(void)

const char *getcontrastChangedEvent(void)

const char *getfullScreenChangedEvent(void)

const char *gethueChangedEvent(void)

const char *getsaturationChangedEvent(void)

QVideoWidgetControl クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvideowidgetcontrol.html

親クラス : QMediaControl

QViewport クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3drender-qviewport.html

仮引数 : Qt3DCore::QNode *

float gamma(void)

QRectF normalizedRect(void)

void setGamma(float gamma)

void setNormalizedRect(QRectF normalizedRect)

QVoice クラス

C++ リファレンス : http://doc.qt.io/qt-5/qvoice.html

仮引数 : void

QVoice::Age age(void)

QVoice::Gender gender(void)

QString name(void)

QString ageName(QVoice::Age age)

QString genderName(QVoice::Gender gender)

QWebEnginePage クラス

C++ リファレンス : http://doc.qt.io/qt-5/qwebenginepage.html

仮引数 : QObject *

親クラス : QObject

QAction * action(QWebEnginePage::WebAction action)

QColor backgroundColor(void)

QSizeF contentsSize(void)

QWebEnginePage * devToolsPage(void)

void download(QUrl url, QString filename)

void findText(QString subString, QWebEnginePage::FindFlags options, QWebEngineCallback<bool> resultCallback)

bool hasSelection(void)

QWebEngineHistory * history(void)

QIcon icon(void)

QUrl iconUrl(void)

QWebEnginePage * inspectedPage(void)

bool isAudioMuted(void)

void load_3(QWebEngineHttpRequest request)

void print(QPrinter *printer,QWebEngineCallback<bool>)

bool recentlyAudible(void)

QUrl requestedUrl(void)

void runJavaScript(QString scriptSource)

void runJavaScript_2(QString scriptSource, quint32 worldId)

QPointF scrollPosition(void)

QString selectedText(void)

void setAudioMuted(bool muted)

void setBackgroundColor(QColor color)

void setContent(QByteArray data, QString mimeType, QUrl baseUrl)

void setDevToolsPage(QWebEnginePage *devToolsPage)

void setFeaturePermission(QUrl securityOrigin, QWebEnginePage::Feature feature, QWebEnginePage::PermissionPolicy policy)

void setHtml(QString html, QUrl baseUrl)

void setInspectedPage(QWebEnginePage *page)

void setWebChannel_2(QWebChannel *channel)

void setZoomFactor(qreal factor)

QWebEngineSettings * settings(void)

QString title(void)

QUrl url(void)

QWidget * view(void)

QWebChannel * webChannel(void)

qreal zoomFactor(void)

void setaudioMutedChangedEvent(const char *)

void setauthenticationRequiredEvent(const char *)

void setcontentsSizeChangedEvent(const char *)

void setfeaturePermissionRequestCanceledEvent(const char *)

void setfeaturePermissionRequestedEvent(const char *)

void setfindTextFinishedEvent(const char *)

void setfullScreenRequestedEvent(const char *)

void setgeometryChangeRequestedEvent(const char *)

void seticonChangedEvent(const char *)

void seticonUrlChangedEvent(const char *)

void setloadFinishedEvent(const char *)

void setloadProgressEvent(const char *)

void setloadStartedEvent(const char *)

void setpdfPrintingFinishedEvent(const char *)

void setprintRequestedEvent(const char *)

void setproxyAuthenticationRequiredEvent(const char *)

void setquotaRequestedEvent(const char *)

void setrecentlyAudibleChangedEvent(const char *)

void setrecommendedStateChangedEvent(const char *)

void setregisterProtocolHandlerRequestedEvent(const char *)

void setselectClientCertificateEvent(const char *)

void setselectionChangedEvent(const char *)

void settitleChangedEvent(const char *)

void seturlChangedEvent(const char *)

void setvisibleChangedEvent(const char *)

void setwindowCloseRequestedEvent(const char *)

const char *getaudioMutedChangedEvent(void)

const char *getauthenticationRequiredEvent(void)

const char *getcontentsSizeChangedEvent(void)

const char *getfeaturePermissionRequestCanceledEvent(void)

const char *getfeaturePermissionRequestedEvent(void)

const char *getfindTextFinishedEvent(void)

const char *getfullScreenRequestedEvent(void)

const char *getgeometryChangeRequestedEvent(void)

const char *geticonChangedEvent(void)

const char *geticonUrlChangedEvent(void)

const char *getloadFinishedEvent(void)

const char *getloadProgressEvent(void)

const char *getloadStartedEvent(void)

const char *getpdfPrintingFinishedEvent(void)

const char *getprintRequestedEvent(void)

const char *getproxyAuthenticationRequiredEvent(void)

const char *getquotaRequestedEvent(void)

const char *getrecentlyAudibleChangedEvent(void)

const char *getrecommendedStateChangedEvent(void)

const char *getregisterProtocolHandlerRequestedEvent(void)

const char *getselectClientCertificateEvent(void)

const char *getselectionChangedEvent(void)

const char *gettitleChangedEvent(void)

const char *geturlChangedEvent(void)

const char *getvisibleChangedEvent(void)

const char *getwindowCloseRequestedEvent(void)

QWebEngineView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qwebengineview.html

仮引数 : QWidget *parent

親クラス : QWidget

bool hasSelection(void)

QWebEngineHistory *history(void)

void load(QUrl) # RingQt では void loadpage(QUrl) を使用

QWebEnginePage *page(void)

QAction *pageAction(QWebEnginePage::WebAction action)

QString selectedText(void)

void setContent(QByteArray,QString,QUrl)

void setHtml(QString,QUrl)

void setPage(QWebEnginePage *page)

void setUrl(QUrl)

void setZoomFactor(qreal factor)

QWebSettings *settings(void)

QString title(void)

void triggerPageAction(QWebEnginePage::WebAction action, bool checked)

QUrl url(void)

qreal zoomFactor(void)

void back(void)

void forward(void)

void reload(void)

void stop(void)

void setloadFinishedEvent(const char *)

void setloadProgressEvent(const char *)

void setloadStartedEvent(const char *)

void setselectionChangedEvent(const char *)

void settitleChangedEvent(const char *)

void seturlChangedEvent(const char *)

const char *getloadFinishedEvent(void)

const char *getloadProgressEvent(void)

const char *getloadStartedEvent(void)

const char *getselectionChangedEvent(void)

const char *gettitleChangedEvent(void)

const char *geturlChangedEvent(void)

void print(QPrinter *printer,const char *cCode)

QWebView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qwebview.html

仮引数 : QWidget *parent

親クラス : QWidget

QWebHistory *history(void)

QAction *pageAction(QWebPage::WebAction action)

void setContent(QByteArray,QString,QUrl)

void setHtml(QString,QUrl)

void setPage(QWebPage *page)

void setZoomFactor(qreal factor)

QWebSettings *settings(void)

void triggerPageAction(QWebPage::WebAction action, bool checked)

QUrl url(void)

qreal zoomFactor(void)

void back(void)

void forward(void)

void print(QPrinter *printer)

void reload(void)

void stop(void)

void setloadProgressEvent(const char *)

void setloadStartedEvent(const char *)

void setselectionChangedEvent(const char *)

void seturlChangedEvent(const char *)

const char *getloadFinishedEvent(void)

const char *getloadProgressEvent(void)

const char *getloadStartedEvent(void)

const char *getselectionChangedEvent(void)

const char *gettitleChangedEvent(void)

const char *geturlChangedEvent(void)

QWebView クラス

C++ リファレンス : http://doc.qt.io/qt-5/qwebview.html

仮引数 : QWidget *parent

親クラス : QWebEngineView

QWidget クラス

C++ リファレンス : http://doc.qt.io/qt-5/qwidget.html

仮引数 : void

親クラス : QObject

bool acceptDrops(void)

QString accessibleDescription(void)

QString accessibleName(void)

void activateWindow(void)

void addAction(QAction *action)

void adjustSize(void)

bool autoFillBackground(void)

int backgroundRole(void)

QSize baseSize(void)

QWidget *childAt(int x, int y)

QRect childrenRect(void)

QRegion childrenRegion(void)

void clearFocus(void)

void clearMask(void)

QMargins contentsMargins(void)

QRect contentsRect(void)

int contextMenuPolicy(void)

QCursor cursor(void)

int effectiveWinId(void)

void ensurePolished(void)

int focusPolicy(void)

QWidget *focusProxy(void)

QWidget *focusWidget(void)

QFont font(void)

QFontInfo fontInfo(void)

int foregroundRole(void)

QRect frameGeometry(void)

QSize frameSize(void)

QRect geometry(void)

void getContentsMargins(int *left, int *top, int *right, int *bottom)

QPixmap grab(QRect)

void grabGesture(Qt::GestureType gesture, Qt::GestureFlag flags)

void grabKeyboard(void)

void grabMouse(void)

int grabShortcut(QKeySequence , Qt::ShortcutContext context)

QGraphicsEffect *graphicsEffect(void)

QGraphicsProxyWidget *graphicsProxyWidget(void)

bool hasFocus(void)

bool hasMouseTracking(void)

int height(void)

int heightForWidth(int w)

int inputMethodHints(void)

QVariant inputMethodQuery(Qt::InputMethodQuery query)

void insertAction(QAction *before, QAction *action)

bool isActiveWindow(void)

bool isAncestorOf(QWidget *child)

bool isEnabled(void)

bool isEnabledTo(QWidget *ancestor)

bool isFullScreen(void)

bool isHidden(void)

bool isMaximized(void)

bool isMinimized(void)

bool isModal(void)

bool isVisible(void)

bool isVisibleTo(QWidget *ancestor)

bool isWindow(void)

bool isWindowModified(void)

QLayout *layout(void)

int layoutDirection(void)

QLocale locale(void)

QPoint mapFrom(QWidget *parent, QPoint)

QPoint mapFromGlobal(QPoint)

QPoint mapFromParent(QPoint)

QPoint mapTo(QWidget *parent, QPoint)

QPoint mapToGlobal(QPoint pos)

QPoint mapToParent(QPoint pos)

QRegion mask(void)

int maximumHeight(void)

QSize maximumSize(void)

int maximumWidth(void)

int minimumHeight(void)

QSize minimumSize(void)

int minimumWidth(void)

void move(int x, int y)

QWidget *nativeParentWidget(void)

QWidget *nextInFocusChain(void)

QRect normalGeometry(void)

void overrideWindowFlags(Qt::WindowType flags)

QPalette palette(void)

QWidget *parentWidget(void)

QPoint pos(void)

QWidget *previousInFocusChain(void)

QRect rect(void)

void releaseKeyboard(void)

void releaseMouse(void)

void releaseShortcut(int id)

void removeAction(QAction *action)

void render(QPaintDevice *target, QPoint,QRegion, QWidget::RenderFlag)

void repaint(void)

void resize(int w, int h)

bool restoreGeometry(QByteArray)

QByteArray saveGeometry(void)

void scroll(int dx, int dy)

void setAcceptDrops(bool on)

void setAccessibleDescription(QString)

void setAccessibleName(QString)

void setAttribute(Qt::WidgetAttribute attribute, bool on)

void setAutoFillBackground(bool enabled)

void setBackgroundRole(QPalette::ColorRole role)

void setBaseSize(int basew, int baseh)

void setContentsMargins(int left, int top, int right, int bottom)

void setContextMenuPolicy(Qt::ContextMenuPolicy policy)

void setCursor(QCursor)

void setFixedHeight(int h)

void setFixedSize(int w, int h)

void setFixedWidth(int w)

void setFocus(Qt::FocusReason reason)

void setFocusPolicy(Qt::FocusPolicy policy)

void setFocusProxy(QWidget *w)

void setFont(QFont)

void setForegroundRole(QPalette::ColorRole role)

void setGeometry(int x, int y, int w, int h)

void setGraphicsEffect(QGraphicsEffect *effect)

void setInputMethodHints(Qt::InputMethodHint hints)

void setLayout(QLayout *layout)

void setLayoutDirection(Qt::LayoutDirection direction)

void setLocale(QLocale)

void setMask(QBitmap)

void setMaximumHeight(int maxh)

void setMaximumSize(int maxw, int maxh)

void setMaximumWidth(int maxw)

void setMinimumHeight(int minh)

void setMinimumSize(int minw, int minh)

void setMinimumWidth(int minw)

void setMouseTracking(bool enable)

void setPalette(QPalette)

void setParent(QWidget *parent)

void setShortcutAutoRepeat(int id, bool enable)

void setShortcutEnabled(int id, bool enable)

void setSizeIncrement(int w, int h)

void setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

void setStatusTip(QString)

void setStyle(QStyle *style)

void setToolTip(QString)

void setUpdatesEnabled(bool enable)

void setWhatsThis(QString)

void setWindowFilePath(QString)

void setWindowFlags(Qt::WindowType type)

void setWindowIcon(QIcon)

void setWindowIconText(QString)

void setWindowModality(Qt::WindowModality windowModality)

void setWindowOpacity(double level)

void setWindowRole(QString)

void setWindowState(Qt::WindowState windowState)

QSize size(void)

QSize sizeIncrement(void)

QSizePolicy sizePolicy(void)

void stackUnder(QWidget *w)

QString statusTip(void)

QStyle *style(void)

QString styleSheet(void)

bool testAttribute(Qt::WidgetAttribute attribute)

QString toolTip(void)

bool underMouse(void)

void ungrabGesture(Qt::GestureType gesture)

void unsetCursor(void)

void unsetLayoutDirection(void)

void unsetLocale(void)

void update(int x, int y, int w, int h)

void updateGeometry(void)

bool updatesEnabled(void)

QRegion visibleRegion(void)

QString whatsThis(void)

int width(void)

int winId(void)

QWidget *window(void)

QString windowFilePath(void)

int windowFlags(void)

QWindow *windowHandle(void)

QIcon windowIcon(void)

QString windowIconText(void)

int windowModality(void)

double windowOpacity(void)

QString windowRole(void)

int windowState(void)

QString windowTitle(void)

int windowType(void)

int x(void)

int y(void)

bool close(void)

void hide(void)

void lower(void)

void raise(void)

void setDisabled(bool disable)

void setEnabled(bool)

void setHidden(bool hidden)

void setStyleSheet(QString)

void setWindowModified(bool)

void setWindowTitle(QString)

void show(void)

void showFullScreen(void)

void showMaximized(void)

void showMinimized(void)

void showNormal(void)

QWidget *find(int id)

QWidget *keyboardGrabber(void)

QWidget *mouseGrabber(void)

void setTabOrder(QWidget *first, QWidget *second)

QWidget *createWindowContainer(QWindow *window, QWidget *parent, Qt::WindowFlags flags)

QWindow クラス

C++ リファレンス : http://doc.qt.io/qt-5/qwindow.html

仮引数 : QScreen *

親クラス : QObject

QSize baseSize(void)

Qt::ScreenOrientation contentOrientation(void)

void create(void)

QCursor cursor(void)

void destroy(void)

qreal devicePixelRatio(void)

QString filePath(void)

Qt::WindowFlags flags(void)

QObject * focusObject(void)

QRect frameGeometry(void)

QMargins frameMargins(void)

QPoint framePosition(void)

QRect geometry(void)

int height(void)

QIcon icon(void)

bool isActive(void)

bool isAncestorOf(QWindow *child, QWindow::AncestorMode mode)

bool isExposed(void)

bool isModal(void)

bool isTopLevel(void)

bool isVisible(void)

QPoint mapFromGlobal(QPoint pos)

QPoint mapToGlobal(QPoint pos)

QRegion mask(void)

int maximumHeight(void)

QSize maximumSize(void)

int maximumWidth(void)

int minimumHeight(void)

QSize minimumSize(void)

int minimumWidth(void)

Qt::WindowModality modality(void)

qreal opacity(void)

QPoint position(void)

void reportContentOrientationChange(Qt::ScreenOrientation orientation)

QSurfaceFormat requestedFormat(void)

void resize(QSize newSize)

void resize_2(int w, int h)

QScreen * screen(void)

void setBaseSize(QSize size)

void setCursor(QCursor cursor)

void setFilePath(QString filePath)

void setFlags(Qt::WindowFlags flags)

void setFormat(QSurfaceFormat format)

void setFramePosition(QPoint point)

void setGeometry(int posx, int posy, int w, int h)

void setGeometry_2(QRect rect)

void setIcon(QIcon icon)

bool setKeyboardGrabEnabled(bool grab)

void setMask(QRegion region)

void setMaximumSize(QSize size)

void setMinimumSize(QSize size)

void setModality(Qt::WindowModality modality)

bool setMouseGrabEnabled(bool grab)

void setOpacity(qreal level)

void setParent(QWindow *parent)

void setPosition(QPoint pt)

void setPosition_2(int posx, int posy)

void setScreen(QScreen *newScreen)

void setSizeIncrement(QSize size)

void setTransientParent(QWindow *parent)

void setVisibility(QWindow::Visibility v)

void setWindowState(Qt::WindowState state)

QSize sizeIncrement(void)

QString title(void)

QWindow * transientParent(void)

Qt::WindowType type(void)

void unsetCursor(void)

QWindow::Visibility visibility(void)

int width(void)

WId winId(void)

Qt::WindowState windowState(void)

int x(void)

int y(void)

void alert(int msec)

bool close(void)

void hide(void)

void lower(void)

void raise(void)

void requestActivate(void)

void setHeight(int arg)

void setMaximumHeight(int h)

void setMaximumWidth(int w)

void setMinimumHeight(int h)

void setMinimumWidth(int w)

void setTitle(QString )

void setVisible(bool visible)

void setWidth(int arg)

void setX(int arg)

void setY(int arg)

void show(void)

void showFullScreen(void)

void showMaximized(void)

void showMinimized(void)

void showNormal(void)

QWindow * fromWinId(WId id)

void setactiveChangedEvent(const char *)

void setcontentOrientationChangedEvent(const char *)

void setfocusObjectChangedEvent(const char *)

void setheightChangedEvent(const char *)

void setmaximumHeightChangedEvent(const char *)

void setmaximumWidthChangedEvent(const char *)

void setminimumHeightChangedEvent(const char *)

void setminimumWidthChangedEvent(const char *)

void setmodalityChangedEvent(const char *)

void setopacityChangedEvent(const char *)

void setscreenChangedEvent(const char *)

void setvisibilityChangedEvent(const char *)

void setvisibleChangedEvent(const char *)

void setwidthChangedEvent(const char *)

void setwindowStateChangedEvent(const char *)

void setwindowTitleChangedEvent(const char *)

void setxChangedEvent(const char *)

void setyChangedEvent(const char *)

const char *getactiveChangedEvent(void)

const char *getcontentOrientationChangedEvent(void)

const char *getfocusObjectChangedEvent(void)

const char *getheightChangedEvent(void)

const char *getmaximumHeightChangedEvent(void)

const char *getmaximumWidthChangedEvent(void)

const char *getminimumHeightChangedEvent(void)

const char *getminimumWidthChangedEvent(void)

const char *getmodalityChangedEvent(void)

const char *getopacityChangedEvent(void)

const char *getscreenChangedEvent(void)

const char *getvisibilityChangedEvent(void)

const char *getvisibleChangedEvent(void)

const char *getwidthChangedEvent(void)

const char *getwindowStateChangedEvent(void)

const char *getwindowTitleChangedEvent(void)

const char *getxChangedEvent(void)

const char *getyChangedEvent(void)

QXYLegendMarker クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxylegendmarker.html

親クラス : QLegendMarker

QXYSeries * series(void)

QLegendMarker::LegendMarkerType type(void)

QXYSeries クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxyseries.html

親クラス : QAbstractSeries

void append(qreal x, qreal y)

void append_2(QPointF point)

void append_3(QList<QPointF> points)

QPointF at(int index)

QBrush brush(void)

void clear(void)

QColor color(void)

int count(void)

void insert(int index, QPointF point)

QPen pen(void)

bool pointLabelsClipping(void)

QColor pointLabelsColor(void)

QFont pointLabelsFont(void)

QString pointLabelsFormat(void)

bool pointLabelsVisible(void)

QList<QPointF> points(void)

QVector<QPointF> pointsVector(void)

bool pointsVisible(void)

void remove(qreal x, qreal y)

void remove_2(QPointF point)

void remove_3(int index)

void removePoints(int index, int count)

void replace(qreal oldX, qreal oldY, qreal newX, qreal newY)

void replace_2(QPointF oldPoint, QPointF newPoint)

void replace_3(int index, qreal newX, qreal newY)

void replace_4(int index, QPointF newPoint)

void replace_5(QList<QPointF> points)

void replace_6(QVector<QPointF> points)

void setBrush(QBrush brush)

void setColor(QColor color)

void setPen(QPen pen)

void setPointLabelsClipping(bool enabled)

void setPointLabelsColor(QColor color)

void setPointLabelsFont(QFont font)

void setPointLabelsFormat(QString format)

void setPointLabelsVisible(bool visible)

void setPointsVisible(bool visible)

void setclickedEvent(const char *)

void setcolorChangedEvent(const char *)

void setdoubleClickedEvent(const char *)

void sethoveredEvent(const char *)

void setpenChangedEvent(const char *)

void setpointAddedEvent(const char *)

void setpointLabelsClippingChangedEvent(const char *)

void setpointLabelsColorChangedEvent(const char *)

void setpointLabelsFontChangedEvent(const char *)

void setpointLabelsFormatChangedEvent(const char *)

void setpointLabelsVisibilityChangedEvent(const char *)

void setpointRemovedEvent(const char *)

void setpointReplacedEvent(const char *)

void setpointsRemovedEvent(const char *)

void setpointsReplacedEvent(const char *)

void setpressedEvent(const char *)

void setreleasedEvent(const char *)

const char *getclickedEvent(void)

const char *getcolorChangedEvent(void)

const char *getdoubleClickedEvent(void)

const char *gethoveredEvent(void)

const char *getpenChangedEvent(void)

const char *getpointAddedEvent(void)

const char *getpointLabelsClippingChangedEvent(void)

const char *getpointLabelsColorChangedEvent(void)

const char *getpointLabelsFontChangedEvent(void)

const char *getpointLabelsFormatChangedEvent(void)

const char *getpointLabelsVisibilityChangedEvent(void)

const char *getpointRemovedEvent(void)

const char *getpointReplacedEvent(void)

const char *getpointsRemovedEvent(void)

const char *getpointsReplacedEvent(void)

const char *getpressedEvent(void)

const char *getreleasedEvent(void)

QXmlStreamAttribute クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamattribute.html

仮引数 : void

bool isDefault(void)

QStringRef name(void)

QStringRef namespaceUri(void)

QStringRef prefix(void)

QStringRef qualifiedName(void)

QStringRef value(void)

QXmlStreamAttributes クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamattributes.html

仮引数 : void

void append(QString namespaceUri, QString name, QString value)

void append_2(QString qualifiedName, QString value)

bool hasAttribute(QString qualifiedName)

bool hasAttribute_2(QLatin1String qualifiedName)

bool hasAttribute_3(QString namespaceUri, QString name)

QStringRef value(QString namespaceUri, QString name)

QStringRef value_2(QString namespaceUri, QLatin1String name)

QStringRef value_3(QLatin1String namespaceUri, QLatin1String name)

QStringRef value_4(QString qualifiedName)

QStringRef value_5(QLatin1String qualifiedName)

QXmlStreamEntityDeclaration クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamentitydeclaration.html

仮引数 : void

QStringRef name(void)

QStringRef notationName(void)

QStringRef publicId(void)

QStringRef systemId(void)

QStringRef value(void)

QXmlStreamEntityResolver クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamentityresolver.html

仮引数 : void

QXmlStreamNamespaceDeclaration クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamnamespacedeclaration.html

仮引数 : void

QStringRef namespaceUri(void)

QStringRef prefix(void)

QXmlStreamNotationDeclaration クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamnotationdeclaration.html

仮引数 : void

QStringRef name(void)

QStringRef publicId(void)

QStringRef systemId(void)

QXmlStreamReader クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamreader.html

仮引数 : void

void addData(QByteArray)

void addData_2(QString)

void addData_3(const char * data)

void addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration)

void addExtraNamespaceDeclarations(QXmlStreamNamespaceDeclarations)

bool atEnd(void)

QXmlStreamAttributes attributes(void)

qint64 characterOffset(void)

void clear(void)

qint64 columnNumber(void)

QIODevice *device(void)

QStringRef documentEncoding(void)

QStringRef documentVersion(void)

QStringRef dtdName(void)

QStringRef dtdPublicId(void)

QStringRef dtdSystemId(void)

QXmlStreamEntityDeclarations entityDeclarations(void)

QXmlStreamEntityResolver *entityResolver(void)

Error error(void)

QString errorString(void)

bool hasError(void)

bool isCDATA(void)

bool isCharacters(void)

bool isComment(void)

bool isDTD(void)

bool isEndDocument(void)

bool isEndElement(void)

bool isEntityReference(void)

bool isProcessingInstruction(void)

bool isStandaloneDocument(void)

bool isStartDocument(void)

bool isStartElement(void)

bool isWhitespace(void)

qint64 lineNumber(void)

QStringRef name(void)

QXmlStreamNamespaceDeclarations namespaceDeclarations(void)

bool namespaceProcessing(void)

QStringRef namespaceUri(void)

QXmlStreamNotationDeclarations notationDeclarations(void)

QStringRef prefix(void)

QStringRef processingInstructionData(void)

QStringRef processingInstructionTarget(void)

QStringRef qualifiedName(void)

void raiseError(QString)

QString readElementText(QXmlStreamReader::ReadElementTextBehaviour)

TokenType readNext(void)

bool readNextStartElement(void)

void setDevice(QIODevice *device)

void setEntityResolver(QXmlStreamEntityResolver *resolver)

void setNamespaceProcessing(bool)

void skipCurrentElement(void)

QStringRef text(void)

QString tokenString(void)

TokenType tokenType(void)

QXmlStreamWriter クラス

C++ リファレンス : http://doc.qt.io/qt-5/qxmlstreamwriter.html

仮引数 : void

bool autoFormatting(void)

int autoFormattingIndent(void)

QTextCodec *codec(void)

QIODevice *device(void)

bool hasError(void)

void setAutoFormatting(bool enable)

void setAutoFormattingIndent(int spacesOrTabs)

void setCodec(QTextCodec *codec)

void setCodec_2(const char *codecName)

void setDevice(QIODevice *device)

void writeAttribute(QString, QString,QString)

void writeAttribute_2(QString, QString)

void writeAttribute_3(QXmlStreamAttribute)

void writeAttributes(QXmlStreamAttributes)

void writeCDATA(QString text)

void writeCharacters(QString text)

void writeComment(QString text)

void writeCurrentToken(QXmlStreamReader reader)

void writeDTD(QString dtd)

void writeDefaultNamespace(QString namespaceUri)

void writeEmptyElement(QString namespaceUri, QString name)

void writeEmptyElement_2(QString qualifiedName)

void writeEndDocument(void)

void writeEndElement(void)

void writeEntityReference(QString name)

void writeNamespace(QString namespaceUri, QString prefix)

void writeProcessingInstruction(QString target, QString data)

void writeStartDocument(QString version)

void writeStartDocument_2(QString version, bool standalone)

void writeStartDocument_3(void)

void writeStartElement(QString namespaceUri, QString name)

void writeStartElement_2(QString qualifiedName)

void writeTextElement(QString namespaceUri, QString name, QString text)

void writeTextElement_2(QString qualifiedName, QString text)

Qt3DCamera クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dcamera.html

仮引数 : Qt3DCore::QNode *

親クラス : QEntity

float aspectRatio(void)

float bottom(void)

float exposure(void)

float farPlane(void)

float fieldOfView(void)

float left(void)

QCameraLens *lens(void)

float nearPlane(void)

void pan(float angle)

void pan_2(float angle, QVector3D axis)

void panAboutViewCenter(float angle)

void panAboutViewCenter_2(float angle, QVector3D axis)

QQuaternion panRotation(float angle)

QVector3D position(void)

QMatrix4x4 projectionMatrix(void)

Qt3DRender::QCameraLens::ProjectionType projectionType(void)

float right(void)

void roll(float angle)

void rollAboutViewCenter(float angle)

QQuaternion rollRotation(float angle)

void rotate(QQuaternion q)

void rotateAboutViewCenter(QQuaternion q)

QQuaternion rotation(float angle, QVector3D axis)

void tilt(float angle)

void tiltAboutViewCenter(float angle)

QQuaternion tiltRotation(float angle)

float top(void)

Qt3DCore::QTransform * transform(void)

void translate(QVector3D vLocal, Qt3DRender::QCamera::CameraTranslationOption option)

void translateWorld(QVector3D vWorld, Qt3DRender::QCamera::CameraTranslationOption option)

QVector3D upVector(void)

QVector3D viewCenter(void)

QVector3D viewVector(void)

void setAspectRatio(float aspectRatio)

void setBottom(float bottom)

void setExposure(float exposure)

void setFarPlane(float farPlane)

void setFieldOfView(float fieldOfView)

void setLeft(float left)

void setNearPlane(float nearPlane)

void setPosition(QVector3D position)

void setProjectionMatrix(QMatrix4x4 projectionMatrix)

void setProjectionType(Qt3DRender::QCameraLens::ProjectionType type)

void setRight(float right)

void setTop(float top)

void setUpVector(QVector3D upVector)

void setViewCenter(QVector3D viewCenter)

void viewAll(void)

void viewEntity(Qt3DCore::QEntity *entity)

void viewSphere(QVector3D center, float radius)

Qt3DWindow クラス

C++ リファレンス : http://doc.qt.io/qt-5/qt3dextras-qt3dwindow.html

仮引数 : void

親クラス : QWindow

Qt3DRender::QFrameGraphNode * activeFrameGraph(void)

QForwardRenderer * defaultFrameGraph(void)

void registerAspect(Qt3DCore::QAbstractAspect *aspect)

void registerAspect_2(QString name)

Qt3DRender::QRenderSettings * renderSettings(void)

void setActiveFrameGraph(Qt3DRender::QFrameGraphNode *activeFrameGraph)

void setRootEntity(Qt3DCore::QEntity *root)

Qt3DCamera *camera(void)

RingCodeHighlighter クラス

仮引数 : QTextDocument *parent

void setColors(QColor c1,QColor c2,QColor c3,QColor c4,QColor c5)

void setKeywordsBold(int nStatus)

低水準関数

低水準関数の用法です。

* callgarbagecollector()| callgc()
* variablepointer()     | varptr()
* space()
* nullpointer()         | nullptr()
* object2pointer()      | obj2ptr()
* pointer2object()      | ptr2obj()
* ispointer()           | isptr()
* pointercompare()      | ptrcmp()
* setpointer()          | setptr()
* getpointer()          | getptr()
* pointer2string()      | ptr2str()
* memorycopy()          | memcpy()
* ringvm_cfunctionslist()
* ringvm_functionslist()
* ringvm_classeslist()
* ringvm_packageslist()
* ringvm_memorylist()
* ringvm_calllist()
* ringvm_fileslist()
* ringvm_settrace()
* ringvm_tracedata()
* ringvm_traceevent()
* ringvm_tracefunc()
* ringvm_scopescount()
* ringvm_evalinscope()
* ringvm_passerror()
* ringvm_hideerrorMsg()
* ringvm_callfunc()
* ringvm_see()
* ringvm_give()
* ringvm_info()

callgc() 関数

文法:

callgc()                        # 略式名
callgarbagecollector()          # 正式名

この関数は、関数実行中に代入操作では解放されない一時作業用変数を用いるループで強制的にガベージコレクター呼び出すために使用します。

この関数が必要になることは非常に稀なことですが、ゲームエンジンでイベントループなどを作成して、関数を呼び出して即席でリストの作成を開始するときに便利です。

用例

While True

        # イベントの処理
        # 一時作業領域による関数の呼び出し。 myfunc(["temp list"]) などのリストです。

        # ガベージコレクターの呼び出し
        callgc()
End

ちなみに

Ring のガベージコレクターは関数の実行終了後または、代入ステートメントを使用したときに自動的に動作します。

varptr() 関数

varptr() 関数は C / C++ 関数へポインタを渡します。

文法:

varptr(cVariableName, cPointerType) ---> 低水準オブジェクト (C ポインタ)
variablepointer(cVariableName,cPointerType) ---> 低水準オブジェクト (C ポインタ)

用例:

r = 10
z = 20
see r + nl
see varptr("r","int")
see varptr("z","int")

実行結果:

10
00E3C740
int
2
00E3BEC0
int
2

注釈

低水準オブジェクトのリストには三つの項目 (ポインタ、型、ステータス) を有しています。

space() 関数

space() 関数は指定されたバイト数のメモリ領域を確保します。

文法:

Space(nBytesCount) ---> 文字列

用例:

mystring = space(200)
See "String Size : " + len(mystring) + nl
See "String : " + mystring + nl
See "String Pointer : "
See varptr("mystring",:char)

実行結果:

String Size : 200
String :                                                                                                                String Pointer : 00FF8FE8
char
2

注釈

C 関数へバッファを渡すは space() と VarPtr() 関数が必要です。

ちなみに

space() 関数で確保したメモリを解放するには、代入演算子を使います。

mystring = space(1000)  # メモリの確保 (1000 バイト)
mystring = NULL         # mystring で確保されたメモリの解放

注釈

ローカル変数は関数の実行終了後に自動解放されますのでメモリの手動解放は不要です。

nullpointer() 関数

文法:

nullptr()                       # 略式名
nullpointer()           # 正式名

仮引数でポインタを扱うことを想定しており、オプション扱いの仮引数に NULL ポインタを受け入れる場合は C 関数へ NULL ポインタを必ず渡してください。

用例:

この用例は LibSDL ライブラリから RingSDL にある SDL_BlitSurface() 関数を使用しています。この関数は第二仮引数、および最後の仮引数で SDL_Rect ポインタを受け入れます。また、関数は NULL ポインタを受け入れるために、 NULLPointer() 関数で NULL ポインタを渡せます。

SDL_BlitSurface(text, nullpointer(), surface, nullpointer())

注釈

前述のコードは単体では動作しません。最初に RingSDL の用法を学ぶ必要があります。

ちなみに

NULLPointer() 関数の代わりに NULL を仮引数として渡せます。

SDL_BlitSurface(text, NULL, surface, NULL)

object2pointer() 関数

この関数は Ring リスト用の C ポインタとオブジェクトを取得します。

文法:

obj2ptr(List|Object) --> 低水準オブジェクト (C ポインタ)             # 略式名
object2pointer(List|Object) --> 低水準オブジェクト (C ポインタ)      # 正式名

注釈

メモリ上に存在する合法なポインタか必ず確認してください (解放したメモリのポインタは指さないでください)

pointer2object() 関数

この関数は低水準オブジェクト (C ポインタ) から Ring のリスト、および / またはオブジェクトを取得します。

文法:

ptr2obj(Low Level Object) ---> リスト|オブジェクト                       # 略式名
pointer2object(Low Level Object) ---> リスト|オブジェクト        # 正式名

注釈

メモリ上に存在する合法なポインタか必ず確認してください (解放したメモリのポインタは指さないでください)

用例:

# リストの作成
mylist = 1:5

# リストのポインタを作成
x = object2pointer(mylist)
see x

see nl

# リストへ項目を追加
mylist + "welcome"

# リストの項目を表示
y = pointer2object(x)
see y

実行結果:

0069A5D8
OBJECTPOINTER
0

1
2
3
4
5
welcome

注釈

Ring の代入演算子は値によりリストとオブジェクトをコピーします。参照によりコピーするには object2pointer() および pointer2object() 関数を使用します。

ちなみに

object2pointer() および pointer2object() は stdlib で使用されています。 Tree クラスの実装では子ノード (別オブジェクト) は親ノード (オブジェクト) を参照して作成します。

Object2Pointer() および Pointer2Object() 関数は低水準関数であるため、

メモリの問題を防止するため使用時は十分な注意を払ってください。

ローカル変数のポインタを作成した場合、

このローカル変数はメソッドや関数の実行終了後にメモリから自動解放されます。

つまり、 Object2Pointer() 関数でポインタを作成してしまうとダングリングポインタとなってしまいます。

すなわち、ポインタが解放したメモリのメモリ番地を指してしまいます。

このような誤った使いかたは不正なポインタの原因となりクラッシュやメモリ破壊が起きてしまいます。

ポインタを使うときは (Using Object2Pointer() または Pointer2Object 関数の使用)、絶対に解放したメモリをポインタで指さないでください。

簡潔に言うなら、メモリはそのままにしてください (まだ必要とされるものは絶対に削除しない)。

すなわち、ローカル変数を使用してから削除するのではなく、クラス属性やグローバル変数をお使いください。

ispointer() 関数

仮引数がポインタ (C オブジェクト) か検査します。

文法:

IsPtr(vPara) ---> True|False            # 略式名
IsPointer(vPara) ---> True|False        # 正式名

用例:

fp = fopen(filename(),"r")

? type(fp)

? ispointer(fp)

実行結果:

file
1

ptrcmp() 関数

ptrcmp() 関数はポインタ (C オブジェクト) 同士を比較します。

文法:

ptrcmp(oObject1,oObject2) ---> oObject1 と oObject2 が等しいならば値は 1
                               oObject1 と oObject2 が等しくないならば値は 0
pointercompare(oObject1,oObject2) ---> oObject1 と oObject2 が等しいならば値は 1
                                       oObject1 と oObject2 が等しくないならば値は 0

用例:

fp = fopen("ptrcmp.ring","r")
fp2 = fp
fp3 = fopen("ptrcmp.ring","r")

see ptrcmp(fp,fp2) + nl
see ptrcmp(fp,fp3) + nl

fclose(fp)
fclose(fp3)

実行結果:

1
0

setpointer() 関数

ポインタのアドレスを別のポインタのアドレスへ設定します。

文法:

setptr(pointer,nNewAddress)                     # 略式名
setpointer(pointer,nNewAddress)         # 正式名

注釈

setPointer() と getPointer() 関数を使うことでメモリのアドレスを変更できます。

getpointer() 関数

ポインタのアドレスを取得します。

文法:

getptr(pointer) ---> nAddress           # 略式名
getpointer(pointer) ---> nAddress       # 正式名

用例:

? "Sample about using setPointer() and getPointer() functions"
? copy("=",50)
pointer = NULLPOINTER()
? pointer
? "Type: " + type(pointer)
? "Address: " + Upper(hex(getpointer(pointer)))
? copy("=",50)
name = "ring"
pointer = varptr(:name,:char)
? pointer
? "Type: " + type(pointer)
? "Address: " + Upper(hex(getpointer(pointer)))
? copy("=",50)
setpointer(pointer, getpointer(pointer) + 1 )
? "After Update"
? "Address: " + Upper(hex(getpointer(pointer)))
? copy("=",50)

実行結果:

==================================================
00000000
NULLPOINTER
0

Type: NULLPOINTER
Address: 0
==================================================
026E2BA8
char
0

Type: char
Address: 26E2BA8
==================================================
After Update
Address: 26E2BA9
==================================================

pointer2string() 関数

ポインタからバイナリデータの文字列へ変換します。

文字列からポインタへ再変換したいときは VarPtr() 関数をお使いください。

文法:

ptr2str(pointer,nStart,nCount) ---> cString                     # 略式名
pointer2string(pointer,nStart,nCount) ---> cString      # 正式名

注釈

pointer2String() はデータとして別領域にコピーを返します。

注釈

nStart が 0 ならば、一文字目が始点となります。

用例:

name = "ring"
pointer = varptr(:name,:char)
? pointer
? "Type: " + type(pointer)
? "Address: " + Upper(hex(getpointer(pointer)))

? "Get 4 bytes starting from the pointer address"
mystring = Pointer2String(pointer,0,4)
? mystring

? "Get 2 bytes starting from the pointer address + 1"
mystring2 = Pointer2String(pointer,1,2)
? mystring2

実行結果:

01E03380
char
0

Type: char
Address: 1E03380
Get 4 bytes starting from the pointer address
ring
Get 2 bytes starting from the pointer address + 1
in

memcpy() 関数

文法:

memcpy(pDestinationPointer,cSourceString,nSize)         # 略式名
memorycopy(pDestinationPointer,cSourceString,nSize)     # 正式名

用例:

str = space(9)
pointer = varptr(:str,"char")
memcpy(pointer,"one",3)
? str
setPointer(pointer,getPointer(pointer)+3)
memcpy(pointer,"one",3)
? str
setPointer(pointer,getPointer(pointer)+3)
memcpy(pointer,"one",3)
? str

実行結果:

one
oneone
oneoneone

ringvm_cfunctionslist() 関数

C で記述された関数のリストを返す Ring 低水準関数です。

文法:

RingVM_CFunctionsList() ---> リスト

用例:

See RingVM_CFunctionsList()

ringvm_functionslist() 関数

Ring で記述された関数のリストを返す関数です。

各リストメンバは次の項目のリストを有しています。

関数名

プログラムカウンタ (PC) - バイトコードによる関数の位置

ソースコードファイル名

プライベートフラグ (クラスにあるプライベートメソッドならば)

文法:

RingVM_FunctionsList() ---> リスト

用例:

test()

func test
        see ringvm_functionslist()

実行結果:

test
8
B:/ring/tests/scripts/functionslist.ring
0

ringvm_classeslist() 関数

クラスのリストを返す関数です。

各リストメンバは次の項目のリストを有しています。

クラス名

プログラムカウンタ (PC) - バイトコードによるクラスの位置

親クラス名

メソッドのリスト

フラグ (親クラス情報の収集)

パッケージへのポインタ (または未使用のパッケージならば NULL)

文法:

RingVM_ClassesList() ---> リスト

用例:

see ringvm_classeslist()

class class1
        func f1
class class2 from class1
class class3 from class1

実行結果:

class1
9

f1
13
B:/ring/tests/scripts/classeslist.ring
0
0
00000000
class2
16
class1
0
00000000
class3
20
class1
0
00000000

ringvm_packageslist() 関数

パッケージのリストを返す関数です。

各リストメンバは次の項目のリストを有しています。

パッケージ名

クラスのリスト

文法:

RingVM_PackagesList() ---> リスト

用例:

see ringvm_packageslist()

package package1
        class class1

package package2
        class class1

package package3
        class class1

実行結果:

package1
class1
11

0
00FEF838
package2
class1
17

0
00FEF978
package3
class1
23

0
00FEFF68

ringvm_memorylist() 関数

メモリのスコープと変数のリストを返す関数です。

各リストメンバには、次の異なるスコープにある変数のリストを有しています。

スコープリストにある各項目のリストには次の項目があります。

変数の名前

変数の型

変数の値

値がリストの場合はポインタの型 (リスト/項目)

プライベートフラグ (変数がクラスの属性ならば)

文法:

RingVM_MemoryList() ---> リスト

用例:

x = 10
test()
func test
        y = 20
        see ringvm_memorylist()

実行結果:

true
2
1
0
0
false
2
0
0
0
nl
1

0
0
null
1

0
0
ring_gettemp_var
4
00000000
0
0
ccatcherror
1
NULL
0
0
ring_settemp_var
4
00000000
0
0
ring_tempflag_var
2
0
0
0
stdin
3
50512DB8
file
0
0
0
stdout
3
50512DD8
file
0
0
0
stderr
3
50512DF8
file
0
0
0
this
4
00000000
0
0
sysargv
3
B:/ring/bin/ring
B:/ring/tests/scripts/memorylist.ring
0
0
x
2
10
0
0
y
2
20
0
0

ringvm_calllist() 関数

関数呼び出しリストのリストを返す関数です。

各リストメンバは次の項目のリストを有しています。

関数の型

関数の名前

プログラムカウンタ (PC)

スタックポインタ (SP)

一時作業用。メモリのリスト

メソッドまたは関数のフラグ

呼び出し元のプログラムカウンタ (PC)

FuncExec フラグ

ListStart フラグ

多重リストのポインタ

ステートリスト

文法:

RingVM_CallList() ---> リスト

用例:

hello()
func hello
        test()

func test
        mylist = ringvm_calllist()
        for t in mylist see t[2] + nl next

実行結果:

function hello() in file B:/ring/tests/scripts/calllist.ring
called from line 1
function test() in file B:/ring/tests/scripts/calllist.ring
called from line 3
ringvm_calllist

ringvm_fileslist() 関数

Ring ファイルのリストを返す関数です。

文法:

RingVM_FilesList() ---> リスト

用例:

load "stdlib.ring"
see ringvm_fileslist()

実行結果:

C:/ring/tests/scripts/fileslist.ring
C:\ring\bin\stdlib.ring
eval
stdlib.ring
stdlib.rh
stdclasses.ring
stdfunctions.ring
stdbase.ring
stdstring.ring
stdlist.ring
stdstack.ring
stdqueue.ring
stdmath.ring
stddatetime.ring
stdfile.ring
stdsystem.ring
stddebug.ring
stddatatype.ring
stdconversion.ring
stdodbc.ring
stdmysql.ring
stdsecurity.ring
stdinternet.ring
stdhashtable.ring
stdtree.ring

ringvm_settrace() 関数

ringvm_settrace() はトレース関数名を決定する関数です。

トレース関数は Ring 関数でありイベントごとに呼び出されます。

文法:

RingVM_SetTrace(cCode)

ringvm_tracedata() 関数

関数内でイベントをトレースします。

ringvm_tracedata() 関数はイベントデータを取得します。

イベントデータのリストには次の項目があります。

ソースコードの行番号

ソースファイル名

関数またはメソッド名

メソッドまたは関数 (Bool : True=メソッド、 False=関数またはファイル)

文法:

RingVM_TraceData() ---> aDataList

ringvm_traceevent() 関数

関数内でイベントをトレースします。

ringvm_traceevent() 関数はイベントの種類を検出します。

改行

関数の前

関数の後

ランタイムエラー

C 関数の前

C 関数の後

文法:

RingVM_TraceEvent() ---> nTraceEvent

ringvm_tracefunc() 関数

この関数はイベントのトレースで使用する関数名を返します。

文法:

RingVM_TraceEvent() ---> cCode

ringvm_scopescount() 関数

RingVM_ScopesCount() 関数は、アプリケーションで使用されているスコープの本数を検出します。

プログラムの開始時において、スコープは存在します (グローバルスコープのみ)。

関数の呼び出し時に、新しいスコープが作成されます。

関数実行終了後は、関数のスコープは削除されます。

文法:

RingVM_ScopesCount() ---> nScopes

ringvm_evalinscope() 関数

ringvm_evalinscope() は eval() 関数と類似する関数です。

eval() とは異なり、現在のスコープにあるコードを実行します。

RingVM_EvalInScope() は指定されたスコープにあるコードを実行します。

文法:

RingVM_EvalInScope(nScope,cCode)

ringvm_passerror() 関数

ランタイムエラーが発生した時はエラーメッセージを表示後に Ring はプログラムの実行を終了します。

ringvm_passerror() 関数を使うと、前述の動作を回避してプログラムの実行を継続できます。

文法:

RingVM_PassError()

ringvm_hideerrormsg() 関数

RingVM_HideErrorMsg() 関数は、ランタイムエラーメッセージの表示を有効または無効化します。

文法:

RingVM_HideErrorMsg(lStatus)

ringvm_callfunc() 関数

eval() 関数ではなく ringvm_callfunc() 関数を使うと、文字列から関数を呼び出します。

文法:

RingVM_CallFunc(cFuncName)

用例 - トレース関数の用法

この用例では、プログラムのイベントをトレースするためにトレース関数を使用しています！

トレースライブラリは低水準関数よりも実用的です！

load "tracelib.ring"

ringvm_settrace("mytrace()")

see "Hello, world!" + nl
see "Welcome" + nl
see "How are you?" +nl
mytest()
new myclass { mymethod() }

func mytest
        see "Message from mytest" + nl

func mytrace
        see "====== The Trace function is Active ======" + nl +
                "Trace Function Name : " + ringvm_TraceFunc() + nl +
                "Trace Event : "
        switch ringvm_TraceEvent()
                on TRACEEVENT_NEWLINE           see "New Line"
                on TRACEEVENT_NEWFUNC           see "New Function"
                on TRACEEVENT_RETURN            see "Return"
                on TRACEEVENT_ERROR             see "Error"
                on TRACEEVENT_BEFORECFUNC       see "Before C Function"
                on TRACEEVENT_AFTERCFUNC        see "After C Function"
        off
        see nl +
                "Line Number : " + ringvm_tracedata()[TRACEDATA_LINENUMBER] + nl +
                "File Name   : " + ringvm_tracedata()[TRACEDATA_FILENAME] + nl +
                "Function Name : " + ringvm_tracedata()[TRACEDATA_FUNCNAME] + nl +
                "Method or Function : "
                if ringvm_tracedata()[TRACEDATA_METHODORFUNC] =
                                 TRACEDATA_METHODORFUNC_METHOD
                        see "Method"
                else
                        if ringvm_tracedata()[TRACEDATA_FUNCNAME] = NULL
                                see "Command"
                        else
                                see "Function"
                        ok
                ok
                see nl + Copy("=",42) + nl

class myclass
        func mymethod
                see "Message from mymethod" + nl

実行結果:

====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 3
File Name   : test1.ring
Function Name : ringvm_settrace
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 5
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
Hello, world!
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 6
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
Welcome
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 7
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
How are you?
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 8
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Function
Line Number : 8
File Name   : test1.ring
Function Name : mytest
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 12
File Name   : test1.ring
Function Name : mytest
Method or Function : Function
==========================================
Message from mytest
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 14
File Name   : test1.ring
Function Name : mytest
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Return
Line Number : 8
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 9
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 43
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Before C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Function
Line Number : 9
File Name   : test1.ring
Function Name : mymethod
Method or Function : Method
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 44
File Name   : test1.ring
Function Name : mymethod
Method or Function : Method
==========================================
Message from mymethod
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Return
Line Number : 9
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Before C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Before C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 11
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================

用例 - トレースライブラリ

この用例では、トレースライブラリ作成用のトレース関数を使用します。

トレースライブラリにより、すばらしいトレースツールとインタラクティブデバッガを利用できます。

# イベントのトレース
TRACEEVENT_NEWLINE      = 1
TRACEEVENT_NEWFUNC      = 2
TRACEEVENT_RETURN       = 3
TRACEEVENT_ERROR        = 4
TRACEEVENT_BEFORECFUNC  = 5
TRACEEVENT_AFTERCFUNC   = 6

# データのトレース
TRACEDATA_LINENUMBER    = 1
TRACEDATA_FILENAME      = 2
TRACEDATA_FUNCNAME      = 3
TRACEDATA_METHODORFUNC  = 4

# 関数のメソッド
TRACEDATA_METHODORFUNC_METHOD           = TRUE
TRACEDATA_METHODORFUNC_NOTMETHOD        = FALSE

TRACE_BREAKPOINTS = TRUE

TRACE_TEMPLIST = []

func Trace cType
        switch trim(lower(cType))
        on :AllEvents
                ringvm_settrace("TraceLib_AllEvents()")
        on :Functions
                ringvm_settrace("TraceLib_Functions()")
        on :PassError
                ringvm_settrace("TraceLib_PassError()")
        on :Debugger
                ringvm_settrace("TraceLib_Debugger()")
        on :LineByLine
                ringvm_settrace("TraceLib_LineByLine()")
        off

func TraceLib_AllEvents
        if right(ringvm_tracedata()[TRACEDATA_FILENAME],13) = "tracelib.ring"
                return
        ok
        see "====== The Trace function is Active ======" + nl +
                "Trace Function Name : " + ringvm_TraceFunc() + nl +
                "Trace Event : "
        switch ringvm_TraceEvent()
                on TRACEEVENT_NEWLINE           see "New Line"
                on TRACEEVENT_NEWFUNC           see "New Function"
                on TRACEEVENT_RETURN            see "Return"
                on TRACEEVENT_ERROR             see "Error"
                on TRACEEVENT_BEFORECFUNC       see "Before C Function"
                on TRACEEVENT_AFTERCFUNC        see "After C Function"
        off
        see nl +
                "Line Number : " + ringvm_tracedata()[TRACEDATA_LINENUMBER] + nl +
                "File Name   : " + ringvm_tracedata()[TRACEDATA_FILENAME] + nl +
                "Function Name : " + ringvm_tracedata()[TRACEDATA_FUNCNAME] + nl +
                "Method or Function : "
                if ringvm_tracedata()[TRACEDATA_METHODORFUNC] =
                                 TRACEDATA_METHODORFUNC_METHOD
                        see "Method"
                else
                        if ringvm_tracedata()[TRACEDATA_FUNCNAME] = NULL
                                see "Command"
                        else
                                see "Function"
                        ok
                ok
                see nl + Copy("=",42) + nl

func TraceLib_Functions
        if right(ringvm_tracedata()[TRACEDATA_FILENAME],13) = "tracelib.ring"
                return
        ok
        switch ringvm_TraceEvent()
                on TRACEEVENT_NEWFUNC
                        see "Open Func : " +
                        ringvm_TraceData()[TRACEDATA_FUNCNAME] + nl
                on TRACEEVENT_RETURN
                        see "Return to Func : " +
                        ringvm_TraceData()[TRACEDATA_FUNCNAME] + nl
        off

func TraceLib_PassError
        if right(ringvm_tracedata()[TRACEDATA_FILENAME],13) = "tracelib.ring"
                return
        ok
        switch ringvm_TraceEvent()
                on  TRACEEVENT_ERROR
                        see nl
                        see "TraceLib : After Error !" + nl
                        ringvm_passerror()
        off

func TraceLib_Debugger
        if right(ringvm_tracedata()[TRACEDATA_FILENAME],13) = "tracelib.ring"
                return
        ok
        switch ringvm_TraceEvent()
                on  TRACEEVENT_ERROR
                        _BreakPoint()
        off

func TraceLib_LineByLine
        if right(ringvm_tracedata()[TRACEDATA_FILENAME],13) = "tracelib.ring" or
                ringvm_TraceEvent() != TRACEEVENT_NEWLINE
                return
        ok
        aList = ringvm_tracedata()
        see "Before Line : " + aList[TRACEDATA_LINENUMBER] + nl
        _BreakPoint()

func BreakPoint
        if not TRACE_BREAKPOINTS
                return
        ok
        _BreakPoint()

func _BreakPoint
        see nl+nl+Copy("=",60) + nl +
        Copy(" ",20)+"Interactive Debugger" + nl +
        Copy("=",60) + nl +
        "Command (Exit)        : End Program" + nl +
        "Command (Cont)        : Continue Execution" + nl +
        "Command (Locals)      : Print local variables names" + nl +
        "Command (LocalsData)  : Print local variables data" + nl +
        "Command (Globals)     : Print global variables names" + nl +
        "We can execute Ring code" + nl +
        Copy("=",60) + nl
        while true
                        see nl + "code:> "
                        give cCode
                cmd = trim(lower(cCode))
                if cmd = "exit" or cmd = "bye"
                        shutdown()
                ok
                nScope = ringvm_scopescount()-2
                switch cmd
                        on "locals"
                                ringvm_EvalInScope(nScope,"see locals() callgc()")
                                loop
                        on "localsdata"
                                PrintLocalsData(nScope)
                                loop
                        on "globals"
                                ringvm_EvalInScope(nScope,"see globals() callgc()")
                                loop
                        on "cont"
                                ringvm_passerror()
                                exit
                off
                Try
                        ringvm_EvalInScope(nScope,cCode)
                        catch
                                        see cCatchError
                        done
        end

func NoBreakPoints
        TRACE_BREAKPOINTS = FALSE

func PrintLocalsData nScope
        if nScope = 1   # グローバル
                ringvm_Evalinscope(nScope,'TRACE_TEMPLIST = globals()')
        else
                ringvm_Evalinscope(nScope,'TRACE_TEMPLIST = locals() callgc()')
        ok
        see nl
        aTempList = TRACE_TEMPLIST
        TRACE_TEMPLIST = []
        nSpaces = 5
        for TRACE_ITEM in aTempList
                if len(TRACE_ITEM) + 5 > nSpaces
                        nSpaces = len(TRACE_ITEM) + 5
                ok
        next
        for TRACE_ITEM in aTempList
                see "Variable : " +  TRACE_ITEM
                cVarName = TRACE_ITEM
                see copy(" ",nSpaces-len(cVarName)) + " Type : "
                ringvm_Evalinscope(nScope,"see type(" +  TRACE_ITEM +")")
                ringvm_Evalinscope(nScope,"see Copy(' ',fabs(15-len(type(" +
                                          TRACE_ITEM +"))))")
                see " Value : "
                ringvm_Evalinscope(nScope,"see " +  TRACE_ITEM)
                see nl
        next

ringvm_see() 関数

ringvm_see() 関数は See 命令の挙動を変更します。

また ring_see() 関数は元の挙動を使用します。

用例:

see "Hello world" + nl
see 123 + nl
see ["one","two","three"]
see new point {x=10 y=20 z=30}

func ringvm_see t
        ring_see("We want to print: ")
        ring_See(t)

class point x y z

実行結果:

We want to print: Hello world
We want to print: 123
We want to print: one
two
three
We want to print: x: 10.000000
y: 20.000000
z: 30.000000

ringvm_give() 関数

ringvm_give() 関数は Give 命令の挙動を変更します。

また ring_give() 関数は元の挙動を使用します。

用例:

see "Name: " give name
see "Hello " + name

func ringvm_give
        see "Mahmoud" + nl
        return "Mahmoud"

実行結果:

Name: Mahmoud
Hello Mahmoud

ringvm_info() 関数

ringvm_info () は Ring VM 構造体に関する情報をリストとして返す内部関数です。

この関数は Ring チームが VM の状態を調査するための高度な検証に限り使用されています。

文法:

ringvm_info() ---> VM 構造体に関する情報のリスト

チュートリアル: C/C++ による拡張機能の開発方法

Ring プログラムで C コードを用いるための簡単な用例です。

Hello World

サンプル : ring/extensions/tutorial/helloworld

ファイル mylib.c の内容

#include "ring.h"

#include "stdlib.h"

RING_FUNC(ring_myfunction)
{
        printf("Hello, World!");
}

RING_API void ringlib_init(RingState *pRingState)
{
        ring_vm_funcregister("myfunction",ring_myfunction);
}

ソースコードを参照すると、最初の行で Ring API の定義を記した ring.h ファイルをインクルードしています。

新規関数の定義に RING_FUNC マクロを使います。通常の C 関数とは異なる定義であることを識別しやすくするために関数定義の接頭辞にring_を付けるのは良い考えです。

Ring VM で拡張機能が読み込まれるときに呼び出される関数 ringlib_init() があります。

この関数では Ring VM へ新規関数を登録するために ring_vm_funcregister() を使用します。

拡張機能をビルドするには :

buildvc.bat

buildvc.bat ファイルの内容には Visual C/C++ で拡張機能をビルドするためのコマンドが記述されています

cls
call ../../../src/locatevc.bat
cl /c /DEBUG mylib.c -I"..\..\..\include"
link /DEBUG mylib.obj  ..\..\..\lib\ring.lib /DLL /OUT:mylib.dll /SUBSYSTEM:CONSOLE,"5.01"
del mylib.obj

関数のテスト

ring test.ring

ファイル test.ring の内容

? "Loading Library"
loadlib("mylib.dll")

? "Calling a C Function"
myfunction()

実行結果

Loading Library
Calling a C Function
Hello, World!

異動作環境間での機能拡張のビルド

サンプル : ring/extensions/tutorial/helloworld2

この拡張機能は前述のものですが、 Windows, Linux および macOS に対応させます。

このファイルを使用します

buildvc.bat
buildgcc.sh
buildclang.sh

Windows では buildvc.bat を、 Linux では buildgcc.sh および macOS では buildclang.sh でビルドします。

ファイル buildgcc.sh には下記の内容が記述されています

gcc -c -fpic mylib.c -I $PWD/../../../include
gcc -shared -o libmylib.so mylib.o -L $PWD/../../../lib -lring
sudo cp libmylib.so /usr/lib
sudo cp libmylib.so /usr/lib64

ファイル buildclang.sh の内容

clang -c -fpic mylib.c -I $PWD/../../../include
clang -dynamiclib -o libmylib.dylib mylib.o  -L $PWD/../../../lib  -lring
cp libmylib.dylib /usr/local/lib

動作環境別にライブラリの読み込み対象を変更するために mylib.ring から LoadLib() 関数を呼び出します。

mylib.ringのコード内容は

if iswindows()
        LoadLib("mylib.dll")
but ismacosx()
        LoadLib("libmylib.dylib")
else
        LoadLib("libmylib.so")
ok

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!

二数値の合計

サンプル : ring/extensions/tutorial/sumtwonumbers

この拡張機能では二数値を合計する C 関数の作成方法です。

これは Hello World 2 拡張機能の更新版です : ring/extensions/tutorial/helloworld2 フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_sumtwonumbers)
{
        double nNum1,nNum2,nSum;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 2) {
                        RING_API_ERROR(RING_API_MISS2PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! (RING_API_ISNUMBER(1) && RING_API_ISNUMBER(2)) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // 数値の総和
                nNum1 = RING_API_GETNUMBER(1);
                nNum2 = RING_API_GETNUMBER(2);
                nSum  = nNum1 + nNum2 ;
        // 処理結果を返します
                RING_API_RETNUMBER(nSum);
}

関数を新規登録します

ring_vm_funcregister("sumtwonumbers",ring_sumtwonumbers);

前述コードは理解しやすく、エラーの確認が容易になるように記述してあります。

略記もできます

RING_API_RETNUMBER(RING_API_GETNUMBER(1) + RING_API_GETNUMBER(2));

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8

Say Hello

サンプル : ring/extensions/tutorial/sayhello

この拡張機能では文字列として名前を取得してから say hello を表示する C 関数の作成方法です。

これは sumtwonumbers 拡張機能の更新版です : ring/extensions/tutorial/sumtwonumbers フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_sayhello)
{
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 1) {
                        RING_API_ERROR(RING_API_MISS1PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! RING_API_ISSTRING(1) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        printf("Hello %s\n",RING_API_GETSTRING(1));
}

関数を新規登録します

ring_vm_funcregister("sayhello",ring_sayhello);

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud

数値リストの総和

サンプル : ring/extensions/tutorial/sumlist

この拡張機能では数値リストの総和を行う C 関数の作成方法です。

これは sayhello 拡張機能の更新版です : ring/extensions/tutorial/sayhello フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_sumlist)
{
        List *pList;
        int x,nSum;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 1) {
                        RING_API_ERROR(RING_API_MISS1PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! RING_API_ISLIST(1) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // 数値リストの総和
                nSum = 0;
                pList = RING_API_GETLIST(1);
                for(x=1 ; x <= ring_list_getsize(pList) ; x++) {
                        if ( ring_list_isdouble(pList,x) ) {
                                nSum += (int) ring_list_getdouble(pList,x) ;
                        }
                }
        // 処理結果を返します
                RING_API_RETNUMBER(nSum);
}

関数を新規登録します

ring_vm_funcregister("sumlist",ring_sumlist);

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55

リスト項目の増分

サンプル : ring/extensions/tutorial/incrementlist

この拡張機能ではリスト項目の増分を行う C 関数の作成方法です。

これは sumlist 拡張機能の更新版です : ring/extensions/tutorial/sumlist フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_inclist)
{
        List *pList;
        int x,nSum;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 2) {
                        RING_API_ERROR(RING_API_MISS2PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! ( RING_API_ISLIST(1) && RING_API_ISNUMBER(2) ) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リスト項目の増分
                nSum = 0;
                pList = RING_API_GETLIST(1);
                for(x=1 ; x <= ring_list_getsize(pList) ; x++) {
                        if ( ring_list_isdouble(pList,x) ) {
                                ring_list_setdouble(pList,x,
                                        ring_list_getdouble(pList,x)+
                                        RING_API_GETNUMBER(2)) ;
                        }
                }
        // 処理結果を返します
                RING_API_RETLIST(pList);
}

関数を新規登録します

ring_vm_funcregister("inclist",ring_inclist);

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

リスト項目の篩い分け

サンプル : ring/extensions/tutorial/filterlist

この拡張機能ではリスト項目を篩い分ける C 関数の作成方法です。

これは incrementlist 拡張機能の更新版です : ring/extensions/tutorial/incrementlist フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_filterlist)
{
        List *pList;
        int x;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 2) {
                        RING_API_ERROR(RING_API_MISS2PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! ( RING_API_ISLIST(1) && RING_API_ISNUMBER(2) ) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リスト項目の篩い分け
                pList = RING_API_GETLIST(1);
                for(x = ring_list_getsize(pList) ; x >= 1 ; x--)
                        if ( ring_list_isdouble(pList,x) )
                                if ( ! (ring_list_getdouble(pList,x) >
                                                 RING_API_GETNUMBER(2)) )
                                        ring_list_deleteitem(pList,x) ;
        // 処理結果を返します
                RING_API_RETLIST(pList);
}

関数を新規登録します

ring_vm_funcregister("filterlist",ring_filterlist);

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

? "Filter List Items (Items > 15)"
? filterlist(aList,15)

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

Filter List Items (Items > 15)
16
17
18
19
20

リスト項目の複製

サンプル : ring/extensions/tutorial/replicatelist

この拡張機能ではリストへ複数の項目を追加する C 関数の作成方法です。

これは filterlist 拡張機能の更新版です : ring/extensions/tutorial/filterlist フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_replicatelist)
{
        List *pList;
        int x,y,nTimes,nSize;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 2) {
                        RING_API_ERROR(RING_API_MISS2PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! ( RING_API_ISLIST(1) && RING_API_ISNUMBER(2) ) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リスト項目の複製
                pList = RING_API_GETLIST(1);
                nSize = ring_list_getsize(pList);
                nTimes = (int) RING_API_GETNUMBER(2);
                if (nTimes < 1) {
                        RING_API_ERROR("Error: The second parameter must be >= 1 \n");
                        return;
                }
                for(x = 1 ; x <= nTimes ; x++)
                        for(y = 1 ; y <= nSize ; y++)
                                if ( ring_list_isdouble(pList,y) )
                                        ring_list_adddouble(pList,
                                                ring_list_getdouble(pList,y));
        // 処理結果を返します
                RING_API_RETLIST(pList);
}

関数を新規登録します

ring_vm_funcregister("replicatelist",ring_replicatelist);

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

? "Filter List Items (Items > 15)"
? filterlist(aList,15)

aList = 1:3
? "Replicate list (1:3) three times then print the items (We expect 12 items)"
? replicatelist(aList,3)

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

Filter List Items (Items > 15)
16
17
18
19
20

Replicate list (1:3) three times then print the items (We expect 12 items)
1
2
3
1
2
3
1
2
3
1
2
3

リストの生成

サンプル : ring/extensions/tutorial/generatelist

この拡張機能ではリストの新規作成とリストへ項目を追加する C 関数の作成方法です。

これは replicatelist 拡張機能の更新版です : ring/extensions/tutorial/replicatelist フォルダ

ファイル mylib.c を変更します

RING_FUNC(ring_generatelist)
{
        List *pList;
        int x,nSize;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 1) {
                        RING_API_ERROR(RING_API_MISS1PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! RING_API_ISNUMBER(1) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リストを作成します
                pList = RING_API_NEWLIST;
        // リスト項目の生成
                nSize = (int) RING_API_GETNUMBER(1);
                if (nSize < 1) {
                        RING_API_ERROR("Error: The list size must be >= 1 \n");
                        return;
                }
                for(x = 1 ; x <= nSize ; x++)
                        ring_list_adddouble(pList,(double) x);
        // 処理結果を返します
                RING_API_RETLIST(pList);
}

関数を新規登録します

ring_vm_funcregister("generatelist",ring_generatelist);

ファイル test.ring の内容

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

? "Filter List Items (Items > 15)"
? filterlist(aList,15)

aList = 1:3
? "Replicate list (1:3) three times then print the items (We expect 12 items)"
? replicatelist(aList,3)

? "Create list contains 5 items using C code"
aList = GenerateList(5)
? aList

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

Filter List Items (Items > 15)
16
17
18
19
20

Replicate list (1:3) three times then print the items (We expect 12 items)
1
2
3
1
2
3
1
2
3
1
2
3

Create list contains 5 items using C code
1
2
3
4
5

リストの表示

サンプル : ring/extensions/tutorial/displaylist

この拡張機能では多重リストも対象としたリストの全項目を表示する C 関数の作成方法です。

ファイル mylib.c を変更します

void mylib_displaylist(List *pList);

RING_FUNC(ring_displaylist)
{
        List *pList;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 1) {
                        RING_API_ERROR(RING_API_MISS1PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! RING_API_ISLIST(1) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リストの取得
                pList = RING_API_GETLIST(1);
        // 多重リストも対象としたリスト項目の表示
                mylib_displaylist(pList);
}

void mylib_displaylist(List *pList) {
        int x;
        for (x=1; x <= ring_list_getsize(pList); x++) {
                if ( ring_list_isdouble(pList,x) ) {
                        printf("Number : %f \n", ring_list_getdouble(pList,x) ) ;
                } else if ( ring_list_isstring(pList,x) ) {
                        printf("String : %s \n", ring_list_getstring(pList,x) ) ;
                } else if ( ring_list_islist(pList,x) ) {
                        printf("Sub List..\n");
                        mylib_displaylist( ring_list_getlist(pList,x) );
                }
        }
}

関数を新規登録します

ring_vm_funcregister("displaylist",ring_displaylist);

ファイル test.ring の内容

load "stdlib.ring"

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

? "Filter List Items (Items > 15)"
? filterlist(aList,15)

aList = 1:3
? "Replicate list (1:3) three times then print the items (We expect 12 items)"
? replicatelist(aList,3)

? "Create list contains 5 items using C code"
aList = GenerateList(5)
? aList

? "Create List (3,2)"
aList = newList(3,2)
aList[1][1] = "R 1 C 1"
aList[1][2] = "R 1 C 2"
aList[2][1] = "R 2 C 1"
aList[2][2] = "R 2 C 2"
aList[3][1] = "R 3 C 1"
aList[3][2] = "R 3 C 2"
? "Print the List using Ring"
? aList
? "Print the List by calling C Code"
displayList(aList)

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

Filter List Items (Items > 15)
16
17
18
19
20

Replicate list (1:3) three times then print the items (We expect 12 items)
1
2
3
1
2
3
1
2
3
1
2
3

Create list contains 5 items using C code
1
2
3
4
5

Create List (3,2)
Print the List using Ring
R 1 C 1
R 1 C 2
R 2 C 1
R 2 C 2
R 3 C 1
R 3 C 2

Print the List by calling C Code
Sub List..
String : R 1 C 1
String : R 1 C 2
Sub List..
String : R 2 C 1
String : R 2 C 2
Sub List..
String : R 3 C 1
String : R 3 C 2

テーブルの更新

サンプル : ring/extensions/tutorial/updatetable

この拡張機能では行列から構成されるテーブルの更新を行う C 関数の作成方法です。

ファイル mylib.c を変更します

RING_FUNC(ring_updatetable)
{
        List *pList, *pRow;
        int nRow,nCol;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 2) {
                        RING_API_ERROR(RING_API_MISS2PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! ( RING_API_ISLIST(1) && RING_API_ISNUMBER(2) ) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リストの取得 (テーブル表記)
                pList = RING_API_GETLIST(1);
        // テーブルの行列更新
        for (nRow = 1 ; nRow <= ring_list_getsize(pList) ; nRow++ ) {
                if ( ring_list_islist(pList,nRow) ) {
                pRow = ring_list_getlist(pList,nRow);
                for (nCol = 1 ; nCol <= ring_list_getsize(pRow) ; nCol++ ) {
                        if ( ring_list_isdouble(pRow,nCol) ) {
                                ring_list_setdouble(pRow,nCol,RING_API_GETNUMBER(2));
                        } else {
                                RING_API_ERROR("Error : We expect numbers!\n");
                                return ;
                        }
                }
                } else {
                        RING_API_ERROR("Error : The parameter is not a table! \n");
                        return ;
                }
        }
}

関数を新規登録します

ring_vm_funcregister("updatetable",ring_updatetable);

ファイル test.ring の内容

load "stdlib.ring"

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

? "Filter List Items (Items > 15)"
? filterlist(aList,15)

aList = 1:3
? "Replicate list (1:3) three times then print the items (We expect 12 items)"
? replicatelist(aList,3)

? "Create list contains 5 items using C code"
aList = GenerateList(5)
? aList

? "Create List (3,2)"
aList = newList(3,2)
aList[1][1] = "R 1 C 1"
aList[1][2] = "R 1 C 2"
aList[2][1] = "R 2 C 1"
aList[2][2] = "R 2 C 2"
aList[3][1] = "R 3 C 1"
aList[3][2] = "R 3 C 2"
? "Print the List using Ring"
? aList
? "Print the List by calling C Code"
displayList(aList)
? ""

? "Create List (2,2)"
aList = newList(2,2)
? "Update the list using C code - set all cells to 10"
UpdateTable(aList,10)
? "aList[1][1] : " + aList[1][1]
? "aList[1][2] : " + aList[1][2]
? "aList[2][1] : " + aList[2][1]
? "aList[2][2] : " + aList[2][2]

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

Filter List Items (Items > 15)
16
17
18
19
20

Replicate list (1:3) three times then print the items (We expect 12 items)
1
2
3
1
2
3
1
2
3
1
2
3

Create list contains 5 items using C code
1
2
3
4
5

Create List (3,2)
Print the List using Ring
R 1 C 1
R 1 C 2
R 2 C 1
R 2 C 2
R 3 C 1
R 3 C 2

Print the List by calling C Code
Sub List..
String : R 1 C 1
String : R 1 C 2
Sub List..
String : R 2 C 1
String : R 2 C 2
Sub List..
String : R 3 C 1
String : R 3 C 2

Create List (2,2)
Update the list using C code - set all cells to 10
aList[1][1] : 10
aList[1][2] : 10
aList[2][1] : 10
aList[2][2] : 10

テーブルの作成

サンプル : ring/extensions/tutorial/createtable

この拡張機能では行列から構成されるテーブルの生成を行う C 関数の作成方法です。

ファイル mylib.c を変更します

RING_FUNC(ring_createtable)
{
        List *pList, *pRow;
        int x,y,nRows,nCols;
        // 引数の個数を検査します
                if (RING_API_PARACOUNT != 2) {
                        RING_API_ERROR(RING_API_MISS2PARA);
                        return;
                }
        // 引数の型を検査します
                if ( ! ( RING_API_ISNUMBER(1) && RING_API_ISNUMBER(2) ) ) {
                        RING_API_ERROR(RING_API_BADPARATYPE);
                        return;
                }
        // リストを作成します
                pList = RING_API_NEWLIST;
        // テーブルの項目を作成します
                nRows = (int) RING_API_GETNUMBER(1);
                nCols = (int) RING_API_GETNUMBER(2);
                if ( (nRows < 1) || (nCols < 1) ) {
                RING_API_ERROR("Error: The table rows and columns must be >= 1 \n");
                return;
                }
                for(x = 1 ; x <= nRows ; x++) {
                        pRow = ring_list_newlist(pList);
                        for(y = 1 ; y <= nCols ; y++)
                                ring_list_adddouble(pRow,0.0);
                }
        // 処理結果を返します
                RING_API_RETLIST(pList);
}

関数を新規登録します

ring_vm_funcregister("createtable",ring_createtable);

ファイル test.ring の内容

load "stdlib.ring"

? "Loading Library"
load "mylib.ring"

? "Calling a C Function"
myfunction()

? "Sum Two Numbers (3,5)"
? SumTwoNumbers(3,5)

? "Say Hello"
SayHello("Mahmoud")

? "Sum List contains numbers from 1 to 10"
aList = 1:10
? SumList(aList)

? "Increment List Items"
? inclist(aList,10)

? "Filter List Items (Items > 15)"
? filterlist(aList,15)

aList = 1:3
? "Replicate list (1:3) three times then print the items (We expect 12 items)"
? replicatelist(aList,3)

? "Create list contains 5 items using C code"
aList = GenerateList(5)
? aList

? "Create List (3,2)"
aList = newList(3,2)
aList[1][1] = "R 1 C 1"
aList[1][2] = "R 1 C 2"
aList[2][1] = "R 2 C 1"
aList[2][2] = "R 2 C 2"
aList[3][1] = "R 3 C 1"
aList[3][2] = "R 3 C 2"
? "Print the List using Ring"
? aList
? "Print the List by calling C Code"
displayList(aList)
? ""

? "Create List (2,2)"
aList = newList(2,2)
? "Update the list using C code - set all cells to 10"
UpdateTable(aList,10)
? "aList[1][1] : " + aList[1][1]
? "aList[1][2] : " + aList[1][2]
? "aList[2][1] : " + aList[2][1]
? "aList[2][2] : " + aList[2][2]
? ""

? "Create List (3,3) using C code"
aList = CreateTable(3,3)
? "aList[1][1] : " + aList[1][1]
? "aList[1][2] : " + aList[1][2]
? "aList[1][3] : " + aList[1][3]
? "aList[2][1] : " + aList[2][1]
? "aList[2][2] : " + aList[2][2]
? "aList[2][3] : " + aList[2][3]
? "aList[3][1] : " + aList[3][1]
? "aList[3][2] : " + aList[3][2]
? "aList[3][3] : " + aList[3][3]

関数のテスト

ring test.ring

実行結果

Loading Library
Calling a C Function
Hello, World!
Sum Two Numbers (3,5)
8
Say Hello
Hello Mahmoud
Sum List contains numbers from 1 to 10
55
Increment List Items
11
12
13
14
15
16
17
18
19
20

Filter List Items (Items > 15)
16
17
18
19
20

Replicate list (1:3) three times then print the items (We expect 12 items)
1
2
3
1
2
3
1
2
3
1
2
3

Create list contains 5 items using C code
1
2
3
4
5

Create List (3,2)
Print the List using Ring
R 1 C 1
R 1 C 2
R 2 C 1
R 2 C 2
R 3 C 1
R 3 C 2

Print the List by calling C Code
Sub List..
String : R 1 C 1
String : R 1 C 2
Sub List..
String : R 2 C 1
String : R 2 C 2
Sub List..
String : R 3 C 1
String : R 3 C 2

Create List (2,2)
Update the list using C code - set all cells to 10
aList[1][1] : 10
aList[1][2] : 10
aList[2][1] : 10
aList[2][2] : 10

Create List (3,3) using C code
aList[1][1] : 0
aList[1][2] : 0
aList[1][3] : 0
aList[2][1] : 0
aList[2][2] : 0
aList[2][3] : 0
aList[3][1] : 0
aList[3][2] : 0
aList[3][3] : 0

C/C++ による拡張機能の開発方法

注釈

現在、本章の説明だけでは拡張機能の開発は困難です。 Ring のソースコード (include, src, visualsrc, stdlib フォルダ)、および拡張機能のソースコード (android, extensions, libdepwin フォルダ) のコードリーディングを強く推奨します。

プログラミング言語 C / C++ で記述した関数を新たに追加することにより Ring 仮想計算機 (Ring VM) の機能を拡張できます。 Ring VM には C により記述された様々な関数が付属しており Ring の関数として呼び出せます。

新しい関数を記述してから Ring VM のリビルドすることで Ring 言語の機能を拡張できます。また、共有ライブラリ (.dll / .so) ファイルを作成することで Ring VM をリビルドせずに機能の拡張ができます。

Ring のソースコードには Ring VM へ新しいモジュールを追加するための二本のファイルが付属しています。

ring_ext.h

ファイル ring_ext.h にはビルド処理の間にモジュールの包含、または除外を変更できる定数があります。

#ifndef ringext_h
#define ringext_h
/* 定数 */
#define RING_VM_LISTFUNCS       1
#define RING_VM_REFMETA         1
#define RING_VM_MATH            1
#define RING_VM_FILE            1
#define RING_VM_OS              1
#define RING_VM_MYSQL           1
#define RING_VM_ODBC            1
#define RING_VM_OPENSSL         1
#define RING_VM_CURL            1
#define RING_VM_DLL             1
#endif

ring_ext.c

モジュールのスタートアップ関数を呼び出す前に、ファイル ring_ext.c は ring_ext.h で定義されている定数を確認します。

モジュールは Ring VM へモジュール関数を登録する関数があります。

#include "ring.h"

void ring_vm_extension ( RingState *pRingState )
{
        /* リフレクションとメタプログラミング */
        #if RING_VM_REFMETA
                ring_vm_refmeta_loadfunctions(pRingState);
        #endif
        /* リスト関数 */
        #if RING_VM_LISTFUNCS
                ring_vm_listfuncs_loadfunctions(pRingState);
        #endif
        /* 算術 */
        #if RING_VM_MATH
                ring_vm_math_loadfunctions(pRingState);
        #endif
        /* ファイル */
        #if RING_VM_FILE
                ring_vm_file_loadfunctions(pRingState);
        #endif
        /* OS */
        #if RING_VM_OS
                ring_vm_os_loadfunctions(pRingState);
        #endif
        /* MySQL */
        #if RING_VM_MYSQL
                ring_vm_mysql_loadfunctions(pRingState);
        #endif
        /* ODBC */
        #if RING_VM_ODBC
                ring_vm_odbc_loadfunctions(pRingState);
        #endif
        /* OPENSSL */
        #if RING_VM_OPENSSL
                ring_vm_openssl_loadfunctions(pRingState);
        #endif
        /* CURL */
        #if RING_VM_CURL
                ring_vm_curl_loadfunctions(pRingState);
        #endif
        /* DLL */
        #if RING_VM_DLL
                ring_vm_dll_loadfunctions(pRingState);
        #endif
}

モジュールの組織化

モジュールごとに Ring ヘッダファイル (ring.h) をインクルードすることから始まります。このファイルには Ring VM の拡張機能で用いる Ring API があります。

モジュールには Ring VM へモジュール関数を登録するための関数が付属しています。 ring_vm_funcregister() 関数で登録を完了します。

ring_vm_funcregister() 関数は二つの仮関数を扱います。一番目の仮引数は Ring プログラムが関数を呼び出すために使用される関数名です。二番目の仮引数は C プログラム側の関数ポインタです。

この用例では、モジュール関数の登録用コードが ring_vmmath.c モジュールにあります。

#include "ring.h"

void ring_vm_math_loadfunctions ( RingState *pRingState )
{
        ring_vm_funcregister("sin",ring_vm_math_sin);
        ring_vm_funcregister("cos",ring_vm_math_cos);
        ring_vm_funcregister("tan",ring_vm_math_tan);
        ring_vm_funcregister("asin",ring_vm_math_asin);
        ring_vm_funcregister("acos",ring_vm_math_acos);
        ring_vm_funcregister("atan",ring_vm_math_atan);
        ring_vm_funcregister("atan2",ring_vm_math_atan2);
        ring_vm_funcregister("sinh",ring_vm_math_sinh);
        ring_vm_funcregister("cosh",ring_vm_math_cosh);
        ring_vm_funcregister("tanh",ring_vm_math_tanh);
        ring_vm_funcregister("exp",ring_vm_math_exp);
        ring_vm_funcregister("log",ring_vm_math_log);
        ring_vm_funcregister("log10",ring_vm_math_log10);
        ring_vm_funcregister("ceil",ring_vm_math_ceil);
        ring_vm_funcregister("floor",ring_vm_math_floor);
        ring_vm_funcregister("fabs",ring_vm_math_fabs);
        ring_vm_funcregister("pow",ring_vm_math_pow);
        ring_vm_funcregister("sqrt",ring_vm_math_sqrt);
        ring_vm_funcregister("unsigned",ring_vm_math_unsigned);
        ring_vm_funcregister("decimals",ring_vm_math_decimals);
        ring_vm_funcregister("murmur3hash",ring_vm_math_murmur3hash);
}

ちなみに

ring_vm_math_loadfunctions() 関数は ring_vm_extension() 関数により、呼び出されることを覚えておいてください (ring_ext.c ファイルで)。

関数の構造

このような手順がモジュール関数ごとにあります。

1 - 仮引数の個数を検査

2 - 仮引数の型を検査

3 - 仮引数の値を取得

4 - コードの実行 / 関数の呼び出し

5 - 返値を返す

この構造は関数と非常に似ています (入力～処理～出力)。ここでは Ring API の 1, 2, 3, および 5 の手順を使用しています。

仮引数の個数を検査するには

RING_API_PARACOUNT マクロで仮引数の個数を検査します。

RING_API_PARACOUNT は == または != 演算子により数値で比較します。

用例:

if ( RING_API_PARACOUNT != 1 ) {
        /* コード */
}

用例:

if ( RING_API_PARACOUNT == 1 ) {
        /* コード */
}

エラーメッセージの表示

RING_API_ERROR() 関数はエラーメッセージを表示します。

この関数はエラー、およびプログラム実行時に表示します。

注釈

この関数の動作は Ring コードで Try/Catch/Done ステートメントにより変更できますので C コードでは、この関数の後に retrun を記述してください。

文法:

RING_API_ERROR(const char *cErrorMsg);

Ring API には定義済みのエラーメッセージがあり、このように使うことができます。

#define RING_API_MISS1PARA "Bad parameters count, the function expect one parameter"
#define RING_API_MISS2PARA "Bad parameters count, the function expect two parameters"
#define RING_API_MISS3PARA "Bad parameters count, the function expect three parameters"
#define RING_API_MISS4PARA "Bad parameters count, the function expect four parameters"
#define RING_API_BADPARATYPE    "Bad parameter type!"
#define RING_API_BADPARACOUNT   "Bad parameters count!"
#define RING_API_BADPARARANGE   "Bad parameters value, error in range!"
#define RING_API_NOTPOINTER     "Error in parameter, not pointer!"
#define RING_API_NULLPOINTER    "Error in parameter, NULL pointer!"
#define RING_API_EMPTYLIST      "Bad parameter, empty list!"

仮引数の型を検査するには

この関数は仮引数の型を検査します。

int RING_API_ISNUMBER(int nParameterNumber);
int RING_API_ISSTRING(int nParameterNumber);
int RING_API_ISLIST(int nParameterNumber);
int RING_API_ISCPOINTER(int nParameterNumber);
int RING_API_ISPOINTER(int nParameterNumber);  // リストまたは C ポインタ

これらの関数の実行結果は 1 (True) または 0 (False) です。

仮引数の値を取得するには

この関数は仮引数の値を取得します。

double RING_API_GETNUMBER(int nParameterNumber);
const char *RING_API_GETSTRING(int nParameterNumber);
int RING_API_GETSTRINGSIZE(int nParameterNumber);
List *RING_API_GETLIST(int nParameterNumber);
void *RING_API_GETCPOINTER(int nParameterNumber, const char *cPoinerType);
int RING_API_GETPOINTERTYPE(int nParameterNumber);

返値

この関数は関数の返値を取得します。

RING_API_RETNUMBER(double nValue);
RING_API_RETSTRING(const char *cString);
RING_API_RETSTRING2(const char *cString,int nStringSize);
RING_API_RETLIST(List *pList);
RING_API_RETCPOINTER(void *pValue,const char *cPointerType);
RING_API_RETMANAGEDCPOINTER(void *pValue,const char *cPointerType,
                                void (* pFreeFunc)(void *,void *))

関数プロトタイプ

Ring VM の拡張機能用の新しい関数を定義するには、このプロトタイプを使用します。

void my_function_name( void *pPointer );

または RING_FUNC() マクロを使えます。

RING_FUNC(my_function_name);

Sin() 関数の実装

このコードは Ring API と C 関数 sin() による Sin() 関数の実装です。

void ring_vm_math_sin ( void *pPointer )
{
        if ( RING_API_PARACOUNT != 1 ) {
                RING_API_ERROR(RING_API_MISS1PARA);
                return ;
        }
        if ( RING_API_ISNUMBER(1) ) {
                RING_API_RETNUMBER(sin(RING_API_GETNUMBER(1)));
        } else {
                RING_API_ERROR(RING_API_BADPARATYPE);
        }
}

Fopen() および Fclose() の実装

このコードは Ring API と C 関数 fopen() による fopen() 関数の実装です。

この関数は二つの仮引数を扱います。第一仮引数はファイル名を文字列で指定します。第二仮引数はモードを文字列で指定します。

ファイル ring_vmfile.h はポインタ型などの定数として使用するものがあります。

#define RING_VM_POINTER_FILE    "file"
#define RING_VM_POINTER_FILEPOS "filepos"

ring_vmfile.c における関数の実装です。

void ring_vm_file_fopen ( void *pPointer )
{
        FILE *fp  ;
        if ( RING_API_PARACOUNT != 2 ) {
                RING_API_ERROR(RING_API_MISS2PARA);
                return ;
        }
        if ( RING_API_ISSTRING(1) && RING_API_ISSTRING(2) ) {
                fp = fopen(RING_API_GETSTRING(1),RING_API_GETSTRING(2));
                RING_API_RETCPOINTER(fp,RING_VM_POINTER_FILE);
        } else {
                RING_API_ERROR(RING_API_BADPARATYPE);
        }
}

このコードは fclose() 関数の実装です。

void ring_vm_file_fclose ( void *pPointer )
{
        FILE *fp  ;
        if ( RING_API_PARACOUNT != 1 ) {
                RING_API_ERROR(RING_API_MISS1PARA);
                return ;
        }
        if ( RING_API_ISCPOINTER(1) ) {
                fp = (FILE *) RING_API_GETCPOINTER(1,RING_VM_POINTER_FILE) ;
                if ( fp != NULL ) {
                        RING_API_RETNUMBER(fclose(fp));
                        RING_API_SETNULLPOINTER(1);
                }
        } else {
                RING_API_ERROR(RING_API_BADPARATYPE);
        }
}

fopen() および fclose() から次の実装について学びました

1 - RING_API_RETCPOINTER() 関数で C ポインタを返す方法

2 - RING_API_ISCPOINTER() 関数による仮引数がポインタであるときの検査方法

3 - RING_API_GETCPOINTER() 関数による C ポインタ値の取得方法

4 - RING_API_SETNULLPOINTER() 関数で C ポインタ変数 (Ring VM では) へ NULL を設定する方法

Ring API - リスト関数

リストの新規作成とリスト項目操作用の Ring API リスト関数です。

List * ring_list_new ( int nSize ) ;
void ring_list_newitem ( List *pList ) ;
Item * ring_list_getitem ( List *pList,int index ) ;
List * ring_list_delete ( List *pList ) ;
void ring_list_deleteitem ( List *pList,int index ) ;
void ring_list_print ( List *pList ) ;
int ring_list_gettype ( List *pList, int index ) ;
void ring_list_setint ( List *pList, int index ,int number ) ;
void ring_list_addint ( List *pList,int x ) ;
void ring_list_setpointer ( List *pList, int index ,void *pValue ) ;
void ring_list_addpointer ( List *pList,void *pValue ) ;
void ring_list_setfuncpointer ( List *pList, int index ,void (*pFunc)(void *) ) ;
void ring_list_addfuncpointer ( List *pList,void (*pFunc)(void *) ) ;
int ring_list_isfuncpointer ( List *pList, int index ) ;
void ring_list_setdouble ( List *pList, int index ,double number ) ;
void ring_list_adddouble ( List *pList,double x ) ;
void ring_list_setstring ( List *pList, int index ,const char *str ) ;
void ring_list_setstring2 ( List *pList, int index ,const char *str,int nStrSize ) ;
void ring_list_addstring ( List *pList,const char *str ) ;
void ring_list_addstring2 ( List *pList,const char *str,int nStrSize ) ;
List * ring_list_newlist ( List *pList ) ;
List * ring_list_getlist ( List *pList, int index ) ;
void ring_list_setlist ( List *pList, int index ) ;
void ring_list_setactiveitem ( List *pList, Items *pItems, int index ) ;
void ring_list_copy ( List *pNewList, List *pList ) ;
int ring_list_isnumber ( List *pList, int index ) ;
int ring_list_isstring ( List *pList, int index ) ;
int ring_list_islist ( List *pList, int index ) ;
int ring_list_ispointer ( List *pList, int index ) ;
void ring_list_deleteallitems ( List *pList ) ;
void ring_list_insertitem ( List *pList,int x ) ;
void ring_list_insertint ( List *pList,int nPos,int x ) ;
void ring_list_insertdouble ( List *pList,int nPos,double x ) ;
void ring_list_insertpointer ( List *pList,int nPos,void *pValue ) ;
void ring_list_insertstring ( List *pList,int nPos,const char *str ) ;
void ring_list_insertstring2 ( List *pList,int nPos,const char *str,int nStrSize ) ;
void ring_list_insertfuncpointer ( List *pList,int nPos,void (*pFunc)(void *) ) ;
List * ring_list_insertlist ( List *pList,int nPos ) ;
int ring_list_isiteminsidelist ( List *pList,Item *pItem ) ;
int ring_list_findstring ( List *pList,const char *str,int nColumn ) ;
int ring_list_finddouble ( List *pList,double nNum1,int nColumn ) ;
void ring_list_sortnum ( List *pList,int left,int right,int nColumn ) ;
void ring_list_sortstr ( List *pList,int left,int right,int nColumn ) ;
int ring_list_binarysearchnum ( List *pList,double nNum1,int nColumn ) ;
int ring_list_binarysearchstr ( List *pList,const char *cFind,int nColumn ) ;
void ring_list_swap ( List *pList,int x,int y ) ;
double ring_list_getdoublecolumn ( List *pList,int nIndex,int nColumn ) ;
char * ring_list_getstringcolumn ( List *pList,int nIndex,int nColumn ) ;
void ring_list_genarray ( List *pList ) ;
void ring_list_deletearray ( List *pList ) ;
void ring_list_genhashtable ( List *pList ) ;
void ring_list_genhashtable2 ( List *pList ) ;
void ring_list_refcopy ( List *pNewList, List *pList ) ;
void ring_list_clear ( List *pList ) ;
/* マクロ */
ring_list_isdouble(pList,index)
ring_list_isint(pList,index)
ring_list_deletelastitem(x)
ring_list_gethashtable(x)
ring_list_getint(pList,index)
ring_list_getpointer(pList,index)
ring_list_getfuncpointer(pList,index)
ring_list_callfuncpointer(pList,index,x)
ring_list_getdouble(pList,index)
ring_list_getstring(pList,index)
ring_list_getstringobject(pList,index)
ring_list_getstringsize(pList,index)
ring_list_getsize(x) (x->nSize)

Ring API - 文字列関数

文字列の新規作成と文字列内容操作用の Ring API 文字列関数です。

String * ring_string_new ( const char *str ) ;
String * ring_string_new2 ( const char *str,int nStrSize ) ;
String * ring_string_delete ( String *pString ) ;
int ring_string_size ( String *pString ) ;
void ring_string_set ( String *pString,const char *str ) ;
void ring_string_set2 ( String *pString,const char *str,int nStrSize ) ;
void ring_string_add ( String *pString,const char *str ) ;
void ring_string_add2 ( String *pString,const char *str,int nStrSize ) ;
void ring_string_print ( String *pString ) ;
void ring_string_setfromint ( String *pString,int x ) ;
char * ring_string_lower ( char *cStr ) ;
char * ring_string_upper ( char *cStr ) ;
char * ring_string_lower2 ( char *cStr,int nStrSize ) ;
char * ring_string_upper2 ( char *cStr,int nStrSize ) ;
char * ring_string_find ( char *cStr1,char *cStr2 ) ;
char * ring_string_find2 ( char *cStr1,int nStrSize1,char *cStr2,int nStrSize2 ) ;
/* マクロ */
ring_string_tolower(x)
ring_string_toupper(x)
ring_string_get(x)

MySQL_Columns() 関数の実装

このコードは MySQL_Columns() 関数の実装です。

この関数はカラム情報を返します。

void ring_vm_mysql_columns ( void *pPointer )
{
        MYSQL *con  ;
        MYSQL_RES *result  ;
        int nColumns,x  ;
        MYSQL_ROW row  ;
        MYSQL_FIELD *field  ;
        List *pList, *pList2  ;
        if ( RING_API_PARACOUNT != 1 ) {
                RING_API_ERROR(RING_API_MISS1PARA);
                return ;
        }
        if ( RING_API_ISCPOINTER(1) ) {
                con = (MYSQL *) RING_API_GETCPOINTER(1,RING_VM_POINTER_MYSQL) ;
                if ( con == NULL ) {
                        return ;
                }
                result = mysql_store_result(con);
                if ( result == NULL ) {
                        RING_API_RETNUMBER(0);
                        return ;
                }
                pList = RING_API_NEWLIST ;
                nColumns = mysql_num_fields(result);
                if ( row = mysql_fetch_row(result) ) {
                        while ( field = mysql_fetch_field(result) ) {
                                pList2 = ring_list_newlist(pList);
                                ring_list_addstring(pList2,field->name);
                                ring_list_adddouble(pList2,field->length);
                                ring_list_adddouble(pList2,field->type);
                                ring_list_adddouble(pList2,field->flags);
                        }
                }
                mysql_free_result(result);
                RING_API_RETLIST(pList);
        } else {
                RING_API_ERROR(RING_API_BADPARATYPE);
        }
}

List はリスト型であり、以前の関数でリスト型のポインタ *pList, *pList2; の二つ使用して宣言されています。

注釈

この関数は RING_API_NEWLIST で新しいリストを作成するために使用しますが ring_list_new() の代わりに一時作業用のリストを作成します。関数のスコープはメモリと関連付けられています。このように関数からリストを返せます。また Ring コードにより保存された格納済みの変数ならば、リストの削除を行いません。それ以外ならば Ring VM により自動削除されます。

リストは部分リストを有することができ、部分リストは ring_list_newlist() 関数で作成します。

ring_list_addstring() 関数は部分リストへ文字列の項目を追加します。

ring_list_adddouble() 関数は部分リストへ数値の項目を追加します。

注釈

Ring VM 拡張機能の関数から返されたリストにある数値の項目は倍精度実数型 (double) であるため ring_list_adddouble() 関数でリストへ追加してください。

RING_API_RETLIST() 関数は拡張機能の関数からリストを返します。

動的 / 共有ライブラリ (DLL/So/Dylib) および LoadLib() 関数

新しい関数を C/C++ と Ring API で記述後に Ring VM のリビルドをするのではなく、 DLL /So / Dylib ファイルの作成を行い、このファイルを実行時に LoadLib() 関数へ指定することで動的に関数を使えます。

C による動的ライブラリの用例

#include "ring.h"

RING_FUNC(ring_ringlib_dlfunc)
{
        printf("Message from dlfunc");
}

RING_API void ringlib_init(RingState *pRingState)
{
        ring_vm_funcregister("dlfunc",ring_ringlib_dlfunc);
}

考えかたとしては ringlib_init() 関数を作成することであり、この関数は生成された DLL ファイルを LoadLib() 関数で読み込んで使用する時に Ring VM から呼び出されます。

ringlib_init() 関数内でモジュール関数の登録、またはモジュール関数を全て登録処理するための関数を呼び出せます。

この Ring コードは実行時に DLL ライブラリの用法です。

See "Dynamic DLL" + NL
LoadLib("ringlib.dll")
dlfunc()

実行結果:

Dynamic DLL
Message from dlfunc

RING_API_RETMANAGEDCPOINTER() の用法

RING_API_RETMANAGEDCPOINTER() は C/C++ 言語で記述された Ring 拡張機能でマネージドポインタを Ring へ返します。このポインタは参照カウンタを使用している Ring VM により制御可能です。

これは RingQt の QPixMap オブジェクトなどのアンマネージドのリソース解放用コードを書く必要性を回避するには重要です。

また、コード生成器は必要に応じて拡張機能を RING_API_RETMANAGEDCPOINTER() に対応したものへ自動更新します。

文法:

RING_API_RETMANAGEDCPOINTER(void *pValue,const char *cPointerType,
                                void (* pFreeFunc)(void *,void *))

用例:

この用例は ring_qt.cpp の QPixMap クラスにある Scaled() メソッドからの引用です。

RING_FUNC(ring_QPixmap_scaled)
{
        QPixmap *pObject ;
        if ( RING_API_PARACOUNT != 5 ) {
                RING_API_ERROR(RING_API_BADPARACOUNT);
                return ;
        }
        RING_API_IGNORECPOINTERTYPE ;
        if ( ! RING_API_ISCPOINTER(1) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        pObject = (QPixmap *) RING_API_GETCPOINTER(1,"QPixmap");
        if ( ! RING_API_ISNUMBER(2) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        if ( ! RING_API_ISNUMBER(3) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        if ( ! RING_API_ISNUMBER(4) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        if ( ! RING_API_ISNUMBER(5) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        {
                QPixmap *pValue ;
                pValue = new QPixmap() ;
                *pValue = pObject->scaled( (int ) RING_API_GETNUMBER(2),
                         (int ) RING_API_GETNUMBER(3),
                         (Qt::AspectRatioMode )  (int) RING_API_GETNUMBER(4),
                         (Qt::TransformationMode )  (int) RING_API_GETNUMBER(5));
                RING_API_RETMANAGEDCPOINTER(pValue,"QPixmap",ring_QPixmap_freefunc);
        }
}

この関数は二種類の仮引数 (Ring のステートと確保されたメモリのポインタ) の指定によりメモリを解放します。

用例:

void ring_QPixmap_freefunc(void *pState,void *pPointer)
{
        QPixmap *pObject ;
        pObject = (QPixmap *) pPointer;
        delete pObject ;
}

C/C++ プログラムへ Ring を組み込むには

この関数により C/C++ プログラムから Ring を使えます。

RingState *ring_state_init();
ring_state_runcode(RingState *pState,const char *cCode);
ring_state_delete(RingState *pState);

Ring のステート

考えかたとしては ring_state_init() で Ring ステートの新規作成後に、 ring_state_runcode() 関数を呼び出すことで、同一ステートの Ring コードの実行します。処理完了後に ring_state_delete() を呼び出して、メモリを解放します。

用例:

#include "ring.h"
#include "stdlib.h"
int main(int argc, char *argv[])
{
  RingState *pState = ring_state_init();
  printf("welcome\n");
  ring_state_runcode(pState,"see 'hello world from the ring programming language'+nl");
  ring_state_delete(pState);
}

実行結果:

welcome
hello world from the ring programming language

Ring ステート関数

Ring の API にはステートの作成と削除を行う関数です。また、新しい変数の作成と変数の値を取得するための関数もあります。

RingState * ring_state_init ( void ) ;
RingState * ring_state_delete ( RingState *pRingState ) ;
void ring_state_runcode ( RingState *pRingState,const char *cStr ) ;
List * ring_state_findvar ( RingState *pRingState,const char *cStr ) ;
List * ring_state_newvar ( RingState *pRingState,const char *cStr ) ;
int  ring_state_main ( int argc, char *argv[] ) ;
void ring_state_runfile ( RingState *pRingState,const char *cFileName ) ;
void ring_state_runobjectfile ( RingState *pRingState,const char *cFileName ) ;
void ring_state_runobjectstring ( RingState *pRingState,char *cString,const char *cFileName ) ;

Ring ステート変数

同一プログラム内で複数の Ring のステートを作成できます。また、変数の作成と値の変更もできます。

ring_state_findvar() 関数は変数のリストを取得します。

ring_state_newvar() 関数は新しい変数を作成します。

用例:

#include "ring.h"
#include "stdlib.h"

int main(int argc, char *argv[])
{
  List *pList;

  RingState *pState = ring_state_init();
  RingState *pState2 = ring_state_init();

  printf("welcome\n");
  ring_state_runcode(pState,"see 'hello world from the ring programming language'+nl");

  printf("Again from C we will call ring code\n");
  ring_state_runcode(pState,"for x = 1 to 10 see x + nl next");

  ring_state_runcode(pState2,"for x = 1 to 5 see x + nl next");

  printf("Now we will display the x variable value from ring code\n");
  ring_state_runcode(pState,"see 'x value : ' + x + nl ");
  ring_state_runcode(pState2,"see 'x value : ' + x + nl ");

  pList = ring_state_findvar(pState,"x");

  printf("Printing Ring variable value from C , %.0f\n",
                ring_list_getdouble(pList,RING_VAR_VALUE));

  printf("now we will set the ring variable value from C\n");
  ring_list_setdouble(pList,RING_VAR_VALUE,20);

  ring_state_runcode(pState,"see 'x value after update : ' + x + nl ");

  pList = ring_state_newvar(pState,"v1");
  ring_list_setdouble(pList,RING_VAR_VALUE,10);

  pList = ring_state_newvar(pState,"v2");
  ring_list_setdouble(pList,RING_VAR_VALUE,20);

  ring_state_runcode(pState,"see 'v1 + v2 = ' see v1+v2 see nl");

  ring_state_runcode(pState,"see 'end of test' + nl");

  ring_state_delete(pState);
  ring_state_delete(pState2);
}

実行結果:

welcome
hello world from the ring programming language
Again from C we will call ring code
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
Now we will display the x variable value from ring code
x value : 11
x value : 6
Printing Ring variable value from C , 11
now we will set the ring variable value from C
x value after update : 20
v1 + v2 = 30
end of test

C/C++ ライブラリ接続用コード生成器

コード生成器による Ring アプリケーションへの C/C++ ライブラリ接続方法です。

ツールの用法

コード生成プログラムは parsec.ring であり、 Ring で別の Ring コードを実行できます

URL : https://github.com/ring-lang/ring/tree/master/extensions/codegen

例えば、設定ファイル test.cf を読み込んでソースコードファイル test.c を生成するには、 parsec.ring を実行します。

ring parsec.ring test.cf test.c

設定ファイル

設定ファイル (*.cf) は、コード生成器への入力ファイルです。このファイルは C/C++ ライブラリから呼び出す関数プロトタイプを決定します。

設定ファイルの記述方法は次の規則に従います。

関数プロトタイプの用法

C 関数の接続用コードを生成するには、 C 関数プロトタイプを記述します。

用例:

ALLEGRO_DISPLAY *al_create_display(int w, int h)
void al_destroy_display(ALLEGRO_DISPLAY *display)
int al_get_new_display_flags(void)
void al_set_new_display_flags(int flags)
int al_get_new_display_option(int option, int *importance)

前述の用例では al_create_display(), al_destroy_display(), al_get_new_display_flags(), al_set_new_diplay_flas() および al_get_new_display_option() 関数の接続に五本の関数生成をコード生成器に指示します。

生成コードの一例は、

用例:

RING_FUNC(ring_al_create_display)
{
        if ( RING_API_PARACOUNT != 2 ) {
                RING_API_ERROR(RING_API_MISS2PARA);
                return ;
        }
        if ( ! RING_API_ISNUMBER(1) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        if ( ! RING_API_ISNUMBER(2) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        RING_API_RETCPOINTER(al_create_display( (int ) RING_API_GETNUMBER(1),
                                 (int ) RING_API_GETNUMBER(2)),"ALLEGRO_DISPLAY");
}

RING_FUNC(ring_al_destroy_display)
{
  if ( RING_API_PARACOUNT != 1 ) {
        RING_API_ERROR(RING_API_MISS1PARA);
        return ;
  }
  if ( ! RING_API_ISPOINTER(1) ) {
        RING_API_ERROR(RING_API_BADPARATYPE);
        return ;
  }
  al_destroy_display((ALLEGRO_DISPLAY *) RING_API_GETCPOINTER(1,"ALLEGRO_DISPLAY"));
}

RING_FUNC(ring_al_get_new_display_flags)
{
        if ( RING_API_PARACOUNT != 0 ) {
                RING_API_ERROR(RING_API_BADPARACOUNT);
                return ;
        }
        RING_API_RETNUMBER(al_get_new_display_flags());
}

RING_FUNC(ring_al_set_new_display_flags)
{
        if ( RING_API_PARACOUNT != 1 ) {
                RING_API_ERROR(RING_API_MISS1PARA);
                return ;
        }
        if ( ! RING_API_ISNUMBER(1) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        al_set_new_display_flags( (int ) RING_API_GETNUMBER(1));
}

RING_FUNC(ring_al_get_new_display_option)
{
        if ( RING_API_PARACOUNT != 2 ) {
                RING_API_ERROR(RING_API_MISS2PARA);
                return ;
        }
        if ( ! RING_API_ISNUMBER(1) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        if ( ! RING_API_ISSTRING(2) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        RING_API_RETNUMBER(al_get_new_display_option( (int ) RING_API_GETNUMBER(1),
                                RING_API_GETINTPOINTER(2)));
        RING_API_ACCEPTINTVALUE(2) ;
}

前述の用例から、コード生成器は時間と手間の節約になることがわかります。

コードの追加

C コードを挿入するには <code> ～ </code> に追記します。

用例 :

<code>
        /* こちらへ C コードを書いてください。 */
</code>

この機能はコード生成器で処理を行わないコードの記述時に使用します。例えば、ヘッダファイルやマクロによる定数の定義などです。

関数名の接頭辞

全ての関数に付ける接頭辞を決定するには <funcstart> ～ </funcstart> に指定したい接頭辞を記述してください。

例えば、 Allegro ゲームプログラミング・ライブラリを接続した後に全てのライブラリ関数名が “al” で始まるようにするためには、このコードを設定ファイルへ記述します。

<funcstart>
al
</funcstart>

構造体を接続する関数の生成

構造体の接続用関数を生成するには (構造体メンバの作成、削除、取得)

<struct> ～ </struct> に指定したい構造体名を記述してください。なお、構造体名を記述してから { ～ } に構造体メンバをコンマで区切って記述します。

用例:

<struct>
ALLEGRO_COLOR
ALLEGRO_EVENT { type , keyboard.keycode , mouse.x , mouse.y }
</struct>

前述の用例では ALLEGRO_COLOR 構造体の作成と削除を行う二本の関数を生成します。また ALLEGRO_EVENT 構造体の作成と削除を行う二本の関数、および ALLEGRO_EVENT のメンバ (type, keyboard.keycode, mouse.x, mouse.y) を受け取る四本の関数を生成します。

構造体メンバ型の決定

構造体メンバ名の先頭にポインタの名前を決定できます。

用例:

SDL_Surface {flags,SDL_PixelFormat *format,w,h,pitch,void *pixels}

定数の定義

<constant> ～ </constant> で定数を定義します。

生成器は定数の値を取得するのに必要な関数を生成します。

また、 Ring ヘッダファイル (*.rh) から同一ファイル名の Ring コードで用いる定数の定義も生成します。

用例:

<constant>
MIX_DEFAULT_FORMAT
SDL_QUIT
SDL_BUTTON_LEFT
SDL_BUTTON_MIDDLE
SDL_BUTTON_RIGHT
</constant>

注釈

生成されたソースファイルの後には必ず parsec.ring へ *.rh ファイル名を渡してください。

用例:

ring ..\codegen\parsec.ring libsdl.cf ring_libsdl.c ring_libsdl.rh

新しい関数の登録

<register> ～ </register> に関数プロトタイプを記述することで、関数を登録できます。このような関数のコードは、関数プロトタイプを記述しない場合に限り必要です。

用例:

<register>
void al_exit(void)
</register>

<code>
RING_FUNC(ring_al_exit)
{
        if ( RING_API_PARACOUNT != 0 ) {
                RING_API_ERROR(RING_API_BADPARACOUNT);
                return ;
}
exit(0);
}
</code>

前述の用例では al_exit() 関数を登録しました。この関数は Allegro ライブラリの一部ではありませんが、必要なので追加した関数です。この関数が <code> ～ </code> にある場合はコードとして扱われます。この関数は C 言語ライブラリから exit() 関数を呼び出します。

設定ファイルにコメントを書くには

コメントは <comment> ～ </comment> に記述します。

用例:

<comment>
設定ファイル
</comment>

コードの生成時にコード実行するには

コード生成器で設定ファイルを読み込むときに Ring コードの実行を要求するには

<runcode> ～ </runcode> にコードを書きます。

用例:

<runcode>
aNumberTypes + "al_fixed"
</runcode>

前述の行は文字列“al_fixed”をリスト NumberTypes へ追加するためのコードです。このリストには、関数プロトタイプにおいてコード生成器が検出したときに数値としてみなせる型があります。

列挙型と数値

関数プロトタイプで使用する列挙型の追加用に aEnumTypes リストがあります。

用例:

<runcode>
aNumberTypes + "qreal"
aNumberTypes + "qint64"
aEnumTypes + "Qt::GestureType"
aEnumTypes + "Qt::GestureFlag"
</runcode>

条件式による篩い分け

<filter> ～ </filter> は、条件に基づいて設定ファイルの一部を包含または除外します。例えば、

<filter> iswindows()
        ... functions related to windows
</filter>

定数型

デフォルトの定数型は数値です。しかし、定数は別の型でも良いです。例えば、 (ポインタ : void *)

<constant> ～ </constant> の使用前に <runcode> ～ </runcode> を記述することで、コード生成器で使われる二つのグローバル変数を用いて定数の型を決定します。

最初の変数は $nDefaultConstantType であり、この定数を指定できます。

C_CONSTANT_TYPE_NUMBER

C_CONSTANT_TYPE_STRING

C_CONSTANT_TYPE_POINTER

C_CONSTANT_TYPE_POINTER の使用時は、 $cDefaultConstantPointerType の二つ目にあるグローバル変数のポインタ型の決定が必要です。

用例 :

この用例では、この機能を FreeGLUT ライブラリーにおける定数の定義で使用しています。

<runcode>
$nDefaultConstantType = C_CONSTANT_TYPE_POINTER
$cDefaultConstantPointerType = "void"
</runcode>
<constant>
        GLUT_STROKE_ROMAN
        GLUT_STROKE_MONO_ROMAN
        GLUT_BITMAP_9_BY_15
        GLUT_BITMAP_8_BY_13
        GLUT_BITMAP_TIMES_ROMAN_10
        GLUT_BITMAP_TIMES_ROMAN_24
        GLUT_BITMAP_HELVETICA_10
        GLUT_BITMAP_HELVETICA_12
        GLUT_BITMAP_HELVETICA_18
</constant>

Allegro ライブラリ用の設定ファイル

この設定ファイル (1000行以下) は Allegro ライブラリの関数用です。このファイルをコード生成器で処理したときに生成される C 言語コードは約 12000 行です！

この設定ファイルはコード生成器の完全な用例として参照できます。また 2D ゲームの作成で実装済みの RingAllegro 関数の確認にも使えます！

<code>
#define ALLEGRO_NO_MAGIC_MAIN

#include <allegro5/allegro.h>
#include "allegro5/allegro_image.h"
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>
#include <allegro5/allegro_audio.h>
#include <allegro5/allegro_acodec.h>
#include <allegro5/allegro_opengl.h>
#include <allegro5/allegro_direct3d.h>
#include <allegro5/allegro_color.h>
#include <allegro5/allegro_memfile.h>
#include "allegro5/allegro_native_dialog.h"
#include <allegro5/allegro_physfs.h>
#include <allegro5/allegro_primitives.h>
</code>

<funcstart>
al
</funcstart>

<struct>
ALLEGRO_EVENT { type , keyboard.keycode , mouse.x , mouse.y }
ALLEGRO_TIMEOUT
ALLEGRO_SAMPLE_ID
ALLEGRO_COLOR
</struct>

<register>
void al_exit(void)
</register>

<code>
RING_FUNC(ring_al_exit)
{
        if ( RING_API_PARACOUNT != 0 ) {
                RING_API_ERROR(RING_API_BADPARACOUNT);
                return ;
        }
        exit(0);
}
</code>

int al_init(void)

<comment>
configuration files
</comment>

<runcode>
aNumberTypes + "al_fixed"
</runcode>

ALLEGRO_CONFIG *al_create_config(void)
void al_destroy_config(ALLEGRO_CONFIG *config)
ALLEGRO_CONFIG *al_load_config_file(const char *filename)
ALLEGRO_CONFIG *al_load_config_file_f(ALLEGRO_FILE *file)
bool al_save_config_file(const char *filename, const ALLEGRO_CONFIG *config)
bool al_save_config_file_f(ALLEGRO_FILE *file, const ALLEGRO_CONFIG *config)
void al_add_config_section(ALLEGRO_CONFIG *config, const char *name)

注釈

これは設定ファイルの引用です。完全なコピーは Ring ソースコードの配布物を参照してください。

スレッドへの対応

この設定ファイルの別の部分は、スレッドライブラリで Ring アプリケーションへスレッドを追加する方法について学ぶことができるため重要です。

考えかたとして Ring コードを実行するために ring_vm_mutexfunctions() および ring_vm_runcodefromthread() を使用します。

<comment>
Threads
</comment>

<code>
void *al_func_thread(ALLEGRO_THREAD *thread, void *pPointer)
{
        List *pList;
        VM *pVM;
        const char *cStr;
        pList = (List *) pPointer ;
        pVM = (VM *) ring_list_getpointer(pList,2);
        cStr = ring_list_getstring(pList,1);
        ring_vm_runcodefromthread(pVM,cStr);
        ring_list_delete(pList);
        return NULL;
}

RING_FUNC(ring_al_create_thread)
{
        ALLEGRO_THREAD *pThread;
        List *pList;
        if ( RING_API_PARACOUNT != 1 ) {
                RING_API_ERROR(RING_API_MISS1PARA);
                return ;
        }
        if ( ! RING_API_ISSTRING(1) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        pList = ring_list_new(0);
        ring_list_addstring(pList,RING_API_GETSTRING(1));
        ring_list_addpointer(pList,pPointer);
        ring_vm_mutexfunctions((VM *) pPointer,al_create_mutex,
                al_lock_mutex,al_unlock_mutex,al_destroy_mutex);
        pThread = al_create_thread(al_func_thread, pList);
        al_start_thread(pThread);
        RING_API_RETCPOINTER(pThread,"ALLEGRO_THREAD");
}

RING_FUNC(ring_al_run_detached_thread)
{
        List *pList;
        if ( RING_API_PARACOUNT != 1 ) {
                RING_API_ERROR(RING_API_MISS1PARA);
                return ;
        }
        if ( ! RING_API_ISSTRING(1) ) {
                RING_API_ERROR(RING_API_BADPARATYPE);
                return ;
        }
        pList = ring_list_new(0);
        ring_list_addstring(pList,RING_API_GETSTRING(1));
        ring_list_addpointer(pList,pPointer);
        ring_vm_mutexfunctions((VM *) pPointer,al_create_mutex,
                al_lock_mutex,al_unlock_mutex,al_destroy_mutex);
        al_run_detached_thread(al_func_thread, pList);
}
</code>

<register>
ALLEGRO_THREAD *al_create_thread(void)
void al_run_detached_thread(void)
</register>

void al_start_thread(ALLEGRO_THREAD *thread)
void al_join_thread(ALLEGRO_THREAD *thread, void **ret_value)
void al_set_thread_should_stop(ALLEGRO_THREAD *thread)
bool al_get_thread_should_stop(ALLEGRO_THREAD *thread)
void al_destroy_thread(ALLEGRO_THREAD *thread)
ALLEGRO_MUTEX *al_create_mutex(void)
ALLEGRO_MUTEX *al_create_mutex_recursive(void)
void al_lock_mutex(ALLEGRO_MUTEX *mutex)
void al_unlock_mutex(ALLEGRO_MUTEX *mutex)
void al_destroy_mutex(ALLEGRO_MUTEX *mutex)
ALLEGRO_COND *al_create_cond(void)
void al_destroy_cond(ALLEGRO_COND *cond)
void al_wait_cond(ALLEGRO_COND *cond, ALLEGRO_MUTEX *mutex)

C++ クラスの接続に関するコード生成器の規則

<class> ～ </class> にクラスを定義します。

<class> ～ </class> に“name, nonew, para, parent, codename, passvmpointer, abstract および staticmethods”などの属性を設定できます。

値が不要な場合に限り、属性名:値 (attributename:value)、または属性名 (attributename) による記法で属性を設定します。

“name” 属性は C++ コードのクラス名を決定します。また、この名前は Ring コードにおけるデフォルトの名前になります。

nonew 命令はメソッドの新規作成または削除は不要であることを意味します。

parent 属性は親クラス名を決定します。

codename 属性は C++ コードで別のクラス名を決定します。

passvmpointer 命令は新しいオブジェクトの作成時にクラスのコンストラクタへ Ring 仮想計算機のポインタを渡すことを意味します。これは codename 属性をクラス定義として設定するときに発生するため、このクラスでは仮想計算機のポインタが必要です (例えば C++ から Ring コードの実行のために使用)。

abstract 命令は、このクラスでは“オブジェクトが作成されない”ため、新しいメソッドは不要であることを意味します。

staticmethods 命令はメソッドを呼び出すためのオブジェ クトを用意する必要はないことを意味します。

<nodllstartup> により #include “ring.h” を回避できます。これはスタートアップコードを記述するために必要です。

<libinitfunc> によりライブラリ関数へ登録する関数名を変更できます。

<ignorecpointertype> はポインタ型の検査を無視します。

aStringTypes リストは const char * として扱われる新しい型を定義します。

aBeforeReturn リストは関数から変数を返すときに変数名末尾に挿入されるコードを定義できます。

aNewMethodName リストは C++ のメソッドを呼び出すときに Ring のコードで使用されるメソッドの別名を定義できます。この機能は、 C++ メソッドで “load”, ”next”, ”end” および “done” など Ring のキーワードと同一名称であるため必要となるものです。

メソッドのプロトタイプでは - メソッド名に @ を使うときは、同じメソッドで様々な仮引数 (C++ のように) があることを意味します。

C++ ライブラリ接続用設定ファイルの用法

Ring アプリケーションから C++ ライブラリを使うにはコード生成器でコードを生成します。 C ライブラリで使うと、 *.c ファイルではなく *.cpp ファイルを生成します。また、生成ファイルも決定します (*.ring)。このファイルには C++ のクラスとオブジェクトを使用する C++ 関数と接続するための Ring コードによるクラスがあります。

ring parsec.ring generator\qt.cf ring_qt.cpp ring_qt.ring

Qt フレームワーク用の設定ファイル

これは Qt クラスとの接続に用いる設定ファイルです。設定ファイルは約 3500 行であり、生成されるコードは約 56000 行の C++ コード、および約 9000 行の Ring コードとなります。

<nodllstartup>

<libinitfunc> ring_qt_start

<ignorecpointertype>

<code>

extern "C" {
        #include "ring.h"
}

#include "ring_qt.h"
#include "gpushbutton.h"
#include "gaction.h"
#include "glineedit.h"
#include "gtextedit.h"
#include "glistwidget.h"
#include "gtreeview.h"
#include "gtreewidget.h"
#include "gcombobox.h"
#include "gtabwidget.h"
#include "gtablewidget.h"
#include "gprogressbar.h"
#include "gspinbox.h"
#include "gslider.h"
#include "gdial.h"
#include "gwebview.h"
#include "gcheckbox.h"
#include "gradiobutton.h"
#include "gbuttongroup.h"
#include "gvideowidget.h"
#include "gtimer.h"
#include "gtcpserver.h"
#include "giodevice.h"
#include "gabstractsocket.h"
#include "gtcpsocket.h"
#include "gcolordialog.h"
#include "gallevents.h"
#include <QApplication>
#include <QObject>
#include <QWidget>
#include <QLabel>
#include <QPixmap>
#include <QIcon>
#include <QSize>
#include <QPushButton>
#include <QMainWindow>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QTextEdit>
#include <QListWidget>
#include <QTreeView>
#include <QDir>
#include <QFileSystemModel>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QComboBox>
#include <QVariant>
#include <QMenuBar>
#include <QMenu>
#include <QToolBar>
#include <QMainWindow>
#include <QStatusBar>
#include <QDockWidget>
#include <QTabWidget>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QSizePolicy>
#include <QFrame>
#include <QAbstractScrollArea>
#include <QAbstractItemView>
#include <QProgressBar>
#include <QSpinBox>
#include <QSlider>
#include <QAbstractSlider>
#include <QDateEdit>
#include <QDateTimeEdit>
#include <QAbstractSpinBox>
#include <QDial>
#include <QWebView>
#include <QUrl>
#include <QCheckBox>
#include <QRadioButton>
#include <QButtonGroup>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QVideoWidget>
#include <QPrinter>
#include <QAction>
#include <QEvent>
#include <QMessageBox>
#include <QTimer>
#include <QFileDialog>
#include <QPainter>
#include <QPicture>
#include <QPen>
#include <QColor>
#include <QPrinter>
#include <QFont>
#include <QWebSettings>
#include <QBrush>
#include <QByteArray>
#include <QIODevice>
#include <QAbstractSocket>
#include <QTcpSocket>
#include <QTcpServer>
#include <QNetworkProxy>
#include <QHostAddress>
#include <QHostInfo>
#include <QList>
#include <QFileInfo>
#include <QDirModel>
#include <QModelIndex>
#include <QFontDialog>
#include <QDialog>
#include <QTextCursor>
#include <QTextBlock>
#include <QTextDocumentFragment>
#include <QColorDialog>
#include <QHeaderView>
#include <QStringList>
#include <QKeySequence>
#include <QLCDNumber>
#include <QInputDialog>
#include <QDesktopWidget>
#include <QRect>
#include <QTextDocument>

extern "C" {

        #define RING_DLL __declspec(dllexport)

        RING_DLL void ringlib_init(RingState *pRingState)
        {

                new QApplication(pRingState->argc,pRingState->argv);
                ring_qt_start(pRingState) ;
        }

}
</code>

<runcode>
aStringTypes + "QString"
aBeforeReturn + ["QString",".toStdString().c_str()"]
aNewMethodName + ["QWebView","load","loadpage"]
aNewMethodName + ["QMediaPlaylist","load","loadfile"]
aNewMethodName + ["QMediaPlaylist","next","movenext"]
aNewMethodName + ["QPainter","end","endpaint"]
aNewMethodName + ["QPicture","load","loadfile"]
aNewMethodName + ["QLineEdit","end","endtext"]
aNewMethodName + ["QDialog","done","donedialog"]
aNewMethodName + ["QTextDocument","end","enddoc"]
aNewMethodName + ["QTextBlock","next","nextblock"]
</runcode>

<class>
name: qApp
nonew
</class>

<register>
void exec(void)
void quit(void)
void processEvents(void)
</register>

<code>

RING_FUNC(ring_qApp_quit)
{
        qApp->quit();
}

RING_FUNC(ring_qApp_exec)
{
        qApp->exec();
}

RING_FUNC(ring_qApp_processEvents)
{
        qApp->processEvents();
}

</code>

<class>
name: QObject
para: void
</class>

bool blockSignals(bool block)
QObjectList children(void)
void dumpObjectInfo(void)
void dumpObjectTree(void)
bool inherits(const char *className)
void installEventFilter(QObject *filterObj)
bool isWidgetType(void)
void killTimer(int id)
void moveToThread(QThread *targetThread)
QString objectName(void)
QObject *parent(void)
QVariant property(const char *name)
void removeEventFilter(QObject *obj)
void setObjectName(QString)
void setParent(QObject *parent)
bool setProperty(const char *name, QVariant)
bool signalsBlocked(void)
int startTimer(int interval)
QThread *thread(void)
void deleteLater(void)

<class>
name: QWidget
para: void
parent: QObject
</class>

bool acceptDrops(void)
QString accessibleDescription(void)
QString accessibleName(void)
void activateWindow(void)
void addAction(QAction *action)
void adjustSize(void)
bool autoFillBackground(void)
int backgroundRole(void)
QSize baseSize(void)
QWidget *childAt(int x, int y)
QRect childrenRect(void)
QRegion childrenRegion(void)
void clearFocus(void)
void clearMask(void)
QMargins contentsMargins(void)
QRect contentsRect(void)
int contextMenuPolicy(void)
QCursor cursor(void)
int effectiveWinId(void)
void ensurePolished(void)
int focusPolicy(void)
QWidget *focusProxy(void)
QWidget *focusWidget(void)
QFont font(void)
QFontInfo fontInfo(void)
QFontMetrics fontMetrics(void)
int foregroundRole(void)
QRect frameGeometry(void)
QSize frameSize(void)
QRect geometry(void)
void getContentsMargins(int *left, int *top, int *right, int *bottom)
void grabGesture(int gesture, int flags)
void grabKeyboard(void)
void grabMouse(void)
int grabShortcut(QKeySequence , int context)
QGraphicsEffect *graphicsEffect(void)
QGraphicsProxyWidget *graphicsProxyWidget(void)
bool hasFocus(void)
bool hasMouseTracking(void)
int height(void)
int heightForWidth(int w)
int inputMethodHints(void)
QVariant inputMethodQuery(int query)
void insertAction(QAction *before, QAction *action)
bool isActiveWindow(void)
bool isAncestorOf(QWidget *child)
bool isEnabled(void)
bool isEnabledTo(QWidget *ancestor)
bool isFullScreen(void)
bool isHidden(void)
bool isMaximized(void)
bool isMinimized(void)
bool isModal(void)
bool isVisible(void)
bool isVisibleTo(QWidget *ancestor)
bool isWindow(void)
bool isWindowModified(void)
QLayout *layout(void)
int layoutDirection(void)
QLocale locale(void)
QPoint mapFrom(QWidget *parent, QPoint)
QPoint mapFromGlobal(QPoint)
QPoint mapFromParent(QPoint)
QPoint mapTo(QWidget *parent, QPoint)
QPoint mapToGlobal(QPoint pos)
QPoint mapToParent(QPoint pos)
QRegion mask(void)
int maximumHeight(void)
QSize maximumSize(void)
int maximumWidth(void)
int minimumHeight(void)
QSize minimumSize(void)
int minimumWidth(void)
void move(int x, int y)
QWidget *nativeParentWidget(void)
QWidget *nextInFocusChain(void)
QRect normalGeometry(void)
void overrideWindowFlags(int flags)
QPalette palette(void)
QWidget *parentWidget(void)
QPoint pos(void)
QWidget *previousInFocusChain(void)
QRect rect(void)
void releaseKeyboard(void)
void releaseMouse(void)
void releaseShortcut(int id)
void removeAction(QAction *action)
void render(QPaintDevice *target, QPoint,QRegion, int)
void repaint(int x, int y, int w, int h)
void resize(int w, int h)
bool restoreGeometry(QByteArray)
QByteArray saveGeometry(void)
void scroll(int dx, int dy)
void setAcceptDrops(bool on)
void setAccessibleDescription(QString)
void setAccessibleName(QString)
void setAttribute(int attribute, bool on)
void setAutoFillBackground(bool enabled)
void setBackgroundRole(int role)
void setBaseSize(int basew, int baseh)
void setContentsMargins(int left, int top, int right, int bottom)
void setContextMenuPolicy(int policy)
void setCursor(QCursor)
void setFixedHeight(int h)
void setFixedSize(int w, int h)
void setFixedWidth(int w)
void setFocus(int reason)
void setFocusPolicy(int policy)
void setFocusProxy(QWidget *w)
void setFont(QFont)
void setForegroundRole(int role)
void setGeometry(int x, int y, int w, int h)
void setGraphicsEffect(QGraphicsEffect *effect)
void setInputMethodHints(int hints)
void setLayout(QLayout *layout)
void setLayoutDirection(int direction)
void setLocale(QLocale)
void setMask(QBitmap)
void setMaximumHeight(int maxh)
void setMaximumSize(int maxw, int maxh)
void setMaximumWidth(int maxw)
void setMinimumHeight(int minh)
void setMinimumSize(int minw, int minh)
void setMinimumWidth(int minw)
void setMouseTracking(bool enable)
void setPalette(QPalette)
void setParent(QWidget *parent)
void setShortcutAutoRepeat(int id, bool enable)
void setShortcutEnabled(int id, bool enable)
void setSizeIncrement(int w, int h)
void setSizePolicy(int horizontal, int vertical)
void setStatusTip(QString)
void setStyle(QStyle *style)
void setToolTip(QString)
void setUpdatesEnabled(bool enable)
void setWhatsThis(QString)
void setWindowFilePath(QString)
void setWindowFlags(int type)
void setWindowIcon(QIcon)
void setWindowIconText(QString)
void setWindowModality(int windowModality)
void setWindowOpacity(double level)
void setWindowRole(QString)
void setWindowState(int windowState)
QSize size(void)
QSize sizeIncrement(void)
QSizePolicy sizePolicy(void)
void stackUnder(QWidget *w)
QString statusTip(void)
QStyle *style(void)
QString styleSheet(void)
bool testAttribute(int attribute)
QString toolTip(void)
bool underMouse(void)
void ungrabGesture(int gesture)
void unsetCursor(void)
void unsetLayoutDirection(void)
void unsetLocale(void)
void update(int x, int y, int w, int h)
void updateGeometry(void)
bool updatesEnabled(void)
QRegion visibleRegion(void)
QString whatsThis(void)
int width(void)
int winId(void)
QWidget *window(void)
QString windowFilePath(void)
int windowFlags(void)
QIcon windowIcon(void)
QString windowIconText(void)
int windowModality(void)
double windowOpacity(void)
QString windowRole(void)
int windowState(void)
QString windowTitle(void)
int windowType(void)
int x(void)
int y(void)
bool close(void)
void hide(void)
void lower(void)
void raise(void)
void setDisabled(bool disable)
void setEnabled(bool)
void setHidden(bool hidden)
void setStyleSheet(QString)
void setWindowModified(bool)
void setWindowTitle(QString)
void show(void)
void showFullScreen(void)
void showMaximized(void)
void showMinimized(void)
void showNormal(void)
QWidget *find(int id)
QWidget *keyboardGrabber(void)
QWidget *mouseGrabber(void)
void setTabOrder(QWidget *first, QWidget *second)

<class>
name: QLabel
para: QWidget *
parent: QWidget
</class>

int alignment(void)
QWidget *buddy(void)
bool hasScaledContents(void)
bool hasSelectedText(void)
int indent(void)
int margin(void)
QMovie *movie(void)
bool openExternalLinks(void)
QPicture *picture(void)
QPixmap *pixmap(void)
QString selectedText(void)
int selectionStart(void)
void setAlignment(int)
void setBuddy(QWidget *buddy)
void setIndent(int)
void setMargin(int)
void setOpenExternalLinks(bool open)
void setScaledContents(bool)
void setSelection(int start, int length)
void setTextFormat(int)
void setTextInteractionFlags(int flags)
void setWordWrap(bool on)
QString text(void)
int textFormat(void)
int textInteractionFlags(void)
bool wordWrap(void)
void clear(void)
void setMovie(QMovie *movie)
void setNum(double num)
void setPicture(QPicture)
void setPixmap(QPixmap)
void setText(QString)

<class>
name: QPushButton
para: QWidget *
parent: QWidget
codename: GPushButton
passvmpointer
</class>

void setText(const char *)
void setClickEvent(const char *)
void setIcon(QIcon)
void setIconSize(QSize)

<class>
name: QLineEdit
para: QWidget *
parent: QWidget
codename: GLineEdit
passvmpointer
</class>

int alignment(void)
void backspace(void)
QCompleter *completer(void)
QMenu *createStandardContextMenu(void)
void cursorBackward(bool mark, int steps)
void cursorForward(bool mark, int steps)
int cursorMoveStyle(void)
int cursorPosition(void)
int cursorPositionAt(QPoint)
void cursorWordBackward(bool mark)
void cursorWordForward(bool mark)
void del(void)
void deselect(void)
QString displayText(void)
bool dragEnabled(void)
int echoMode(void)
void end(bool mark)
void getTextMargins(int *left, int *top, int *right, int *bottom)
bool hasAcceptableInput(void)
bool hasFrame(void)
bool hasSelectedText(void)
void home(bool mark)
QString inputMask(void)
void insert(QString)
bool isModified(void)
bool isReadOnly(void)
bool isRedoAvailable(void)
bool isUndoAvailable(void)
int maxLength(void)
QString placeholderText(void)
QString selectedText(void)
int selectionStart(void)
void setAlignment(int flag)
void setCompleter(QCompleter *c)
void setCursorMoveStyle(int style)
void setCursorPosition(int)
void setDragEnabled(bool b)
void setEchoMode(int)
void setFrame(bool)
void setInputMask(QString)
void setMaxLength(int)
void setModified(bool)
void setPlaceholderText(QString)
void setReadOnly(bool)
void setSelection(int start, int length)
void setTextMargins(int left, int top, int right, int bottom)
void setValidator(QValidator *v)
QString text(void)
QMargins textMargins(void)
QValidator *validator(void)

void clear(void)
void copy(void)
void cut(void)
void paste(void)
void redo(void)
void selectAll(void)
void setText(QString)
void undo(void)

void setTextChangedEvent(const char *)
void setcursorPositionChangedEvent(const char *)
void seteditingFinishedEvent(const char *)
void setreturnPressedEvent(const char *)
void setselectionChangedEvent(const char *)
void settextEditedEvent(const char *)

注釈

ソースコード全文は Ring ソースコードの配布物にあるため、この取扱説明書からは前述の設定ファイルにおける内容の大部分を割愛しています。

静的メソッド

Ring 1.8 からコード生成器は staticmethods オプションに対応しました。

これにより、コード生成器はクラスでメソッドを呼び出すためのオブジェクトの準備は不要であることを検出できるようになりました。

用例:

<class>
name: QStandardPaths
para: void
nonew
staticmethods
</class>

QString displayName(QStandardPaths::StandardLocation type)
QString findExecutable(QString executableName, QStringList paths))

ファイルの読み込み

コード生成器は <loadfile> 命令に対応しました (Ring 1.9 以降)。

<loadfile> filename.cf

これは、拡張機能設定ファイルを複数のファイルへ分割するのに便利です。

用例:

ファイル : RingQt 拡張機能の qt_module_network.cf より引用

<comment>
                                モジュール (ネットワーク)
</comment>

<loadfile> qabstractsocket.cf
<loadfile> qnetworkproxy.cf
<loadfile> qtcpsocket.cf
<loadfile> qtcpserver.cf
<loadfile> qhostaddress.cf
<loadfile> qhostinfo.cf
<loadfile> qnetworkrequest.cf
<loadfile> qnetworkaccessmanager.cf
<loadfile> qnetworkreply.cf

マネージドクラス

コード生成器は、クラス定義時の <managed> オプションに対応しました (Ring 1.9 以降)。

このオプションにより、生成器は C ポインタを返すために RING_API_RETMANAGEDCPOINTER() を使用します。

これにより、ガベージコレクターは C ポインタを管理対象にします。

用例:

<class>
name: QFont
para: QString, int, int, bool
managed
</class>

設定ファイルの用例

この用例から学ぶことができます。

RingAllegro : https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/allegro.cf

RingQt : https://github.com/ring-lang/ring/blob/master/extensions/ringqt/classes/qt.cf

RingLibSDL : https://github.com/ring-lang/ring/blob/master/extensions/ringsdl/libsdl.cf

設定ファイルの変更後に、必ずコードの生成をしてください。この用例から学ぶことができます。

RingAllegro : https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/gencode.bat

RingQt : https://github.com/ring-lang/ring/blob/master/extensions/ringqt/gencode.bat

RingLibSDL : https://github.com/ring-lang/ring/blob/master/extensions/ringsdl/gencode.bat

コード生成後にライブラリのビルドを必ずしてください。この用例から学ぶことができます。

RingAllegro : https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/buildvc.bat

RingQt : https://github.com/ring-lang/ring/blob/master/extensions/ringqt/buildmingw32.bat

RingLibSDL : https://github.com/ring-lang/ring/blob/master/extensions/ringsdl/buildvc.bat

はじめての拡張機能開発

RingBeep は Windows API の beep() 関数を使用するシンプルな拡張機能の作例です。

収録先

この拡張機能は ring/extensions/ringbeep フォルダにあります。

拡張機能の作成手順

設定ファイルを記述します : ringbeep.cf

notepad ringbeep.cf

ringbeep.cf ファイルの内容

<code>
#include "windows.h"
</code>

int Beep(int dwFreq,int dwDuration)

実行します : gencode.bat は ringbeep.c を生成します。

gencode.bat

gencode.bat には Ring 拡張機能生成器を呼び出すための記述があります。

ring ..\codegen\parsec.ring ringbeep.cf ringbeep.c

拡張機能をビルドするには :

buildvc.bat

buildvc.bat には Visual C/C++ で拡張機能をビルドするための記述があります。

cls
call ../../src/locatevc.bat
cl /c /DEBUG ringbeep.c -I"..\..\include"
link /DEBUG ringbeep.obj  ..\..\lib\ring.lib kernel32.lib /DLL /OUT:ringbeep.dll ^
                                                        /SUBSYSTEM:CONSOLE,"5.01"
del ringbeep.obj

関数の動作検証

関数の動作検証をします。

ring test.ring

test.ring の内容:

loadlib("ringbeep.dll")

for f = 750 to 1000 step 50
        beep(f,300)
next

言語設計

言語設計の背景にある基本概念です。

Ring をオススメする理由

プログラミング言語 Ring には簡明、違和感の排除、組織化の奨励、および透過性とビジュアル実装があります。簡潔なシンタックス、そして自然なインタフェースの作成を可能にする機能群、短時間で作成・構築できる宣言型ドメイン特化言語機能を標準装備しています。非常に小規模、高速なスマートガベージコレクターにより、プログラマはメモリを制御下に置くことができます。また、多種多様なプログラミングパラダイムに対応しており、便利で実用的なライブラリが付属しています。 Ring は生産性と拡張性に優れた高品質な解決方法の開発のために設計しました。

明確な設計目標

アプリケーション開発用のプログラミング言語です。

生産性と拡張性に優れた高品質な解決方法の開発。

小規模・高速な言語で C/C++ プロジェクトへ組み込めます。

学習と入門 (文教用途、およびコンパイラ・仮想計算機の概念) に使用できる単純明快な言語です。

ドメイン特化ライブラリ、フレームワーク、およびツールを作成できる汎用プログラミング言語です。

ビジュアル・プログラミング言語 Programming Without Coding Technology (PWCT) ソフトウェアの次世代版の開発用に設計した実用プログラミング言語です。

シンプル

Ring は非常に簡明な言語であり、非常にわかりやすくすっきりしたシンタックスから構成しています。プログラマには、ボイラープレートコードのないプログラムの記述を奨励しています。

'See' 命令はメッセージを標準出力へ表示します。

See "Hello, World!"

Main 関数はオプション扱いであり、ステートメントの後に実行するため、ローカルスコープで便利です。

Func Main
        See "Hello, World!"

動的型付け、およびレキシカルスコープを使用しています。変数名の先頭に $ は不要です！

文字列の連結は‘+’演算子です。弱い型付け言語であり、文字列はコンテキストに基づいて数値と文字列との間で自動的に変換します。

nCount = 10     # グローバル変数
Func Main
        nID = 1 # ローカル変数
        See "Count = " + nCount + nl + " ID = " + nID

違和感の排除

Ring は英数大小文字を区別しません。

See "Enter your name ? "
Give name
See "Hello " + Name     # Name は name と同じです。

リストのインデックス (添字番号) は 1 から開始します。

aList = ["one","two","three"]
See aList[1]    # one を表示

定義前の関数呼び出し:

one()
two()
three()
Func one
        See "One" + nl
Func two
        See "two" + nl
Func three
        See "three" + nl

代入演算子は深いコピーを使用します (この操作は参照ではありません)。

aList = ["one","two","three"]
aList2 = aList
aList[1] = 1
see alist[1]    # 1 を表示
see aList2[1]   # one を表示

数値と文字列は値渡しですが、リストとオブジェクトは参照渡しです。 For in ループ でリストの項目 (アイテム、要素とも言います) を更新できます。

Func Main
        aList = [1,2,3]
        update(aList)
        see aList       # one two three を表示

Func update aList
        for x in aList
                switch x
                on 1 x = "one"
                on 2 x = "two"
                on 3 x = "three"
                off
        next

定義時のリスト使用:

aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
see aList       # 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 を表示

一階層以上のループから脱出

for x = 1 to 10
                for y = 1 to 10
                                see "x=" + x + " y=" + y + nl
                                if x = 3 and y = 5
                                                exit 2     # 二階層のループから脱出
                                ok
                next
next

組織化の奨励

Ring ではプログラムの組織化を奨励しています。まずは関数、次にクラス、そして、関数とヘンテコなモノと組み合わせるプログラミング言語を使用していた悪夢の日々を忘却の彼方へ追いやります！

ソースファイルの構造は:

ファイルの読み込み

ステートメントとグローバル変数

関数

パッケージとクラス

これにより、構成要素で end キーワードを記述しなくてもパッケージ、クラスと関数を使えます。

一行コメント、または複数行コメントを使えます。一行コメントは # あるいは // で始まります。複数行コメントは /* ～ */ の間に記述します。

/*
        プログラムの名前    : はじめての Ring プログラム
        日付                : 2015.05.08
*/

See "What is your name? "   # 画面へメッセージを表示
give cName                  # ユーザからの標準入力を取得
see "Hello " + cName        # こんにちわ！

// See "Bye!"

データの表現方法

Ring においてプログラムのデータ表現で使える型は四種類のみです。

つまり、型として扱えるものは文字列、数値、リストとオブジェクトです。

その狙いは、様々な状況で使いやすい関数を書くことであり、型別にユースケースを多数定義すると柔軟性と性能が高くなります。

文字列型は下記の表現で使います: * 文字 * 複数文字による文字列 * 複数行による文字列 * バイナリデータ

cStr1 = "a"                     # 文字
cStr2 = "Hello, World!"         # 複数文字による文字列
cStr3 = "Hello
Welcome to the Ring language!
"                               # 複数行による文字列
cStr4 = read(EXEFileName())     # 実行可能ファイルの読み取り (バイナリデータ)

数値型は下記の表現で使います: * ブール値 * 符号あり・なし整数 * 浮動小数・倍精度小数

nNum1 = True            # ブール値 (1)
nNum2 = False           # ブール値 (0)
nNum3 = 10              # 整数
nNum4 = -10             # 符号あり整数
nNum5 = 1250.11         # 浮動小数・倍精度小数

リスト型は下記の表現で使います: * 一次元配列 * 多次元配列 * 複合型のリスト * 多重リスト * ハッシュテーブル (キーと値) * ツリー * C ポインタとのラッパー接続

aList1 = ["one","two","three"]                          # 文字列
aList2 = [1,2,3,4,5,6,7,8,9,10]                         # 数値
aList3 = ["Ring",1234]                                  # 複合型
aList4 = [["Fayed","Egypt"],["Mansour","Tunisia"]]      # 多重リスト
aList5 = [ :name = "Fayed", :country = "Egypt"]         # ハッシュテーブル

オブジェクト型はクラスから生成されたオブジェクトの表現で使います。

また、クラスと演算子のオーバーロードを用いることで任意定義型を作れます。

簡潔なシンタックス

行の区別はしませんので、ステートメントの後に ; は不要です。または ENTER や TAB の打鍵は不要ですので、このようなコードを記述可能です。

See "The First Message" See " Another message in the same line! " + nl
See "Enter your name?" Give Name See "Hello " + Name

このコードは三種類の属性 X, Y および Z を有する Point クラスを作成します。クラス、パッケージ、関数の定義の終了で end キーワードは不要です。また、クラス名の直下に属性名を書くことができます。

Class Point X Y Z

定義前にクラスと関数を使えます。この用例では、オブジェクトの新規作成と属性の設定、および値を表示します。

o1 = New point  o1.x=10    o1.y=20   o1.z=30    See O1  Class Point X Y Z

ドット演算子‘.’でオブジェクトの属性とメソッドへアクセスするのではなく、括弧 { } でオブジェクトへアクセスできます。その後にオブジェクトの属性とメソッドを使えます。

o1 = New point { x=10 y=20 z=30 } See O1  Class Point X Y Z

メソッドの呼び出し後に { } でオブジェクトへアクセスします。

oPerson = new Person
{
        Name = "Somebody"
        Address = "Somewhere"
        Phone = "0000000"
        Print()                 # ここでは Print() メソッドを呼び出します。
}
Class Person Name Address Phone
        Func Print
                See "Name :" + name + nl +
                        "Address :" + Address + nl +
                        "Phone : " + phone + nl

{ } で、オブジェクトへアクセスしてからオブジェクト名を記述するとき、自動的に呼び出される全ての setter/getter メソッドに対してクラスを検査します。

New Number {
                See one         # GetOne() の実行
                See two         # GetTwo() の実行
                See three       # GetThree() の実行
}
Class Number one two three
        Func GetOne
                See "Number : One" + nl
                return 1
        Func GetTwo
                See "Number : Two" + nl
                return 2
        Func GetThree
                See "Number : Three" + nl
                return 3

自然言語ステートメントの定義

{ } でオブジェクトへアクセス後に、クラスに BraceEnd() メソッドがあれば BraceEnd() メソッドを実行します！

TimeForFun = new journey
# あっと驚く！
TimeForFun {
        Hello it is me          # なんと美しいプログラミングの世界でしょう！
}
# クラス本体
Class journey
        hello=0 it=0 is=0 me=0
        func GetHello
                See "Hello" + nl
        func braceEnd
                See "Goodbye!" + nl

Eval() 関数は、文字列に記述されたコードを実行します。

cCode = "See 'Code that will be executed later!' "
Eval(cCode)     # コードを実行してメッセージを表示します。

リストの作成後に、実行用のコードをリストから生成できます。

aWords = ["hello","it","is","me"]
for word in aWords cCode=word+"=0" eval(cCode) next

Read(cFileName) 関数は、テキストファイルを読み取ります。また Write(cFileName,cString) 関数はファイルへ書き込みます。

See "Enter File Name:" Give cFileName See Read(cFileName) # ファイルの内容を表示

この用例は、二つの命令を定義するクラスの作成方法です。

最初の命令は : I want window

次の命令は : Window title = <式>

‘the’キーワードなどは無視されます。

New App
{
        I want window
        The window title = "hello world"
}

Class App

        # I want window 命令の属性
                i want window
                nIwantwindow = 0
        # Window title 命令の属性
        # ここでは window 属性を再定義しません。
                title
                nWindowTitle = 0
        # 値を与えると、キーワードを無視します。
                the=0

        func geti
                        if nIwantwindow = 0
                                nIwantwindow++
                        ok

        func getwant
                        if nIwantwindow = 1
                                nIwantwindow++
                        ok

        func getwindow
                        if nIwantwindow = 2
                                nIwantwindow= 0
                                see "Instruction : I want window" + nl
                        ok
                        if nWindowTitle = 0
                                nWindowTitle++
                        ok

        func settitle cValue
                        if nWindowTitle = 1
                                nWindowTitle=0
                                see "Instruction : Window Title = " + cValue + nl
                        ok

前述の用例を完了するには read() でファイルの内容を取得します。

I want window
The window title = "hello world"

そして eval() でファイルの内容を実行します！

また、 GUI ライブラリでウィンドウを作成するには GetWindow() と SetTitle() メソッドを更新します。

宣言型言語の定義

自然言語ステートメントによるコードの実行、および多重構造によるコードの実行方法について既に学んでいます。

この用例は Web ライブラリからの引用です。 Bootstrap ライブラリで HTML ドキュメントを生成します。この用例では、 HTML コードを記述せずに、類似言語を作成しています (ただの用例です)。その後、宣言型言語を使用するために多重構造で HTML ドキュメントを生成しています。この用例での考えかたとして GetDiv() および GetH1() メソッドは { } でアクセスできるオブジェクトを返します。各オブジェクトへのアクセス後に BraceEnd() メソッドが実行されると、生成された HTML を BraceEnd() の出力表示がルートに到達するまで親オブジェクトへ送信します。

Load "weblib.ring"
Import System.Web

Func Main

  BootStrapWebPage()
  {
        div
        {
          classname = :container
          div
          {
                classname = :jumbotron
                H1 {   text("Bootstrap Page")   }
          }
          div
          {
                classname = :row
                for x = 1 to 3
                  div
                  {
                    classname = "col-sm-4"
                    H3 { html("Welcome to the Ring programming language") }
                    P  { html("Using a scripting language is very fun!") }
                  }
                next
          }
        }
  }

このようなクラスで宣言型インタフェースを強化します。

Class Link from ObjsBase
        title  link
        Func braceend
                cOutput = nl+GetTabs() + "<a href='" +
                          Link + "'> "+ Title + " </a> " + nl

Class Div from ObjsBase
        Func braceend
                cOutput += nl+'<div'
                addattributes()
                AddStyle()
                getobjsdata()
                cOutput += nl+"</div>" + nl
                cOutput = TabMLString(cOutput)

透過型実装

Ring は透過型実装です。 コンパイラの処理段階、および仮想計算機による実行中の処理内容を把握できます。

例えば : ring helloworld.ring -tokens -rules -ic

See "Hello, World!"

実行結果

==================================================================
Tokens - Generated by the Scanner
==================================================================

   Keyword : SEE
   Literal : Hello, World!
   EndLine

==================================================================

==================================================================
Grammar Rules Used by The Parser
==================================================================

Rule : Program --> {Statement}

Line 1
Rule : Factor --> Literal
Rule : Range --> Factor
Rule : Term --> Range
Rule : Arithmetic --> Term
Rule : BitShift --> Arithmetic
Rule : BitAnd --> BitShift
Rule : BitOrXOR -->  BitAnd
Rule : Compare --> BitOrXOR
Rule : EqualOrNot --> Compare
Rule : LogicNot -> EqualOrNot
Rule : Expr --> LogicNot
Rule : Statement  --> 'See' Expr

==================================================================

==================================================================
Byte Code - Before Execution by the VM
==================================================================

         PC      OPCode        Data

          1     FuncExE
          2       PushC   Hello, World!
          3       Print
          4  ReturnNull

==================================================================

Hello, World!

ビジュアル実装

Ring は、ビジュアル・プログラミングツール Programming Without Coding Technology (PWCT) で設計しました。 Ring のビジュアルソースは、 “language/visualsrc” フォルダの *.ssf ファイルです。生成後の C 言語ソースコードは language/src フォルダ、および language/include フォルダにあります。

このスクリーンショットは、 ring_vm.ssf ファイルからの引用です (ring_vm.c および ring_vm.h が生成されます)。

このスクリーンショットは、 ring_list.ssf ファイルからの引用です (ring_list.c および ring_list.h が生成されます)。

スマートガベージコレクター

わずらわしいメモリ操作関連の問題から解放します。

メモリへの不正アクセス

メモリリーク

未初期化メモリへのアクセス

ダングリングポインタ

規則:

グローバル変数は代入ステートメントで削除するまでメモリに存在し続けます。

ローカル変数は関数の処理終了後に削除されます。

プログラマは代入ステートメントでメモリから変数を削除する機会を完全に制御できます。

用例:

aList = [1,2,3,4,5]
aList = "nice"

二行目の直後、リスト [1,2,3,4,5] はメモリから削除され、文字列 “nice” が残ります。

プログラマは callgc() 関数を呼び出すことで、ガベージコレクターを強制実行できます。

変数参照時 (関数へオブジェクト、およびリストを渡すとき)、参照カウントに基づいて変数を削除します。未参照では全て削除されますが、参照しているときはデータはメモリに残ります。

インタプリタ (VM) 全体の停止なし (GIL なし)

アプリケーションでスレッドを使うとき、インタプリタ (VM) 全体の停止 (global interpreter (VM) lock) は起こりません (GIL なし)。

よって、スレッドは並列動作可能であり、Ring 命令は同時実行されます。

これはスレッドと平行性において最良のものです (さらなる高速化が実現できます！)

ほとんどのアプリケーションで十分に高速動作します

プログラミング言語 Ring は単純明快、小規模、柔軟性のある最先端の設計です。また、ほとんどのアプリケーションで十分に高速動作します。

これまで、市販の電子計算機で Ring を使用してきました。下記の処理は約 1 秒で完了します。

100,000 行コードのコンパイル

1 ～ 10,000,000 まで数え上げる空ループの実行

100,000 項目から成るリストで最後の項目を見つけようとして、線形検索で 1000 回の検索処理を実行 (最悪値)

1,000,000 項目から成るリストを作成後にリスト全項目の合計を計算

GUI アプリケーションで ListWidget へ 20,000 アイテムを追加

GUI アプリケーションで TreeWidget へ 5,000 ノードを追加

ターミナルのコンソールアプリケーションで 10,000 メッセージを表示

さらなる高速化を求めるならば C/C++ 拡張機能を使えます！

用例:

? "Create list contains 100,000 items"
aList = 1:100000

? "Do 1000 search operation - Find the last item (Worst Case!)"
c = clock()

for t = 1 to 1000
        find(alist,100000)
next

? "Time: " + ( clock() - c ) / clockspersecond() + " seconds"

実行結果:

Create list contains 100,000 items
Do 1000 search operation - Find the last item (Worst Case!)
Time: 0.87 seconds

用例:

load "guilib.ring"

func main

new qApp {
        win = new qWidget() {
                move(100,100) resize(500,500)
                setWindowTitle("Many Tree Items - Testing Performance")
                tree = new qTreeWidget(win) {
                        blocksignals(True) setUpdatesEnabled(False)
                        root = new qTreeWidgetItem()
                        root.setText(0,"The Root Node")
                        t1 = clock()
                        for t = 1 to 5000
                                oItem = new qTreeWidgetItem()
                                oItem.settext(0,"Item " + t)
                                root.addchild(oItem)
                        next
                        cTime = (clock()-t1)/clockspersecond()
                        setHeaderLabel("Creating 5000 nodes in " + cTime + " seconds.")
                        addTopLevelItem(root)
                        expanditem(root)
                        blocksignals(False) setUpdatesEnabled(True)
                }
                oLayout = new qVBoxLayout() {
                        addWidget(tree)
                }
                setLayout(oLayout)
                show()
        }
        exec()
}

実行結果:

Ring 1.1 の変更履歴

Ring 1.1 (2016年10月06日) の変更点と新機能です。

新機能と変更リスト

Ring 1.1 の新機能！

自然言語プログラミング機能を改善

Ring オブジェクトファイル (*.ringo) の生成と実行

シンタックスの柔軟性と入出力、および制御構造の各種記法

新しい関数と変更

Ring で記述した StdLib 関数とクラス

RingLibSDL

デモプロジェクト - 2D ゲームエンジン

RingSQLite

拡張機能に関するコード生成器の改善

新しい属性を定義するためにクラス範囲で Self.属性 の使用

クラスのメソッド内における多重括弧での This.属性 の使用

取扱説明書の増補

自然言語プログラミング機能を改善

Ring は、画期的なプログラミング言語であり、小規模のシンタックス、高性能な実装 (小規模、透過型、および視覚型)、短時間で作成・構築できる宣言型、および自然なドメイン特化言語機能を標準装備しています。

この公開版では、式の評価後のメソッド呼び出しに対応しました。

この用例をご確認ください:

# 自然言語コード
new program {
        Accept 2 numbers then print the sum
}

# 自然言語コードの実装
class program
        # キーワード
                Accept=0 numbers=0 then=0 print=0 the=0 sum=0

        # 実行
        func braceexpreval x
                value = x
        func getnumbers
                for x=1 to value
                        see "Enter Number ("+x+") :" give nNumber
                        aNumbers + nNumber
                next
        func getsum
                nSUm = 0
                for x in aNumbers nSum+= x next
                see "The Sum : " + nSum
        private
                value=0 aNumbers=[]

実行結果:

Enter Number (1) :3
Enter Number (2) :4
The Sum : 7

詳しくは “自然言語プログラミング” の章を参照してください。

Ring オブジェクトファイル (*.ringo) の生成と実行

この機能は、ソースコードの配布を行わずにアプリケーションを配布できるようにします。アプリケーションの配布を単純な処理により、完全なプロジェクトの単体 Ring オブジェクトファイルを取得できます (複数のソースコードファイル)。また、Ring オブジェクトファイルを使うとアプリケーションのコンパイルで、ソースファイルの読み込みにかかる処理時間が無くなり、動作速度の向上につながります。

この機能の詳細は「コマンドラインのオプション」を参照してください。

シンタックスの柔軟性と入出力、および制御構造の様々な記法

プログラマはプログラミング言語のシンタックスには神経質です。すばらしいプログラマは様々な記法で仕事をする方法を理解していますが、プログラマには各々好みの記法があります。

プログラミング言語ごとに好き嫌いの分かれる記法があります。 Ring は、あまたあるプログラミング言語の一星です。もっと優れたシンタックスを求めているプログラマのために、選択肢をご用意させていただきました。

また、これらの機能が自然言語プログラミングには最も必要です。

用例 :

言語のキーワードと演算子の変更で使う二種類のコマンドがあります。

ChangeRingOperator + plus
ChangeRingKeyword see print

Print 5 plus 5

ChangeRingOperator plus +
ChangeRingKeyword print see

入出力用の新しい記法があります (オプション扱い)。

用例:

Put "What is your name? "
Get cName
Put "Hello " + cName

用例:

Load "stdlib.ring"

Print("What is your name? ")    # 画面へメッセージを表示
cName=GetString()               # ユーザからの標準入力を取得
print("Hello #{cName}")         # hello と言おう！

制御構造用の新しい記法があります （オプション扱い）。

用例:

While True

        Put "
                Main Menu
                ---------
                (1) Say Hello
                (2) About
                (3) Exit

            " Get nOption

        Switch nOption
        Case 1
                Put "Enter your name : "
                Get name
                Put "Hello " + name + nl
        Case 2
                Put "Sample : using while loop" + nl
        Case 3
                Bye
        Else
                Put "bad option..." + nl
        End
End

用例:

Load "stdlib.ring"

While True {

        print("
                Main Menu
                ---------
                (1) Say Hello
                (2) About
                (3) Exit

                  ")

        nOption = GetString()

        switch nOption {
        case 1
                print("Enter your name : ")
                name = getstring()
                print("Hello #{name}\n")
        case 2
                print("Sample : using switch statement\n")
        case 3
                Bye
        else
                print("bad option...\n")
        }

}

この章を参照してください:

入門 - 第二形式

入門 - 第三形式

制御構造 - 第二形式 - Lua および Ruby 風の記法

制御構造 - 第三形式 - C 風の記法 (括弧の使用)

シンタックスの柔軟性

注釈

これらすべての記法は自動的かつ同時にコンパイラで使えます。例えば Put/Get および括弧の使用を許可するなど同じプロジェクトでは記法を一つだけ選択するのが良いです (記法を併用して、別の記法を作成することもできます)。

新しい関数と変更

変更:

get() 関数 : sysget() へ変更。

sort(), find() 関数 : オブジェクトのリストでも動作するようになりました。

追加:

clockspersecond()

CurrentDir()

ExeFileName()

ChDir()

ExeFolder()

varptr()

space()

nullpointer()

object2pointer()

pointer2object()

この章を参照してください:

システム関数

オブジェクト指向プログラミング (OOP)

低水準関数

Ring で記述された StdLib 関数とクラス

Ring 1.1 には Ring チームの協力により Ring で記述された StdLib ライブラリがあります。

このライブラリでは新しい関数とクラスの実用的なグループを実装しています。

用例:

Load "stdlib.ring"

Puts("Test Times()")
Times ( 3 , func { see "Hello, World!" + nl } )

用例:

Load "stdlib.ring"

Puts("Test Map()")
See Map( 1:10, func x { return x*x } )

用例:

Load "stdlib.ring"

Puts("Test Filter()")
See Filter( 1:10 , func x { if x <= 5 return true else return false ok } )

用例:

Load "stdlib.ring"

See "Testing the String Class" + nl
oString = new string("Hello, World!")
oString.println()
oString.upper().println()
oString.lower().println()
oString.left(5).println()
oString.right(6).println()

用例:

Load "stdlib.ring"

oList = new list ( [1,2,3] )
oList.Add(4)
oList.print()

用例:

Load "stdlib.ring"

oStack = new Stack
oStack.push(1)
oStack.push(2)
oStack.push(3)
see oStack.pop() + nl

用例:

Load "stdlib.ring"

oQueue = new Queue
oQueue.add(1)
oQueue.add(2)
oQueue.add(3)
see oQueue.remove() + nl

用例:

Load "stdlib.ring"

ohashtable = new hashtable
See "Test the hashtable Class Methods" + nl
ohashtable {
        Add("Egypt","Cairo")
        Add("KSA","Riyadh")
        see self["Egypt"] + nl
        see self["KSA"] + nl
        see contains("Egypt") + nl
        see contains("USA") + nl
        see index("KSA")  + NL
        print()
        delete(index("KSA"))
        see copy("*",60) + nl
        print()
}

用例:

Load "stdlib.ring"

otree = new tree
See "Test the tree Class Methods" + nl
otree {
        set("The first step")   # ルートノードの値を設定します。
        see value() + nl
        Add("one")
        Add("two")
        Add("three") {
                Add("3.1")
                Add("3.2")
                Add("3.3")
                see children
        }
        see children
        oTree.children[2] {
                Add("2.1") Add("2.2") Add("2.3") {
                        Add("2.3.1") Add("2.3.2") Add("test")
                }
        }
        oTree.children[2].children[3].children[3].set("2.3.3")
}
see copy("*",60) + nl
oTree.print()

この章を参照してください:

StdLib 関数

StdLib クラス

RingLibSDL

Ring 1.0 では Allegro ゲームプログラミング・ライブラリ (RingAllegro) でゲームを作成できるようになりました。

Ring 1.1 では LibSDL (RingLibSDL) も使用可能です。

用例:

Load "libsdl.ring"

SDL_Init(SDL_INIT_EVERYTHING)
win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN)
SDL_Delay(2000)
SDL_DestroyWindow(win)
SDL_Quit()

RingLibSDL の章を参照してください。

デモプロジェクト - 2D ゲームエンジン

最良実行性能を得るには C/C++ などでゲームエンジンを作成後にエンジン用の Ring クラスを実装します。

一般的な 2D ゲームの構造は単純明快であり、 Ring でゲームエンジンを作成しても十分高速です。

また、これは言語の概念として、オブジェクト指向プログラミング (OOP) によるオブジェクトの構築方法、多重構造の宣言型プログラミングの用法、または自然言語プログラミングによる強力なアクセス方法について学ぶための優れたデモプロジェクトです。

このプロジェクトでは最初の方法を選択します (多重構造の宣言型プログラミング)。

用例:

Load "gameengine.ring"  # ゲームエンジンへ制御権を与えます。

func main               # ゲームエンジンにより呼び出されます。

        oGame = New Game        # Game オブジェクトの作成
        {
                title = "My First Game"
                text {
                        x = 10  y=50
                        animate = false
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "game development using ring is very fun!"
                        color = rgb(0,0,0)      # 配色 = 黒色
                }
                text {
                        x = 10  y=150
                        # アニメーション部分 ======================================
                        animate = true                          # アニメーションの使用
                        direction = GE_DIRECTION_INCVERTICAL    # y の増分
                        point = 400             # y=400 になるまで継続
                        nStep = 3               # 毎回 y+= 3 を行う
                        #==========================================================
                        size = 20
                        file = "fonts/pirulen.ttf"
                        text = "welcome to the real world!"
                        color = rgb(0,0,255)    # 配色 = 青色
                }
                Sound {                                 # 音声の再生
                        file = "sound/music1.wav"       # イベントループの開始
                }
        }                                       # イベントループの開始

“デモプロジェクト - 2D ゲームエンジン”の章を参照してください。

RingSQLite

ODBC 関数 (Ring 1.0 以降)、 SQLite 関数 (Ring 1.1 以降) を実装しました。これにより、各種データベース、および MySQL に標準対応しました。

用例:

oSQLite = sqlite_init()

sqlite_open(oSQLite,"mytest.db")

sql = "CREATE TABLE COMPANY("  +
         "ID INT PRIMARY KEY     NOT NULL," +
         "NAME           TEXT    NOT NULL," +
         "AGE            INT     NOT NULL," +
         "ADDRESS        CHAR(50)," +
         "SALARY         REAL );"

sqlite_execute(oSQLite,sql)

sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  +
         "VALUES (1, 'Mahmoud', 29, 'Jeddah', 20000.00 ); " +
         "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  +
         "VALUES (2, 'Ahmed', 27, 'Jeddah', 15000.00 ); "     +
         "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
         "VALUES (3, 'Mohammed', 31, 'Egypt', 20000.00 );" +
         "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" +
         "VALUES (4, 'Ibrahim', 24, 'Egypt ', 65000.00 );"

sqlite_execute(oSQLite,sql)

aResult =  sqlite_execute(oSQLite,"select * from COMPANY")
for x in aResult
        for t in x
                see t[2] + nl
        next
next
see copy("*",50)  + nl
for x in aResult
        see x["name"] + nl
next
sqlite_close(oSQLite)

拡張機能用のコード生成器の改善

Ring へ新しいライブラリを追加するためにコード生成器 (Ring にて記述) を使用しています。

RingQt と RingAllegro (Ring 1.1 では RingLibSDL) はコード生成器で作成しました。

また、次の機能を追加しました。

構造体メンバの設定と取得 (数値とポインタ)

定数の使用

コード生成器の改善

コード生成器の章を参照してください。

新しい属性を定義するためにクラス範囲で Self.属性 の使用

新しい属性を定義するためにクラス範囲 (クラス名の後、およびメソッドの前) で Self.属性 を使えます。

class Person
        name            # グローバル変数ではない場合は、属性名を定義します。
        address
        phone

class person2
        self.name       # 必ず属性を定義してください。
        self.address
        self.phone

クラスのメソッド内における多重括弧での This.属性 の使用

メソッド内から別オブジェクトへのアクセスで多重括弧 { } を使えます。この場合、括弧内、および Self で {} でアクセスするオブジェクトを指定するときに現在のオブジェクトの有効範囲は変更されます。この場合において This.属性 および This.属性() は現在のクラスから作成されるオブジェクトへアクセスするために使えます。

詳しくはオブジェクト指向プログラミングの章を参照してください。

また RingQt (GUI) で開発した Weight History アプリケーションも併せて参照してください。

取扱説明書の増補

Ring 1.1 の取扱説明書 (800 ページ) は Ring 1.0 (2016年01月25日公開) の取扱説明書 (340 ページ) よりも改善しています。

良質な知識を理解して頂きたく言語関連などの章を多数加筆しました。

言語リファレンス

スコープの規則

よくある質問と回答集

など多岐にわたります！

Ring 1.2 の変更履歴

Ring 1.2 (2017年01月25日) の変更点と新機能です。

新機能と変更リスト

Ring 1.2 の新機能！

新しい関数

関数の改良

Ring ノートパッドの改良

RingQt の改良

RingQt 用のオブジェクトライブラリ

RingLibCurl

Call 命令の改良

NULLPointer() の代わりに NULL を使用

警告表示のオプション

品質の改善

新しい関数

PtrCmp() 関数は GUI オブジェクトなどの C ポインタ間で比較を行う新しい関数です。

PrevFileName() 関数は以前に使用していたソースファイル名を返すために追加されました。

RingVM_CFunctionsList() 関数は C で記述された関数のリストを返すために追加されました。

RingVM_FunctionsList() 関数は Ring で記述された関数のリストを返すために追加されました。

RingVM_ClassesList() 関数はクラスのリストを返すために追加されました。

RingVM_PackagesList() 関数はパッケージのリストを返すために追加されました。

RingVM_MemoryList() 関数はメモリスコープと変数のリストを返すために追加されました。

RingVM_CallList() 関数は関数の呼び出しリストのリストを返すために追加されました。

RingVM_FilesList() 関数は Ring ファイルのリストを返すために追加されました。

用例:

fp = fopen("ptrcmp.ring","r")
fp2 = fp
fp3 = fopen("ptrcmp.ring","r")

see ptrcmp(fp,fp2) + nl
see ptrcmp(fp,fp3) + nl

fclose(fp)
fclose(fp3)

実行結果:

1
0

また ‘=’ 演算子で比較することもできます。

用例:

fp = fopen("ptrcmp2.ring","r")
fp2 = fopen("ptrcmp2.ring","r")
fp3 = fp
see fp = fp2
see nl
see fp = fp3
fclose(fp)
fclose(fp2)

実行結果:

0
1

用例:

stdlib.ring にある PrevFileName() は呼び出し元にある関数のファイルが、プログラムのメインソースファイルか確認します。

Func IsMainSourceFile
        if PrevFileName() = sysargv[2]
                return true
        ok
        return false

関数の改良

find() 関数は GUI オブジェクトなどの検索に対応するために更新されました。

type() 関数 C ポインタ型を表示するために更新されました (GUI オブジェクトのクラス名など)。

Ring ノートパッドの改良

Ring ノートパッドはファイル切り替え時に行番号を復元するために、現在開いているファイルの行番号を保存します。

また Ring ノートパッドはユーザによりファイルが切り替えられたときに、ファイルの内容が変更された場合は保存するかユーザに問い合わせます。

RingQt の改良

RingQt クラスはイベントを取得するためのメソッドを実装するために更新されました (イベントが発行されるときにコード実行されます)。これは特定時間内にイベントの有効・無効化、またはイベントの情報を取得に必要なものです。

このコードの用例では、イベントを無効にしてからメソッドの呼び出し後にイベントを再度有効にします。

cEvent = oView.oListResult.getCurrentItemChangedEvent()
oView.oListResult.setCurrentItemChangedEvent("")
FindValueAction()       # メソッドを呼び出すまではイベントを無効にします。
oView.oListResult.setCurrentItemChangedEvent(cEvent)

また出力の true または false をイベント関数から設定可能にする新しいメソッドを使用する setEventOutput クラスの追加に伴い QAllEvents クラスを更新しました。

Load "guilib.ring"

MyApp = New qApp {
                win = new qWidget() {
                                setwindowtitle("Hello World")
                                setGeometry(100,100,370,250)
                                lineedit1 = new qlineedit(win) {
                                        setGeometry(10,100,350,30)
                                        setinputmask("9999;_")
                                        oFilter = new qallevents(lineedit1)
                                        oFilter.setfocusoutEvent("pMove()")
                                        installeventfilter(oFilter)
                                }
                                lineedit2 = new qlineedit(win) {
                                                setGeometry(10,150,350,30)
                                }
                                show()
                }
                exec()
}

func pMove
           win.setWindowTitle("xxxx")
           oFilter.setEventOutput(False)

RingQt 用のオブジェクトライブラリ

Ring 1.2 には RingQt アプリケーション用のオブジェクトライブラリが付属しています。ウィンドウオブジェクトへのグローバル変数の使用、およびオブジェクト名でイベントをオブジェクトへ接続するのではなく、オブジェクトライブラリは GUI オブジェクトの管理を行います。また、同一クラスから複数ウィンドウを手軽に作成するために、普遍的な API を実装しています。さらにライブラリでは、イベントが発行されたときに実行されるメソッドを手軽に設定する方法があります。同じく子またはサブウィンドウから親または呼び出し元のウィンドウを手軽に使うための自然言語インタフェースもあります。

オブジェクトライブラリは MVC デザインパターンで設計しています。

オブジェクトライブラリは RingQt へ統合されており RingQt から使えます。

用例:

load "guilib.ring"

new qApp {
        open_window( :MainWindowController )
        exec()
}

class MainWindowController from WindowsControllerParent
        oView = new MainWindowView
        func SubWindowAction
                Open_window( :SubWindowController )
                Last_Window().SetParentObject(self)

class MainWindowView from WindowsViewParent
        win = new qWidget() {
                SetWindowTitle("Main Window")
                btnSub = new qPushButton(win) {
                        setText("Sub Window")
                        setClickEvent( Method( :SubWindowAction ) )
                }
                resize(400,400)
        }

class SubWindowController from WindowsControllerParent
        oView = new SubWindowView
        func SetMainWindowTitleAction
                Parent().oView.win.SetWindowTitle("Message from the Sub Window")
                oView.win.SetWindowTitle("Click Event Done!")

class SubWindowView from WindowsViewParent
        win = new qWidget() {
                SetWindowTitle("Sub Window")
                btnMsg = new qPushButton(win) {
                        setText("Set Main Window Title")
                        setClickEvent( Method( :SetMainWindowTitleAction ) )
                }
                btnClose = new qPushButton(win) {
                        Move(200,0)
                        setText("Close")
                        setClickEvent( Method( :CloseAction ) )
                }
                resize(400,400)
        }

RingLibCurl

LibCurl ライブラリは Ring 1.0 から実装されており、 Download() および SendEmail() 関数を使えます。 Ring 1.2 では 強力なライブラリである RingLibCurl (LibCurl) 用の関数を追加しました。

用例:

load "libcurl.ring"

curl = curl_easy_init()

cPostThis = "page=4&Number1=4&Number2=5"
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/ringapp/index.ring?page=3")
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cPostThis)

curl_easy_perform(curl)

curl_easy_cleanup(curl)

Call 命令の改良

Call 命令はオブジェクトの属性からの関数呼び出しへ対応するために更新されました (これは変数に限りません)。

このコードの用例は Stars Fighter ゲームからの引用です。

cFunc = oself.keypress
call cFunc(oGame,oSelf,Key_Space)

一行で記述できます。

call oself.keypress(oGame,oSelf,Key_Space)

NULLPointer() の代わりに NULL を使用

NULLPointer() 関数の代わりに NULL を仮引数として渡せます。

このコードの用例は RingLibSDL からの引用です。

SDL_RenderCopy(SDL_ren,tex,NULLPointer(),rect)

この行のように書くことができます。

SDL_RenderCopy(SDL_ren,tex,NULL,rect)

警告表示のオプション

Ring 1.2 では Ring コンパイラに警告表示のオプション (-w) を実装しました。

用例:

load "stdlib.ring"
load "stdlib.ring"

警告表示のオプションでプログラムをコンパイルすると、ファイルの重複エラーが表示されますが、オプションを指定しない場合はエラーが非表示となります。

これは警告であり、大規模プロジェクトでは同じファイルが一回以上使用されるためです。このコードの用例がある各ファイルを開始することは普通です。 IsMainSourceFile() 関数は stdlib.ring の一部です。

load "stdlib.ring"
if IsMainSourceFile()
        // 動作検証
ok

品質の改善

Ring 1.2 では動作安定性を向上させました。日々の実務プロジェクトで Ring を利用した成果により、大量の不具合を修正しました。高速化のために SubStr() などの関数を最適化しました。取扱説明書についても、さらに改善しました。

Ring 1.3 の変更履歴

Ring 1.3 (2017年05月15日) の変更点と新機能です。

新機能と変更リスト

Ring 1.3 の新機能！

RingQt の改善

Ring ノートパッドの改善

Emacs Editor 用の Ring モード

StdLib の改善

Loop/Exit 命令の改善

新しい関数

参照による Self 返し

‘from’ キーワードの代わりに‘<’または‘:’演算子の使用

Ring のステートを共有せずに Ring を組み込む

RingZip ライブラリ

フォームデザイナー

RingQt の改善

① QPixMap クラスの別バージョンとしてオブジェクトの初期化時に (int width,int height) を扱う (QPixMap2) を追加しました。

用例:

Load "guilib.ring"
New qapp
{
        win1 =  new qwidget()
        {
                setwindowtitle("Drawing using QPixMap")
                setgeometry(100,100,500,500)
                label1 = new qlabel(win1)
                {
                        setgeometry(10,10,400,400)
                        settext("")
                }
                imageStock = new qlabel(win1)
                {
                        image = new qPixMap2(200,200)
                        color = new qcolor() {
                                setrgb(255,255,255,255)
                        }
                        pen = new qpen() {
                                setcolor(color)
                                setwidth(10)
                        }
                        new qpainter() {
                                begin(image)
                                        setpen(pen)
                                        drawline(0,0,200,200)
                                        drawline(200,0,0,200)
                                endpaint()
                        }
                        setpixmap(image)
                }
                show()
        }
        exec()
}

スクリーンショット:

② オブジェクトライブラリへ関数を実装しました。

Last_WindowID()

Open_WindowNoShow()

Open_WindowAndLink()

なお WindowViewBase クラス名は WindowsViewParent へ変更されました。

このコードの用例では Open_WindowAndLink() は SecondWindowController クラスからオブジェクトの作成を行い FirstWindowController クラスへ SecondWindow() メソッドを追加します。また SecondWindowController クラスへ FirstWindow() メソッドを追加します。

FirstWindowController クラスにある SendMessage() メソッドは SecondWindow() メソッドでオブジェクトへアクセスするために使えます。

class firstwindowController from windowsControllerParent

    oView = new firstwindowView

    func OpenSecondWindow
        Open_WindowAndLink(:SecondWindowController,self)

    func SendMessage
        if IsSecondWindow()
            SecondWindow().setMessage("Message from the first window")
        ok

    func setMessage cMessage
        oView.Label1.setText(cMessage)

③ このクラスを RingQt へ追加しました

QPixMap2

QScrollArea

QSplitter

QCompleter

QCompleter2

QCompleter3

QProcess

QMdiArea

QMdiSubWindow

QCursor

QListView

QDesktopServices

④ qt.rh には各種定数が定義されています (guilib.ring から読み込みます)

⑤ 新しいクラス名 - インデックスは 1 から開始します。

RingQt には新しいクラスが追加されています - 別バージョンのクラス名は小文字 “q” で開始されません。また GUI コントロールなど扱うときにインデックスが 1 から開始するようにメソッドを更新してあります。

ComboBox

ListWidget

TableWidget

TreeWidget

前述のクラスは guilib.ring の System.GUI パッケージに実装されています:

使用するには

load "guilib.ring"

import System.GUI

これは以前のコードに一切影響を与えません。つまり Ring の規則と整合性がある優れたコードへの第三の選択です。

また、フォームデザイナーは、クラス間で「インデックスを 0 から開始」、あるいは「インデックスを 1 から開始」を選べるようなりました。

用例 (フォームデザイナーを使用)

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/indexstart/indexstartView.ring

https://github.com/ring-lang/ring/blob/master/samples/UsingFormDesigner/indexstart/indexstartController.ring

Ring ノートパッドの改善

① QTextEdit の代わりに QPlainTextEdit を使用

② ソースコード各行の行番号を表示

スクリーンショット:

③ Ring 関数名、クラス、および開いているファイル語句の自動補完

④ 関数とメソッドのリスト

⑤ 実行結果のウィンドウ

⑥ クラスのリスト

⑦ 現在のスタイルを変更

Emacs Editor 用の Ring モード

Ring 1.3 では Emacs Editor 用の Ring モードがあります。

スクリーンショット:

StdLib の改善

新規関数を追加しました。

SplitMany()

JustFilePath()

JustFileName()

Loop|Exit 命令の改善

Loop|Exit 命令は、命令 (数値に限りません) の後に式を受け入れるために更新しました。

文法:

Loop|Exit [数値]

変更後:

Loop|Exit [式]

用例:

XLoop = 2       # ループの外側
YLoop = 1       # 最初のループの内側
for x = 1 to 10
        for y = 1 to 10
                see "x=" + x + " y=" + y + nl
                if x = 3 and y = 5
                        exit XLoop
                ok
        next
next

新しい関数

PackageName() 関数

Swap() 関数

用例:

aList = [:one,:two,:four,:three]
see aList
see copy("*",50) + nl
swap(aList,3,4)
see aList

実行結果:

one
two
four
three
**************************************************
one
two
three
four

参照による Self 返し

この公開版では、クラスのメソッドで Self 返しを使うとオブジェクトを返します。

用例:

mylist = [new mytest() {
        see self
        x = 20
        see self
}]

see mylist

class mytest
        x = 15
        func init
                return self     # 参照返し

実行結果:

x: 15.000000
x: 20.000000
x: 20.000000

‘from’キーワードの代わりに‘<’または‘:’演算子の使用

この公開版では‘from’キーワードの代わりに‘<’または‘:’演算子を使えます。

文法①:

class Cat from Animal

文法②:

class Cat < Animal

文法③:

class Cat : Animal

Ring のステートを共有せずに Ring を組み込む

Ring 1.0 より Ring を C へ組み込むための関数は実装されていました。また eval() 関数で Ring プログラムにある Ring のコードを実行できます。この公開版では、ステートを共有せずに Ring を Ring プログラムへ組み込むための関数があります。

利点:

① Ring プログラムとアプリケーションの統合動作環境下で競合が発生しません。

② Ring のコードを安全な環境で実行して、トレースを行えます。

用例:

pState = ring_state_init()
ring_state_runcode(pState,"See 'Hello, World!'+nl")
ring_state_runcode(pState,"x = 10")

pState2 = ring_state_init()
ring_state_runcode(pState2,"See 'Hello, World!'+nl")
ring_state_runcode(pState2,"x = 20")

ring_state_runcode(pState,"see x +nl")
ring_state_runcode(pState2,"see x +nl")

v1 = ring_state_findvar(pState,"x")
v2 = ring_state_findvar(pState2,"x")

see v1[3] + nl
see V2[3] + nl

ring_state_delete(pState)
ring_state_delete(pState2)

実行結果:

Hello, World!
Hello, World!
10
20
10
20

RingZip ライブラリ

Ring 1.3 には *.zip ファイルの作成、変更、および展開用の RingZip ライブラリがあります。

用例①: 四本のファイルがある myfile.zip を作成します。

load "ziplib.ring"
oZip = zip_openfile("myfile.zip",'w')
zip_addfile(oZip,"test.c")
zip_addfile(oZip,"zip.c")
zip_addfile(oZip,"zip.h")
zip_addfile(oZip,"miniz.h")
zip_close(oZip)

用例②: myfile.zip を myfolder フォルダへ展開します。

load "ziplib.ring"
zip_extract_allfiles("myfile.zip","myfolder")

用例③: myfile.zip にあるファイル名のリストを表示します。

load "ziplib.ring"
oZip = zip_openfile("myfile.zip",'r')
for x=1 to zip_filescount(oZip)
       see zip_getfilenamebyindex(oZip,x) + nl
next
zip_close(oZip)

用例④: クラスの代わりに関数を使用します。

load "ziplib.ring"

new Zip {
        SetFileName("myfile.zip")
        Open("w")
        AddFile("test.c")
        AddFile("zip.c")
        AddFile("zip.h")
        AddFile("miniz.h")
        Close()
}

フォームデザイナー

Ring 1.3 では GUI アプリケーション・フォームの手軽な設計、および Ring ソースコードの生成を行うためのフォームデザイナーが付属しています。

オブジェクト指向プログラミングとメタプログラミングによる約 8000 行の Ring コードを記述しました。

Ring ノートパッドからフォームデザイナーを実行できます。

また、別のウィンドウからフォームデザイナーを実行することもできます。

Ring 1.4 の変更履歴

Ring 1.4 (2017年06月29日) の新機能と変更点です。

新機能と変更リスト

Ring 1.4 の新機能！

変更: 基本拡張機能を Ring VM から分離

自然言語ライブラリ

Ring ノートパッドへ新しいスタイルを追加

RingREPL

数値とバイト間の変換

StdLib の改良

WebLib の改良

RingQt の改良

Qt クラスコンバーター

変更: 基本拡張機能を Ring VM から分離

Ring 1.4 では、このライブラリが Ring VM から分離されました。

RingODBC

RingMySQL

RingSQLite

RingOpenSSL

RingInternet

下記のライブラリは Load 命令で使用可能になります。

load "odbclib.ring"
# ODBC 関数

load "mysqllib.ring"
# MySQL 関数

load "sqlitelib.ring"
# SQLite 関数

load "openssllib.ring"
# OpenSSL 関数  (ハッシュとセキュリティ関数)

load "internetlib.ring"
# インターネット関数 ( Download() と SendEmail() )

上記のライブラリを全て使う場合、 stdlib.ring を指定することにより odbclib.ring, mysqllib.ring, sqlitelib.ring, opensslib.ring そして internetlib.ring ファイルを読み込みます。

load "stdlib.ring"

自然言語ライブラリ

Ring 1.4 では命令グループがある言語を手軽に定義するために、自然言語ライブラリがあります。

例えば、テキストファイル program.txt に自然言語コードを記述します。

ファイル: program.txt

Welcome to the Ring programming language!
What you are reading now is not comments, I swear!

After many years of programming I decided to think different about
programming and solve the problems in a better way.

We are writing commands or code and the Ring language is reading
it to understand us! Sure, What you are seeing now is
just ***part of the code - Not the Complete Program***
You have to write little things before and after this
part to be able to run it!

It is the natural part of our code where we can write in English,
Arabic or any Natural Language Then we will tell the computer
through the Ring language what must happens! in a way that we can scale
for large frameworks and programs.

Just imagine what will happens to the world of programming once
we create many powerful frameworks using the Ring language that
uses this way (Natural Programming).

For example When we say Hello to the Machine, It can reply! and when we
say count from 1 to 5 it will understand us, Also if
we said count from 5 to 1 it will
understand us too! You can see the Output window!

This Goal is not new, but the Ring language comes
with an innovative solution to this problem.

実行結果:

Hello, Sir!

The Numbers!

1

2

3

4

5

I will count Again!

5

4

3

2

1

自然言語コードを実行するには、 start.ring を実行します。

start.ring には言語と命令が定義されています。

ファイル: start.ring

load "stdlib.ring"
load "naturallib.ring"

New NaturalLanguage {
        SetLanguageName(:MyLanguage)
        SetCommandsPath(CurrentDir()+"/../command")
        SetPackageName("MyLanguage.Natural")
        UseCommand(:Hello)
        UseCommand(:Count)
        RunFile("program.txt")
}

これで MyLanguage 言語名は定義済みになり、言語命令用のフォルダが指定されます。

命令ごとに MyLanguage.Natural パッケージへ所属するクラスを定義します。

Hello および Count を命令として二つ定義します。

したがって、命令を定義するために CurrentDir()+”/../command” フォルダには二つのファイルが必要です。

ファイル: hello.ring

DefineNaturalCommand.SyntaxIsKeyword([
        :Package = "MyLanguage.Natural",
        :Keyword = :hello,
        :Function = func {
                See  "Hello, Sir!" + nl + nl
        }
])

ファイル: count.ring

DefineNaturalCommand.SyntaxIsKeywordNumberNumber([
        :Package = "MyLanguage.Natural",
        :Keyword = :count,
        :Function = func {
                if not isattribute(self,:count_times) {
                        AddAttribute(self,:count_times)
                        Count_Times = 0
                }
                if Expr(1) > Expr(2) {
                        nStep = -1
                else
                        nStep = 1
                }
                if Count_Times = 0 {
                        see nl+"The Numbers!" + nl
                        Count_Times++
                else
                        see nl + "I will count Again!" +nl
                }
                for x = Expr(1) to Expr(2) step nStep {
                        see nl+x+nl
                }
                CommandReturn(fabs(Expr(1)-Expr(2))+1)
        }
])

Ring ノートパッドへ新しいスタイルを追加

Ring ノートパッドへ表示 - スタイル - モダンスタイルの選択を追加しました。

スクリーンショット:

RingREPL

application フォルダには、 RingREPL (Read-Eval-Print-Loop) があります。

Ring ノートパッド (メニューバー - ツール) からも実行できます。

スクリーンショット:

数値とバイト間の変換

Ring 1.4 では、数値とバイト間の変換をするために、下記の関数があります。

Int2Bytes()

Float2Bytes()

Double2Bytes()

Bytes2Int()

Bytes2Float()

Bytes2Double()

用例:

see "Test Int2Bytes() and Bytes2Int() - Value : 77" + nl
r = Int2Bytes(77)
see "Int Size : " + len(r) + nl
see r + nl
see Bytes2Int(r) + nl
see "Test Float2Bytes() and Bytes2Float() - Value 77.12" + nl
r = Float2Bytes(77.12)
see "Float Size : " + len(r) + nl
see r + nl
see Bytes2Float(r) + nl
see "Test Double2Bytes() and Bytes2Double() - Value 9999977.12345" + nl
r = Double2Bytes(9999977.12345)
see "Double Size : " + len(r) + nl
see r + nl
decimals(5)
see Bytes2Double(r) + nl

StdLib の改良

StdLib に関数を実装するために FSize() 関数を更新しました。

print() 関数でローカル変数を受け入れられるように更新しました。

load "stdlib.ring"

func main
        print("Enter your name : ")     ;
        Name = getString()              ;
        print( "Hello : #{Name} ")      ;
        return                          ;

WebLib の改良

WebLib を更新しました

エラーメッセージの実装

Error (WebLib-1) : REQUEST_METHOD is empty ! - Run this script from the browser

Error (DataLib-1) : Can't connect to the database server!

Template() 関数の改良 - 第二仮引数でオブジェクトの代わりに NULL を受け入れることができるようになりました。

html(template("main.rhtml",NULL))

“target”属性への対応のために Form クラスを更新

BootStrapWebPage()
{
        Title = "The Ring Programming Language"
        html(template("main.rhtml",NULL))
        div {
                classname = :container
                div
                {
                        id = "div3"
                        color = "black"
                        backgroundcolor = "white"
                        width = "100%"
                        form
                        {
                                method = "POST"
                                Action = website
                                Target = "codeoutput"
                                input { type="hidden" name="page" value=1 }
                                Table
                                {
                                        style = stylewidth("100%") +
                                                stylegradient(3)
                                        TR
                                        {

                                                TD { align="center"
                                                        WIDTH="10%"
                                                         text("Code :")
                                                }
                                                TD {
                                                        html(`
                                                        <textarea name = "cCode"
                                                        rows="5"
                                                        style="width : 100%; ">
                                                        See "Hello, World!" + nl
                                                        </textarea>`)
                                                }
                                        }
                                }
                                Input { type = "submit"
                                        classname="btn btn-primary btn-block"
                                                value = "Execute" }
                                Table
                                {
                                        style = stylewidth("100%") +
                                                stylegradient(34)
                                        TR
                                        {

                                                TD { align="center"
                                                        WIDTH="10%"
                                                        text("Output :")
                                                }
                                                TD {
                                                html(`
                                                <iframe name="codeoutput"
                                                width="100%"
                                                style="background-color:white;">
                                                </iframe>`)
                                                }
                                        }
                                }

                        }
                }

        }
        html(template("footer.rhtml",NULL))
}

RingQt の改良

この関数を RingQt へ追加

SetDialogIcon(cIconFile)

MsgInfo(cTitle,cMessage)

ConfirmMsg(cTitle,cMessage)

InputBox(cTitle,cMessage)

InputBoxInt(cTitle,cMessage)

InputBoxNum(cTitle,cMessage)

InputBoxPass(cTitle,cMessage)

このクラスを RingQt へ追加

QToolButton

QSerialPort

QSerialPortInfo

Qt クラスコンバーター

Ring 1.4 は Qt クラスを RingQt への移植するための補助ツールがあります。

ring/extensions/ringqt/converter にあります。

オンライン : https://github.com/ring-lang/ring/tree/master/extensions/ringqt/converter

スクリーンショット:

Ring 1.4.1 の変更履歴

Ring 1.4.1 (2017年07月11日) の新機能と変更点です。

ソースコードからのビルドに使用するスクリプトの改良

Ring ノートパッドの Modern Style の配色を改善

StdLib の改良

RingQt の改良

新しいサンプル : Sixteen Puzzle

ソースコードからのビルドで使用するスクリプトの更新

Windows, Ubuntu Linux, Linux Mint および macOS で動作確認を行いました。

スクリーンショット:

Ring ノートパッドでは - モダンスタイルの配色を更新

スクリーンショット:

StdLib オブジェクトライブラリへ関数を実装しました。

TrimLeft()

TrimRight()

TrimAll()

EpochTime()

この関数でウィンドウの前面にダイアログを表示できるようなりました。

SetDialogIcon(cIconFile)

MsgInfo(cTitle,cMessage)

ConfirmMsg(cTitle,cMessage)

InputBox(cTitle,cMessage)

InputBoxInt(cTitle,cMessage)

InputBoxNum(cTitle,cMessage)

InputBoxPass(cTitle,cMessage)

Applications フォルダへ Sixteen Puzzle を追加しました。

スクリーンショット:

Ring 1.5 の変更履歴

Ring 1.5 (2017年08月21日) の新機能と変更点です。

新機能と変更リスト

Ring 1.5 の新機能！

Video-Music-Player アプリケーション

Windows StartUp Manager アプリケーション

Calculator アプリケーション

Ring ノートパッドの改善

StdLib の改善

WebLib の改善

RingQt の改善

オブジェクトライブラリの改善

RingFreeGLUT 拡張機能

RingOpenGL 拡張機能

拡張機能用のコード生成器の改善

拡張機能用のドキュメント生成器の改善

Ring 仮想計算機 - トレース関数

トレースライブラリとインタラクティブデバッガ

より柔軟性のあるシンタックス

型ヒントライブラリ

品質の改善

Video-Music-Player アプリケーション

Video-Music-Player アプリケーションを Applications フォルダへ追加しました。

スクリーンショット:

Windows StartUp Manager アプリケーション

Windows StartUp Manager アプリケーション

URL : https://github.com/ring-lang/WinStartupManager

スクリーンショット:

Calculator アプリケーション

Calculator アプリケーションを Applications フォルダへ追加しました。

スクリーンショット:

Ring ノートパッドの改善

① Ring ノートパッドは新しいスタイル、およびメインファイルツールバーを搭載しました。

メインファイルツールバーの考えは、プロジェクトに複数のソースコードのファイルがある場合にプロジェクトのメインファイルを決定することです。

この機能を使うとプロジェクトでほかのファイルを開いているときに、プロジェクトを実行するためにメインファイルを切り替えることなくプロジェクト (メインファイル) を実行できます。

この機能を使うには、プロジェクトのメインファイルを開きます。

現在のソースコードファイルをメインファイルとして設定するには Ctrl+Shift+M を押してください。

プロジェクトで別のソースコードファイルを開いて修正します。

プロジェクト (メインファイル) を実行したいときは Ctrl+Shift+F5 (GUI) または Ctrl+Shift+D (コンソール) を押してください。

スクリーンショット:

② 改行の正確な表示、および “Clear” ボタンを実装するために実行結果ウィンドウを更新しました。

スクリーンショット:

③ バックグラウンド処理で関数、クラスのリストを準備している間に、大規模ファイルをすばやく開いて切り替えることができるようにするために Ring ノートパッドを更新しました。

スクリーンショット:

StdLib の改善

新しい関数

Print2Str()

ListAllFiles()

SystemCmd()

① 新しい関数 Print2Str() を StdLib へ追加しました。

用例:

load "stdlib.ring"

world = "World!"
mystring = print2str("Hello, #{world} \nIn Year \n#{2000+17} \n")

see mystring + nl

実行結果:

Hello, World!
In Year
2017

② 新しい関数 ListAllFiles() を StdLib へ追加しました。

この関数を使うとフォルダにあるファイルのグループ、およびそのサブフォルダを手軽に処理できます。

用例:

load "stdlib.ring"
aList = ListAllFiles("c:/ring/ringlibs","ring") # *.ring のみ
aList = sort(aList)
see aList

用例:

load "stdlib.ring"
see listallfiles("b:/ring/ringlibs/weblib","") # 全ファイル

③ 新しい関数 SystemCmd() を StdLib へ追加しました。

この関数は System() 関数と同じくシステムコマンドを実行できますが、実行結果は文字列で返されます。

用例:

cYou = SystemCmd("whoami")
See "SystemCmd: whoami ====="+ nl + cYou +nl

実行結果:

SystemCmd: whoami =====
desktop-umberto\umberto

WebLib の改善

HTMLPage クラスを搭載するために WebLib を更新しました。

このクラスは標準出力を経由せずに HTML ドキュメントを作成します。

ウェブアプリケーションだけで WebLib を使うときの代用になります。

また、コンソール、 GUI、モバイル用のアプリケーションでも使えます。

用例:

load "stdlib.ring"
load "weblib.ring"

import System.Web

func main

        mypage = new HtmlPage {
                h1 { text("Customers Report") }
                Table
                {
                          style = stylewidth("100%") + stylegradient(4)
                          TR
                          {
                                TD { WIDTH="10%" text("Customers Count : " )  }
                                TD { text (100) }
                          }
                }

                Table
                {
                          style = stylewidth("100%") + stylegradient(26)
                          TR
                          {
                                style = stylewidth("100%") + stylegradient(24)
                                TD { text("Name " )  }
                                TD { text("Age" ) }
                                TD { text("Country" ) }
                                TD { text("Job" ) }
                                TD { text("Company" ) }
                          }
                          for x =  1 to 100
                                TR
                                {
                                        TD { text("Test" )  }
                                        TD { text("30" ) }
                                        TD { text("Egypt" ) }
                                        TD { text("Sales" ) }
                                        TD { text("Future" ) }
                                }
                          next
                }

        }

        write("report.html",mypage.output())

このクラスにより WebLib と GUILib で手軽にレポートを作成できます。

用例:

load "stdlib.ring"
load "weblib.ring"
load "guilib.ring"

import System.Web
import System.GUI

new qApp {
        open_window(:CustomersReportController)
        exec()
}

class CustomersReportController

        oView = new CustomersReportView

        func Start
                CreateReport()

        func CreateReport
                mypage = new HtmlPage {
                        h1 { text("Customers Report") }
                        Table
                        {
                                style = stylewidth("100%") + stylegradient(4)
                                TR
                                {
                                        TD { WIDTH="10%"
                                                text("Customers Count : " )  }
                                        TD { text (100) }
                                }
                        }
                        Table
                        {
                                style = stylewidth("100%") + stylegradient(26)
                                TR
                                {
                                        style = stylewidth("100%") +
                                                stylegradient(24)
                                        TD { text("Name " )  }
                                        TD { text("Age" ) }
                                        TD { text("Country" ) }
                                        TD { text("Job" ) }
                                        TD { text("Company" ) }
                                }
                                for x =  1 to 100
                                        TR
                                        {
                                                TD { text("Test" )  }
                                                TD { text("30" ) }
                                                TD { text("Egypt" ) }
                                                TD { text("Sales" ) }
                                                TD { text("Future" ) }
                                        }
                                next
                        }
                }
                write("report.html",mypage.output())

        func PrintEvent
                printer1 = new qPrinter(0) {
                        setoutputformat(1)
                        setoutputfilename("report.pdf")
                }
                oView {
                        web.print(printer1)
                        web.show()
                }
                system ("report.pdf")

class CustomersReportView

                win = new window() {
                                setwindowtitle("Report Window")
                                setgeometry(100,100,500,500)
                                web = new webview(win) {
                                        setgeometry(100,100,1000,500)
                                        loadpage(new qurl("file:///"+
                                        currentdir()+"/report.html"))
                                }
                                new pushbutton(win) {
                                                setGeometry(100,20,100,30)
                                                settext("Print")
                                                setclickevent(Method(:PrintEvent))
                                }
                                showMaximized()
                        }

スクリーンショット:

RingQt の改善

新しいクラスを RingQt へ追加しました:

QStringRef

QMutex

QMutexLocker

QBuffer

QBluetoothAddress

QBluetoothDeviceDiscoveryAgent

QBluetoothDeviceInfo

QBluetoothHostInfo

QBluetoothLocalDevice

QBluetoothServer

QBluetoothServiceDiscoveryAgent

QBluetoothServiceInfo

QBluetoothSocket

QBluetoothTransferManager

QBluetoothTransferReply

QBluetoothTransferRequest

QBluetoothUuid

用例:

### ウェブサイト - vpic.nhtsa.dot.gov - へ VIN (Vehicle Id Number : 車両識別番号) を提出します。
### 返された XML データを解析します。
### 車両情報の結果を表示します

load "libcurl.ring"
load "guilib.ring"
load "stdlib.ring"

curl = curl_easy_init()

# request = "3G1JC5248YS251015?format=xml"  ### VIN - シボレー
  request = "3GYFK62847G247323?format=xml"  ### VIN - キャデラック

call_type   = "decodevinvalues/"
url         = "https://vpic.nhtsa.dot.gov/api/vehicles/"
url_request = url + call_type + request

        See "URL Request: "+ url_request +nl

curl_easy_setopt(curl, curlopt_url, url_request)
response = curl_easy_perform_silent(curl);

        See nl +"Response Raw: "+ response +nl +nl

curl_easy_cleanup(curl)

xml = new qxmlstreamreader()
xml.adddata_2(response)

x = new qstringref()
while not xml.atend()
           if xml.error()
                           see xml.errorstring() see nl
                           exit loop
           ok

           x = xml.text()
           if not x.length() = 0
                           see "Length: " see x.length() +" --- "
                           see "Value: " see x.tostring() see nl
           ok

           xml.readnext()
end

get x

###------------------------------------------
### 実行結果:
#
# ==>Value: 115
# ==>Value: Results returned successfully
# ==>Value: VIN(s): 3G1JC5248YS251015
# ==>Value: 3G1JC5248YS251015
# ==>Value: Sedan/Saloon
# ==>Value: 4
# ==>Value: 2200.0
# ==>Value: 134.25223700841
# ==>Value: 2.2
# ==>Value: 4
# ==>Value: LN2
# ==>Value: CHEVROLET
# ==>Value: GENERAL MOTORS LLC
# ==>Value: Cavalier
# ==>Value: 2000
# ==>Value: Ramos Arzipe
# ==>Value: PASSENGER CAR
# ==>Value: 4
# ==>Value: In-Line
# ==>Value: 1st Row (Driver & Passenger)
# ==>Value: Sequential Fuel Injection (SFI)
# ==>Value: Mexico
# ==>Value: NA
# ==>Value: Manual
# ==>Value: Body Type: Sedan, 4-6 Window, Notchback (GM codes: 19, 69)
# ==>Value:  Name Plate: Chevrolet, Pontiac
# ==>Value: 0 - VIN decoded clean. Check Digit (9th position) is correct
# ==>Value: LAN
# ==>Value: 984
#
###-----------------------------------------

オブジェクトライブラリの改善

オブジェクトライブラリに Open_WindowInPackages() 関数を追加しました。

Open_WindowInPackages() 関数は Open_Window() と同じですが、ウィンドウを開く前にインポートを行うパッケージの追加リストを決定します。

文法:

Open_WindowInPackages(cClassName,aPackagesList)

用例:

この用例はフォームデザイナーのソースコードから引用したものです。 open_windowInPackages() 関数でウィンドウフラグのウィンドウを開きます。

クラス名 “WindowFlagsController” とパッケージ名を決定します。

ウィンドウフラグのウィンドウでは FormDesigner および System.GUI パッケージを使用しています。

open_windowInPackages(:WindowFlagsController,[
        "formdesigner",
        "System.GUI"
])

RingFreeGLUT 拡張機能

Ring 1.5 には FreeGLUT ライブラリへ対応するために RingFreeGLUT 拡張機能があります。

用例:

/*
        このサンプルは C チュートリアルを元にしています。
        出典元 : http://www.lighthouse3d.com/tutorials/glut-tutorial/
*/

load "freeglut.ring"
load "opengl21lib.ring"

// カメラ方向の回転角度
angle = 0.0

// 実際のベクトルはカメラ方向を表しています。
lx=0.0 lz=-1.0

// カメラの XZ 位置
x=0.0  z=5.0

// キーの状態
// キーを押していない時の変数は 0 です。
deltaAngle = 0.0
deltaMove = 0
xOrigin = -1

// メニューを定義するための定数
C_RED  = 1
C_GREEN = 2
C_BLUE = 3
C_ORANGE = 4

C_FILL = 5
C_LINE = 6

// ポップアップメニューの定義
fillMenu=NULL
fontMenu=NULL
mainMenu=NULL
colorMenu=NULL

// 鼻の配色
red = 1.0
blue=0.5
green=0.5

// 雪だるまの大きさ
scale = 1.0

// メニューの状態
menuFlag = 0

// デフォルトのフォント
font = GLUT_BITMAP_TIMES_ROMAN_24

C_INT_GLUT_BITMAP_8_BY_13 = 7
C_INT_GLUT_BITMAP_9_BY_15 = 8
C_INT_GLUT_BITMAP_TIMES_ROMAN_10  = 9
C_INT_GLUT_BITMAP_TIMES_ROMAN_24  = 10
C_INT_GLUT_BITMAP_HELVETICA_10  = 11
C_INT_GLUT_BITMAP_HELVETICA_12  = 12
C_INT_GLUT_BITMAP_HELVETICA_18  = 13

// ウィンドウの幅と高さ
h = 0
w = 0

// 一秒あたりのフレーム数を計算するための変数
frame=0
time=0
timebase=0
s = ""

func changeSize
        w = glutEventWidth()
        h = glutEventHeight()

        // ウィンドウの大きさが小さすぎる場合に、ゼロ除算エラーになるのを防ぎます。
        // (幅 0 のウィンドウは作成できません)
        if h = 0
                h = 1
        ok

        ratio =  w * 1.0 / h

        // 投射行列の使用
        glMatrixMode(GL_PROJECTION)

        // 行列のリセット
        glLoadIdentity()

        // ウィンドウ全体のビューポートを設定します。
        glViewport(0, 0, w, h)

        // 正しい遠近法の設定。
        gluPerspective(45.0, ratio, 0.1, 100.0)

        // Modelview の復帰
        glMatrixMode(GL_MODELVIEW)

func drawSnowMan

        glScalef(scale, scale, scale)
        glColor3f(1.0, 1.0, 1.0)

// 体の描画
        glTranslatef(0.0 ,0.75, 0.0)
        glutSolidSphere(0.75,20,20)

// 頭の描画
        glTranslatef(0.0, 1.0, 0.0)
        glutSolidSphere(0.25,20,20)

// 目の描画
        glPushMatrix()
        glColor3f(0.0,0.0,0.0)
        glTranslatef(0.05, 0.10, 0.18)
        glutSolidSphere(0.05,10,10)
        glTranslatef(-0.1, 0.0, 0.0)
        glutSolidSphere(0.05,10,10)
        glPopMatrix()

// 鼻の描画
        glColor3f(red, green, blue)
        glRotatef(0.0,1.0, 0.0, 0.0)
        glutSolidCone(0.08,0.5,10,2)

        glColor3f(1.0, 1.0, 1.0)

func renderBitmapString x,y,z,font,string
        glRasterPos3f(x, y,z)
        for c in string
                glutBitmapCharacter(font,ascii(c))
        next

func renderStrokeFontString x,y,z,font,string
        glPushMatrix()
        glTranslatef(x, y,z)
        glScalef(0.002, 0.002, 0.002)
        for c in string
                glutStrokeCharacter(font, Ascii(c));
        next
        glPopMatrix()

func restorePerspectiveProjection

        glMatrixMode(GL_PROJECTION)
        // 以前の投射行列へ復帰
        glPopMatrix()

        // modelview モードへ復帰
        glMatrixMode(GL_MODELVIEW)

func setOrthographicProjection

        // 投射モードの切り替え
        glMatrixMode(GL_PROJECTION)

        // 透視図の設定を有する
        // 以前の行列を保存します。
        glPushMatrix()

        // 行列のリセット
        glLoadIdentity()

        // 2D 正投射の設定
        gluOrtho2D(0, w, h, 0)

        // modelview モードへ復帰切り替え
        glMatrixMode(GL_MODELVIEW)

func computePos deltaMove

        x += deltaMove * lx * 0.1
        z += deltaMove * lz * 0.1

func renderScene

        if  deltaMove
                computePos(deltaMove)
        ok

        // 配色と深度バッファの消去
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        // 変換のリセット
        glLoadIdentity()

        // カメラの設定
        gluLookAt(      x, 1.0, z,
                        x+lx, 1.0,  z+lz,
                        0.0, 1.0,  0.0)

        // 地面の描画

        glColor3f(0.9, 0.9, 0.9)
        glBegin(GL_QUADS)
                glVertex3f(-100.0, 0.0, -100.0)
                glVertex3f(-100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0,  100.0)
                glVertex3f( 100.0, 0.0, -100.0)
        glEnd()

// 9 体の雪だるまを描画
        for i = -3 to -1
                for j = -3 to -1
                        glPushMatrix()
                        glTranslatef(i*10.0, 0.0, j * 10.0)
                        drawSnowMan()
                        number = (i+3)*3+(j+3)
                        renderBitmapString(0.0, 0.5, 0.0,font ,""+number)
                        glPopMatrix()
                next
        next

        // 一秒あたりのフレーム数を計算するためのコード
        frame++

        time=glutGet(GLUT_ELAPSED_TIME)
        if time - timebase > 1000
                s = "RingFreeGLUT - FPS: " + (frame*1000.0/(time-timebase))
                timebase = time
                frame = 0
        ok

        // ビットマップフォントで文字列 (fps) を表示するためのコード
        setOrthographicProjection()

        glPushMatrix()
        glLoadIdentity()
        renderBitmapString(5,30,0,GLUT_BITMAP_HELVETICA_18,s)
        glPopMatrix()

        restorePerspectiveProjection()

        glutSwapBuffers()

// -----------------------------------
//             キーボード
// -----------------------------------

func processNormalKeys
        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on 27
                        glutDestroyMenu(mainMenu)
                        glutDestroyMenu(fillMenu)
                        glutDestroyMenu(colorMenu)
                        glutDestroyMenu(fontMenu)
                        Shutdown()
        off

func pressKey

        key = glutEventKey()
        xx = glutEventX()
        yy = glutEventY()

        switch key
                on GLUT_KEY_UP
                         deltaMove = 0.5
                on GLUT_KEY_DOWN
                        deltaMove = -0.5
        off

func releaseKey

        key = glutEventKey()

        switch key
                on GLUT_KEY_UP
                        deltaMove = 0
                on GLUT_KEY_DOWN
                        deltaMove = 0
        off

// -----------------------------------
//             マウス
// -----------------------------------

func mouseMove
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ true になります。
        if xOrigin >= 0

                // deltaAngle の更新
                deltaAngle = (xx - xOrigin) * 0.001

                // カメラの方向を更新
                lx = sin(angle + deltaAngle)
                lz = -cos(angle + deltaAngle)
        ok

func mouseButton

        button = glutEventButton()
        state = glutEventState()
        xx = glutEventX()
        yy = glutEventY()

        // これは左ボタンを押したときのみ true になります。
        if button = GLUT_LEFT_BUTTON
                // ボタンを離したとき
                if state = GLUT_UP
                        angle += deltaAngle
                        xOrigin = -1
                else
                        // state = GLUT_DOWN
                        xOrigin = xx
                ok
        ok

// -----------------------------------
//             メニュー
// -----------------------------------

func processMenuStatus

        status = glutEventStatus()

        if status = GLUT_MENU_IN_USE
                menuFlag = 1
        else
                menuFlag = 0
        ok

func processMainMenu

        // ここにはなにもありません。
        // 動作は全てサブメニューから行います。

func processFillMenu

        option = glutEventValue()

        switch option

                on C_FILL
                        glPolygonMode(GL_FRONT, GL_FILL)
                on C_LINE
                         glPolygonMode(GL_FRONT, GL_LINE)
        off

func processFontMenu

        option = glutEventValue()

        switch (option) {
                on C_INT_GLUT_BITMAP_8_BY_13
                        font = GLUT_BITMAP_8_BY_13
                on C_INT_GLUT_BITMAP_9_BY_15
                        font = GLUT_BITMAP_9_BY_15
                on C_INT_GLUT_BITMAP_TIMES_ROMAN_10
                        font = GLUT_BITMAP_TIMES_ROMAN_10
                on C_INT_GLUT_BITMAP_TIMES_ROMAN_24
                        font = GLUT_BITMAP_TIMES_ROMAN_24
                on C_INT_GLUT_BITMAP_HELVETICA_10
                        font = GLUT_BITMAP_HELVETICA_10
                on C_INT_GLUT_BITMAP_HELVETICA_12
                        font = GLUT_BITMAP_HELVETICA_12
                on C_INT_GLUT_BITMAP_HELVETICA_18
                        font = GLUT_BITMAP_HELVETICA_18
        off

func processColorMenu

        option = glutEventValue()

        switch option
                on C_RED
                        red = 1.0
                        green = 0.0
                        blue = 0.0
                on C_GREEN
                        red = 0.0
                        green = 1.0
                        blue = 0.0
                on C_BLUE
                        red = 0.0
                        green = 0.0
                        blue = 1.0
                on C_ORANGE
                        red = 1.0
                        green = 0.5
                        blue = 0.5
        off

func createPopupMenus

        fontMenu = glutCreateMenu(:processFontMenu)

        glutAddMenuEntry("BITMAP_8_BY_13 ",C_INT_GLUT_BITMAP_8_BY_13 )
        glutAddMenuEntry("BITMAP_9_BY_15",C_INT_GLUT_BITMAP_9_BY_15 )
        glutAddMenuEntry("BITMAP_TIMES_ROMAN_10 ",C_INT_GLUT_BITMAP_TIMES_ROMAN_10  )
        glutAddMenuEntry("BITMAP_TIMES_ROMAN_24",C_INT_GLUT_BITMAP_TIMES_ROMAN_24  )
        glutAddMenuEntry("BITMAP_HELVETICA_10 ",C_INT_GLUT_BITMAP_HELVETICA_10  )
        glutAddMenuEntry("BITMAP_HELVETICA_12",C_INT_GLUT_BITMAP_HELVETICA_12  )
        glutAddMenuEntry("BITMAP_HELVETICA_18",C_INT_GLUT_BITMAP_HELVETICA_18  )

        fillMenu = glutCreateMenu(:processFillMenu)

        glutAddMenuEntry("Fill",C_FILL)
        glutAddMenuEntry("Line",C_LINE)

        colorMenu = glutCreateMenu(:processColorMenu)
        glutAddMenuEntry("Red",C_RED);
        glutAddMenuEntry("Blue",C_BLUE);
        glutAddMenuEntry("Green",C_GREEN);
        glutAddMenuEntry("Orange",C_ORANGE);

        mainMenu = glutCreateMenu(:processMainMenu)

        glutAddSubMenu("Polygon Mode", fillMenu)
        glutAddSubMenu("Color", colorMenu)
        glutAddSubMenu("Font",fontMenu)
         // 右ボタンでメニューへ接続
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        // これでアクティブなメニューか検知できるようにします。
        glutMenuStatusFunc(:processMenuStatus)

// -----------------------------------
//             メイン
// -----------------------------------

func main

        // GLUT の初期化とウィンドウの作成
        glutInit()
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA)
        glutInitWindowPosition(100,100)
        glutInitWindowSize(320,320)
        glutCreateWindow("RingFreeGLUT - Test - 9 SnowMan")

        // コールバックの登録
        glutDisplayFunc(:renderScene)
        glutReshapeFunc(:changeSize)
        glutIdleFunc(:renderScene)

        glutIgnoreKeyRepeat(1)
        glutKeyboardFunc(:processNormalKeys)
        glutSpecialFunc(:pressKey)
        glutSpecialUpFunc(:releaseKey)

         // ここには二つの新しい関数があります。
        glutMouseFunc(:mouseButton)
        glutMotionFunc(:mouseMove)

        // OpenGL の初期化
        glEnable(GL_DEPTH_TEST)
        glEnable(GL_CULL_FACE)

        // メニューの初期化
        createPopupMenus()

        // GLUT のイベント処理サイクルへ入ります。
        glutMainLoop()

スクリーンショット:

RingOpenGL 拡張機能

Ring 1.5 の RingOpenGL は下記のバージョンに対応しています。

OpenGL 1.1 ～ 1.5

OpenGL 2.0, 2.1

OpenGL 3.0, 3.2, 3.3

OpenGL 4.0 ～ 4.6

用例:

/*
        このサンプルは C チュートリアルを元にしています。
        出典元 :
                http://www.wikihow.com/Make-a-Cube-in-OpenGL
*/

load "freeglut.ring"
load "opengl21lib.ring"

// ----------------------------------------------------------
// グローバル変数
// ----------------------------------------------------------
rotate_y=0
rotate_x=0

// ----------------------------------------------------------
// display() コールバック関数
// ----------------------------------------------------------
func display

  //  画面と Z バッファの消去
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

  // 変換のリセット
  glLoadIdentity()

  // rotate_x および rotate_y のユーザによる変更をリセットします。
  glRotatef( rotate_x, 1.0, 0.0, 0.0 )
  glRotatef( rotate_y, 0.0, 1.0, 0.0 )

  // 多色面 - 前
  glBegin(GL_POLYGON)

  glColor3f( 1.0, 0.0, 0.0 )     glVertex3f(  0.5, -0.5, -0.5 )      # P1 は赤
  glColor3f( 0.0, 1.0, 0.0 )     glVertex3f(  0.5,  0.5, -0.5 )      # P2 は緑
  glColor3f( 0.0, 0.0, 1.0 )     glVertex3f( -0.5,  0.5, -0.5 )      # P3 は青
  glColor3f( 1.0, 0.0, 1.0 )     glVertex3f( -0.5, -0.5, -0.5 )      # P4 は紫

  glEnd()

  // 白面 - 後
  glBegin(GL_POLYGON)
  glColor3f(   1.0,  1.0, 1.0 )
  glVertex3f(  0.5, -0.5, 0.5 )
  glVertex3f(  0.5,  0.5, 0.5 )
  glVertex3f( -0.5,  0.5, 0.5 )
  glVertex3f( -0.5, -0.5, 0.5 )
  glEnd()

  // 紫面 - 右
  glBegin(GL_POLYGON)
  glColor3f(  1.0,  0.0,  1.0 )
  glVertex3f( 0.5, -0.5, -0.5 )
  glVertex3f( 0.5,  0.5, -0.5 )
  glVertex3f( 0.5,  0.5,  0.5 )
  glVertex3f( 0.5, -0.5,  0.5 )
  glEnd()

  // 緑面 - 左
  glBegin(GL_POLYGON)
  glColor3f(   0.0,  1.0,  0.0 )
  glVertex3f( -0.5, -0.5,  0.5 )
  glVertex3f( -0.5,  0.5,  0.5 )
  glVertex3f( -0.5,  0.5, -0.5 )
  glVertex3f( -0.5, -0.5, -0.5 )
  glEnd()

  // 青面 - 上
  glBegin(GL_POLYGON)
  glColor3f(   0.0,  0.0,  1.0 )
  glVertex3f(  0.5,  0.5,  0.5 )
  glVertex3f(  0.5,  0.5, -0.5 )
  glVertex3f( -0.5,  0.5, -0.5 )
  glVertex3f( -0.5,  0.5,  0.5 )
  glEnd()

  // 赤面 - 下
  glBegin(GL_POLYGON)
  glColor3f(   1.0,  0.0,  0.0 )
  glVertex3f(  0.5, -0.5, -0.5 )
  glVertex3f(  0.5, -0.5,  0.5 )
  glVertex3f( -0.5, -0.5,  0.5 )
  glVertex3f( -0.5, -0.5, -0.5 )
  glEnd()

  glFlush()
  glutSwapBuffers()

// ----------------------------------------------------------
// specialKeys() コールバック関数
// ----------------------------------------------------------
func specialKeys

        key = glutEventKey()

  //  右矢印 - 回転を五度増分します。
        switch Key

        on GLUT_KEY_RIGHT
                rotate_y += 5

        //  左矢印 - 回転を五度減分します。
        on GLUT_KEY_LEFT
                rotate_y -= 5

        on GLUT_KEY_UP
                rotate_x += 5

        on GLUT_KEY_DOWN
                rotate_x -= 5

        off

  //  更新の要求
  glutPostRedisplay()

// ----------------------------------------------------------
// main() 関数
// ----------------------------------------------------------
func main

  //  GLUT の初期化とユーザ仮引数の処理
  glutInit()

  //  トゥルーカラーのウィンドウのためにZ-バッファによるダブルバッファを要求します。
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)

  // ウィンドウの作成
  glutCreateWindow("Awesome Cube")

  //  Z-バッファの深度テストを有効にします。
  glEnable(GL_DEPTH_TEST)

  // コールバック関数
  glutDisplayFunc(:display)
  glutSpecialFunc(:specialKeys)

  // GLUT へイベントの制御を渡します。
  glutMainLoop()

  // OS へ戻ります。

スクリーンショット:

拡張機能用のコード生成器の改善

<constant> 型へ対応しました。また、数値以外にも定数を扱うことができます。例えば: 文字列とポインタです。

ポインタのときはポインタ型を決定できます。この機能は <constant> ～ </constant> の前に使えます。

$nDefaultConstantType = C_CONSTANT_TYPE_POINTER
$cDefaultConstantPointerType = "void *"

この用例は RingFreeGLUT 拡張機能からの引用です。

<runcode>
        $nDefaultConstantType = C_CONSTANT_TYPE_POINTER
        $cDefaultConstantPointerType = "void"
</runcode>
<constant>
        GLUT_STROKE_ROMAN
        GLUT_STROKE_MONO_ROMAN
        GLUT_BITMAP_9_BY_15
        GLUT_BITMAP_8_BY_13
        GLUT_BITMAP_TIMES_ROMAN_10
        GLUT_BITMAP_TIMES_ROMAN_24
        GLUT_BITMAP_HELVETICA_10
        GLUT_BITMAP_HELVETICA_12
        GLUT_BITMAP_HELVETICA_18
</constant>

拡張機能用のドキュメント生成器の改善

生成した定数のリストをドキュメントへ出力できるようになりました。

以前の公開版では関数プロトタイプのみありましたが、今回は定数のリストもあります。

Ring VM - トレース関数

Ring 1.5 では Ring VM に次の関数追加しました。

RingVM_SetTrace(cCode)

RingVM_TraceData() --> aDataList

RingVM_TraceEvent() --> nTraceEvent

RingVM_TraceFunc() --> cCode

RingVM_ScopesCount() --> nScopes

RingVM_EvalInScope(nScope,cCode)

RingVM_PassError()

RingVM_HideErrorMsg(lStatus)

RingVM_CallFunc(cFuncName)

用例:

load "tracelib.ring"

ringvm_settrace("mytrace()")

see "Hello, world!" + nl
see "Welcome" + nl
see "How are you?" +nl
mytest()
new myclass { mymethod() }

func mytest
        see "Message from mytest" + nl

func mytrace
        see "====== The Trace function is Active ======" + nl +
                "Trace Function Name : " + ringvm_TraceFunc() + nl +
                "Trace Event : "
        switch ringvm_TraceEvent()
                on TRACEEVENT_NEWLINE           see "New Line"
                on TRACEEVENT_NEWFUNC           see "New Function"
                on TRACEEVENT_RETURN            see "Return"
                on TRACEEVENT_ERROR             see "Error"
                on TRACEEVENT_BEFORECFUNC       see "Before C Function"
                on TRACEEVENT_AFTERCFUNC        see "After C Function"
        off
        see nl +
                "Line Number : " + ringvm_tracedata()[TRACEDATA_LINENUMBER] + nl +
                "File Name   : " + ringvm_tracedata()[TRACEDATA_FILENAME] + nl +
                "Function Name : " + ringvm_tracedata()[TRACEDATA_FUNCNAME] + nl +
                "Method or Function : "
                if ringvm_tracedata()[TRACEDATA_METHODORFUNC] =
                                 TRACEDATA_METHODORFUNC_METHOD
                        see "Method"
                else
                        if ringvm_tracedata()[TRACEDATA_FUNCNAME] = NULL
                                see "Command"
                        else
                                see "Function"
                        ok
                ok
                see nl + Copy("=",42) + nl

class myclass
        func mymethod
                see "Message from mymethod" + nl

実行結果:

====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 3
File Name   : test1.ring
Function Name : ringvm_settrace
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 5
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
Hello, world!
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 6
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
Welcome
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 7
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
How are you?
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 8
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Function
Line Number : 8
File Name   : test1.ring
Function Name : mytest
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 12
File Name   : test1.ring
Function Name : mytest
Method or Function : Function
==========================================
Message from mytest
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 14
File Name   : test1.ring
Function Name : mytest
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Return
Line Number : 8
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 9
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 43
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Before C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Function
Line Number : 9
File Name   : test1.ring
Function Name : mymethod
Method or Function : Method
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 44
File Name   : test1.ring
Function Name : mymethod
Method or Function : Method
==========================================
Message from mymethod
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Return
Line Number : 9
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Before C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : Before C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : After C Function
Line Number : 9
File Name   : test1.ring
Function Name : ismethod
Method or Function : Function
==========================================
====== The Trace function is Active ======
Trace Function Name : mytrace()
Trace Event : New Line
Line Number : 11
File Name   : test1.ring
Function Name :
Method or Function : Command
==========================================

トレースライブラリとインタラクティブデバッガ

Ring 1.5 にはトレースライブラリとインタラクティブデバッガがあります。

このライブラリはイベントのトレース、プログラムを一行ずつ実行、エラー発生またはブレークポイントに到達したときインタラクティブデバッガを開きます。

用例:

この用例はブレークポイントをインタラクティブデバッガで開きます！

load "tracelib.ring"

test1()

func test1
        x = 10
        see :test1 + nl
        t = 12
        BreakPoint()
        see "After breakpoint!" +nl
        see "t = " + t + nl
        see "End of program!" + nl

スクリーンショット:

ブレークポイントに関してはインタラクティブデバッガがあります！

変数の値を表示できます。

変数値の変更後に実行を継続できます。

実行結果ウィンドウでもインタラクティブデバッガを実行できます。

シンタックスの柔軟性を向上

クラス、パッケージ、関数で括弧 { } を使うには

用例:

load "stdlib.ring"

import mypackage

new myclass {
        myfunc()
}

package mypackage
{
        class myclass
        {
                func myfunc
                {
                        print("Hello, World!\n")
                }
        }
}

クラス、パッケージ、関数の後に‘end’キーワードを使うには

用例:

import mypackage

new myclass {
        myfunc()
}

package mypackage
        class myclass
                def myfunc
                        put "Hello, World!"
                end
        end
end

クラス、パッケージ、関数の後に‘endpackage’/’endclass’/’endfunc’キーワードを使うには

用例:

import mypackage

new myclass { myfunc() }

package mypackage
        class myclass
                func myfunc
                        see "welcome"  + nl
                endfunc
        endclass
endpackage

型ヒントライブラリ

Ring 1.5 から型ヒントライブラリがあります。

このライブラリにより、ソースコードへ型情報を追加できます。このようなツールで非常に便利です。

コードエディタ

静的解析

用例:

load "typehints.ring"

see sum(3,4) + nl ;
see sayHello("Mahmoud");

int func sum(int x,int y) {
        return x+y ;
}

string func sayHello(string name) {
        return "Hello " + name ;
}

ライブラリは非常に強力であり、自動的にユーザ型 (クラス) へ対応します！

用例:

load "typehints.ring"

import mypackage

test()  { main([:one,:two,:three]) }

myclass func test() {
        see "Testing User Types!" + nl
        return new myclass
}

package mypackage {
        public class myclass {
                public static void func main(list args) {
                        see "welcome" + nl
                        see args
                }
        }
}

また、コードの内側で型も使えます (関数プロトタイプだけに限定されません)。

用例:

load "typehints.ring"

int     sum = sum(3,4)
string  msg = sayHello("Mahmoud")

see "Sum = " + sum + nl + msg + nl

int func sum(int x,int y) {
        return x+y ;
}

string func sayHello(string name) {
        return "Hello " + name ;
}

規則:

関数プロトタイプ : 型を使うには、引数の前後を ‘(‘ と ‘)’ で必ず囲んでください。

関数のコード : 型を使うには、必ず変数の値を設定してください (代入)。

注釈

Ring は動的言語であり、コンパイラによる型検査は行われません。

品質の改善

日々の実務プロジェクトで Ring を利用した成果により

Ring 1.5 では、安定性と生産性が向上しました！

明確な目標と実用性で求められるものを機能を追加していきます。

また、取扱説明書の改訂も行いました。

Ring 1.5.1 の変更履歴

Ring 1.5.1 の新機能と変更点です。

取扱説明書の改訂

StdLib - Factorial() 関数の更新

Ring 仮想計算機 - クラス範囲でスタックの消去処理に関するコードの改善。

サンプル : 3D Cube (OpenGL) + GameLib (RingAllegro) によるテクスチャ画像

ソースコード:

load "gamelib.ring"
load "opengl21lib.ring"

func main

        new GraphicsApp {
                start()
        }

class GraphicsApp from GraphicsAppBase

        TITLE = "Ring Cube"

        bitmap texture

        xrot = 0.0
        yrot = 0.0
        zrot = 0.0

        func loadresources

                bitmap = al_load_bitmap("ring.bmp")
                texture = al_get_opengl_texture(bitmap)

        func destroyResources

                al_destroy_bitmap(bitmap)

        func drawScene

                w = 800 h = 600
                ratio =  w / h

                glViewport(0, 0, w, h)
                glMatrixMode(GL_PROJECTION)
                glLoadIdentity()

                gluPerspective(45,ratio,1,100)
                glMatrixMode(GL_MODELVIEW)
                glLoadIdentity()

                glEnable(GL_TEXTURE_2D)
                glShadeModel(GL_SMOOTH)
                glClearColor(0.0, 0.0, 0.0, 0.5)
                glClearDepth(1.0)
                glEnable(GL_DEPTH_TEST)
                glEnable(GL_CULL_FACE)
                glDepthFunc(GL_LEQUAL)
                glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)

                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
                glLoadIdentity();
                glTranslatef(0.0,0.0,-5.0);

                glRotatef(xrot,1.0,0.0,0.0);
                glRotatef(yrot,0.0,1.0,0.0);
                glRotatef(zrot,0.0,0.0,1.0);

                glBindTexture(GL_TEXTURE_2D, texture)

                glBegin(GL_QUADS)
                        // 前面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        // 背面
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        // 上面
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        // 下面
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        // 右面
                        glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f( 1.0,  1.0, -1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f( 1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0,  1.0)
                        // 左面
                        glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
                        glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0,  1.0)
                        glTexCoord2f(1.0, 1.0) glVertex3f(-1.0,  1.0,  1.0)
                        glTexCoord2f(0.0, 1.0) glVertex3f(-1.0,  1.0, -1.0)
                glEnd()

                xrot += 0.3
                yrot += 0.2
                zrot += 0.4

class GraphicsAppBase

        display event_queue ev timeout
        timer  redraw   = true

        FPS             = 60

        SCREEN_W        = 800
        SCREEN_H        = 600

        KEY_UP          = 1
        KEY_DOWN        = 2
        KEY_LEFT        = 3
        KEY_RIGHT       = 4

        Key = [false,false,false,false]

        TITLE = "Graphics Application"

        func start

                SetUp()
                loadResources()
                eventsLoop()
                destroy()

        func setup

                al_init()
                al_init_image_addon()
                al_set_new_display_flags(ALLEGRO_OPENGL)
                display = al_create_display(SCREEN_W,SCREEN_H)
                al_set_Window_title(display,TITLE)
                al_clear_to_color(al_map_rgb(0,0,0))
                event_queue = al_create_event_queue()
                al_register_event_source(event_queue,
                        al_get_display_event_source(display))
                ev = al_new_allegro_event()
                timeout = al_new_allegro_timeout()
                al_init_timeout(timeout, 0.06)
                timer = al_create_timer(1.0 / FPS)
                al_register_event_source(event_queue,
                        al_get_timer_event_source(timer))
                al_start_timer(timer)
                al_install_mouse()
                al_register_event_source(event_queue,
                        al_get_mouse_event_source())
                al_install_keyboard()
                al_register_event_source(event_queue,
                        al_get_keyboard_event_source())

        func eventsLoop

                while true
                        al_wait_for_event_until(event_queue, ev, timeout)
                        switch al_get_allegro_event_type(ev)
                        on ALLEGRO_EVENT_DISPLAY_CLOSE
                                exit
                        on ALLEGRO_EVENT_TIMER
                                redraw = true
                        on ALLEGRO_EVENT_MOUSE_AXES
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY
                                mouse_x = al_get_allegro_event_mouse_x(ev)
                                mouse_y = al_get_allegro_event_mouse_y(ev)
                        on ALLEGRO_EVENT_MOUSE_BUTTON_UP
                                exit
                        on ALLEGRO_EVENT_KEY_DOWN
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = true
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = true
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = true
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = true
                                off
                        on ALLEGRO_EVENT_KEY_UP
                                switch al_get_allegro_event_keyboard_keycode(ev)
                                        on ALLEGRO_KEY_UP
                                                key[KEY_UP] = false
                                        on ALLEGRO_KEY_DOWN
                                                key[KEY_DOWN] = false
                                        on ALLEGRO_KEY_LEFT
                                                key[KEY_LEFT] = false
                                        on ALLEGRO_KEY_RIGHT
                                                key[KEY_RIGHT] = false
                                        on ALLEGRO_KEY_ESCAPE
                                                exit
                                off
                        off
                        if redraw and al_is_event_queue_empty(event_queue)
                                redraw = false
                                drawScene()
                                al_flip_display()
                        ok
                        callgc()
                end

        func destroy

                destroyResources()
                al_destroy_timer(timer)
                al_destroy_allegro_event(ev)
                al_destroy_allegro_timeout(timeout)
                al_destroy_event_queue(event_queue)
                al_destroy_display(display)

        func loadresources

        func drawScene

        func destroyResources

スクリーンショット:

Ring 1.5.2 の変更履歴

Ring 1.5.2 の新機能と変更点です。

取扱説明書 - “時速でデキるアプリケーション開発” の章を更新しました。

Ring ノートパッド - 全てのプラットフォームで実行結果ウィンドウへプログラムの実行結果を表示するようになりました。

フォームデザイナー - Help メニュー - コンソールウィンドウを表示せずに CHM/PDF ファイルを開けるようになりました。

フォームデザイナー - マウスをすばやく動かしたときに Resize/Move イベントの応答性を改善

フォームデザイナー - 「新規、開く、名前を付けて保存」で Controller クラスを Ring ノートパッドで開くようにしました。

フォームデザイナー - ファイルメニューへ “フォームを閉じる” オプションを追加。

Ring ノートパッド - 実行に、現在のファイル (開いているフォームも) 自動的に保存するようになりました。

GetQuotesHistory アプリケーション - macOS および Qt 5.2 で動作するために更新

Calculator アプリケーション - 様々な機能を搭載するために更新しました！

Ring VM - 環境エラーの分類 (この章をご確認ください : 言語リファレンス)

RingQt - イベント実行の高速化のために QAllEvents へ新しいメソッドを追加

RingQt - スタイル「フュージョン : 黒」 - 無効なコントロールに最適な配色

スクリプト - Fedora Linux での Ring ビルド用 (この章を参照してください : ソースコードからのビルド方法)

スクリーンショット:

Ring 1.5.3 の変更履歴

Ring 1.5.3 の新機能と変更点です。

フォームデザイナー : 再びフォームを開くことを可能にするために、アクションが閉じられると Ring ノートパッドへ通知するようになりました。

フォームデザイナー : Ring ノートパッドで Controller クラスを開くときにアクションを保存するようになりました。

フォームデザイナー : CTRL キーで複数のコントロールを選択時に現在のコントロールを保持するようになりました。

フォームデザイナー : Ring ノートパッドでの使用時に素敵な背景色に対応 (スタイル - モダン : 黒)

RingOpenSSL : OpenSSL 1.1 など新しいバージョンへ対応

ビルドスクリプト : Fedora 26 (64bit) での動作に対応

OpenGL : 新しいサンプル - 複数の立方体 (samples/3D/manycubes)

スクリーンショット:

RingQt : QDateTime クラスの追加

RingQt : QMenu および QCursor クラスへ新しいメソッドを追加

用例:

load "guilib.ring"

new qApp {
        win = new qwidget() {
                setwindowtitle("Context Menu")
                resize(400,400)
                myfilter = new qAllEvents(win) {
                        setContextmenuEvent("mymenu()")
                }
                installeventfilter(myfilter)
                show()
        }
        exec()
}

func mymenu

        new qMenu(win) {
                oAction = new qAction(win) {
                        settext("new")
                        SetCLickevent("See :New")
                }
                addaction(oAction)
                oAction = new qAction(win) {
                        settext("open")
                        SetCLickevent("See :Open")
                }
                addaction(oAction)
                oAction = new qAction(win) {
                        settext("save")
                        SetCLickevent("See :Save")
                }
                addaction(oAction)
                oAction = new qAction(win) {
                        settext("close")
                        SetCLickevent("See :Close")
                }
                addaction(oAction)
                oCursor  = new qCursor()
                exec(oCursor.pos())
        }

コンパイラ : 数値内で _ の使用に対応

用例:

x = 1_000_000
see type(x)+nl
see x+1+nl

実行結果:

NUMBER
100000001

コンパイラ : 数値の後に f の使用に対応

用例:

x = 19.99f
see type(x) + nl

実行結果:

NUMBER

Google API Shortener アプリケーション

スクリーンショット:

TicTacToe 3D ゲーム

スクリーンショット:

Ring 1.5.4 の変更履歴

Ring 1.5.4 の新機能と変更点です。

CalmoSoft Fifteen Puzzle ゲーム 3D

Ring ノートパッド - 新しいスタイル

Ring ノートパッド - ツールバーのスタイルを改善

Ring ノートパッド - View モード

Ring ノートパッド - QPlainTextEdit - スクロールバーの背景色の設定を行わないようにしました。

Ring ノートパッド - スタイル - フュージョン (白) - コメントに銀色を使用

Ring ノートパッド - Tab と Shift-Tab - 複数行インデント

フォームデザイナー - ツールバーのスタイルを改善

フォームデザイナー - ウィンドウフラグとメニュバーデザイナー用の素敵な背景色

フォームデザイナー - コントロールのデフォルト背景色

RingQt - QWidget クラスへgrab() および windowHandle() メソッドを追加

RingQt - QPixmap クラスへ新しいメソッドを追加

RingQt - クラスの追加:

QScreen

QWindow

QGuiApplication

QTextBrowser

拡張機能用のコード生成器 - Nonew オプション - 親クラスへの対応

Ring VM - 内部実装 - 文字列とリストオブジェクトをステートへ渡せるようになりました。

Ring VM - ガベージコレクター - 小規模オブジェクトをメモリへプールできるようになりました。

Ring VM - ステートの保存と復元に関するコードの改善

Ring 1.6 の変更履歴

Ring 1.6 (2017年11月30日) の新機能と変更点です。

新機能と変更リスト

Ring 1.6 の新機能！

Employee アプリケーション

新ツール : Ring2EXE

Android 版 Ring の改善

新ツール : Folder2qrc

Ring ビルド用スクリプトの改善

RingConsoleColors 拡張機能

RingMurmurHash 拡張機能

Ring ノートパッドの改善

RingQt の改善

StdLib の改善

Ring VM の改善

RingREPL の改善

char(9) の代わりに Tab を使うには

CR をキャリッジリターンとして使うには

! 演算子を not として使うには

&& および || 演算子の用法

式の表示後に ? で改行するには

Employee アプリケーション

Employee アプリケーションを ring/applications へ追加しました。

開発者: アーメド・ハッサウナ

新ツール - Ring2EXE

現在は、スグレモノである RingEXE (Ring 1.6 以降) があります。

Ring2EXE (Ring にて記述) で Windows, Linux および macOS 用のアプリケーションを手軽に配布できます。

詳しくは「Ring2EXE による Ring アプリケーションの配布方法」を参照してください。

Android 版 Ring の改善

複数のソースコードファイル (*.ring) ではなく Ring オブジェクトファイル (*.ringo) を使用するために Android 版 Ring (RingQt の使用) を更新しました。

このスクリーンショットは Android 版 Cards ゲームのビルドに関する用例です。

cards.ring ではなく cards.ringo を使用します。

大規模プロジェクト構成 (大量の *.ring ファイル) では、 *.ringo ファイルのみ使います。

Qt プロジェクトでモバイル用 RingQt アプリケーションの配布準備をするには Ring2EXE を使用してください。

用例①

ring2exe cards.ring -dist -mobileqt

用例②

ring2exe formdesigner.ring -dist -mobileqt

新ツール - Folder2qrc

大量の画像とファイルから構成される大規模 RingQt プロジェクトでは、モバイル・アプリケーション配布時にリソースファイル (*.qrc) へファイルを必ず追加してください。

Ring 1.6 以降では Folder2qrc ツールにより、一つずつファイルを追加する必要がなくなるので時間の節約になります。

用例:

folder2qrc formdesigner.ring

アプリケーションフォルダに移動している間に、メインソースファイルの決定をするために Folder2qrc は現在のフォルダとサブフォルダにある全てのファイルを確認します。そして mainfile.ringo の後にリソースファイルを追加します (この用例は formdesigner.ringo です)。

出力ファイル : project.qrc

ファイルを開く、または削除するためにリソースは不要です！

Ring ビルド用スクリプトの改善

Ring 1.6 ではソースコードから Ring のビルドを行うためのスクリプトを改善しました。

この更新は 32bit と 64bit システムの Windows, Linux (Ubuntu, Fedora) および macOS で検証済みです。

Windows 用のスクリプトでは Visual Studio のバージョンを基に Visual C/C++ コンパイラを検出するために更新されました。

RingConsoleColors 拡張機能

RingConsoleColors 拡張機能でコンソールアプリケーションの配色を手軽に変更できます。

詳しくは「RingConsoleColors 関数リファレンス」を参照してください。

RingMurmurHash 拡張機能

Ring 1.6 には RingMurmurHash 拡張機能があります！

開発者: ハッサン・アーメド

用例:

load "murmurhashlib.ring"

key = "Ring Language"

see murmurhash3_x86_32(key, 0, 0) + nl // 実行結果: 1894444853
see murmurhash3_x86_32(key, 0, 1) + nl // 実行結果: 70eaef35

詳しくは「RingMurmurHash 関数リファレンス」を参照してください。

Ring ノートパッドの改善

Ring ノートパッドを更新しました。

アプリケーションの実行時にメインファイルの自動設定 (メインファイルボタンを使用)。

メインファイル - 実行前の自動保存。

GUI アプリケーション実行時 - 実行結果ウィンドウで入力用テキストボックスの使用時はフォーカスを変更しないようにしました。

ボタン、およびオプションからウェブアプリケーションを実行できるようになりました。

Ring 1.6 から Windows ユーザー用に Apache ウェブサーバーが添付されています！

設定は一切不要で指定フォルダからウェブアプリケーションを実行できます。

ツール - オペレーティングシステム - ターミナル (コマンドプロンプト)、ファイルマネージャー (エクスプローラ)

これにより、アプリケーションフォルダからコマンドプロンプト、またはエクスプローラを手軽に開けます。

拡張子 *.sh と *.batへの対応

新しいメニュー: 配布

RingQt の改善

RingQt を更新しました。

QAllEvents - getkeytext() メソッド

QSQLQuery - exec_2() メソッド

QDockWidget イベント

AppFile() 関数

IsMobile() 関数

QRegion クラス

QCoreApplication クラス

StdLib の改善

StdLib を更新しました。

Factors() 関数の更新 (表示を行わずに出力を返します)

Palindrome() 関数の更新 (表示を行わずに出力を返します)

stdlibcore.ring で StdLib 関数を使えます (クラスはありません)。

これはスタンドアローン型のコンソールアプリケーションを作成する場合に便利です。

stdlib.ring (関数とクラス) は RingLibCurl, RingOpenSSL などのライブラリを読み込みます。

新しい関数

SystemSilent(cCommand) : 実行結果を表示せずにシステムをコマンド実行します。

OSCreateOpenFolder(cFolder) : フォルダの作成後に、現在のフォルダを作成した新しいフォルダへ変更します。

OSCopyFolder(cParentFolder,cFolderNameToCopy) : 現在のディレクトリへフォルダをコピーします。

OSDeleteFolder(cFolder) : フォルダの削除

OSCopyFile(cFileName) : 現在のディレクトリへファイルをコピーします。

OSDeleteFile(cFileName) : ファイルの削除

OSRenameFile(cOldFileName,cNewFileName) : ファイル名変更

Ring VM の改善

Ring VM を更新しました。

式において getter メソッドの複数使用に対応

This と Self を Setter/Getter メソッドを呼び出さずに Setter/Getter/Normal メソッドで使用できるようにするための対応

TempName() 関数の更新 (コードの改善)

ExeFileName() 関数の更新 (コードの改善)

Private 属性 - クラス範囲における再利用の対応 (Private キーワードの後に)

Ring API : ring_scanner_runobjstring()

ring_state_setvar() 関数

RingREPL の改善

RingREPL を更新しました。

RingREPL はコマンドラインの仮引数でスタイルを決定します。

Ring ノートパッドのスタイルに基づき RingREPL のスタイルを設定します。

char(9) の代わりに Tab を使うには

Tab 変数は char(9) の代わりに使用するために定義済みです。

用例①:

see :one + nl + tab + :two + nl + tab + tab + :three

実行結果:

one
        two
                three

変数を別の値へ変更できます。

用例②:

tab = "  "
see :one + nl + tab + :two + nl + tab + tab + :three

実行結果:

one
  two
    three

CR をキャリッジリターンとして使うには

この用例では、十秒間に同じ行で 1 ～ 10 まで数えます。

load "stdlibcore.ring"
for x = 1 to 10 see x sleep(1) see cr next

! 演算子を not として使うには

Ring には = と != があります。

しかし、論理演算子には and, or, そして not があります。

さら、 ! 演算子を not として使えます。

用例:

if ! false
        see "True!" + nl
ok

実行結果:

True!

&& および || 演算子の用法

このようなキーワードが Ring の論理演算子としてあります。

and

or

not

また、このような演算子もあります。

&&

||

!

用例:

if one() and two()
        see "Test1 - Fail" + nl
else
        see "Test1 - Pass" + nl
ok

if two() or one()
        see "Test2 - Pass" + nl
else
        see "Test2 - Fail" + nl
ok

if one() && two()
        see "Test3 - Fail" + nl
else
        see "Test3 - Pass" + nl
ok

if two() || one()
        see "Test4 - Pass" + nl
else
        see "Test4 - Fail" + nl
ok

func one return True

func two return False

実行結果:

Test1 - Pass
Test2 - Pass
Test3 - Pass
Test4 - Pass

? 演算子で式の表示後に改行するには

式の表示後に改行することは一般的です。これは ? 演算子で実現できます！

用例:

? "Hello, World!"
for x = 1 to 10
        ? x
next

実行結果:

Hello, World!
1
2
3
4
5
6
7
8
9
10

Ring 1.7 の変更履歴

Ring 1.7 (2018年01月25日) の新機能と変更点です。

新機能と変更リスト

Ring 1.7 の新機能！

新しい命令: Load Package

ringvm_see() と ringvm_give() 関数

ring_state_new() と ring_state_mainfile() 関数

トレースライブラリの改善

Ring ノートパッドの改善

RingQt の改善

Ring2EXE の改善

RingZip の改善

取扱説明書の改訂

Ring VM の改善

RingLibuv 拡張機能

新しい命令: Load Package

‘Load’ 命令により、複数の Ring ソースファイルを同じプロジェクトで使えます。

しかし、これらのファイルでは同じグローバルスコープを共有しています。

さて、 “Load Package” 命令もあります。

“Load Package” では新しいグローバルスコープへライブラリ (*.ring ファイル) を読み込むことができます。

グローバル変数との名前衝突回避となるため、ライブラリの作成時は非常に便利です。

用例:

ファイル: loadpackage.ring

x = 100
? "Hello, World!"
load package "testloadpackage.ring"

? x
test()

ファイル: testloadpackage.ring

? "Hello from testloadpackage.ring"

x = 1000

test()

func test
        ? x

実行結果:

Hello, World!
Hello from testloadpackage.ring
1000
100
1000

ringvm_see() と ringvm_give() 関数

ringvm_see() 関数で See 命令の挙動を変更します。

また ring_see() 関数で元の挙動を使用します。

用例:

see "Hello world" + nl
see 123 + nl
see ["one","two","three"]
see new point {x=10 y=20 z=30}

func ringvm_see t
        ring_see("We want to print: ")
        ring_See(t)

class point x y z

実行結果:

We want to print: Hello world
We want to print: 123
We want to print: one
two
three
We want to print: x: 10.000000
y: 20.000000
z: 30.000000

ringvm_give() 関数は Give 命令の挙動を変更します。

また、 ring_give() 関数は元の挙動を使用します。

用例:

see "Name: " give name
see "Hello " + name

func ringvm_give
        see "Mahmoud" + nl
        return "Mahmoud"

実行結果:

Name: Mahmoud
Hello Mahmoud

ring_state_new() と ring_state_mainfile() 関数

ring_state_new() と ring_state_mainfile() 関数は Ring プログラムから別の Ring プログラムを実行します。

ring_state_main() 関数とは異なり、こちらは Ring ステートの削除時に制御できます！

これは GUI プログラムから別の GUI プログラムを実行するときに重要です。

この場合は GUI ライブラリ (RingQt) を共有しており、

呼び出し元は qApp.Exec() を呼び出すからです。

よって、下位プログラムを停止せずにメインプログラムへ戻ります。

ここで下位プログラムのステートを削除してしまうと、下位プログラムのイベント実行時に問題が発生します。

ステートを保持することは、下位 GUI プログラムの収容先となっている GUI プログラムでは重要です。

トレースライブラリの改善

トレースライブラリの更新により、デバッガのブレークポイントで “callstack” 命令を利用できるようになりました。

この命令は関数のコールスタックを表示します。

用例:

load "tracelib.ring"

func main
        ? "Hello from main!"
        test1()

func test1
        ? "Hello from test1!"
        test2()

func test2
        ? "Hello from test2!"
        test3()

func test3
        ? "Hello from test3!"
        breakpoint()

Ring ノートパッドの改善

Ring ノートパッドを更新しました。

拡張子 *.cf への対応

ハッシュ関数 (SHA256) 使用時の改善 - “Save Changes?” (変更を保存しますか？) メッセージ

Ring ノートパッド - ×ボタン - Saving Changes? で問い合わせるようになりました。

RingQt の改善

このクラスを RingQt へ追加しました。

QStackedWidget

QCalendarWidget

QOpenGLFunctions

QOpenGLContext

QSurfaceFormat

QOpenGLWidget

QOpenGLVersionProfile

QOpenGLFunctions_3_2_Core

QVector2D

QVector3D

QVector4D

QQuaternion

QMatrix4x4

QOpenGLPaintDevice

QPaintDevice

QOpenGLTimerQuery

QOpenGLDebugLogger

QOpenGLFramebufferObject

QOpenGLVertexArrayObject

QOpenGLBuffer

QOpenGLShaderProgram

QOpenGLShader

QOpenGLTexture

Ring2EXE の改善

C/C++ コンパイラがないとき、想定された動作を行うために Ring2EXE を更新しました。

これにより、アプリケーションの配布に適したものを生成できます (exe ファイルと ring ファイル)。

RingZip の改善

このライブラリの更新により、サブフォルダにあるファイルの展開に対応しました！

取扱説明書の改訂

RingQt クラスの章 - クラスリストの並べ替えを行いました。

Ring VM の改善

エラーメッセージの改善

List2Str() 関数で数値を有するリストに対応

分離記号 _ のある数値の対応を修正

変数を使用せずにリストを作成 (ステートメント –> 式 –> リスト)

isNULL() - 英数大小文字同一視 - Null および null は NULL と同等に扱われます。

このオブジェクトで属性に Self オブジェクトの追加へ対応

‘:’ 演算子を使用後に小文字リテラルのキーワードを作成

オブジェクトの表示 - decimals() 関数の考慮

定数を閉られていない場合 - 定数の始点を決定

リストのあるオブジェクトの表示時におけるエラーメッセージの改善

VarPtr() - ローカルスコープにある変数のポインタの取得に対応

新しいスレッドの作成時に perfomance 命令を normal 命令へ交換

RingLibuv 拡張機能

Ring 1.7 から RingLibuv 拡張機能を利用できるようなりました。

Libuv は非同期 I/O に主眼を置いたマルチプラットフォーム対応ライブラリです。

用例 (イベントループ):

load "libuv.ring"

counter = 0
idler = NULL

func main
        idler = new_uv_idle_t()
        uv_idle_init(uv_default_loop(), idler)
        uv_idle_start(idler, "wait()")
        ? "Idling..."
        uv_run(uv_default_loop(), UV_RUN_DEFAULT);
        uv_loop_close(uv_default_loop());
        destroy_uv_idle_t(idler)

func wait
        counter++
        if counter >= 100000
                uv_idle_stop(idler)
        ok

実行結果:

Idling...

用例 (サーバー):

load "libuv.ring"
load "objectslib.ring"

? "Testing RingLibuv - Server Side - Using Classes"

open_object(:MyServer)

class MyServer from ObjectControllerParent

        DEFAULT_PORT    = 13370
        DEFAULT_BACKLOG = 1024

        addr    = new_sockaddr_in()
        server  = NULL
        client  = NULL
        myloop  = NULL

        func start
                myloop = uv_default_loop()
                server = new_uv_tcp_t()
                uv_tcp_init(myloop, server)
                uv_ip4_addr("127.0.0.1", DEFAULT_PORT, addr)
                uv_tcp_bind(server, addr, 0)
                r = uv_listen(server, DEFAULT_BACKLOG, Method(:newconnection) )
                if r
                        ? "Listen error " + uv_strerror(r)
                        return 1
                ok
                uv_run(myloop, UV_RUN_DEFAULT)
                destroy_uv_tcp_t(server)
                destroy_uv_sockaddr_in(addr)

        func newconnection
                ? "New Connection"
                aPara   = uv_Eventpara(server,:connect)
                nStatus = aPara[2]
                if nStatus < 0
                        ? "New connection error : " + nStatus
                        return
                ok
                client = new_uv_tcp_t()
                uv_tcp_init(myloop, client)
                if uv_accept(server, client) = 0
                                uv_read_start(client, uv_myalloccallback(),
                                                        Method(:echo_read))
                ok

        func echo_read
                aPara = uv_Eventpara(client,:read)
                nRead = aPara[2]
                buf   = aPara[3]
                if nRead > 0
                        req = new_uv_write_t()
                                wrbuf = uv_buf_init(get_uv_buf_t_base(buf), nread)
                        uv_write(req, client, wrbuf, 1, Method(:echo_write))
                        ? uv_buf2str(wrbuf)
                        message = "message from the server to the client"
                        buf = new_uv_buf_t()
                        set_uv_buf_t_len(buf,len(message))
                        set_uv_buf_t_base(buf,varptr("message","char *"))
                        uv_write(req, client, buf, 1, Method(:echo_write))
                ok

        func echo_write
                aPara = uv_Eventpara(client,:read)
                req   = aPara[1]

実行結果:

クライアントを実行すると、 “New Connection” メッセージが表示されます。

そして “hello from the client” メッセージが表示されます。

Testing RingLibuv - Server Side - Using Classes
New Connection
hello from the client

用例 (スレッドの使用):

load "libuv.ring"
load "objectslib.ring"

? "Testing RingLibuv - Threads - Using Classes"

open_object(:MyThreads)

class MyThreads from ObjectControllerParent

        func Start
                one_id = new_uv_thread_t()
                two_id = new_uv_thread_t()
                uv_thread_create(one_id, Method(:One))
                uv_thread_create(two_id, Method(:Two))
                uv_thread_join(one_id)
                uv_thread_join(two_id)
                destroy_uv_thread_t(one_id)
                destroy_uv_thread_t(two_id)

        func one
                ? "Message from the First Thread!"

        func Two
                ? "Message from the Second Thread!"

実行結果:

Testing RingLibuv - Threads - Using Classes
Message from the First Thread!
Message from the Second Thread!

この拡張機能 (RingLibuv) の詳細は「RingLibuv の用法」を参照してください。

Ring 1.8 の変更履歴

Ring 1.8 (2018年06月25日) の新機能と変更点です。

新機能と変更リスト

Ring 1.8 の新機能！

実行性能の改善

Find in files アプリケーション

String2Constant アプリケーション

StopWatch アプリケーション

そのほかの 3D サンプル

Manjaro Linux でのコンパイル

クラス範囲で This を Self として使用

オブジェクト属性のデフォルト値は NULL

For ループでローカルスコープを使用

バイナリ文字の統合

FoxRing ライブラリ

フォームデザイナーの改善

Cards ゲームの改善

RingQt の改善

拡張機能用コード生成器の改善

Ring コンパイラと VM の改善

拡張機能開発者への告知

実行性能の改善

Ring 1.8 は Ring 1.7 よりも高速化されました。

実行性能の利得はアプリケーションによりますが 10 ～ 100% ほどです。

この公開版において、現在の実行性能の関する考えかたを理解するには、 3D サンプルを参照してください。

詳しくは「性能改善に関する情報」を参照してください。

Find in files アプリケーション

Ring 1.8 より Find in files (ファイルの検索) アプリケーションがあります。

String2Constant アプリケーション

Ring 1.8 より String2Constant アプリケーションがあります。

このツールは文字列リテラルではなく、定数を使用したソースコードへ変換します。

これにより、定数を様々な言語を翻訳して言語ごとにソースコードのファイルへ格納できます。

Arabic.ring, English.ring, Japanese.ring など言語ごとに特殊なファイルを扱えます。

このツールの採用事例としては、アラビア語へ翻訳したフォームデザイナーがあります。

詳しくは「多国語アプリケーション」を参照してください。

StopWatch アプリケーション

Ring 1.8 より StopWatch アプリケーションがあります。

そのほかの 3D サンプル

サンプルは ring/samples/3D フォルダにあります。

このスクリーンショットはトップダウン - 多層立方体のサンプルです。

このスクリーンショットはカメラのサンプルです。

このスクリーンショットはカメラと背景のサンプルです。

開発者 : アズディン・レマル

Manjaro Linux でのコンパイル

Manjaro Linux での Ring 1.8 の動作確認を行いました。

検証者 : アイップ・リファイ

クラス範囲で This を Self として使用

クラス範囲とはクラス名の後、およびすべてのメソッドの前に出現する範囲のことです。

クラス範囲で This を Self として使えます。

用例:

func main

        o1 = new program {
                test()
        }

        ? o1

class program

        this.name = "My Application"
        this.version = "1.0"
        ? name ? version

        func test
                ? "Name    = " + name
                ? "Version = " + version

実行結果:

My Application
1.0
Name    = My Application
Version = 1.0
name: My Application
version: 1.0

注釈

弓括弧は現在の有効なオブジェクトを変更しますが、This はクラスを指したままにできます。

ちなみに

This と Self には違いがあります。 Self が指している現在の有効なオブジェクトは弓括弧で変更できます。

ほとんどの場合、クラス範囲で This あるいは Self を使う必要はないことを覚えていてください。

このように記述することもできます。

class program name version

または

class program name="My Application" version="1.0"

注釈

同名で定義されたグローバル変数との衝突を回避するために、クラス範囲で This あるいは Self を使用します。

オブジェクト属性のデフォルト値

オブジェクト属性のデフォルト値は NULL です。

Ring では、 NULL 値は空文字列または "NULL" を有する文字列です。

NULL 値の検査には isNULL() 関数を使用します。

用例:

oProgram = new Program
? oProgram.name
? oProgram.version
? isNULL(oProgram.name)
? isNULL(oProgram.version)
oProgram { name="My Application" version="1.0" }
? isNULL(oProgram.name)
? isNULL(oProgram.version)
? oProgram

class program
        name
        version

実行結果:

NULL
NULL
1
1
0
0
name: My Application
version: 1.0

以前の Ring バージョンでは、値の割り当て前にオブジェクトの属性へアクセスしていました。

これはランタイムエラーとなり isNULL() でも検出できません。

唯一の方法は値の割り当て、または try/catch/end を使うことです。

この挙動を変更しており、つなぎ目のない完全な制御を扱うことができます。

For ループでローカルスコープを使用

Ring 1.8 より、 For ループでの新規識別子 (変数) を定義するときは、ローカルスコープで定義します。

用例:

x = 10
? x             # 10 の表示
test1()
? x             # 10 の表示
test2()
? x             # 10 の表示

func test1
        for x = 1 to 5
        next
        ? x     # 6 の表示

func test2
        list = 1:5
        for x in list
        next
        ? x     # NULL の表示 ("For In" ループでは、ループ完了後に参照を破棄します)

実行結果:

10
6
10
NULL
10

バイナリ文字の統合

Ring 1.0 からバイナリ文字列の作成と操作に対応しました。

Ring 1.8 より文字列から個別に文字を取得したり、 '+' 演算子でまとめて統合できます。

用例:

cStr = "Welcome"
? cstr[1] + cstr[2] + cStr[5]
v = cstr[1] + cstr[2] + cStr[5]
? v
? len(v)
c1 = cStr[1]
? c1
aList = [1,2,3]
cStr = ""
for item in aList
        cStr += int2bytes(item)
next
? "All String"
? len(cStr)
? "First Part"
n1 = cStr[1] + cStr[2] + cStr[3] + cStr[4]
? len(n1)
? "Second Part"
n2 = cStr[5] + cStr[6] + cStr[7] + cStr[8]
? len(n2)
? "Third Part"
n3 = cStr[9] + cStr[10] + cStr[11] + cStr[12]
? len(n3)
? "All String"
cString = cStr[1] + cStr[2] + cStr[3] + cStr[4] +
          cStr[5] + cStr[6] + cStr[7] + cStr[8] +
          cStr[9] + cStr[10] + cStr[11] + cStr[12]
? len(cString)
? ascii(cStr[1])
? len(cStr[2])

実行結果:

Weo
Weo
3
W
All String
12
First Part
4
Second Part
4
Third Part
4
All String
12
1
1

FoxRing ライブラリ

開発者: ホセ・ロサード

FoxPro の関数を使用したクラスです。

用例:

Load "foxring.ring"

mf = new frFunctions
? mf.frAbs(-45)
? mf.frAbs(10-30)
? mf.frAbs(30-10)

? mf.frTransform("    Ring is a good language    ",
                 "@! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
? mf.frAllTrim("    Ring is a good language    ", Null)

実行結果:

45
20
20
    RING IS A GOOD LANGUAGE
Ring is a good language

フォームデザイナーの改善

Layout コントロール - フォームの読み込み時にコントロール名を表示。

Button コントロール - 相対パスで記述された画像ボタンを表示。

Table コントロール - フォームの読み込み時にコントロール名を表示。

"Bring to front" (前面へ移動) と "Send to back" (背面へ移動) 操作の挙動を改善。

新しいボタンをツールバーへ追加 (複製、前面へ移動、背面へ移動、削除)。

「メニューバーデザイナー、ウィンドウフラグのウィンドウ、オブジェクトウィンドウの選択」でのレイアウトを使用。

選択されたオブジェクトを変更するときにプロパティウィンドウの表示挙動を改善。

オブジェクトの複数選択で移動と寸法変更の新しいボタンを追加。

オブジェクトのプロパティ - レイアウト選択ボタンの追加。

フォームを開く、およびファイルの切り換えを高速化。

オブジェクトの順序ウィンドウ。

オブジェクトのウィンドウを選択。

コントロール名を変更するとき、名前はレイアウトオブジェクトを更新します。

Cards ゲームの改善

Cards ゲームはコンピュータと対戦できるようになりました。

RingQt の改善

このクラスを RingQt へ追加しました。

QTabBar

QFile

QFileDevice

QStandardPaths

QDir

QQuickWidget

QQmlError

QScrollBar

現行版の Qt へ対応するために Android 版 RingQt を更新をしました。

検証済み:

Qt 5.5.1

Qt 5.9.5

Qt 5.11.0

Android 版 RingQt では、リソースから Ring オブジェクトファイル (*.ringo) を実行できます。

拡張機能用コード生成器の改善

新しいオプション: StaticMethods

Ring 1.8 からコード生成器は staticmethods オプションに対応しました。

これにより、コード生成器はクラスでメソッドを呼び出すためのオブジェクトの準備は不要であることを検出できるようになりました。

用例:

<class>
name: QStandardPaths
para: void
nonew
staticmethods
</class>

QString displayName(QStandardPaths::StandardLocation type)
QString findExecutable(QString executableName, QStringList paths))

Ring コンパイラと VM の改善

相対パス指定のファイル読み込みを改善

eval() 関数関連のコードを最適化

メモリプールの改善

Ring へ Ring を組み込んだときに、ゲスト環境でエラーが発生してもホストは異常終了しなくなりました。

用例:

? "Start the test!"

pState = ring_state_init()

ring_state_runcode(pState," ? 'Let us try having an error' ? x")

ring_state_delete(pState)

? ""
? "End of test!"

実行結果:

Start the test!
Let us try having an error

Line 1 Error (R24) : Using uninitialized variable : x
in file Ring_EmbeddedCode
End of test!

コンパイラは、キーワードの後にくる行をトークンとみなして無視するようになりました。

用例:

see
"
        Hello, World!
"
test()

func
#======================#
        Test
#======================#

        ?
        "

        Hello from the Test function

        "

実行結果:

Hello, World!

Hello from the Test function

メインループ、 eval() 関数の特殊なループに関するコードの改善 (高速化)

NULL ポインタの使用回避用の追跡用 C ポインタの改善 (高速化)

弓括弧による Self オブジェクトの取得を改善 (高速化)

拡張機能開発者への告知

新たに Ring の拡張機能を C/C++ 言語で作成したときは

Ring 1.8 での使用前に拡張機能を再ビルドしてください (Ring 1.8 添付のヘッダファイルで DLL ファイルを再生成)。

これは仮想計算機の内部構造変更による影響です。再ビルドのみ必要であり、コードの変更は一切不要です。

Ring 1.9 の変更履歴

Ring 1.9 (2018年10月06日) の新機能と変更点です。

新機能と変更リスト

Ring 1.9 の新機能！

注目の新作ゲーム : Gold Magic 800

新作ゲーム

Ring ノートパッドの改善

StdLib の改善

BigNumber ライブラリ

RingPostgreSQL 拡張機能

クラウド経由でのウェブアプリケーション配布

RingQt の改善

メモリ管理の改善

拡張機能用のコード生成器の更新

そのほかの改善

注目の新作ゲーム : Gold Magic 800

これまでにないパズルゲームです。

体験版 (18 レベルまで) とゲームのソースコードが付属しています。

Steam ページ (44 レベル) : https://store.steampowered.com/app/939200/Gold_Magic_800/

レベルの選択ができます。

このスクリーンショットはレベル (1) です。

Gold Magic 800 レベルエディタです。

新作ゲーム

このゲームを Ring アプリケーションとして追加しました。

2048 ゲーム

Memory ゲーム

Wise Quadrat ゲーム

Tessera ゲーム

Othello ゲーム

このスクリーンショットは Android 版 2048 ゲームです。

このスクリーンショットは Tessera ゲームです。

このスクリーンショットは Othello ゲームです。

Ring ノートパッドの改善

新規スタイル

新規モード

開いたファイルをタブ UI で切り替え

バッチファイルの実行に対応

StdLib の改善

List2Code() 関数を StdLib へ追加しました。

この関数は Ring リストを実行中に Ring ソースコードへ変換することでソースファイルを保存できるようにします。

リストは文字列、数値または部分リストを有しています。

用例:

load "stdlibcore.ring"
aList = 1:10
? list2Code(aList)

実行結果:

[
        1,2,3,4,5,6,7,8,9,10
]

Str2ASCIIList() および ASCIIList2Str() 関数を StdLib へ追加しました。

これらの関数を使うと、文字列と数値リスト間で各項目が 1 バイト ASCII コードから成る文字列表現へ変換します。

これにより、バイト文字列を ASCII リストに変換してリストにある数値の演算ができます (XOR など)。

用例:

load "stdlibcore.ring"

cStr = "MmMm"

aList = Str2ASCIILIST(cStr)
? aList

cStr2 = ASCIIList2Str(aList)
? cStr2
? len(cStr2)

実行結果:

77
109
77
109

MmMm
4

BigNumber ライブラリ

BigNumber ライブラリで非常に大きい数の算術演算ができます。

用例:

load "bignumber.ring"

num1 = "62345678901234567891678345123456789"    ### 大なり
num2 =  "1237894567890123419871236545"          ### 小なり
num3 =     "64"                                 ### 小なりを割る
num4 = "765432"
num5 =      "3"                                 ### 累乗

? "Add big numbers:"
a1 = new BigNumber(num1)        a1.Print()
a2 = new BigNumber(num2)        a2.Print()
a3 = a1 + a2                    a3.Print() ? nl

? "Substract big numbers:"
a1 = new BigNumber(num1)        a1.Print()
a2 = new BigNumber(num2)        a2.Print()
a3 = a1 - a2                    a3.Print() ? nl

? "Multiply big numbers:"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num2)        a2.print()
a3 = a1 * a2                    a3.print() ? nl

? "Divide big numbers:"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num2)        a2.print()
a3 = a1 / a2                    a3.print() ? nl

? "Divide big numbers: by very small number"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num3)        a2.print()
a3 = a1 / a2                    a3.print() ? nl

? "Power of big number:"
a1 = new BigNumber(num1)        a1.print()
a2 = new BigNumber(num5)        a2.print()
a3 = a1 ^ a2                    a3.print() ? nl

実行結果:

Add big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
62345680139129135781801764994693334

Substract big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
52345687663340000001554925252220244

Multiply big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
77177377243260150103462178714197454736432472780119682305154005

Divide big numbers:
62345678901234567891678345123456789
1237894567890123419871236545
50364288

Divide big numbers: by very small number
62345678901234567891678345123456789
64
974151232831790123307474142554012

Power of big number:
62345678901234567891678345123456789
3
242336636261471172092347146031727004 (実行結果は次行へ続きます)
371698195628343934238988256152289508 (実行結果は次行へ続きます)
493964611043228971692389860897069

詳しくは「BigNumber ライブラリ」を参照してください。

RingPostgreSQL 拡張機能

Ring 1.9 では RingPostgreSQL 拡張機能により PostgreSQL データベースのネイティブ対応があります。

用例:

load "postgresqllib.ring"

conninfo = "user=postgres password=sa dbname = mahdb"

exit_nicely = func conn {
        PQfinish(conn)
        shutdown(1)
}

conn = PQconnectdb(conninfo)

if (PQstatus(conn) != CONNECTION_OK)
        fputs(stderr, "Connection to database failed: "+PQerrorMessage(conn))
                call exit_nicely(conn)
ok

res = PQexec(conn, "
        DROP DATABASE mahdb;
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Remove failed: " + PQerrorMessage(conn))
        PQclear(res)
ok
PQclear(res)

res = PQexec(conn, "CREATE DATABASE mahdb;")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Create database failed: " + PQerrorMessage(conn))
        PQclear(res)
ok

res = PQexec(conn, "
CREATE TABLE COMPANY (
                 ID INT PRIMARY KEY     NOT NULL,
                 NAME           TEXT    NOT NULL,
                 AGE            INT     NOT NULL,
                 ADDRESS        CHAR(50),
                 SALARY         REAL );
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Create Table failed: " + PQerrorMessage(conn))
        PQclear(res)
ok
PQclear(res)

res = PQexec(conn, "
                INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
                VALUES  (1, 'Mahmoud' , 31, 'Jeddah', 10.00 ),
                                (2, 'Ahmed'   , 27, 'Jeddah', 20.00 ),
                                (3, 'Mohammed', 33, 'Egypt' , 30.00 ),
                                (4, 'Ibrahim' , 24, 'Egypt ', 40.00 );
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Insert Table failed: " + PQerrorMessage(conn))
        PQclear(res)
ok
PQclear(res)

res = PQexec(conn, "
           select * from COMPANY
")
if PQresultStatus(res) != PGRES_TUPLES_OK
        fputs(stderr, "Select failed: " + PQerrorMessage(conn))
        PQclear(res)
        call exit_nicely(conn)
ok

nFields = PQnfields(res)
for i = 1 to nFields
                ? PQfname(res, i-1)
next

? copy("*",60)

for i = 1 to PQntuples(res)
        for j=1 to nFields
                see PQgetvalue(res, i-1, j-1) + " "
        next
        see nl
next

PQclear(res)

PQfinish(conn)

実行結果:

id
name
age
address
salary
************************************************************
1 Mahmoud  31 Jeddah  10
2 Ahmed    27 Jeddah  20
3 Mohammed 31 Egypt   30
4 Ibrahim  24 Egypt   40

詳しくは「PostgreSQL ライブラリ」を参照してください。

クラウド経由でのウェブアプリケーション配布

これは新規プロジェクトの作成方法、およびクラウドサービスである Heroku で Ring のウェブアプリケーションを配布する方法を解説するためのチュートリアルです。

デモ : http://testring.herokuapp.com/

プロジェクト : https://github.com/ring-lang/RingWebAppOnHeroku

Heroku ウェブサイト : https://www.heroku.com/

詳しくは「クラウド経由でのウェブアプリケーションの配布方法」を参照してください。

RingQt の改善

このクラスを RingQt へ追加しました。

QDrag

QMimeData

QDropEvent

QDragMoveEvent

QDragEnterEvent

QDragLeaveEvent

QClipboard

QChildEvent

QGeoPositionInfo

QGeoCoordinate

QGeoAddress

QGeoAreaMonitorInfo

QGeoAreaMonitorSource

QGeoCircle

QGeoPositionInfoSource

QGeoRectangle

QGeoShape

QGeoSatelliteInfo

QGeoSatelliteInfoSource

QNmeaPositionInfoSource

QAxWidget

QTextStream

QPrinterInfo

QPrintPreviewWidget

QPrintPreviewDialog

QPageSetupDialog

QAbstractPrintDialog

QPrintDialog

このクラスを更新しました。

QAllEvents クラス : 新規イベント (ChildAdded, ChildPolished, ChildRemoved)

QPainter クラス : 座標点の Ring リストを扱えるようにするためにメソッドを更新 (drawConvexPloygon, drawPoints, drawPolyline)

QVariant : オブジェクトの作成時、様々な仮引数を扱うための追加のバージョン。

QAxBase : dynamicCall() および querySubObject() メソッドの異なるバージョン。

この用例は QPrintPreviewDialog クラスの用法です。

用例:

load "guilib.ring"

new qApp {
        win1 = new qwidget() {
                setwindowtitle("Printer Preview Dialog")
                setgeometry(100,100,800,880)
                printer1 = new qPrinter(0)
                show()
                oPreview = new qPrintPreviewDialog(printer1) {
                        setParent(win1)
                        move(10,10)
                        setPaintrequestedevent("printPreview()")
                        exec()
                }
        }
        exec()
}

func printPreview
        printer1  {
                painter = new qpainter() {
                        begin(printer1)
                        myfont = new qfont("Times",50,-1,0)
                        setfont(myfont)
                        drawtext(100,100,"Test - Page (1)")
                        printer1.newpage()
                        drawtext(100,100,"Test - Page (2)")
                        printer1.newpage()
                        myfont2 = new qfont("Times",14,-1,0)
                        setfont(myfont2)
                        for x = 1 to 30
                                drawtext(100,100+(20*x),"Number : " + x)
                        next
                        endpaint()
                }
        }

スクリーンショット:

メモリ管理の改善

RING_API_RETMANAGEDCPOINTER() を実装するために Ring API を 更新しました。

RING_API_RETMANAGEDCPOINTER() は C/C++ 言語で記述された Ring 拡張機能でマネージドポインタを Ring へ返します。このポインタは参照カウンタを使用している Ring VM により制御可能です。

これは RingQt の QPixMap オブジェクトなどのアンマネージドのリソース解放用コードを書く必要性を回避するには重要です。

また、コード生成器は必要に応じて拡張機能を RING_API_RETMANAGEDCPOINTER() に対応したものへ自動更新します。

文法:

RING_API_RETMANAGEDCPOINTER(void *pValue,const char *cPointerType,
                                void (* pFreeFunc)(void *,void *))

RING_API_RETMANAGEDCPOINTER() の詳細は「C/C++ による拡張機能の開発方法」を参照してください。

拡張機能用のコード生成器の更新

拡張機能用のコード生成器は <loadfile> 命令に対応しました。

<loadfile> filename.cf

これにより拡張機能設定ファイルを複数のファイルへ分割しやすくなりました。

用例:

ファイル : RingQt 拡張機能の qt_module_network.cf より引用

<comment>
                                モジュール (ネットワーク)
</comment>

<loadfile> qabstractsocket.cf
<loadfile> qnetworkproxy.cf
<loadfile> qtcpsocket.cf
<loadfile> qtcpserver.cf
<loadfile> qhostaddress.cf
<loadfile> qhostinfo.cf
<loadfile> qnetworkrequest.cf
<loadfile> qnetworkaccessmanager.cf
<loadfile> qnetworkreply.cf

Ring 1.9 以降ではコード生成器はクラス定義時の <managed> オプションに対応しました。

このオプションにより、生成器は C ポインタを返すために RING_API_RETMANAGEDCPOINTER() を使用します。

これにより、ガベージコレクターは C ポインタを管理対象にします。

用例:

<class>
name: QFont
para: QString, int, int, bool
managed
</class>

そのほかの改善

Ring コンパイラ - ルールを (要素 -> '-' 式) から (要素 -> '-' 要素) へ変更。

Ring VM - エラーメッセージの改善。

isNULL() 関数のコードを改善。 - ポインタの検査のために更新。

ringvm_evalinscope() 関数のコードを改善。 - トレースライブラリで使用。

Space() 関数のコードを改善。

Hex() および Dec() 関数のコードを改善。

Download() 関数のコードを改善。

SubStr() 関数のコードを改善。

Unsigned() 関数のコードを改善。

Chdir() 関数のコードを改善。

Tempname() 関数のコードを改善。

HashTable コードを改善。 - 新規キー (strdup() の代わりの ring_strdup() 関数の使用)。

新規関数 : SRandom() - 乱数生成器の初期化。

新規関数 : IsPointer()

IsPointer() 関数があるため IsList() は C ポインタで True を返さなくなりました。

ringvm_see() 関数に関連した ? 演算子の更新しました。

Ring のテストとして Linux と macOS (Windows だけではない) でのスクリプトの実行。

RingAllegro を Allegro 5.1 から Allegro 5.2 へ更新。

RingAllegro へシェーダー関数を追加。

RingAllegro へジョイスティック関数を追加。

RingLibSDL へネットワーク関数を追加。

2D ゲームエンジン - Text クラス - 事前に Font オブジェクトの用法を参照してください。

2D ゲームエンジン - ジョイスティックへの自動対応。

必要時、 RingLibCurl はCURLOPT_COPYPOSTFIELDS を自動的に使用するように更新しました。

Ring ノートパッド - 前を検索 (Find Previous) 機能。

Ring ノートパッド - 標準スタイル。

Ring ノートパッド - ファイルの名前に非英語文字 (日本語、アラビア語、フランス語など) を使用可能にするため対応。

フォームデザイナー - ツールボックスアイコンの細部調整。

フォームデザイナー - QAllEvents クラス - マウスのダブルクリックイベント。

ファイルの検索 - 置換および全て置換 (Replace and Replace All) オプション。

変換結果の改善のために Qt クラスコンバーターを更新。

ring/samples/other フォルダへサンプルを追加。

Ring ノートパッド, RingQt, 2D ゲームエンジンのコードリファクタリング。

取扱説明書の改善 - 現在の Ring 環境の状況を反映するために画像を多数更新。

取扱説明書の改善 - 取扱説明書へ章節を追加。

Ring 1.10 の変更履歴

Ring 1.10 (2019年01月25日) の新機能と変更点です。

新機能と変更リスト

Ring 1.10 の新機能！

Chess ゲーム

Minesweeper ゲーム

Knight Tour ゲーム

Game of Life ゲーム

Pong ゲーム

Snakes and Ladder ゲーム

新作ゲーム

Visual Studio Code 用の Ring 拡張機能

Ring パッケージ管理プログラム (RingPM)

テストの改良

そのほかの改善

Chess ゲーム

Chess ゲーム (二人対戦)

Minesweeper ゲーム

ゲームの目的は「地雷」または、爆弾が隠されている長方形のゲーム盤をひとつも爆発させずにゲーム盤を片付けることです。

Knight Tour ゲーム

チェスゲーム盤の全陣地をナイトだけで移動します。

あなたには 63回の移動だけで全陣地を訪れることができるでしょうか？

Game of Life ゲーム

このゲームは鑑賞用です。進化は初期状態により決定されるため、それ以外の入力値は不要です。

Game of Life では初期構成と進化を観察します。上級プレイヤーは特殊属性模様を作り、相互作用の発生を楽しみます。

Pong ゲーム

シンプルな「テニス風」の対戦ゲームでありお互いのラケットでボールを打ち返しながらで戦います。

ボールを逃したほうが負けになります。

Snakes And Ladder ゲーム

Snakes and Ladder ゲームは Ring 用 2D ゲームエンジンを使用しています。

新作ゲーム

このゲームを application フォルダへ追加しました。

Lights Out ゲーム

Dots and Boxes ゲーム

Magic Four ゲーム

Sums Puzzle ゲーム

このスクリーンショットは Sums Puzzle ゲームです。

Visual Studio Code 用の Ring 拡張機能

この拡張機能は Visual Studio Code でプログラミング言語 Ring に対応できるようにします。

Ring パッケージ管理プログラム (RingPM)

Ring にはパッケージのインストール、更新、および削除で使用するパッケージ管理プログラム (RingPM) があります

パッケージ管理プログラムではパッケージ間の互換性確認のために意味つきバージョン管理を使用しています。

パッケージ管理プログラムのオプションは、

===========================================================================
用法 : ringpm [コマンド]
コマンド : search  [キーワード...]
コマンド : refresh : レジストリの更新 (パッケージリスト)
コマンド : install [ <パッケージ名> [from <ユーザ名>] [branch <ブランチ名>] ]
コマンド : list    [-u : 更新の確認]
コマンド : run     [パッケージ名]
コマンド : update  <パッケージ名>
コマンド : remove  <パッケージ名>
コマンド : format  : すべてのパッケージを削除
コマンド : new     <パッケージ名>
コマンド : package : 現在のフォルダにパッケージを作成
===========================================================================

テストの改善

プログラミング言語 Ring のテスト用新型フレームワークです。

そのほかの改善

Ring コンパイラ : 定数のときに最初の演算子の検査を回避するよう「演算子 演算子」の対応を改善。

Ring コンパイラ : 存在しないファイルを読み込もうとしたとき、エラーメッセージで呼び出し元のファイル名を表示。

Ring コンパイラ : ソースコードファイルで改行のない一行コメントに対応。

Ring コンパイラ : nNewObject に対する Parser 構造体で nNoAssignment 属性を変更。

Ring VM : 新規オブジェクトへアクセスするために弓括弧内での Return 命令の対応を改善。

Ring VM : Dir() 関数 - 実行結果に "." や ".." を追加しないよう変更。

Ring VM : Dir() 関数 - Linux と macOS において項目の種類で「ファイル|ディレクトリ」の実行結果を修正。

Ring VM : ICO_LISTSTART - オブジェクトの属性設定時に pVM->aSetProperty を整理。

Ring VM : ICO_NEWOBJECT - オブジェクトの属性設定時に pVM->aSetProperty を整理。

Ring VM : Setter および Getter メソッドの対応コードを改善。

Ring2EXE: ライブラリ情報を ring/ring2exe/libs フォルダ内の個別ファイルへ格納。

WebLib : ライブラリを複数のソースコードファイルへ分割整理しました。

StdLib : IsVowel() 関数 - コードの改善。

StdLib : Palindrome() 関数から IsPalindrome() 関数へ名称変更。

RingQt : QString クラスへ Count(), Left(), Mid() および Right() メソッドを追加。

Read Me ファイルの改善。

Ring 1.11 の変更履歴

Ring 1.11 (2019年09月15日) の新機能と変更点です。

新機能と変更リスト

Ring 1.11 の新機能！

3Dサンプルの追加

Checkers ゲーム

Sokoban ゲーム

Maze ゲーム

Snake ゲーム

Sudoku ゲーム

デスクトップスクリーンショットアプリケーション

文書読み上げアプリケーション

RingRayLib 拡張機能

ZeroLib ライブラリ

StdLib - 関数の追加

RingQt の改良

実行性能の向上

取扱説明書の増補

そのほかの改善

3Dサンプルの追加

Ring 1.11 より Qt3D 用の3Dサンプルがあります。

Folder : ring/samples/other/UsingQt3D (18 サンプル収録)

Checkers ゲーム

遊びかたは国際ルールですが、強制ジャンプを採用した Checkers の方言です。

無効な移動、無効なジャンプ、強制ジャンプを扱います。

正方形は錯誤を示すために色分けしています。

正方形は移動元と移動先、またはジャンプ先を示すために色分けしています。

Sokoban ゲーム

Sokoban ゲームを短時間で実装したものです。

2Dゲーム用 Ring ゲームエンジンを用いて二時間で開発しました (300行以下のコード)

Maze ゲーム

Maze ゲームを短時間で実装したものです。

2Dゲーム用 Ring ゲームエンジンを用いて開発しました (約100行のコード)

このゲームにはレベルデザイナーも搭載してあります (10分で開発、37行のコード)

Snake ゲーム

Snake ゲームを短時間で実装したものです。

2Dゲーム用 Ring ゲームエンジンを用いて開発しました (約200行のコード)

Sudoku ゲーム

9×9 のマスから構成される各列・各段と 9 つの 3×3 の補助マスを埋めて、全部のマスを 1～9 までの数字を全て埋めて完成させます。

デスクトップスクリーンショットアプリケーション

文書読み上げアプリケーション

RingRayLib 拡張機能

Ring 1.11 より RayLib ゲームプログラミングライブラリに対応した拡張機能があります。

用例:

load "raylib.ring"

screenWidth     = 800
screenHeight    = 450

InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window")

SetTargetFPS(60)

while !WindowShouldClose()
        BeginDrawing()
        ClearBackground(RED)
        DrawText("Congrats! You created your first window!", 190, 200, 20, WHITE)
        EndDrawing()
end

CloseWindow()

実行結果:

用例:

load "raylib.ring"

screenWidth = 800
screenHeight = 450

InitWindow(screenWidth, screenHeight, "raylib [shapes] example - basic shapes drawing")

SetTargetFPS(60)

while !WindowShouldClose()

        BeginDrawing()

        ClearBackground(RAYWHITE)

        DrawText("some basic shapes available on raylib", 20, 20, 20, DARKGRAY)
        DrawCircle(screenWidth/4, 120, 35, DARKBLUE)
        DrawRectangle(screenWidth/4*2 - 60, 100, 120, 60, RED)
        DrawRectangleLines(screenWidth/4*2 - 40, 320, 80, 60, ORANGE)
        DrawRectangleGradientH(screenWidth/4*2 - 90, 170, 180, 130, MAROON, GOLD)

        DrawTriangle(Vector2(screenWidth/4*3, 80),
                         Vector2(screenWidth/4*3 - 60, 150),
                         Vector2(screenWidth/4*3 + 60, 150), VIOLET)

        DrawPoly(Vector2(screenWidth/4*3, 320), 6, 80, 0, BROWN)

        DrawCircleGradient(screenWidth/4, 220, 60, GREEN, SKYBLUE)

        DrawLine(18, 42, screenWidth - 18, 42, BLACK)
        DrawCircleLines(screenWidth/4, 340, 80, DARKBLUE)
        DrawTriangleLines(Vector2(screenWidth/4*3, 160),
                          Vector2(screenWidth/4*3 - 20, 230),
                          Vector2(screenWidth/4*3 + 20, 230), DARKBLUE)
        EndDrawing()

end

CloseWindow()

実行結果:

ZeroLib ライブラリ

Ring 1.11 より添字 0 始点のリストと文字列用クラスである ZeroLib ライブラリがあります。

用例:

load "zerolib.ring"

? "Using List - Index start from 0"
List = Z( [1,2,3] )
List.Add(4)
List.Add(5)
? List[0]
? List[1]
? List[2]
? List[3]
? List[4]
nIndex = List.find(2)
? "Find(2) = " + nIndex
List.delete(0)
? "After deleting the first item : List[0]"
? "Now List[0] = " + List[0]

? "Using String - Index start from 0"
String = Z( "Welcome" )
? String[0]
? String[1]
? String[2]
? String[3]
? String[4]
? String[5]
? String[6]

実行結果:

Using List - Index start from 0
1
2
3
4
5
Find(2) = 1
After deleting the first item : List[0]
Now List[0] = 2
Using String - Index start from 0
W
e
l
c
o
m
e

StdLib - 関数の追加

次の関数を StdLib へ追加しました

IsListContainsItems(aParent,aChild)

IsBetween(nNumber,nMin,nMax)

TimeInfo(cInformation)

用例:

load "stdlibcore.ring"
? "Using the IsListContainsItems() function"
aList1 = "a":"z"
aList2 = [:h,:l,:p,:u]
? IsListContainsItems(aList1,aList2)
? "Using the IsBetween() function"
? isBetween(1,3,4)
? isBetween(4,1,6)
? "Using the TimeInfo() function"
? timeInfo(:date)
? timeInfo(:year)
? timeInfo(:time)
? timeInfo(:hour_12)

実行結果:

Using the IsListContainsItems() function
1
Using the IsBetween() function
0
1
Using the TimeInfo() function
05/24/19
2019
15:30:33
03

前述した関数の詳細は StdLib 関数の章を参照してください。

RingQt の改良

Qt 5.12.3 を用いての RingQt のビルド

Android 用 RingQt - WebView モジュールの存在時に WebView をインクルードするためにプロジェクトファイルを更新

QString クラス - 新規メソッド

compare()

contains()

indexOf()

insert()

isRightToLeft()

remove()

repeated()

replace()

startsWith()

endsWith()

toHtmlEscaped()

clear()

isnull()

resize()

fill()

QAxBase および QVariant - API の改善

RingQt へ下記のクラスを追加しました。

QQuickView クラス

QPrintDialog クラス

QAxWidget2 クラス

QTextToSpeech クラス

QGraphicsView クラス

QAbstractAspect クラス

QNode クラス

QEntity クラス

QTransform クラス

QAspectEngine クラス

QTorusMesh クラス

QConeMesh クラス

QCylinderMesh クラス

QCuboidMesh クラス

QPlaneMesh クラス

QSphereMesh クラス

QPhongMaterial クラス

QForwardRenderer クラス

Qt3DWindow クラス

QAbstractCameraController クラス

QFirstPersonCameraController クラス

QTextureMaterial クラス

QExtrudedTextMesh クラス

QText2DEntity クラス

QSkyBoxEntity クラス

QConeGeometry クラス

QOrbitCameraController クラス

QDiffuseSpecularMaterial クラス

QGoochMaterial クラス

QMetalroughMaterial クラス

MorphPhongMaterial クラス

QPervertexColorMaterial クラス

QInputAspect クラス

QFrameAction クラス

QLogicAspect クラス

QCamera クラス

QCameraLens クラス

QMesh クラス

QTechnique クラス

QMaterial クラス

QEffect クラス

QRenderPass クラス

QSceneLoader クラス

QPointLight クラス

QRenderAspect クラス

QTextureLoader クラス

QObjectPicker クラス

QCameraSelector クラス

QCullFace クラス

QDepthTest クラス

QViewPort クラス

実行性能の向上

Ring 1.11 は Ring 1.10 よりも高速です。

アプリケーションにもよりますが 10% ～ 30% ほどの性能向上が見込めます。

取扱説明書の増補

次の章を取扱説明書へ追加しました。

チュートリアル: C/C++ による拡張機能の開発方法

Qt3D の用法

ZeroLib の用法

RingRayLib の用法

そのほかの改善

新規サンプル

samples/other/ModuloTimesTableCircle フォルダ

samples/other/saveimage folder

samples/other/UsingQML folder

samples/other/myguicontrol.ring

samples/other/qcalendarwidget.ring

samples/other/qcalendarwidget2.ring

samples/other/sudoku-KL02.ring

samples/other/sudoku-KL02-longproblem.ring

samples/other/zerobasedlist.ring

ringlibs/gameengine/lesson17.ring (ボタンの用法)

samples/other/SQLTutorial/SQL-Tutorial.ring

samples/other/DrawFourier/AA-Draw-Fourier.ring

samples/other/SmartPhoneEmulator/ejemploKey.ring

samples/other/DiscreteFourierTransform/DiscreteFourierTransform.ring

samples/other/phonedatabase/PhoneDatabase.ring

Gold Magic 800 - レベルの追加 (44 レベル)

Fifteen Puzzle ゲーム 3D - コードの改善 (アニメーション速度)

Flappy Bird 3000 - ゲームオーバー時、時機 (鳥) を落下させる演出へ変更

Ring ノートパッド - 着脱可能ウィンドウ方式時のキーボード・ショートカット

Ring ノートパッド - 関数リストの表示時に "_" 文字がある関数を除外しなくなりました

Ring ノートパッド - 実行結果ウィンドウ - データの送信 - コードの改良

Ring ノートパッド - 検索と置換ウィンドウ - コードの改良

Ring ノートパッド - 編集メニュー - テキストの挿入ウィンドウ

Ring ノートパッド - 編集メニュー - 大文字と小文字オプション

Ring ノートパッド - 編集メニュー - 接頭字オプション

Ring ノートパッド - 編集メニュー - コメント行とコメントブロック行

Ring ノートパッド - ファイルタブ - コンテキストメニュー (ほかのファイルを閉じる、使用中のファイルを閉じる、すべてのファイルを閉じる)

RingPM - パッケージの更新 - 依存性の再インストールをしなくなりました

2Dゲーム用 Ring ゲームエンジン - 追加 : GE_FULLSCREEN, GE_SCREEN_W および GE_SCREEN_H

2Dゲーム用 Ring ゲームエンジン - 追加 : ゲームオブジェクトの name プロパティ

2Dゲーム用 Ring ゲームエンジン - 追加 : find() ゲームクラスのメソッド (名前によるオブジェクトの検索)

2Dゲーム用 Ring ゲームエンジン - oGame[:ObjectName] によるオブジェクトへのアクセスに対応

Natural ライブラリ - 実行性能の改良

FoxRing - 追加: frCTOD() 関数

拡張機能用のコード生成器 - 新規構造体によるマネージドポインタを用いた関数の生成

Ring VM - Ring オブジェクトファイルエラーに関するエラーコード

Ring VM - Eval() 関数 - コードの改良 (実行性能の改善)

Ring VM - ステート管理 - コードの改良

Ring VM - ">" 演算子と演算子オーバーロード - コードの改良

Ring VM - 代入とオブジェクトメソッドの呼び出し - コードの改良

Ring VM - オブジェクト指向プログラミング (OOP) - Getter、 メソッド - 実行性能の改善

Ring API - C 拡張機能での RING_API_ISLIST() の対応

Ring コンパイラ - 条件分岐の記述時に開業後の数値とリテラルに対応

Ring コンパイラ - 行の開始におけるセミコロン (;) へ対応

Ring コンパイラ - ループ外からの Loop と Exit 命令は使えなくなりました

Ring 1.12 の変更履歴

Ring 1.12 (2020年01月25日) の新機能と変更点です。

新機能と変更リスト

Ring 1.12 の新機能！

Go ゲーム

ASCII コード表アプリケーション

BMI 計算機アプリケーション

カレンダーアプリケーション

ユリウス積日カレンダーアプリケーション

チュートリアル: 数値を単語表記へ変換

Load Again コマンド

ring_state_filetokens() 関数

組み込み型オブジェクトファイルの生成

RingRayLib の改良

そのほかの改善

Go ゲーム

囲碁ゲームの実装です

ASCII コード表アプリケーション

ASCII コード表を表示するアプリケーションです。

BMI 計算機アプリケーション

BMI を計算するだけのアプリケーションです。

カレンダーアプリケーション

これは 2020 年カレンダーです。

ユリウス積日カレンダーアプリケーション

これはユリウス積日カレンダーアプリケーションです。

チュートリアル: 数値を単語表記へ変換

フォルダ : ring/samples/other/number2words

Load Again コマンド

Ring 1.12 から Load Again コマンドが使えるようになりました。

このコマンドを使うと Ring ソースファイルにある定数を何度でも読み込めます。

これはグローバル定数による翻訳用 Ring ソースファイルを使用するときに便利です。

用例:

下記はアラビア語と英語に対応するプロジェクトからの引用です。

english.ring と arabic.ring ファイルには翻訳で使う定数があります。

これらのファイルはプログラムの開始時に読み込まれます。

Load コマンドで同じファイルの再読み込みはできません。

Load コマンドは同じソースファイルを一度だけ読み込み、それ以降の読み込み指定は無視するからです。

しかし Load Again コマンドならできます。

よって、下記のコードにより実行中にファイルの再利用ができます。

func setLang nLanguage
        if C_ENV_DEFAULT_LANG = nLanguage
                return
        ok
        C_ENV_DEFAULT_LANG = nLanguage
        # 言語の変更
                switch nLanguage
                        on C_TRANSLATION_ENGLISH
                                load again "translation/english.ring"
                        on C_TRANSLATION_ARABIC
                                load again "translation/arabic.ring"
                off

ring_state_filetokens() 関数

ring_state_filetokens() 関数は Ring ソースコードファイルにあるトークンを一括取得します。

C_FILENAME      = "test_tokens.ring"
C_WIDTH         = 12

# ファイルの書き込み
        write(C_FILENAME,'
                        see "Hello, World!"
                        ? 3*2+3
                        Name = "Ring"
                        ? Name
')

# トークンの種類
        C_KEYWORD       = 0
        C_OPERATOR      = 1
        C_LITERAL       = 2
        C_NUMBER        = 3
        C_IDENTIFIER    = 4
        C_ENDLINE       = 5

# キーワードリスト
aKEYWORDS = ["IF","TO","OR","AND","NOT","FOR","NEW","FUNC",
"FROM","NEXT","LOAD","ELSE","SEE","WHILE","OK","CLASS","RETURN","BUT",
"END","GIVE","BYE","EXIT","TRY","CATCH","DONE","SWITCH","ON","OTHER","OFF",
"IN","LOOP","PACKAGE","IMPORT","PRIVATE","STEP","DO","AGAIN","CALL","ELSEIF",
"PUT","GET","CASE","DEF","ENDFUNC","ENDCLASS","ENDPACKAGE",
"CHANGERINGKEYWORD","CHANGERINGOPERATOR","LOADSYNTAX"]

pState = ring_state_new()
aList = ring_state_filetokens(pState,C_FILENAME)
PrintTokens(aList)
ring_state_delete(pState)

func PrintTokens aList
        for aToken in aList
                switch aToken[1]
                on C_KEYWORD
                        ? Width("Keyword",C_WIDTH) + ": "  + aKeywords[0+aToken[2]]
                on C_OPERATOR
                        ? Width("Operator",C_WIDTH)  + ": " + aToken[2]
                on C_LITERAL
                        ? Width("Literal",C_WIDTH)  + ": " + aToken[2]
                on C_NUMBER
                        ? Width("Number",C_WIDTH)  + ": " + aToken[2]
                on C_IDENTIFIER
                        ? Width("Identifier",C_WIDTH)  + ": " + aToken[2]
                on C_ENDLINE
                        ? "EndLine"
                off
        next

func Width cText,nWidth
        return cText+copy(" ",nWidth-len(cText))

実行結果:

EndLine
Keyword     : SEE
Literal     : Hello, World!
EndLine
Operator    : ?
Number      : 3
Operator    : *
Number      : 2
Operator    : +
Number      : 3
EndLine
Identifier  : name
Operator    : =
Literal     : Ring
EndLine
Operator    : ?
Identifier  : name
EndLine

組み込み型オブジェクトファイルの生成

-geo オプションはソースコードファイル (*.ring) から組み込み型オブジェクトファイル (C ソースコード) を生成します。

コマンド:

ring test.ring -geo

このコマンドは最低でも 3 ファイルを生成します。

test.c
ringappcode.c
ringappcode.h

プロジェクトの規模により、大量のファイルを生成します。

生成後のファイルは Ring VM のバイトコードとして実行されます。

RingRayLib の改良

RingRayLib の新作サンプル集を追加しました。

音声の読み込みと再生

テクスチャの入力

音楽のストリーミング再生

長方形の拡縮

カラーパレット

視線追従

当たり判定の領域

ベジェ曲線

画像生成

15パズルゲーム

キュービックマップ

スクリーンショット:

そのほかの改善

新作サンプル集

ring/samples/other/Hex2UTF8.ring

ring/samples/other/CalmoSoftPrimesTable.ring

ring/samples/other/CalmoSoftTicTacToeGame.ring

ring/samples/other/CalmoSoftSimpleGoGame.ring

ring/samples/other/arabicmysql.ring

ring/samples/other/CalmoSoftExtraCube.ring

ring/samples/other/DynamicCode/anonfunc.ring

ring/samples/other/DynamicCode/deletethisfile.ring

ring/samples/other/DynamicCode/modifythisfile.ring

ring/samples/other/changesyntax/ArabicDemo.ring

ring/samples/other/changesyntax/EnglishDemo.ring

ring/samples/other/changesyntax/ChangeKeywordsArabic.ring

ring/samples/other/changesyntax/ChangeKeywordsEnglish.ring

ring/samples/other/changesyntax/pascal.ring

ring/samples/other/hijridate.ring

Ring ノートパッド - プロジェクトファイル - デスクトップ画面の幅による最小幅の設定

Ring ノートパッド - 実行結果ウィンドウ - テキスト末尾へのカーソル移動

Ring ノートパッド - 実行結果ウィンドウ - 改行を正しく表示できるようになりました

フォームデザイナー - スタイルの改善 - 色と寸法の制御

VideoMusicPlayer を RingQt 更新後に正常動作させるために更新

FlappyBird3000 - Android での応答速度を向上

Snake ゲーム : デフォルトのウィンドウ寸法を変更 (800x600)

Maze ゲーム : デフォルトのウィンドウ寸法を変更 (800x600)

Maze ゲーム : プレイヤによるカメラ移動

Maze ゲーム : ゲームをやり直すときに You Win メッセージを消去

ゲームエンジン : ゲームウィンドウが生成できないときにエラーメッセージを表示

Ring テスト : Linux と macOS 用のビルドファイル build.sh を追加

RingQt : Qt 5.12.6 へ更新

RingQt : QQMLEngine クラスの追加

RingQt : Bluetooth 対応を除く RingQt ビルドファイルの追加

RingQt : イベントコードの大きさを従来の 100 文字から 200 文字へ変更

RingQt : RingQt クラスの章において Qt ドキュメントのリンクを修正

RingQt for Android : Ring オブジェクトファイル (ringo) の実行用コードの改善

RingQt アプリケーションを正常に配布できるようにするために Ring2EXE の RingQt 用の構成ファイルを更新

コード生成器 : 構造体関数の生成時に関数名を英数小文字へ変換するようになりました

OSCopyFolder() 関数でも下位フォルダのファイルをコピーできるようにするために更新

fgetpos() 関数は想定した動作になるよう更新

IsFunction() 関数は英数大小同一動作になるよう更新

Space() 関数は空白文字列の出力を消去するよう更新

Ring コンパイラ : Windows 用の Clang コンパイラのビルドファイル buildclang.bat を追加

Ring VM - 内部ハッシュ関数の更新

Ring VM - オブジェクトの新規作成時における pVM->aSetProperty 設定用コードの改善

Ring VM - ステート管理用のコードを改善

Ring 1.13 の変更履歴

Ring 1.13 (2020年09月15日) の新機能と変更点です。

新機能と変更リスト

Ring 1.13 の新機能！

Ring 入門書のご案内

WebAssembly への対応

スレッド機能の改良

Laser ゲーム

Magic Balls ゲーム

MoneyBoxes ゲーム

Matching ゲーム

Pairs ゲーム

Word ゲーム

Tetris ゲーム

Escape ゲーム

Hassouna Course のサンプル集

SpaceVim エディタへの対応

RingQt の改良

RingRayLib の改良

RingStbImage 拡張機能

低水準関数の追加

フォルダ構成の改善

そのほかの改善

Ring 入門書のご案内

Apress: Beginning Ring Programming (From Novice to Professional)

URL: https://www.apress.com/gp/book/9781484258323

※日本では Amazon などで英語洋書の取り扱いある書店にて取り寄せ、または購入できます。

本書は実践的で豊富な用例により Ring プログラミングの世界を解りやすく丁寧に解説することを目的としています。

どんなことがわかるようになるの？

Ring の入門とデータ型、入出力 (I/O)、関数、さらにクラスを習得します。

Ring で構造化、自然言語、オブジェクト指向、関数型、およびメタプログラミングができるようになります。

Ring の機能をすべて活用することで、プログラムのコードのリファクタリングとクリーンなプログラムのアーキテクチャ開発ができるようになります。

Ring ゲームエンジンでプロ級のビデオゲームをサクッと作れるようなります。

WebAssembly への対応

Ring で WebAssembly アプリケーションの配布に対応しました (WebAssembly の対応に Qt を採用)。

Hello World : https://ring-lang.github.io/web/helloworld/project.html

Matching Game : https://ring-lang.github.io/web/matching/project.html

Pairs Game : https://ring-lang.github.io/web/pairs/project.html

Othello Game : https://ring-lang.github.io/web/othello/project.html

Game of Life : https://ring-lang.github.io/web/gameoflife/project.html

Online Form Designer : https://ring-lang.github.io/web/formdesigner/project.html

スレッド機能の改良

Ring 1.13 ではスレッド機能を改良しました。

(1) Ring VM はスレッドごとに独立したメモリプールを使うように改訂されました (高速化)。 (2)RingAllegro スレッド関数で様々な検証を行いました。 (3) RingLibUV はコールバック関数使用時にスレッドセーフになるよう改訂されました。

Laser ゲーム

Laser ゲームの実装です。

Magic Balls ゲーム

Magic Balls ゲームの実装です。

Money Boxes ゲーム

箱を開いて必要な金額が貯まっているか調べてみましょう！

Matching ゲーム

Matching ゲームの実装です。

Pairs ゲーム

Pairs ゲームの実装です。

Word ゲーム

Word ゲームの実装です。

Tetris ゲーム

Tetris ゲームの実装です。

改良点

新しいブロックは無作為に選ばれます (様々なブロック、色と配置)

ブロックの移動や回転、加速ができます。

得点: 横列がそろうと10 点を得られます (ゲームでは積み重なった横列の確認を厳密に行います)

ゲームは無人で永久動作するようにできています (ゲームオーバー後にゲームを自動でやりなおします)

Escape ゲーム

ヘビから逃げつつヘビが成長しないよう星を集めよ。

Hassouna Course のサンプル集

URL (YouTube): https://www.youtube.com/watch?v=6VIHMyrEilw&list=PLHIfW1KZRIfl6KzfLziFl650MmThnQ0jT

この講座のサンプル集を ring/samples/UsingArabic/HassounaCourse フォルダへ追加しました。

Rockets サンプル

SpaceVim エディタへの対応

URL: https://github.com/SpaceVim/SpaceVim

スクリーンショット:

RingQt の改良

以下のクラスを RingQt へ追加しました。

QAbstractAxis

QAbstractBarSeries

QAbstractSeries

QAreaLegendMarker

QAreaSeries

QBarCategoryAxis

QBarLegendMarker

QBarSeries

QBarSet

QBoxPlotLegendMarker

QBoxPlotSeries

QBoxSet

QCandlestickLegendMarker

QCandlestickModelMapper

QCandlestickSeries

QCandlestickSet

QCategoryAxis

QChart

QChartView

QDateTimeAxis

QHBarModelMapper

QHBoxPlotModelMapper

QHCandlestickModelMapper

QHPieModelMapper

QHXYModelMapper

QHorizontalBarSeries

QHorizontalPercentBarSeries

QHorizontalStackedBarSeries

QLegend

QLegendMarker.

QLineSeries

QLogValueAxis

QPercentBarSeries

QPieLegendMarker

QPieSeries

QPieSlice

QPolarChart

QScatterSeries

QSplineSeries

QStackedBarSeries

QVBarModelMapper

QVBoxPlotModelMapper

QVCandleStickModelMapper

QVPieModelMapper

QVXYModelMapper

QValueAxis

QXYLegendMarker

QXYSeries

QGraphicsScene

QMovie

QtConverter アプリケーションの改善

このアプリケーション Ring コード生成器で Qt クラスを用意するために使います。

これにより Ring コード生成器で Qt クラスで RingQt クラスを生成します。

アプリケーションのユーザインタフェースを改訂しました。これにより生産性が向上しました！

Android 版 RingQt - Qt プロジェクト - Special folders for Ring と RingQt の特別なフォルダ

Qt 5.15.0 の採用

RingRayLib の改良

関数はすべてポインタではなくオブジェクトを返すようなりました

RayMath ライブラリへの対応

RayLib から RingRayLib へサンプルを追加移植しました。

Scissor Test

Input Gestures Detection

Bouncing Ball

Rectangle Rounded

Draw Circle Sector

RayLib Logo Animation

First Person Maze

Plane Rotations

RingStbImage 拡張機能

stb_image ライブラリに対応した新しい拡張機能です。

用例:

# ライブラリの読み込み
        load "stbimage.ring"
# 画像の情報
        width=0 height=0 channels=0
# Ring はプログラム終了後に cData を自動的に解放します
        cData = stbi_load("ring.jpg",:width,:height,:channels,STBI_rgb)
# 画面へ結果を表示
        ? "Size (bytes): " + len(cData)
        ? "Width : " + width
        ? "Height: " + height
        ? "Channels: " + channels

実行結果:

Size (bytes): 557371
Width : 563
Height: 330
Channels: 3

低水準関数の追加

以下の低水準関数を追加しました。

詳しくは取扱説明書にある低水準関数の章を参照してください。

setpointer(pointer,nNewAddress)
getpointer(pointer) ---> nAddress
pointer2string(pointer,nStart,nCount) ---> cString
memcpy(pDestinationPointer,cSourceString,nSize)

フォルダ構成の改善

プロジェクトのフォルダとソースコードを整理し直しました。

Language フォルダ - コンパイラおよび仮想マシンに関するソースコードとビジュアルソースを収録。

Extensions フォルダ (C/C++ ライブラリとの接続) - libdepwin, android および webassembly フォルダを収録。

Libraries フォルダ - Ring で記述した Ring ライブラリと GuiLib および ObjectsLib を収録。

Tools フォルダ - 開発ツール - エディタ, RingNotepad, FormDesigner を収録。

Samples フォルダ - Ring サンプル集 - このフォルダは頻繁に整理整頓を行います。

そのほかの改善

新作アプリケーション集

Towers of Hanoi

Questions ゲーム

Money Case ゲーム

Rock Paper Scissors ゲーム

Lottery ゲーム

Nim ゲーム

Eight Queens ゲーム

Typing Quiz

Pong 2 ゲーム

Space Shooter ゲーム

新作サンプル集

ring/samples/Language/HelloWorld フォルダ

ring/samples/Language/ChangeIsNULL フォルダ

ring/samples/Language/Console/customsee.ring

ring/samples/Language/Numbers/decimalscount.ring

ring/samples/Language/EvalInScope/swap.ring

ring/samples/Language/EvalInScope/global.ring

ring/samples/Language/EvalInScope/enum.ring

ring/samples/Language/Endian/endian.ring

ring/samples/Language/VariablePointer/varptr4.ring

ring/samples/Language/VariablePointer/varptr5.ring

ring/samples/Language/DebugCode フォルダ

ring/samples/Language/ClassMethods フォルダ

ring/samples/Language/Lists/CheckHashTableAttribute.ring

ring/samples/Language/RingFileTokens フォルダ (Ring コンパイラ - スキャナの出力)

ring/samples/ProblemSolving/Fib フォルダ

ring/samples/ProblemSolving/ArrayPathDest/solveArrayPathDest.ring

ring/samples/ProblemSolving/PegSolitaire/peg-soli.ring

ring/samples/General/RosettaCode/uniquecharacters.ring

ring/samples/General/RosettaCode/similarcharacters.ring

ring/samples/General/RandomLatinSquares フォルダ

ring/samples/General/FactorialRecursion フォルダ

ring/samples/UsingArabic/RightToLeft フォルダ (Set Layout Direction)

ring/samples/UsingWebLib/Unicode フォルダ

ring/samples/UsingQt/InputMask フォルダ

ring/samples/UsingQt/PlayGif フォルダ

ring/samples/UsingQt/TableWidget フォルダ

ring/samples/UsingQt/ButtonSizeInLayout フォルダ

ring/samples/UsingQt/DateTimeEditFormat フォルダ (Date Picker Control)

ring/samples/UsingQML/sample10 フォルダ (Charts Samples)

ring/samples/UsingQML/sample11 フォルダ (Data Visualization Samples)

ring/samples/UsingQtWASM/colordialog フォルダ

ring/samples/UsingQtWASM/fontdialog フォルダ

ring/samples/UsingQtWASM/filedialog フォルダ

ring/samples/UsingQtWASM/filecontent フォルダ (ファイルのダウンロードとアップロード)

ring/samples/UsingRayLib/more/ex4_levelsofcubes.ring

ring/samples/UsingOpenGL/cubeongpu/cubeongpu.ring

ring/samples/UsingOpenGL/cubeongpu2/cubeongpu.ring

Ring ノートパッド - 実行結果ウィンドウ - バッファ容量を 1 MB に設定

Ring ノートパッド - View メニュー - ソースコード (フルスクリーン)

Ring ノートパッド - 各種スタイルのキーボードショートカット

Ring ノートパッド - ドット記号があるフォルダへのファイルの保存に対応

Ring ノートパッド - Browser ウィンドウ - 現在のスタイルに従い配色を設定

Ring ノートパッド - 関数リスト - "def" で定義した関数の表示

Ring ノートパッド - 配布メニュー - WebAssembly (RingQt) の配布でウェブブラウザを使用

Form Designer - ツールバー - ウィンドウスタイルの幅を拡大

Form Designer - ツールバー - Select Objects ボタンの新規アイコン

Gold Magic 800 - レベルエディタ - ウィンドウサイズの縮小

Super Man 2016 - ゲームオーバー時のメッセージアニメーション表示速度を速くした

Super Man 2016 - 超人と壁の衝突判定におけるコードの改善

Game Engine - Game Class - Icon プロパティ (ウィンドウのアイコン設定)

Ring game ゲームエンジンで開発したゲームのウィンドウへアイコンを設定

型ヒントライブラリ - コードを改善

StdLib - IsMainSourceFile() 関数 - コードを改善

StdLib - TimeInfo() 関数 - TimeList() の全情報が利用可能になりました

StdLib - Map() と Filter() 関数 - グローバルスコープへのアクセスに対応

StdLib - NewList() 関数は不要になりました - List() 関数をお使いください

WebLib - Template() 関数 - グローバルスコープへのアクセスに対応

Objects Library - API を改善

Natural Library - コードを改善

RingLibSDL - LibSDL バージョンを 2.0.10 から 2.0.12 へ更新

RingOpenGL - コードを改善 (GLEW 関数の追加)

RingFreeGLUT - コードを改善 (関数を多数追加)

RingLibUV - コードを改善 - VarPtr() 関数を使用したサンプル

RingPM - 大文字の実行可能ファイルを渡す端末へ対応

Ring2EXE - WebAssembly (RingQt) の配布でウェブブラウザを使用

Ring2EXE - 実行可能ファイルが対象のフォルダに存在するときは削除を行います

Ring2EXE - リソースファイルに記載されているファイルは対象のフォルダへコピーするようになりました

Ring2EXE - Android 版の配布 - Ring よび RingQt フォルダのコピー処理

Ring テスト - 全てのテスト実行終了後にレポートの概要を表示

CodeGen - オプションの追加: PassNullBeforeVMPointer (C++ クラス用)

CodeGen - RING_API_ISPOINTER() ではなく RING_API_ISCPOINTER() の使用

Ring コンパイラ - ChangeRingKeyword - 同一行でのコメントと複数コマンドに対応

Ring コンパイラ - ChangeRingOperator - 同一行でのコメントと複数コマンドに対応

Ring コンパイラ - ring_parser.c - コードを改善

Ring コンパイラ - ring_stmt.c - コードを改善

Ring コンパイラ - ring_expr.c - コードを改善

Ring コンパイラ - ring_state.c - 英数大小文字同一視機能のフラグ

Ring コンパイラ - Load コマンド - ring/bin/load フォルダからのライブラリ読み込みに対応

Ring コンパイラ - LoadSyntax コマンド - ring/bin/load フォルダからのライブラリ読み込みに対応

Ring コンパイラ - コマンド: ? <式> - 式の欠落時に表示されるエラーメッセージをわかりやすくした

Ring コンパイラ - エラーメッセージの改善

Ring VM - リスト定義の用法 - リスト自体の使用に対応 (要素に限定しません)

Ring VM - List() 関数 - List(nRow,nCols) による二次元リストの作成に対応

Ring VM - List() 関数 - 実効性能の向上

Ring VM - オブジェクトファイル - ファイルリストの保存と復元

Ring VM - ring_vmexpr.c - コードを改善 - マジックナンバーの除去

Ring VM - ring_state_filetokens() - オプションのパラメータにおける英大小同一機能

Ring VM - ring_state_setvar() - コードを改善

Ring VM - int2bytes(), float2bytes() と double2bytes() で sizeof() 関数を使うようになりました

Ring VM - fclose() 関数 - FILE ポインタが NULL のときにエラーメッセージを表示

Ring VM - Extensions API - 整数ポインタ取得時における呼び出し元のローカルスコープに対応

Ring 1.14 の変更履歴

Ring 1.14 (2021年01月25日) の新機能と変更点です。

新機能と変更リスト

Ring 1.14 の新機能！

MyCoffee (ウェブアプリケーション)

ウェブ開発のサンプル

新作サンプル集

アーランの B 公式

顧客情報フォーム

RingTilengine 拡張機能

RingLibui 拡張機能

RingSockets 拡張機能

RingThreads 拡張機能

RingOpenSSL の改良

関数の追加

関数の改良

文字列処理における実行性能の向上

数値処理の改良

CLOC (Count Lines of Code) の追加

そのほかの改善

MyCoffee (ウェブアプリケーション)

WebLib ライブラリと PostgreSQL データベースを用いたウェブアプリケーションです。

スクリーンショット:

ウェブ開発のサンプル

Hassouna Course は、講義番号 301 よりウェブ開発を扱います。

今回の講義ではバックエンドのウェブ開発で WebLib を採用しています。

講義専用 YoutTube プレイリストは:

https://www.youtube.com/watch?v=a3ZYjssAvbI&list=PLHIfW1KZRIfn1cs2BupsdJ7dzCQ7wmHFk

このフォルダにサンプル集を追加しました:

https://github.com/ring-lang/ring/tree/master/samples/UsingArabic/HassounaCourse/WebDevelopment

スクリーンショット:

Calculator のサンプル

新作サンプル集

以下のサンプルを samples フォルダへ追加しました

ring/samples/UsingQML/sample12 フォルダ

ring/samples/General/TimeServer フォルダ

ring/samples/General/BinarokuGame フォルダ

ring/samples/Language/EnumGenerator フォルダ

ring/samples/Language/DynamicObject フォルダ

ring/samples/Drawing/MatrixMultiply3DRotationCube

スクリーンショット:

アーランのＢ式

このアプリケーションはアーランのＢ式で使います (回路交換系)

顧客情報フォーム

SQLite と TableWidget を用いたアプリケーションです。

アラビア語、英語とフランス語のユーザインタフェースが使えます。

RingTilengine 拡張機能

この拡張機能では Tilengine の機能を全て使えます - Tilengine はラスターエフェクトが使える「セガ メガドライブ」や「任天堂 スーパーファミコン」風の 2D レトロゲーム制作に向いたゲーム、およびグラフィックスエンジンです。

用例:

load "tilengine.ring"

TLN_Init(400, 240, 1, 0, 0)
TLN_SetLoadPath("assets\sonic")
foreground = TLN_LoadTilemap ("Sonic_md_fg1.tmx", NULL)
TLN_SetLayerTilemap(0, foreground)

TLN_CreateWindow(NULL, 0)
while TLN_ProcessWindow()
        TLN_DrawFrame(0)
end

TLN_DeleteTilemap(foreground)
TLN_Deinit()

スクリーンショット:

RingLibui 拡張機能

この拡張機能は Libui の全機能を扱えます。

この拡張機能は Ring による軽量 GUI アプリケーションの開発と配布で使えます (1 MB 以下)。

ランタイムファイルとファイルサイズ (Ring 1.14)

Ring.dll (448 KB)

Libui.dll (210 KB)

Ring_Libui.dll (633 KB)

圧縮前のファイル - 合計 : 1,291 KB

圧縮後のファイル (ZIP 形式) - 合計 : 504 KB

用例:

load "libui.ring"

oWindow = uiNewWindow( "Say Hello", 500, 80, True)
uiWindowOnClosing(oWindow,"closeApp()")

lbl1 = uiNewLabel("Name: ")
text1 = uiNewEntry()

btn1 = uiNewButton("SayHello")
uiButtonOnClicked(btn1,"sayHello()")

btn2 = uiNewButton("Close")
uiButtonOnClicked(btn2,"closeApp()")

lbl2 = uiNewLabel("")

g = uiNewGrid() uiGridSetPadded(g, 1) uiWindowSetChild(oWindow, g)
uiGridAppend(g, lbl1, 0, 0, 2, 1, 1, uiAlignCenter, 0, uiAlignCenter)
uiGridAppend(g, text1, 1, 0, 2, 1, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, btn1, 0, 1, 1, 2, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, btn2, 2, 1, 1, 1, 1, uiAlignFill, 0, uiAlignFill)
uiGridAppend(g, lbl2, 0, 3, 2, 1, 1, uiAlignCenter, 0, uiAlignCenter)

uiControlShow( oWindow )
uiMain()

func sayHello
        uiLabelSetText(lbl2,"Hello " + uiEntryText(text1))

func closeApp
        uiQuit()

スクリーンショット:

RingSockets 拡張機能

Ring では、 RingQt, RingLibuv および RingLibSDL などのソケット拡張機能が使えます。

この公開版ではソケット用の特別な拡張機能があります。

これは前述のライブラリが使えないアプリケーションで有益です。

用例 (サーバのコード):

# TCP サーバ

load "sockets.ring"

sock = socket(AF_INET,SOCK_STREAM,0)
bind(sock,"127.0.0.1",5050)
listen(sock,5)
ns = accept(sock)
send(ns,"Hello Client")
msg = recv(ns,1024)
? "Client Say >> " + msg
close(sock)
? "ソケットの接続を終了しました"

用例 (クライアントのコード):

# TCP クライアント

load "sockets.ring"

sock = socket(AF_INET,SOCK_STREAM)
connect(sock,"127.0.0.1",5050)

send(sock,"Hello Server")
msg = recv(sock,1024)
? "Server Say >> " + msg

close(sock)
? "ソケットの接続を終了しました"

RingThreads 拡張機能

Ring では、 RingQt, RingLibuv および RingLibSDL などのスレッド拡張機能が使えます。

この公開版ではスレッド用の特別な拡張機能があります。

これは前述のライブラリが使えないアプリケーションで有益です。

用例:

load "threads.ring"

func main

        nThreads = 2
        aList = list(nThreads)

        for x=1 to nThreads
                aList[x] = new_thrd_t()
                thrd_create(aList[x],"Hello("+x+")")
        next

        for x=1 to nThreads
                res= 0
                thrd_join(aList[x],:res)
        next

        ? :Done
        shutdown()

func Hello x

        for r=1 to 100
                ? "("+r+") Hello("+x+") 関数からのメッセージ"
        next

RingOpenSSL の改良

RingOpenSSL 拡張機能へ関数を追加しました。

以下の関数は大規模ファイル、またはデータの全内容を単独文字列として読み込むことなくハッシュ値を計算します。

md5init() -> MD5_CTX
md5update (MD5_CTX, string) -> 1 ならば成功、 0 ならば失敗
md5final (MD5_CTX) -> 文字列

sha1init() -> SHA_CTX
sha1update (SHA_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha1final (SHA_CTX) -> 文字列

sha224init() -> SHA224_CTX
sha224update (SHA224_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha224final (SHA224_CTX) -> 文字列

sha256init() -> SHA256_CTX
sha256update (SHA256_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha256final (SHA256_CTX) -> 文字列

sha384init() -> SHA384_CTX
sha384update (SHA384_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha384final (SHA384_CTX) -> 文字列

sha512init() -> SHA512_CTX
sha512update (SHA512_CTX, string) -> 1 ならば成功、 0 ならば失敗
sha512final (SHA512_CTX) -> 文字列

関数の追加

DirExists() 関数

Direxists(cDirPath) ---> ディレクトリがあれば 1 を返します。

GetPathType() 関数

Getpathtype(cPath) ---> 0 ならばパスは存在しません。
                        1 ならば既存のファイルと一致しています。
                        2 ならば既存のディレクトリと一致しています。
                        -1 ならばパスは存在しますが
                           種類は不明です (例としてはパイプ)

SysSet() 関数

SysGet() 関数は環境変数を取得します。

SysSet(cVariable, cValue) ---> 1 ならば成功であり 0 ならば失敗です。

SysUnset() 関数

SysSet() 関数は指定された環境変数を定義します。

SysUnset(cVariable) ---> 1 ならば成功であり 0 ならば失敗です。

GetArch() 関数

GetArch() 関数は Ring 実行可能ファイルが動作しているアーキテクチャ名を検出します。

文法:

GetArch() ---> cString (Ring 実行可能ファイルが動作しているアーキテクチャ名)

用例:

switch getarch()
on "x86"
        ? "x86 32bit アーキテクチャ"
on "x64"
        ? "x64 64bit アーキテクチャ"
on "arm64"
        ? "ARM64 64bit アーキテクチャ"
on "arm"
        ? "ARM 32bit アーキテクチャ"
other
        ? "Unknown アーキテクチャ"
off

NofProcessors() 関数

NofProcessors() 関数はシステムに搭載されている CPU の論理プロセッサ数を検出します。

文法:

NofProcessors() ---> nProcessors

用例:

? NofProcessors()

関数の改良

Log() 関数

指定の底で対数計算をするために関数を更新

文法:

Log(nNumber)       --> nNumber の対数を返します (e を底とする)。
Log(nNumber,nBase) --> nBase を底とする nNumber の対数を返します

用例:

? log(10)       # 2.30
? log(2)        # 0.69
? log(10,10)    # 1
? log(2,2)      # 1
? log(100,10)   # 2

文字列処理における実行性能の向上

Ring 1.14 では可変長、および固定長の文字列を処理するプログラムが三倍高速になります。

用例:

load "openssllib.ring"
f = fopen(exefilename(),"rb")
h = SHA256Init()
while true
  s = fread(f, 4096)
  if isstring(s)
    SHA256Update(h, s)
  else
    exit
  ok
end
digest = SHA256Final(h)
fclose(f)
? digest

実行結果:

4e677154639dae3baa048ce5ae0b04b63bcd33316e2d2041297dcee85604d778

Ring 1.14 では文字列へ別の文字列を追加する処理は六十倍高速になります。

用例:

t1 = clock()
test = "My Ring"
for x = 1 to 20000
        test += x
next
? "Time : " + ((clock()-t1)/clockspersecond()) + " seconds"

実行結果:

Time : 0.01 seconds

以上の改良により拡張機能用の Ring コード生成器の動作速度が向上しました (四倍の高速化)。

数値処理の改良

十六進数の用法

用例:

x = 0x10
? x             # 16
x = 0xff
? x             # 255
x = 0x0A
? x             # 10
? 0xFFFF        # 65535
? 0x0A + 1      # 10+1 = 11

大規模倍数値の表示

用例:

c = 999999999999999
for i = 1 to 13
        c *= 999999999999999
next
? "c = " + c

実行結果:

c = 9.999999999999862032924046117813879019544782068185773946275755888189234614925384380788550958e+209

大規模倍数値で String() と Number() を使う方法

用例:

c1 = 999999999999999
for i = 1 to 13
        c1 *= 999999999999999
next

s = string(c1)  ? "c1 = " + s
c2 = number(s)  ? "c2 = " + c2

? "c2 - c1 = " + (c2 - c1)

str1    = "-2222044646462"
c       = Number(str1)
str2    = String(c)

if str1 = str2
        ? "Strings Identical"
else
        ? "Strings Mismatch!"
ok

実行結果:

c1 = 9.999999999999862032924046117813879019544782068185773946275755888189234614925384380788550958e+209
c2 = 9.999999999999862032924046117813879019544782068185773946275755888189234614925384380788550958e+209
c2 - c1 = 0
Strings Identical

CLOC (Count Lines of Code) の追加

CLOC (コード行数集計器) は指定されたアプリケーションのフォルダパスからソースコードの検索を行いプログラミング言語ごとのファイル数、空行、コメント行数、コード行数の集計結果を表示します。

用法:

ringcloc <アプリケーションのフォルダパス>

用例 (1):

ringcloc c:\ring\tools\ringnotepad

実行結果:

      47 text files.
      47 unique files.
      11 files ignored.

github.com/AlDanial/cloc v 1.88  T=1.18 s (39.0 files/s, 3212.2 lines/s)
-----------------------------------------------------------------------------------
Language                         files          blank        comment           code
-----------------------------------------------------------------------------------
Ring                                33            273            139           3186
Bourne Shell                         4             22              9             88
DOS Batch                            4              3              7             20
INI                                  1              0              0             15
C                                    1              0              1             10
Markdown                             2              4              0              8
Windows Resource File                1              0              0              1
-----------------------------------------------------------------------------------
SUM:                                46            302            156           3328
-----------------------------------------------------------------------------------

用例 (2):

ringcloc c:\ring\tools\formdesigner

実行結果:

      54 text files.
      54 unique files.
      13 files ignored.

github.com/AlDanial/cloc v 1.88  T=1.54 s (34.5 files/s, 7122.4 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Ring                            52           1306            567           9071
Markdown                         1              5              0              7
-------------------------------------------------------------------------------
SUM:                            53           1311            567           9078
-------------------------------------------------------------------------------

そのほかの改善

Ring コンパイラ - 無名関数の FUNC キーワード文の後に現れた改行を読み飛ばし

Ring コンパイラ - 無名関数の関数パラメータ文の後に現れた改行を読み飛ばし

Ring コンパイラ - リスト項目のアクセス文の後に現れた改行を読み飛ばし

Ring コンパイラ - オブジェクトの属性文の後に現れた改行を読み飛ばし

Ring コンパイラ - 97 桁の数値に対応

Ring コンパイラ - ステートメント --> 式 --> '(' ')' へ対応

Ring コンパイラ - ステートメント --> 式 --> '(' 式 ')' '.' 属性|メソッド へ対応

Ring コンパイラ - リテラルが閉じられていないときのエラーメッセージを改善

Ring VM - Str2Hex() 関数 - 実行性能の向上

Ring VM - Hex2Str() 関数 - 実行性能の向上

Ring VM - SubStr() 関数 - コードを改善

Ring VM - Dec() 関数 - コードを改善

Ring VM - String() 関数 - コードを改善

Ring VM - Number() 関数 - コードを改善

Ring VM - Decimals() 関数 - 0 ～ 90 までの有効範囲に対応

Ring VM - バイナリ文字列同士の比較 - コードを改善

Ring VM - IsWindows64() 関数 - コードを改善

Ring VM - Unsigned() 関数 - コードを改善

Ring VM - 関数の呼び出し - リストと多重リストのステート管理を改善

Ring VM - AddAttribute() - 新規属性のデフォルト型は文字列になります

Ring VM - Dir() 関数 - コードを改善

Ring VM - Copy() 関数 - コードを改善 (負数の無視)

Ring VM - 一階層以上のループから抜けたときの step 値の復旧

Ring VM - After (For-In ループ) - 参照は削除しますが値のコピーは保持します

Ring VM - 複数スレッド動作時のコードを改善

Ring VM - Try/Catch/Done の後でステートを復旧するときのコードを改善

Ring VM - Try/Catch/Done の後で Raise() を多重呼び出ししたときのコードを改善

Ring VM - インストラクション実行時の結果表示を読みすやくしました

Ring VM - & 演算子を用いた文字列の文字参照を返せる機能に対応

Ring VM - Call コマンド - 関数名 - 英数大小文字同一視

Ring コンパイラ/VM ソースコード - 再整形による可読性の向上

Ring コンパイラ/VM ソースコード - コードのリファクタリング

Ring コンパイラ/VM - 新規インストラクション: ICO_FREETEMPLISTS

RingPM - 新規パッケージ: GUILib (GUILib クラスの分割パッケージ)

RingPM - 新規パッケージ: ObjectsLib (ObjectsLib クラスの分割パッケージ)

RingPM - 新規パッケージ: CLOC (Count Lines of Code)

RingQt - QWebEngineView クラス - 追加: Print(QPrinter,cEventCode) メソッド

RingQt - QCombobox クラス - 追加: setCurrentText() および addItems() メソッド

RingQt - 追加: QLocale クラス

RingQtRuntime パッケージ: GUILib および ObjectsLib パッケージを使用

GameEngine - グラフィックスライブラリへディレイ関数を追加: gl_delay() 関数

GameEngine - ウィンドウのアイコン読み込む時に Resources クラスを使用

RingAllegro - コードを改善

RingMurmurHash - コードを改善

RingOpenSSL - RandBytes() 関数 - コードを改善

RingZip - GetFileNameByIndex() 関数 - コードを改善

RingLibSDL - LibSDL version 2.0.14 でビルド

Ring 1.15 の変更履歴

Ring 1.15 (2021年04月24日更新版 - 開発中) の新機能と変更点です。

ちなみに

最新の開発状況は https://github.com/ring-lang/ring/tree/master/documents/source/whatisnew15.txt を参照してください。

新機能と変更リスト

Ring 1.15 の新機能！

Chess Endgame アプリケーション

新作サンプル集

そのほかの改善

Chess Endgame アプリケーション

Chess Endgame はデータセットの可視化を行います

このアプリケーションは Microsoft Azure の機械学習により対戦結果の予測をしています。

スクリーンショット:

新作サンプル集

以下のサンプルを samples フォルダへ追加しました

samples/UsingArabic/WriteArabicFile/using_QFile_write.ring

samples/UsingArabic/WriteArabicFile/using_QFile_read.ring

samples/UsingRayLib/more/ex6_jump_player2D.ring

samples/UsingRayLib/more/ex7_jump_player3D.ring

samples/UsingRayLib/more/ex8_Aiming_at_3D_moving_targets.ring

samples/UsingRayLib/more/ex9_jump_player3D_collision_detection.ring

samples/UsingRayLib/more/ex10_jump_player3D_long_way.ring

そのほかの改善

フォームデザイナー - 翻訳の改善

StdLib - List2Code() 関数 - リスト文字列内におけるダブルクォートの対応

StdLib - List2Code() 関数 - 整形処理の改善 - 項目の前にタブを追加

拡張機能用のコード - 関数プロトタイプ - 型の出力時に付加される余分な空白文字の除去処理を追加

RingLibCurl - curl_easy_setopt() 第三引数のへ (CURLLIST *) 渡しに対応

RingQt - QMessageBox クラス - setIcon() メソッド

RingQt - QByteArray クラス - Append() メソッド - バイナリデータへの対応

RingQt - QByteArray クラス - Replace() メソッド - 複数バージョンとコードの改善

RingQt (WebAssembly) - ファイルのダウンロード - バイナリファイルへの対応

Ring VM - 数値と NULL 比較時に NULL から 0 への変換に対応

Ring VM - ring_state_stringtokens() 関数

Ring VM - ring_state_scannererror() 関数

Ring VM - 無限再帰処理の発生時に表示されるメッセージをわかりやすくした

Ring コンパイラ - Ring への Ring 組み込み時 - Ring キーワードの保存 (英数大小文字同一視)

Ring コンパイラ - スキャナ - オプション (コメントをトークンとして扱う)

テキストエディタの設定

Ring/Tools/Editors フォルダには、テキストエディタ用の拡張機能を収録しています。

Atom

Emacs

Geany

Notepad++

SpaceVim

Sublime Text 2

Visual Studio Code (VSCode)

Visual Studio IDE

サクラエディタ (サポート対象外)

秀丸エディタ (サポート対象外)

Code Browser (サポート対象外)

Atom

フォルダ : ring/tools/editors/atom

このフォルダへ atom-language-ring をコピーします。

"C:\Users\{ユーザ名}\.atom\Packages"

Emacs エディタ

フォルダ : ring/tools/editors/emacs

インストール手順は ReadMe ファイルを参照してください。

スクリーンショット:

Geany

フォルダ : ring/tools/editors/geany

Geany エディタを起動します。

“ツール → 設定ファイル → filetypes_extensions.conf” メニューをクリックします。

この行 “Ring=*.ring;” を [Extensions] の後ろにクォートを付けずに追加します。

Ubuntu では “filetypes.Ring.conf” ファイルを “/home/{ユーザ名}/filetypes.Ring.conf” フォルダへコピーします。

F5 キーを押すと実行します。

Notepad++

フォルダ : ring/tools/editors/notepad_plus_plus

Notepad++ を開きます。

“言語” メニューを開きます。

“言語の定義...” を選択します。

“インポート...” をクリックします。

Ring.xml を選択します。

“インポート成功” のダイアログで “OK” を選択してから “ユーザ定義言語” のダイアログまたはパネルを閉じます。

Notepad++ を再起動してください。

SpaceVim

URL: https://github.com/SpaceVim/SpaceVim

スクリーンショット:

Sublime Text 2

フォルダ : ring/tools/editors/sublime text 2

Sublime_Text_2 フォルダには以下のファイルがあります:

1 - ring.json-tmlanguage

2 - ring.sublime-build

3 - ring.tmlanguage

上記のファイルを下記のパスへコピーします。

"C:\Users\{ユーザ名}\AppData\Roaming\Sublime Text 2\Packages\User\"

この行が ring.sublime-build ファイルに記載されています。

"cmd": ["C:\\ring\\bin\\ring.exe","$file"],

システムの構成に合わせて ring.exe のパスを変更します。

Visual Studio Code

フォルダ : ring/tools/editors/vscode

インストール手順は ReadMe ファイルを参照してください。

スクリーンショット:

Visual Studio IDE

フォルダ : ring/tools/editors/visualstudio

インストール手順は ReadMe ファイルを参照してください。

サクラエディタ

URL : https://osdn.net/projects/ring-lang-081/scm/git/editor/tree/sakura-editor/

スクリーンショット:

秀丸エディタ

URL : https://osdn.net/projects/ring-lang-081/scm/git/editor/tree/hidemaru-editor/

スクリーンショット:

Code Browser

URL : https://osdn.net/projects/ring-lang-081/scm/git/editor/tree/code-browser/

スクリーンショット:

よくある質問と回答 (FAQ)

車輪の再発明 (YAPL) の必要性

プログラミング言語 Supernova では「I want window and the window title is hello world.」と入力すると “Hello, World!” のウィンドウタイトルで GUI ウィンドウを作成します。

つまり、自然言語コードにより「まるで英語のようにプログラミングで人間の言語能力をいかんなく発揮できる」ことを発見しましたが、実現には新しいプログラミング言語が必要です。

汎用性

実用性

非常に手軽な方法で自然言語プログラムの作成ができます。

これにより、使いやすく生産性を最大限まで押し上げることができるシステムを享受できます。

以上の目的を達成する最良の方法として Ring を開発しました。故に Ring は Yet Another Programming Language (YAPL) という車輪の再発明とは言い切れません。

さて、 Supernova はアイディアの検証であり、どのような利点と欠点があるかについての見識を得るために役に立ちました。新しいアイディアの検証後に実用的なプログラミング言語があります。 Supernova の後に Ring があります。 ABC の後に Python が存在するのと同じ物語です。 Python は ABC の問題を回避していますが ABC の利点をもたらします。 Ring は Ruby と Ruby on Rails (ROR) の伝説を学んでいます。プログラミング言語の実力は、汎用プログラミング言語で使われる優れたフレームワークに最も現れます。また Ring には明確な目的と動機である「次世代版 Programming Without Coding Technology (PWCT) ソフトウェアの開発」があり、 C 言語で Unix オペレーティングシステムが設計されたことも学んでいます。言い換えれば、各々の設計判断で決定する目標があります。

さて、質問です。計算機プログラミングの概念に関する知識を持たずに、非常に強力なソフトウェアを製作できますか？　科学的な答えは「ビジュアル・プログラミング」と「自然言語プログラミング」です。実際には、ほかに問題をもたらすことなく、パラダイムを切り替えることはありません。

Ring (コンパイラ + 仮想計算機) の設計と開発、および C コードの生成では、ビジュアル・プログラミング言語「Programming Without Coding Technology (PWCT)」を 100% 使用しています (一行たりとも手作業でのコーディングはしていません)。

Programming Without Coding Technology (PWCT) の利点は？

高速化。

シンタックスエラーとは無縁となります。

高水準の抽象化となるためコードの理解と管理は容易になります。

コードの記述はすべて管理できるため致命的な欠点はなくなります。

以上のアイディアへの対応、パラダイム切り替え時に発生する問題の解決、強力なビジュアル・プログラミングツールの開発のための言語設計 (Qt 対応などユーザインタフェースの作成機能を最重要視)、未来のコード不要プログラミング (自然言語の使用) 対応のための設計、実用的手法による自然言語プログラミングの実現、多種多様な方法での問題解決、および画期的な問題解決方法に関するアイディアの支援。

そして、C, C++, C#, Lua, PHP, Python, Ruby, Harbour, Basic と Supernova などのプログラミング言語の豊富な経験とビジュアル・プログラミング (使用経験十年以上)、および自然言語プログラミング (使用経験五年以上) の長期にわたる研究の集大成として、現役プログラマの認識へ変革をもたらし実用プログラミング言語の新天地と成るべく Ring を設計・開発しました。

プログラミング言語もそうですが、ソフトウェアの分野・用途を問わず、プログラマ、または開発者は意見や批評をする自由があります。 Ring も例外ではなく、ドキュメントの練度・整備不足による誤解、あるいはプログラマによく知られているがために背景にあるアイディアを見落してしまい、新規性がないと評価・判断を誤り、誤解されてしまう各種機能があります。

正しく評価するには、設計段階から実装段階へ移行後に、新たに自然言語インタフェースの実装を行い、ソフトウェアを言葉で表現することにより Ring のプログラミングを始めてみてください (筆者としては、アイジャル・メソッドは任意であり、移行段階や移行時期についての決定は行いません)。

Ring は新興プログラミング言語であるため、選択肢は三つあります:

今は気にしません。

Ring の将来について考え、プログラミング言語に関する考えを理解して応援したいのでしたら、ご支援をお願いします。

ご期待に添えず申し訳ございません。また数年後の使用再開をお待ちしております。ご感想やご要望、バグレポートがございましたらお気軽にお寄せくださいませ。

まとめ

Programming Without Coding Technology (PWCT) 2.0 の完成後は Ring で高品質かつ大規模ソフトウェアを開発できるようになります。

宣言型と自然言語パラダイムを段階的に押し進めていきます。

次の公開版では、ネットワーク・プログラミングと平行性のために、新しいパラダイムの実装計画があります。去年、簡易試作品で新しいパラダイムを検証しました。なお、将来の公開版で Ring と統合する予定です。

Ring アーキテクチャとは？

アーキテクチャの構成は、

Ring アプリケーション (自作コード) - Ring で記述 - ring/applications フォルダを参照してください。

Ring ライブラリ (StdLib, WebLib, GameEngine, など) - Ring で記述 - ring/libraries フォルダを参照してください。

Ring 拡張機能 (RingAllegro, RingQt, など) - C/C++ で記述 (Ring コードもあります) - ring/extensions フォルダを参照してください。

Ring 仮想機械 (Ring VM) - C 言語で記述

オペレーティングシステム (現在のプラットフォーム) - (Windows, Linux, macOS, Android, など)

拡張機能の実装方法は動的ライブラリです (DLL, So, Dylib)。拡張機能の更新時、自作コードの更新は不要です。

フォルダ (ring/extensions/libdepwin) ====> Windows プラットホーム用の Ring 拡張機能 (C 言語で記述) をビルドするために使用される C ライブラリ

フォルダ (ring/libraries) ====> Ring で記述した Ring ライブラリ (StdLib, WebLib, GameEngine など)

フォルダ (ring/language/visualsrc) ====> Ring コンパイラと Ring VM のビジュアル版ソースコードは Programming Without Coding Technology (PWCT) で開発

フォルダ (ring/language/visualsrc) ====> Ring コンパイラと Ring VM のビジュアル版ソースコードは Programming Without Coding Technology (PWCT) で開発

用語「Ring ライブラリ」の語釈は → Ring で記述したライブラリのコード

用語「Ring 拡張機能　」の語釈は → C または C++ で記述したライブラリのコード

Ring のメモリ管理方法は？

関数を呼び出し時、この関数で新しいスコープの取得を行い、このスコープ内へ変数を格納します。

この関数で一時作業用メモリを取得します。 この一時作業用メモリ内へ一時作業用リストを格納します。

これは関数呼び出し終了直後に全て削除されます (スコープの終了)。

Ring でメモリを削除するには、

2.1 関数スコープの終了まで待機

2.2 代入演算子の使用

2.3 callgc() 関数の使用 (一時作業用メモリの削除、リストのみ)

Ring のガベージコレクターではエスケープ解析と参照カウントを使用

90% の場合では、ガベージコレクターの実行を不要にするために エスケープ解析 [https://ja.wikipedia.org/wiki/エスケープ解析] が使用されます。メモリから削除、および残存対象を即時認識します。

10% 以下の場合では Ring は参照カウントを使います。

例えば、関数へリストと部分リストを渡すとき、 Ring はリストを参照渡しで渡しますが、親リストを削除してしまうとどうなりますか？

この場合、部分リストは参照カウントを使います。そして親リストの削除時は関数の終了までメモリに残存します。

Ring では、参照、および代入演算子で値によるリストのコピーの回避を奨励していることを覚えておいてください。そして、 Ring で参照カウントを使うときは非常に限定された特別な場合です。ほとんどの場合はエスケープ解析で十分であり、非常に高速であることです。

Ring 1.9 から参照カウントへの対応を Ring 拡張機能と低水準 C ポインタまで拡大しました。例えば、 fopen() の使用時に fclose() の使用に関して注意深くなる必要はありません。また RingODBC, RingSQLite, RingMySQL, RingQt などの拡張機能でも同じことが言えます。

使用完了後、割り当てられた全資源はガーベジコレクターにより整理されます (最後の参照を失ったとき)。

Ring データ表現方法は？

Ring において、文字列は「バイトから構成される配列」です。

Ring は 8 ビットクリーン実装であり、文字列内の各文字列は 8 ビット(1 バイト) です。

「Int2Bytes(), Float2Bytes() および Double2Bytes()」関数は文字列を返します。

文字列にはバイナリデータも格納できます。

mystring = read("myfile.exe")

変数について考えるときは、このことを覚えておいてください

値 ---> 内容物 (データとしてメモリに格納するもの) - 低水準概念

型 ---> どう内容物を扱うことができるか、あるいは取り扱い方法 (単なる論理的概念)

電子計算機のメモリ ----> [Bytes] (バイト) で格納 - 各バイトは 8 ビット - (ここでは単語「メモリ」の概念については扱いません)

メモリとプロセッサのレジスタ間で移動処理が行われるとき、これらのバイトは一緒にされてからまとめられます。ここでは、例えば 32 ビットと 64 ビットの「レジスタの大きさ」は同じです。また、バイトオーダーもあります。

プログラミング言語 ----> これらのバイトに型を追加 (単なる概念) することで取り扱いかたと処理方法について決定します。

さらに、プログラミング言語では「型変換」ができます —> ほとんどの場合、型は論理的概念であるため、実際は単なるデータです (バイト、バイトカウント、バイトオーダーなど)。

Ring 文字列 ----> これらのバイト (各バイトは 8 ビット) があるので、 Ring は文字列の大きさを認識します (数値として String構造体へ格納)。

よって NULL 文字の確認をしたり、あるい文字列の終端へ NULL 文字を追加しません (不要です)。

Ring VM 内部の処理全般では Ring データの大きさの確認を行い文字列をバイナリデータとして扱います (各文字は 8 ビット)。

C 言語では ---> 通常は各文字列の終端へ NULL 文字 (\0) を追加します。

また、文字列関数は NULL 文字を確認するため、バイナリデータを処理するには不適切です。

符号付き (Signed) vs 符号なし (Unsigned) ---> データの算術演算をするときに重要な論理的概念でありますが、データを格納するとき、格納されるデータが全て8 ビットの場合は一切考慮されません。 ---> よって注意する必要はありません。

Ring では、これらの詳細について考えないでください。この件に関しては利用者側から見えないようになっています。このおかげでアプリケーションとしたいことのために開発に集中できます。

C 言語で低水準コードの記述を行い、万物を支配したいならば (必要に応じて) C 言語を検討してください。 ----> 優れた処理能力とメモリ管理

うんざりするような細かいことを考えず開発に専念して Ring コードを記述したいならぱ Ring を検討してください。 -----> 優れた生産性と迅速なソフトウェアの開発完了

吉報「プロジェクトで Ring と C を併用できます」

Int2Bytes(), Float2Bytes() および Double2Bytes() 関数

これらの関数の入力値は数値を扱います。---> 数値型 (int|float|double) に基づきバイト集合を変換します。 ---> 結果として、これらのバイトがある Ring 文字列を返します。

Int2Bytes() ---> Ring 文字列 (バイト集合) と文字列の大きさ = sizeof(int)

Float2Bytes() ---> Ring 文字列 (バイト集合) と文字列の大きさ = sizeof(float)

Double2Bytes() ---> Ring 文字列 (バイト集合) と文字列の大きさ = sizeof(double)

用例:

? len( int2bytes(1) )
? len( float2bytes(1) )
? len( double2bytes(1) )

実行結果:

4
4
8

数値の格納

数値使用時、 Ring はメモリの数値表現で Double データ型を常時使います。数値への算術演算時、これを理解していることは重要です。

"" + 数値で数値を文字列へ変換するとき、あるいは文字列 (数値) で文字列を取得すると数値ごとの 1 バイト表現となります (記憶領域では好ましくはない考えかたですが、文字列処理で便利です)。

記憶領域の特定容量 (int|float|double) で数値表現をする必要があるならば、データをバイナリファイルとして書き出すときに bytes2int(), bytes2float() および bytes2double() を使用してください。

Ring 数値 (double) ----> int2bytes() - 数値を double から int へキャストしてバイトを返します ----> 4 バイト (Ring 文字列)

Ring 数値 (double) ----> float2bytes() - 数値を double から float へキャストしてバイトを返します ----> 4 バイト (Ring 文字列)

Ring 数値 (double) ----> double2bytes() - 数値 (double) でバイトを返します ----> 8 バイト (Ring 文字列)

Ring の内部処理に限り int 型が使用されますが、 Ring アプリケーション、またはコードでは数値型 (double) のみ使います。

Unsigned() 関数

unsigned() 関数の第一と第二仮引数は数値を要求します。

unsigned(nNumber1,nNumber2,cOperator)

bytes2int() 関数はバイトを数値へ変換できます。

用例:

B = list(4)

for k=1 to 4
{
        B[k]= Space(4)
        for kk=1 to 4 { B[k][kk]= char(60+4*k +kk) }
        ? " B" +k +": " +B[k]
}

A12= Space(4)     A12= bytes2int(B[1]) ^ bytes2int(B[2])
? "A12: " +string(A12)
A34= Space(4)     A34= bytes2int(B[3]) ^ bytes2int(B[4])
? "A34: " +string(A34)
A12= space(4)     A12= Unsigned(bytes2int(B[1]),bytes2int(B[2]),"^")
? "unsigned A12: " +A12
A34= space(4)     A34= Unsigned(bytes2int(B[3]),bytes2int(B[4]),"^")
? "unsigned A34: " +A34

実行結果:

B1: ABCD
B2: EFGH
B3: IJKL
B4: MNOP
A12: 201589764
A34: 470025220
unsigned A12: 201589764
unsigned A34: 470025220

なぜ弱い型付けを採用したのですか？

これは最初の目標で重要なことです。高速化と違和感の排除になるからです。最初の規則: 最初のデータ型は最後の結果に影響します。例えば "Print : " + 5 を入力すると、最初に文字列の 5 が表示された後に 5 は文字列へ変換されます。そして 5 + "10" と入力すると最初に数値の "10" が表示された後に "10" は 10 へ変換されます。これは同じ演算子を使用して数値と文字列との間で、すばやく変換するのに大いに役に立ちます。変換を防ぎたい場合は (変換を防ぐコードを記述します)、コードの記述量がより少ない (さらに削除可能) ことに気付くと思います。

弱い型付け = 自動変換と 自動処理 は 優れたもの であり、正しく使用されている場合は 手動処理 より優れています。

Lisp や Smalltalk よりも Ring を選ぶ利点は？

Smalltalk と Lisp は、すばらしいプログラミング言語あり、背景にある様々な概念を気に入っています。しかし、問題に基づいて適切なプログラミング言語を選択した後であれば、問題を定義できると確信しています。筆者には解決したい問題があり、この問題において、前述のすばらしいプログラミング言語は理想的ではなかったので Ring を設計しました。

新しいプログラミング言語を設計するとき、過去から学べますが、将来を見据えて未来へ向かって進まなくてダメなのです。おそらく、読者は自然言語プログラミングの知識に関して、古典的知識に基づいていることは筆者も同意しますが、別技法の実践により、これを実務に取り入れることができることを確認しています。自然言語に関して読者が誤解していることは 文脈依存 です。つまり、アイディアの表現方法に関して色々と考えることで使用できるようになります。

用例 : I want window contains 3 buttons.

一文で四つのオブジェクト (ウィンドウと三つのボタン) の作成を行い、ウィンドウへボタンを追加しました。このような様々な物事を取り入れるのが、自然言語プログラミングの考えかたです。

ネイティブ C や C++ よりも Ring を選ぶ利点は？

Ring 言語では、多種多様なプログラミングパラダイムをまとめて扱うことができます。

言語構成要素では、類似の概念に関して類似のシンタックスを使用するため、あるプログラミングパラダイムから別のプログラミングパラダイムへの移行は容易です。

パラダイムには相互作用性があり、ソフトウェアでは異なる階層で併用されます。

例えば、ゲームエンジンの作成はオブジェクト指向プログラミングで、ゲームのコードは宣言型プログラミング、または自然言語プログラミングで記述を行い、シーンの背後では宣言型、または自然言語のコードはオブジェクト指向クラスを使えます。

Ring は C/C++ よりも生産性が高く、違和感がありません。

Ring は、動的プログラミング言語です。実行中にコードの生成と実行ができます。 Ring は動的型付け言語であり、柔軟性のために弱い型付けを採用しています。

ガベージコレクターは、世代間 (エスケープ解析) および参照カウント方式で実装しています。非常に高速であり、さらにプログラマへ制御権を委任することで、いつでもメモリからデータを削除できます。

C/C++ ライブラリが使えます。 Ring には C 関数、または C++ クラスからのラッパー作成用に、コード生成器が付属しています。さらなる処理能力を求めている。あるいは追加の外部ライブラリを使いたいときでも、簡単に実装できます。

Ring と Python との違いは？ Ring はオープンソースなの？

もちろん。 Ring はオープンソースです (MIT ライセンス)。

全般的に筆者は Python と Ruby が好きですが、筆者には目的となる単純明快な変更があります。

英数大小文字の区別はしません。

リストのインデックスは 1 から開始します。

関数の定義前に呼び出せます。

Python 風のシンタックスを使用しない (インデント、self の使用、pass & _)

弱い型付け (コンテキストに基づいた型の間での自動変換)

プログラムは、単純明快な一定の構造に従います (ステートメントの後に関数、続いてパッケージとクラス)。

代入と値のテストで ‘=’ 演算子の使用。

重要な変更は、

数日で習得できる単純明快な小規模プログラミング言語: Ring コンパイラ + 仮想計算機 = 約 20,000 行の ANSI C コード (すべてのプラットフォームでコンパイル可能)。ほかにライブラリ関連と C/C++ プログラム用のオプションで 500,000 行。

ガベージコレクター: エスケープ解析・参照カウント方式の採用、および代入演算子によりメモリの削除を行う機会をプログラマが決定する権限を与えています。

簡潔なシンタックス: Ring では、行は重要ではありません。 ; の記述または ENTER を押してステートメントを区切る必要はありません。

オブジェクトの属性とメソッドの使用後は { } でオブジェクトへアクセスできます。

自然言語プログラミング: オブジェクト指向プログラミングにより違和感のない自然なインタフェースの作成が非常に簡単になります。

多重構造の宣言型プログラミング

さらに、 Ring の目的を達成するために、画期的な機能が追加されています (参照: 言語設計 - 明確な設計目標)。

Perl, PHP, Python や Ruby よりも Ring を使用する利点は？

Ring は多機能で違和感がない上に、画期的で新規性があります。コードも美しく、簡潔で分かりやすく記述できます。 Ring はプログラミングに関する様々なことを考えさせられます。

Ring は小規模言語として設計されています (Lua 言語からの教訓)。

Ring は単純明快です (BASIC と Clipper/Harbour 言語からの教訓)。

Ring はより自然言語的です (Supernova 言語からの教訓)。

Ring はより宣言的です (REBOL と QML 言語からの教訓)。

Ring の実装は透過性があり、視覚的であり、さらに豪華な機能があります。

なお、 Ring は PHP, Lua Tcl や Smalltalk などの改良品や代用品として設計しておりません。

C# や Java よりも Ring を使用する利点は？

簡潔なコード (きれいで違和感がない)、生産性と柔軟性の向上。

宣言型プログラミング、および自然言語プログラミングに関する対応の改善。

関数型プログラミングへの対応が言及されていますが、これは他になにが起きますか？

このコードに関する質問です:

f = func {
    a = 42
    return func { return a }
}

innerF = call f()
call innerF()

実行結果:

Using uninitialized variable : a In function _ring_anonymous_func_16601()

回答:

これは無名関数であり、クロージャー (関数閉包) ではありません。

この世界の開発者たちがクロージャーの実装を要望しましたが、 Ring 言語の開発で新しい機能を追加することは Ring 言語の目的と精神に反することです。

関数とステートを統合したいときはクラスとオブジェクトを使うのが明確な解決方法です。

リストを使用してリストの内側に無名関数を記述すると、ステートと関数のあるリストを返せます。なお、使用時は関数へリストを渡します。

eval() および substr() を使うと、無名関数を返す前に変数の値を追加できます。

関数の定義時に、ほかのスコープを保護します。Ring では最大で三種類のスコープに属する各場所で、三種類のスコープ規則があります (グローバル、オブジェクトのスコープ、およびローカルスコープ)。

ほかのプログラミング言語を、全て真似をする必要もありませんし、真似しても全て得られるわけではありません！　そのように考えているならば、非常に複雑怪奇なプログラミング言語を作成するか、時間を節約するために他のプログラミング言語を使うと思います。

新しいプログラミング言語の学習、または勉強に専念して (Ring の新しいところや優れたところ)、 いつから使い始めるかについて考えることがあります。数ヶ月前に、公開されたプログラミング言語と数年前に開発が始まったプログラミング言語を比較すること、および現在の世界で使用されているプログラミング言語をすべて理解したと錯覚しないでください。

各々のプログラミング言語にある理解できないことが、ほかのプログラミング言語では特徴となります。アイディアは機能でありません。すべての機能に隠された精神と才能です。

シンタックスの処理ではなく自作言語の定義機能があり、コードなどで構文解析の使用を可能にしている理由は？

つまり、画期的です - 構文解析関連の学習をせずに、自然言語ステートメントを作成できます。聡明な判断により、クラスを使います (後でコンテキストに基づき様々なステートメントへ対応するクラスを併用できるようにするためです - ステートメントの変更と変換など様々なことができます)。また、すべての Ring ステートメントを Ring 環境から使えるようにするステートメントを追加してあります。

ループの中断時に数値の指定ができる理由は？

Ring は小規模プログラミングと大規模プログラミングに対応しています。目的と手段に基づいて使用する機能を選択します。お望みとあれば、プログラマはプログラミング言語で粗悪なコードを記述できます。このアイディアは、柔軟性破壊などの問題を起こさせないために、言語設計でエラー対策を盛り込む必要があります。

例えば、 Linux カーネルと Ruby の実装としてコードのある箇所を読むと、普段は使用しない一般的規則による実用的な GOTO の用法と用例を理解するでしょう。また、優れたプログラマは、いつ規則を破るべきか知っています。 Ring において GOTO は使用不能であり、実装予定については一切言及しません。しかし、一階層以上のループを中断する機能や下位関数からループを中断する機能は、小規模プログラムでは実用的です。

とにかく、これらは言語により追加された小さな新機能の一部です (重要なアイディアではありません)。

Ring で ‘See’, ‘Give’, ‘But’ および ‘Ok’ キーワードを採用する理由は？

See と Give は “反対の動作” ではありませんが、プログラマがしたいことをするために選びました。

画面から処理の過程や結果を確認したいときは ‘See’ です。

キーボードからの標準入力をプログラムへ与えたいときは ‘Give’ です。

“but” や “ok” を選んだ根拠は簡単に書けるキーワードだからです。

また elseif/elif/elsif は文脈ごとに違うキーワードを使い分ける必要があるため "but" のほうが覚えやすいです。

これらは Ring 1.1 以降ではオプション扱いです。

‘See’ と ‘Give’ の代わりに ‘Put’ と ‘Get’ を使えます。

‘But’ と‘Ok’ の代わりに‘elseif’ または ‘end’ を使えます。

それは読者の選択にゆだねられています。 Ring には複数の記法とシンタックスの柔軟性があります。

また、自然言語の新規定義、および言語のキーワードと演算子を変更可能です。

Ring においてデータ型の背景にある哲学とは？

Ring は開発で求められる基本概念を実装しています！　可能な限り、基本概念は単純明快・小規模を維持するのが目標の一つです。

Ring におけるリストの用法で可能なこと

配列の作成 (単体データ型)

リストの作成 (混成データ型)

ツリーの作成 (多重配列)

インデックスに文字列を使用 (ディクショナリー・ハッシュテーブル風の記法)

同じ原則は、これらを数値に使うときにも適用されます。

int 値

double 値

Boolean 値 (True/False)

この事例の原則は、下記を文字列へ格納するときにも適用されます。

文字

テキスト (一行以上)

バイナリデータ

日付

日時

NULL 値 (空の文字列)

プログラマが新しいデータ型を定義することで、言語の定義済みデフォルト型として使用できるオブジェクト指向への対応。つまり、 + 演算子のオーバーロードがあります。

よって、このようになりました。

高速化のため、 Ring 言語では基本型 (文字列、数値、リスト、オブジェクト) が扱えます。

オブジェクト指向プログラミングを採用しています。アプリケーションの問題領域に従い、新しい型を追加することで拡張できる柔軟なプログラミング言語です。

Ring でのブール値とは？

コードでブール式の結果を判定するときに

true (真) では 1 を、および false (偽) では 0 を使えます。

see 命令で値を表示するときに 1 は (true) であり、 0 は (false) を表示します。

理由は？

Ring には四種類の型があるからです。

数値

文字列

リスト

オブジェクト

最初の型 (数値) は、 int (整数)、倍精度数、ブール値を表すために使用されます。

二番目の型 (文字列) は、 char (文字) 型、文字の配列、日付と時刻を表すために使用されます。

三番目の型 (リスト) は配列型であり、複合型から構成される配列として、ハッシュ (ディクショナリ)、ツリーなどを表すために使用されます。

オブジェクトは、 Ring のクラス (全てのクラス) または C/C++ 関数、メソッドを呼び出すことで得られる C ポインタから作成されたオブジェクトです。

なぜですか？

Ring はプログラマ、開発者が様々な作業で使えるように最も単純明快な概念で設計されています。問題領域の定義に関心があるならば、プログラマ、開発者は様々な型を取得するために、新しいクラス (および演算子のオーバーロード)を作成することで言語をカスタマイズします。

どうしてですか？

単純明快であることは習得と記憶しやすいため優れています！　さらに、これは基本型で表現可能な高水準型の間における変換の柔軟性があります。

Ring に “Main” 関数を実装した理由は？

Main 関数は非常に重要です。グローバルスコープではなく、ローカル変数を使うステートメントを書きたいときに使えます。

用例:

x = 10
myfunc()
See "X value = " + X  # ここでは x の値は (10) と想定します。
                      # しかし myfunc() で x を使用しているため別の値 (6) になります！
Func myfunc
   for x = 1 to 5
       See x + nl
   next

実行結果:

1
2
3
4
5
X value = 6

Main 関数の使用

Func Main
   x = 10
   myfunc()
   See "X value = " + X

Func myfunc
   for x = 1 to 5
       See x + nl
   next

実行結果:

1
2
3
4
5
X value = 10

Ring のインデックスが 1 から始まる理由は？

実生活では、三個のリンゴを手に持って数えるとき、

1 2 3 と数えます。

0 から数えることはしません。

質問: ほかのプログラミング言語において、インデックスが必ず 0 から開始されるのか？

回答: これは、計算機における値とメモリアドレスの取り扱い方法について関係があります。

用例:

myarray[5] 配列があります。

メモリには: myarray のアドレスがあります。

最初の項目は、アドレスへ格納されます。

二番目の項目は、アドレスの後などにあります。

myarray のアドレスで必要となる最初のアドレスを指し示す必要がある場合は

myarray + 0 の結果は、最初にある項目を指し示すため、そのまま myarray[0] と入力します。

myarray + 1 の結果は、二番目などにある項目を指し示すため、 myarray[1] と入力します。

このような仕組みは、低水準言語またはハードウェア寄りの言語では良いことです。

しかし、アプリケーション開発用に設計された高級言語では、違和感のない仕組みのほうが優れています。

用例:

mylist = [1,2,3,4,5]
for x = 1 to len(mylist)
        see x + nl
next

前述の用例では、配列の長さは 1 から開始します。 0 から開始するインデックスを記述する場合は、

for x = 0 to len(mylist)-1

また、 ほかのプログラミング言語の for ループのようにする方法を覚えておいてください。

for(x=0 ; x<nMax ; x++ )

< 演算子を使用してください！ (ZeroLib も使えます)

英数大小文字を区別しない理由は？

もっとひとにやさしくするため。

Ada, SQL, Pascal, Delphi, Visual Basic, Visual FoxPro に影響を受けたため。

自然言語プログラミングの対応において効果的であるため。

プログラミング言語のキーワードを記述するとき、好みの記法を選択できるようにするため。

see "lower case!"

SEE "UPPER case!"

See "First Letter is UPPER case!"

手軽なテストを書くために、 “Variable” ではなく “variable” を入力してしまった後にエラーメッセージになるのを防ぐため。

“dosomething()” ではなく、 “Dosomething()” を入力してしまった後にエラーメッセージになるのを防ぐため。

Ring では、変数、メソッド名、およびクラス名の間で名前衝突を起こさないため。

変数名として、 person および クラス名として Person を記述できます。

person = new Person
class Person
        name address phone

大小英数を区別したい場合は、キーワードと演算子の再定義 (またはプリプロセッサを自作)、あるいは全角英数を使用してください。

代入演算子で深いコピーを使用する理由は？

“つまり、実行性能の利得に関しては疑問と劣悪な等価交換があります。

第三者による証明が行われるまで、深いコピー vs 浅いコピーの良い手引きとしては深いコピーのほうが好ましいです。” ― スティーブ・マコーネル、コンプリートコードより

代入演算子では深いコピーを要求したほうが違和感がありません。

深いコピーが不要ならば、使用しないだけで良いです！

Ring は、できる限り参照の使用を減らすように設計しています。

Ring は、これが意味がある特別な場合において、参照を単純かつ可能にするために設計されています。

関数へのリスト、およびオブジェクト渡すとき、 C/C++ ライブラリからオブジェクトを

作成時 (GUI オブジェクトなど)、リストの内側に格納されているオブジェクトを返すときなど、これが当然である場合は参照となります。

これは機能であり、純粋関数を作成するために使えます。これが必要なとき、

stdlib の Value() 関数は、この機能で値によるリストとオブジェクトを渡します。

参照が必要なときは、リストを共有管理するためのクラスとオブジェクトの作成を推奨します。

様々なロジックエラーを回避することは、アプリケーションの水準ではより安全なことです。

Ring では、つまらない、細かいことに関して考えずに開発を開始してアプリケーションに専念するため、型を記述しなくても良いです (動的型付け)。

また、数値、および文字列の間で明示的変換を記述しなくても良いです (弱い型付け)。さらに、値または参照、および使用の間で選択しなくても良いです。そして、スコープを記述しなくても良いです (レキシカルスコープ)。

Ring には、スマートガベージコレクター (単純で高速) があります。代入演算子を使用すれば、いつでも好きなときにメモリを削除できます。

これは参照の削減方法、または管理プログラムから使うことは、当目的を達成するのに大いに有効です。これによる完全な制御があります。

参照の作成、および管理の作成を回避したい場合は

Object2Pointer() と Pointer2Object() 関数を使います。しかし、これは Ring の “精神” に反しています。

Ring にコンストラクタメソッドはありますか？

例えば新しいオブジェクトの作成時、

new point

1 - Ring で認識されていないときは Ring は新しいオブジェクトの属性で用いる動的メモリ空間を割り当てます。

2 - Ring は手順①で作成されたオブジェクトのステートで現在のオブジェクトのスコープとローカルスコープを変更します。

3 - Ring は実行中に、クラスの範囲を移動します (クラス名の末尾、そしてメソッドの先頭)。

4 - クラスの範囲内にあるすべての命令やコードは、 Ring のコードとして実行されます。

5 - クラスの範囲が終端に到達、または Return 命令を使うと、制御はクラスの範囲から (新しい場所) へ移動します。

オブジェクトが追加された全属性は動的属性であるため、これは実行時に追加する属性を制御できます。

用例:

$3D = False
see  new point
$3D = True
see new point

class point
        x y
        if not $3D return ok
        z

実行結果:

x: NULL
y: NULL
x: NULL
y: NULL
z: NULL

新しいオブジェクトの作成時、 init() メソッドを呼び出すオプションがあります。

このメソッドはオブジェクトの作成後に、クラスの範囲にあるコードの実行すると呼び出されるため、オブジェクト属性で処理を行うことができます。

p1 = new point3d(100,200,300)
see p1

class point3d
        x y z
        func init p1,p2,p3
                x=p1 y=p2 z=p3

オブジェクトの新規作成時に起きていることは？

1 - オブジェクトの作成時に、クラスの範囲にあるコードは実行されます。そして、この範囲にあるコードに基づいたオブジェクトの属性があります。

2 - Ring は、メソッドの呼び出しを開始するまでオブジェクトに関して気にしません。

3 - メソッドの呼び出し時に、 Ring はオブジェクトのクラスと親クラスの確認を行い (継承を使用しているならば)、同一クラスに所属する全てのオブジェクトから現在または今後使用するためにメソッドを収集します。

4 - メソッドは動的であり、各オブジェクトはクラスのメソッドから取得するため、オブジェクトの作成後に、メソッドの追加、オブジェクトまたは作成されたオブジェクトの使用、または同一クラスから作成できます。

用例:

o1 = new point {x=10 y=20 z=30}
o2 = new point {x=100 y=200 z =300}

addmethod(o1,"print", func { see x + nl + y + nl + z + nl } )

o1.print()
o2.print()

class point x y z

実行結果:

10
20
30
100
200
300

Getter と Setter メソッドでのアクセスにより属性を使えますか？

もちろんです。クラスの外側から属性の使用を開始するときに、 Setter/Getter メソッドは自動的に呼び出されます。また、属性を使わずにメソッドを呼び出せます。読者の選択しだいです。

用例:

o1 = new Developer
o1.name = "Mahmoud"  see o1.name + nl
o1 { name = "Gal"  see name }
o1 { name = "Bert"  see name }

o1.setname("Marino")
see o1.getname()

Class Developer

                name language = "Ring Programming Language"

                func setname value
                                see "Message from SetName() Function!" + nl
                                name = value + " - " + language

                func getname
                                see "Message from GetName() Function!" + nl + nl
                                return "Mr. " + name + nl

実行結果:

Message from SetName() Function!
Message from GetName() Function!

Mr. Mahmoud - Ring Programming Language

Message from SetName() Function!
Message from GetName() Function!

Mr. Gal - Ring Programming Language
Message from SetName() Function!
Message from GetName() Function!

Mr. Bert - Ring Programming Language
Message from SetName() Function!
Message from GetName() Function!

Mr. Marino - Ring Programming Language

クラスを定義している間にグローバルな名前の検索を行う理由は？

質問は、なぜクラス属性の定義時にグローバル変数との名前衝突を回避しないのですか？

先頭にオプションの $ 記号で、グローバル変数名の問題解決になることを覚えておいてください。 Main 関数は、グローバル変数を避けるために効果があります。

回答:

Ring は動的プログラミング言語です。

実行時に、クラスの属性を決定できます (追加・削除)。

クラスの属性を定義している間は、実行 (指定のコード) できます。

用例①

oPerson = new Person
Class Person
   See "Welcome to the Ring language"

用例②

グローバル変数に基づき、属性をカスタマイズします。

$debug = true
oPerson = new Person
see oPerson
Class Person
    if $debug  date=date()  time=time() ok

前述の用例では、 $debug フラグに true が設定されているとき、オブジェクトのステートへ Date と Time 属性を追加します。

用例③

グローバル変数に基づき、オブジェクトのインデックスを格納します。

$ObjectsCount = 0
oPerson = new Person
see oPerson
oPerson2 = new Person
see oPerson2
Class Person
      $ObjectsCount++
      nIndex = $ObjectsCount

実行結果:

nindex: 1.000000
nindex: 2.000000

一般的な用例:

データベースの接続後に、デーブルのカラムを取得します (グローバル変数やオブジェクトを使用)。

カラム名に基づき、クラスの属性を作成します。

後でデータベースを修正します - 不要ならば、コードを修正しないでください。

柔軟性はありますが、すばらしい応答性による強力さがあることを覚えておいてください。

Ring でグローバル変数とクラスの属性名間の名前衝突を回避しない理由は？

このような場合の対応策です。

1 - $ などの特殊記号を使用せずに、グローバル変数を定義するためです。

2 - クラスには、特別なシンタックスで定義された属性があります (クラスの後に属性名を記入します)。

3 - 属性は、コードの記述とグローバル変数の使用が許されているクラスの範囲で定義されます。

クラスの範囲内で、 Ring の変数検出方法の変更について提案を受け入れる場合は、この問題よりも更に重要な問題を多発する前に三つの機能のうち一つを破る必要があります。

Ring のコードをもっと綺麗なものにしておきたいし、 $ を使用する・しないときをプログラマに決定させたいため機能番号①の変更は好ましくありません。

この機能は気に入っており、プログラマに Self.属性 の入力を強制するのは好みではないので機能番号②の変更は好ましくありません。

ほとんどのアプリケーションでは、クラスの範囲内でのグローバル変数へのアクセスは非常に重要であるため機能番号③の変更は好ましくありません。

判断理由は？

筆者は、この特例を回避するかはプログラマが決めるために、この事例を記載することにしました。

1 - グローバル変数の使用を回避でき (最良)、 Main 関数 (オプション扱い) を使えます。

2 - プログラマは変数名の先頭に $ あるいは global_ または g_ などの記号を使えます。

3 - プログラマは属性を定義するために、クラス名末尾に Self.属性 を使えます。

一般に、小規模プログラムではグローバル変数と関数を使います。大規模プログラムではクラスとオブジェクトを使いますので、グローバル変数は数本だけに絞るか、または使わないでください。

ftell() と fseek() でファイルの大きさを取得するには？

この関数はファイルの読み込みを行わずに、ファイルの大きさを取得します！

func getFileSize fp
       C_FILESTART = 0
       C_FILEEND = 2
       fseek(fp,0,C_FILEEND)
       nFileSize = ftell(fp)
       fseek(fp,0,C_FILESTART)
       return nFileSize

注釈

前述の関数では仮引数として、 fp (ファイルポインタ) を扱います。 fopen() 関数で開いているファイルから fp を取得できます。

fp = fopen("filename","r")

see  "File Size : " + getFileSize(fp) + nl

別の解決方法 (ファイルの読み取り):

see len(read("filename"))

現在のソースファイルのパスを取得するには？

この関数で、現在のソースファイルのパスを取得します。そして、パスを扱うための変数へファイル名を追加できます。

cPath = CurrentPath()
func currentpath
        cFileName = filename()
        for x = len(cFileName) to 1 step -1
                if cFileName[x] = "/"
                        return left(cFileName,x-1)
                ok
        next
        return cFileName

関数の定義済み仮引数、またはオプションの仮引数とは？

定義済み仮引数、またはオプションの仮引数を使用したい場合は、ハッシュ、ディクショナリなどのリストを受け入れてください。

用例:

sum([ :a = 1, :b = 2])
sum([ :a = 1 ])
sum([ :b = 2 ])
func sum pList
        if plist[:a] = NULL pList[:a] = 4 ok
        if plist[:b] = NULL pList[:b] = 5 ok
        see pList[:a] + pList[:b] + nl

実行結果:

3
6
6

リストやディクショナリでキーまたは値のみを表示するには？

キーまたは値のみを表示したい場合は、項目のインデックスを選択します (1 または 2)。

用例

C_COUNTRY = 1
C_CITY = 2
mylist = [
        :KSA = "Riyadh" ,
        :Egypt = "Cairo"
]

for x in mylist
        see x[C_COUNTRY] + nl
next

for x in mylist
        see x[C_CITY] + nl
next

実行結果:

ksa
egypt
Riyadh
Cairo

リストで nl を表示するときに変な結果になる理由は？

このコードでは、

list = 1:5        # list = [1,2,3,4,5]
see list + nl

リストへ改行を追加後にリストを表示します。つまり、通常のリスト表示では、リストの末尾にある改行も表示します。新しい改行文字を追加したので、改行は二行表示となります。

See <式>

see 命令は式の最終結果を表示するため、このように式が評価されます。

nl = char(13) + char(10) # 変更可能な変数！

+ は演算子です。

文字列 + 文字列 ---> 新しい文字列
文字列 + 数値   ---> 新しい文字列
数値   + 数値   ---> 新しい数値
数値   + 文字列 ---> 新しい数値

リスト + 項目 ---> なにも新規作成されませんが、同じリストへ項目が追加されます。

例外:

数値 + nl ---> 新しい文字列

この例外は数値の表示後に、改行を簡単にできるよう追加されています。

最後の項目を表示した後には、改行が既にあるため、これはリストを表示するためには不要です。

StrCmp() の実行結果について解説していただけますか？

まず、 ‘=’ 演算子でも文字列を検査できることを覚えておいてください。

see strcmp("hello","hello") + nl +
strcmp("abc","bcd") + nl +
strcmp("bcd","abc") + nl

いずれも、同一文字列ならば 0 を返します。

abc と bcd は違います。二行目は -1 を返しており三行目は 1 を返します。

二行目では “abc” と “bcd” の比較を行っています。

“abc” = “a” の一文字目と “bcd” = “b” の一文字は等しくありません。よって “a” != “b” と “a” < “b” の結果となります。

よって “a” != “b” と “a” < “b” の

実行結果は -1 となります。

三行目には “bcd” と “abc” があります。

“bcd” の一文字目は “b” であり “abc” の一文字は= “a” です。

結果は “b” != “a” と “b” > “a” です。

従って、実行結果は 1 となります。

注釈

ASCII(“a”) は 97 であり ASCII(“b”) は 98 です。よって 97 < 98 であるため “a” は “b” 以下となります。詳しくは ASCII コード表をご確認ください。

プロジェクトで複数のソースコードを使うには？

用例:

このようなフォルダがあります。

C:\LRing

このようなファイルがフォルダにあります。

C:\LRing\t1.ring
C:\LRing\mylib.ring
C:\LRing\libs\mylib2.ring

このようなコードが t1.ring ファイルにあります。

load "mylib.ring"
load "libs\mylib2.ring"
myfunc()
test()

このようなコードが mylib.ring ファイルにあります。

func myfunc
        see "message from myfunc"+nl

このようなコードが libsmylib2.ring ファイルにあります。

func test
        see "message from test" + nl

C:\LRing フォルダから。

Ring のパスを追加していない場合は、このコマンドで追加できます。

set path=%path%;c:\ring\bin;

Ring フォルダ C:\Ring のある場所で

実行します。

Ring t1.ring

実行結果:

message from myfunc
message from test

この用例で GetChar() を二度使用する理由は？

GetChar() 関数は、キーボードバッファから一文字受け取ります。

この用例では、

While True
        See "
                Main Menu
                (1) Say Hello
                (2) Exit
        "
        Option = GetChar()
        GetChar() GetChar()  # 行の終わり
        # この行で前述の二行を置換できます。
        # Give Option

        if Option = 1
                see "Enter your name : " give cName
                see "Hello " + cName
        else
                bye
        ok
End

GetChar() を三回使用しています。

最初はユーザの選択肢を取得するときに、

Option = GetChar()

しかし、二回目と三回目があります (バッファから改行文字を受け取ります)。

GetChar() GetChar()  # 行の終わり

用例: ユーザが選択肢から 1 を選んだ後に ENTER を押します。

ここでは、三文字あります。

一文字目は : 数字の 1 です。

二文字目は : CHAR(13) です。

三文字目は : CHAR(10) です。

Windows において、 CHAR(13) および CHAR(10) は、それぞれ改行となります (すなわち CR+LF)。

NULL と isNULL() 関数の用法は？

Ring では、未初期化変数を使うと、明示的なランタイムエラーメッセージが表示されます。

用例:

See x

実行結果:

Line 1 Error (R24) : Using uninitialized variable : x
in file tests\seeuninit.ring

未初期化の属性へアクセスすると、同じことが起こります。

用例:

o1 = new point
see o1
see o1.x
class point x y z

実行結果

x: NULL
y: NULL
z: NULL

Line 3 Error (R24) : Using uninitialized variable : x
in file tests\seeuninit2.ring

エラーを検査したい場合は、 Try/Catch/End を使用してください。

Try
        see x
Catch
        See "Sorry, We can't use x!" + nl
Done

実行結果:

Sorry, We can't use x!

さて、 NULL と isNULL() についてお話します。

未初期化の変数を扱おうとしたとき、エラーメッセージが出ます。

これらのエラーは Try/Catch/Done で検査できます。文字列で扱うためには NULL と isNULL() を使います。

NULL には、空文字列の変数があります。

isNULL() は関数であり、入力が空の文字列、または文字列の内容が “NULL” ならば true (1) を返します。

これらの値 (空の文字列) をテストする必要があり、 DBMS などの外部リソースから “NULL” を有する文字列が入力されることがあるからです。

用例:

See isNULL(5) + nl +        # 0 の表示
isNULL("hello") + nl +      # 0 の表示
isNULL([1,3,5]) + nl +      # 0 の表示
isNULL("") + nl +           # 1 の表示
isNULL("NULL")              # 1 の表示

オブジェクトのあるリストを表示するには？

この用例では、オブジェクトのあるリストの表示方法を確認します。

aList = [[1,2,3] , new point(1,2,3), new point(1,2,3)]
see "print the list" + nl
see alist
see "print the item (object)" + nl
see alist[2]
class point x y z
        func init p1,p2,p3 x=p1 y=p2 z=p3

実行結果:

print the list
1
2
3
x: 1.000000
y: 2.000000
z: 3.000000
x: 1.000000
y: 2.000000
z: 3.000000
print the item (object)
x: 1.000000
y: 2.000000
z: 3.000000

改行と文字を表示するには？

nl 変数で改行します。

See "Hello" + nl

複数行リテラルでも改行します。

See "Hello

"

char(nASCII) 関数で他の文字を表示します。

See char(109) + nl +    # m の表示
    char(77)            # M の表示

QApp クラス名の末尾に () を付けない理由は？

RingQt による GUI の開発では、新しいオブジェクトの作成時にクラス名の末尾に () を使います。例えば、

new qWidget() { setWindowTitle("Hello World") resize(400,400) show() }

この処理の前に、 qApp クラスからオブジェクトを作成しますが、名前の後ろには () を使いません。

Load "guilib.ring"
app = new qApp
{
    win=new qWidget()
    {
        setwindowtitle(:test)
        show()
    }
    exec()
}

クラス名末尾に () を使うと、クラス内にある init() メソッドの呼び出し、およびこのメソッドへの仮引数を渡す意味になります。

クラス内に init() がないメソッドで () を使うと、例外エラーメッセージになります。

そのほかのクラスには、 init() メソッドはありますが qApp クラスにはありません。関数を使用したオブジェクトのポインタを返すオブジェクトの作成に必要であり、このポインタは pObject 属性に格納されるのが理由です。詳しくは ring_qt.ring ファイルに収録されているクラスを参照してください。

ウィンドウのタイトルバーが画面外に移動してしまう原因は？

このコードを記述した場合、

Load "guilib.ring"
app = new qApp
{
        win=new qWidget()
        {
              setwindowtitle(:test)
              setGeometry(0,0,200,200)
              show()
        }
        exec()
}

ウィンドウが (200,200) の寸法で (0,0) の地点へ移動すると思うでしょう。実際は、ウィンドウのタイトルバーが画面外に移動してしまいます。

これは Qt フレームワークの挙動と関連があります。

このコードで問題を回避します。

load "guilib.ring"
new qApp {
        new qWidget() {
                move(0,0)
                resize(200,200)
                show()
        }
        exec()
}

GUI アプリケーションでボタンの配列を作成するには？

この用例をご確認ください:

Load "guilib.ring"

App1 = new qApp {

        win1 = new qWidget() {
                move(0,0)
                resize(500,500)
                new qPushButton(win1)
                {
                        settext("OK")
                        setclickevent("click()")
                }
                btn1 = new qPushButton(win1)
                {
                        setgeometry(100,100,100,30)
                        settext("Button1")
                }

                btn2 = new qPushButton(win1)
                {
                        setgeometry(200,100,100,30)
                        settext("Button2")
                }

                button = [btn1, btn2]
                show()
        }

        exec()

}

func click

        button[1] { settext ("Button3") }
        button[2] { settext ("Button4") }

ウィンドウを閉じた後に別のウィンドウを表示するには？

この用例は、ウィンドウを閉じる方法と別のウィンドウを表示する方法です。

Load "guilib.ring"

app=new qApp
{
        frmBefore=new Qwidget()
        {
                setWindowTitle("before!")
                resize(300,320)
                move(200,200)

                button=new qPushButton(frmBefore)
                {
                        setText("Close")
                        setClickEvent("frmBefore.close() frmMain.show()")
                }

                show()
        }

        frmMain=new Qwidget()
        {
                setWindowTitle("After!")
                resize(300,320)
                move(200,200)
        }

        exec()

}

モーダルウィンドウの作成方法は？

この用例は、モーダルウィンドウの作成方法です。

load "guilib.ring"
app=new qApp
{
        frmStart=new Qwidget()
        {
                setWindowTitle("The First Window")
                resize(300,320)
                move(200,200)

                button=new qPushButton(frmStart)
                {
                        setText("Show Modal Window")
                        resize(200,30)
                        setClickEvent("frmModal.show()")
                }

                new qPushButton(frmStart)
                {
                        setText("Close Window")
                        move(0,50)
                        resize(200,30)
                        setClickEvent("frmStart.Close()")
                }

                show()
        }

        frmModal =new Qwidget()
        {
                setWindowTitle("Modal Window")
                resize(300,320)
                move(200,200)
                setparent(frmStart)
                setwindowmodality(true)
                setwindowflags(Qt_Dialog)
        }

        exec()

}

関連資料:

http://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html

http://doc.qt.io/qt-5/qt.html#WindowType-enum

http://doc.qt.io/qt-5/qwindow.html#setParent

http://doc.qt.io/qt-5/qt.html#WindowModality-enum

最大化ボタンの無効化およびウィンドウのサイズを変更するには？

setWindowFlags() メソッドを使います。

Load "guilib.ring"
app1 = new qapp {
                win1 = new qwidget() {
                                setwindowtitle("First")
                                setgeometry(100,100,500,500)

                                new qpushbutton(win1) {
                                                setgeometry(100,100,100,30)
                                                settext("close")
                                                setclickevent("app1.quit()")
                                }

                                new qpushbutton(win1) {
                                                setgeometry(250,100,100,30)
                                                settext("Second")
                                                setclickevent("second()")
                                }

                                showmaximized()
                }
                exec()
}

func second
                win2 = new qwidget() {
                                setwindowtitle("Second")
                                setgeometry(100,100,500,500)
                                setwindowflags(Qt_dialog)
                                show()
                }

ODBC から SQLite を使うには？

Ring 1.1 以降では SQLite に標準対応しており ODBC は不要です。

また、 RingQt から SQLite へアクセスできます。

質問への回答

pODBC = odbc_init()
odbc_connect(pODBC,"DRIVER=SQLite3 ODBC Driver;Database=mydb.db;LongNames=0;"+
                   "Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;")
odbc_execute(pODBC,"create table 'tel' ('ID','NAME','PHONE');")
odbc_execute(pODBC,"insert into 'tel' values ('1','Mahmoud','123456');")
odbc_execute(pODBC,"insert into 'tel' values ('2','Ahmed','123456');")
odbc_execute(pODBC,"insert into 'tel' values ('3','Ibrahim','123456');")
odbc_execute(pODBC,"select * from tel") + nl
nMax = odbc_colcount(pODBC)
See "Columns Count : " + nMax + nl
while odbc_fetch(pODBC)
        See nl
        for x = 1 to nMax
                see odbc_getdata(pODBC,x)
                if x != nMax see " - " ok
        next
end
odbc_disconnect(pODBC)
odbc_close(pODBC)

実行結果:

Columns Count : 3

1 - Mahmoud - 123456
2 - Ahmed - 123456
3 - Ibrahim - 123456

このプログラムは、ファイルを作成します : mydb.db

注意 : ODBC ドライバを表示したとき、そこにある長いリストを確認できます。

SQLite3 ODBC Driver - UsageCount=1
SQLite ODBC Driver - UsageCount=1
SQLite ODBC (UTF-8) Driver - UsageCount=1

そして “SQLite3 ODBC Driver” を使用しています。

dBase/Harbour データベースへ接続できますか？

多種多様なデータベースを ODBC で接続できます。

xBase ファイル (*.DBF) へ接続するには、

See "Using DBF Files using ODBC" + nl
pODBC = odbc_init()
See "Connect to database" + nl
odbc_connect(pODBC,"Driver={Microsoft dBase Driver (*.dbf)};"+
                   "datasource=dBase Files;DriverID=277")
See "Select data" + nl
odbc_execute(pODBC,"select * from tel.dbf")
nMax = odbc_colcount(pODBC)
See "Columns Count : " + nMax + nl
while odbc_fetch(pODBC)
           See "Row data:" + nl
           for x = 1 to nMax
                           see odbc_getdata(pODBC,x) + " - "
           next
end
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

実行結果

Using DBF Files using ODBC
Connect to database
Select data
Columns Count : 3
Row data:
Ahmad - Egypt - 234567 - Row data:
Fady - Egypt - 345678 - Row data:
Shady - Egypt - 456789 - Row data:
Mahmoud - Egypt - 123456 - Close database...

また Visual FoxPro データベースにも接続できます (Visual FoxPro ドライバのインストールが必要です)。

See "ODBC test 6" + nl
pODBC = odbc_init()
See "Connect to database" + nl
odbc_connect(pODBC,"Driver={Microsoft Visual FoxPro Driver};"+
        "SourceType=DBC;SourceDB=C:\PWCT19\ssbuild\PWCTDATA\CH1\Data\mydata.dbc;")
See "Select data" + nl
see odbc_execute(pODBC,"select * from t38") + nl
nMax = odbc_colcount(pODBC)
See "Columns Count : " + nMax + nl
while odbc_fetch(pODBC)
        See "Row data:" + nl
        for x = 1 to nMax
                see odbc_getdata(pODBC,x) + " - "
        next
end
See "Close database..." + nl
odbc_disconnect(pODBC)
odbc_close(pODBC)

setClickEvent() でオブジェクトのメソッドを参照しない理由は？

setClickEvent(cCode) は、コードを記入した文字列を扱えます。 イベントの発生時にコードは実行されます。

Ring は 手続き型、オブジェクト指向、関数型など様々なプログラミングパラダイムに対応しています。

プログラミング言語の水準で様々なパラダイムに対応するときは、以下の選択肢のうち、どちらのパラダイムが使用されるのか検出することはできません。

各種プログラミングパラダイムで動作する一般的な解決方法があります。

あるパラダイムのうちの一つと合致する各種解決方法があります。

setClickEvent() および、そのほかは (様々なプログラミングパラダイムで動作する一般的な解決方法) に所属しています。

クラスとオブジェクトの取り扱いに関する注意を一切しなくても、文字列のコードを渡すことで実行されます。

このコードは関数の呼び出し、メソッドの呼び出しと変数の値の設定などができました。

そのほかのプログラミング言語では、イベントでオブジェクト指向プログラミングとメソッドの呼び出しを強制します。また、現在のオブジェクトなどの仮引数を取得するために無名関数を使います。

現在、一般的な解決方法はあります。将来は特定のパラダイムと合致する明確な解決方法を追加するかもしれません (オブジェクト指向、宣言型プログラミング、および自然言語プログラミング)。

定義エラーを起こさずに関数を呼び出せる理由は？

プログラムは次の順序に従います。

ファイルの読み込み

グローバル変数とステートメント

関数

パッケージ、クラスとメソッド

どのような意味がありますか？

**** 関数がない場合は、その後はクラスとなります。 ****

**** 関数、メソッド、クラス、パッケージを終わらせるための命令は不要です。 ****

この用例を参照してください。

See "Hello"
test()
func test
    see "message from the test function!" + nl
class test

前述の用例では、 test() 関数があるため test() から呼び出せます。

この用例では、 test() がメソッドになります。

See "Hello"
test()    # ランタイムエラーメッセージ
class test
        func test # Test() はメソッドです (関数ではない)
                see "message from the test method!" + nl

メソッドの定義後に、関数を呼び出すとエラーになります。

前述のプログラムは必ずこの通りにしてください。

See "Hello"
new test { test() }   # メソッドの呼び出し
class test
        func test # Test() はメソッドです (関数ではない)
                see "message from the test method!" + nl

RingQt の拡張機能とクラスの追加方法は？

一般に C または C++ のコードで Ring を拡張します。

Ring のコードから C 関数の呼び出し、または C++ クラスとメソッドを使えます。

詳しくは「C/C++ による拡張機能の開発方法」を参照してください。

このコードの用例では Ring ライブラリ (*.lib) を使用して *.c ファイルを DLL ファイルへコンパイルします。

#include "ring.h"

RING_FUNC(ring_ringlib_dlfunc)
{
        printf("Message from dlfunc");
}

RING_API void ringlib_init(RingState *pRingState)
{
        ring_vm_funcregister("dlfunc",ring_ringlib_dlfunc);
}

Ring は、 LoadLib() 関数で DLL ファイルを読み込んだ後に Ring 関数から dlfunc() 関数が呼び出されます。その後に C 関数を呼び出します。

See "Dynamic DLL" + NL
LoadLib("ringlib.dll")
dlfunc()

実行結果:

Dynamic DLL
Message from dlfunc

取扱説明書を読むと、仮引数 (文字列、数値、リストとオブジェクト) などの取得方法について知ることができます。

また、関数から値 (任意型) を返す方法も知ることができます。

実体験ですが、 C ライブラリまたは C++ ライブラリへ対応作業をしているとき、

ほとんどの関数で、ほとんどのコードを共有していることを発見しました。

こちらのコード生成器を使うと Ring 用の C/C++ ライブラリのラッパーを手軽に生成でき、時間の節約になります。

https://github.com/ring-lang/ring/blob/master/extensions/codegen/parsec.ring

コード生成器は 1200 行以下の Ring プログラムです。

コード生成器で入力した設定ファイルには C/C++ ライブラリの情報があります。

関数プロトタイプ、クラスとメソッド、定数、列挙体、構造体とメンバなど。

そして、コード生成器で生成します。

C ライブラリに関する *.C ファイル (ライブラリ関数を使用可能)

C++ ライブラリに関する *.CPP ファイル (C++ クラスとメソッドを使用可能)

*.Ring ファイル (C++ のクラスを Ring のクラスとして使用可能)

*.RH ファイル (定数)

コード生成器の動作を理解するには、この Allegro ゲームプログラミング・ライブラリ用の拡張機能を参照してください。

https://github.com/ring-lang/ring/tree/master/extensions/ringallegro

ひとつ目の設定ファイルは、

https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/allegro.cf

このファイルは Allegro の取扱説明書と Ring コード生成器の規則を用いて記述しました。

このバッチファイルでコード生成器を実行します。

https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/gencode.bat

または、このスクリプトを使います。

https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/gencode.sh

生成されたソースコードファイルを取得します。

https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/ring_allegro.c

生成されたソースコードファイル (ring_allegro.c) は約 1,2000 行です。

ですが、設定ファイルは 1000 行以下です。

ライブラリをビルドするには (DLL ファイルの作成)

https://github.com/ring-lang/ring/blob/master/extensions/ringallegro/buildvc.bat

また、この拡張機能は LibSDL ライブラリに関して確認できます。

https://github.com/ring-lang/ring/tree/master/extensions/ringsdl

まとめとして、知っておく必要のある関連事項は

1 - 設定ファイルの記述

2 - コード生成器の使用

3 - ライブラリや拡張機能の作成

4 - Ring コードからライブラリや拡張機能を使用

さて Qt についての質問へ移りましょう。

RingQt は Ringの拡張機能です (ringqt.dll)。

Ring の改修や変更は不要です。

RingQt の変更が必要です。

または、別の Qt ベースの拡張機能により、 Ring の機能を拡張します (だだし、同じ Qt バージョンです)。

最初の選択肢に関しては RingQt を参照してください。

https://github.com/ring-lang/ring/tree/master/extensions/ringqt

設定ファイル

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/classes/qt.cf

ソースコードを生成するには

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/gencode.bat

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/gencode.sh

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/gencodeandroid.bat

DLL/so/Dylib ファイルをビルドするには

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/buildmingw32.bat

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/buildgcc.sh

https://github.com/ring-lang/ring/blob/master/extensions/ringqt/buildclang.sh

RingQt の学習をしてください。

利用できる選択肢について学んでください。

Qt のクラスを接続します。

新しい自作クラスを接続するために新しいクラスを作成します。

第二の選択肢は (前述の二つの要点、またはそれ以前にある二つの要点)、

C++ コードによる新しいクラスを作成します。

そして、作成したクラスを RingQt へ統合、または特別な DLL を用意します (判断に応じて)。

一般的な動作ならば、 RingQt に記述してください (他の人の手助けになります)。

特別な動作ならば、別の拡張機能に記述してください (特定のアプリケーション)。

Combobox および QTableWidget のセルへ他の要素を追加するには？

このコードを参照してください。

Load "guilib.ring"
New qApp
{
        win1 = new qMainWindow() {
                setGeometry(100,100,1100,370)
                setwindowtitle("Using QTableWidget")

                Table1 = new qTableWidget(win1) {
                        setrowcount(10) setcolumncount(10)
                        setGeometry(0,0,800,400)
                        setselectionbehavior(QAbstractItemView_SelectRows)

                        for x = 1 to 10
                                for y = 1 to 10
                                        item1 = new qtablewidgetitem("R"+X+"C"+Y)
                                        setitem(x-1,y-1, item1)
                                next
                        next

                        cmb = new QComboBox(Table1) {
                                alist = ["one","two","three","four","five"]
                                for x in aList additem(x,0) next
                        }
                                setCellWidget(5, 5, cmb)
                }

                setcentralwidget(table1)
                show()
        }
        exec()
}

QTableWidget で選択されたセルの内容に処理を行うには？

このサンプルを参照してください。

Load "guilib.ring"

New qApp {
        win1 = new qMainWindow() {
                setGeometry(100,100,800,600)
                setwindowtitle("Using QTableWidget")
                Table1 = new qTableWidget(win1) {
                        setrowcount(10) setcolumncount(10)
                        setGeometry(10,10,400,400)
                        for x = 1 to 10
                                for y = 1 to 10
                                        item1 = new qtablewidgetitem("10")
                                        setitem(x-1,y-1,item1)
                                next
                        next
                }
                btn1 = new qPushButton(win1) {
                        setText("Increase")
                        setGeometry(510,10,100,30)
                        setClickEvent("pClick()")
                }
                show()
        }
        exec()
}

func pClick
        for nRow = 0 to Table1.rowcount() - 1
                for nCol = 0 to Table1.columncount() - 1
                        Table1.item(nRow,nCol)  {
                                if isSelected()
                                        setText( "" + ( 10 + text()) )
                                ok
                        }
                next
        next

三種類の標準コード記法について

一般的なもの、あるいはコミュニティでの推薦記法を教えてください。

、まずは、記法を選んでください。ただし、同じプロジェクトで異なる記法の併用、

または最低でも、同じコンテキストを併用しないでください (実装、テスト、スクリプトなど)。

注釈

プロジェクトの開始時に規則の明示、およびその規則に従ってください。

自作記法の使用 (キーワードの変更により) - この考えはカスタマイズと自由のためのものです。

注釈

自然言語を使用する場合など、明確な理由がある場合に限り、新しい記法の作成とキーワードの変更を行うほうが良いです (日本語、アラビア語、フランス語など)。

第一形式は質問、チュートリアル、および小規模アプリケーション・プログラム （5,000行以下のコード） には最適です (筆者個人の意見です)。

用例 : Ring 取扱説明書、 Ring のサンプル、およびアプリケーションの大部分

第三形式は大規模アプリケーション、および現役プログラマには最適です (筆者個人の意見です)。

用例 (フォームデザイナー) : https://github.com/ring-lang/ring/tree/master/tools/formdesigner

ソースコードからのビルド方法

Ring は自由なオープンソース製品 (MIT ライセンス) です。

Ring は CMake あるいは、スクリプト (バッチファイル、またはシェルスクリプト) でビルドします。

この手順はスクリプトによるビルド方法の解説です。

Microsoft Windows でのビルド方法

Ubuntu Linux でのビルド方法

Fedora Linux でのビルド方法

macOS でのビルド方法

CMake でのビルド方法

Microsoft Windows でのビルド方法

ソースコードの取得

git clone http://github.com/ring-lang/ring.git

Ring (コンパイラ、仮想計算機) のビルド

cd ring/language/src
buildvc.bat
buildvcw.bat

Ring2EXE のビルド

cd ring/tools/ring2exe
buildring2exe.bat

RingConsoleColors ソースコードの生成とビルド

cd ring/extensions/ringconsolecolors
gencode.bat
buildvc.bat

RingInternet のビルド

cd ring/extensions/ringinternet
buildvc.bat

RingLibCurl ソースコードの生成とビルド

cd ring/extensions/ringcurl
gencode.bat
buildvc.bat

RingZip ソースコードの生成とビルド

cd ring/extensions/ringzip
gencode.bat
buildvc.bat

RingPM のビルド

cd ring/tools/ringpm
buildringpm.bat

警告

特に指定がない限り /ring2exe/libs フォルダは削除しないでください。 RingPM のビルドが正常にできなくなります。

注釈

Light Release 版では「どのフォルダからでも Ring を呼び出せるようにします」まで読みとばしてください。

RingODBC のビルド

cd ring/extensions/ringodbc
buildvc.bat

RingMySQL のビルド

cd ring/extensions/ringmysql
buildvc.bat

RingSQLite のビルド

cd ring/extensions/ringsqlite
buildvc.bat

RingPostgreSQL のビルド

cd ring/extensions/ringpostgresql
gencode.bat
buildvc.bat

RingOpenSSL のビルド

cd ring/extensions/ringopenssl
buildvc.bat

RingMurmurHash のビルド

cd ring/extensions/ringmurmurhash
buildvc.bat

RingAllegro ソースコードの生成とビルド

cd ring/extensions/ringallegro
gencode.bat
buildvc.bat

RingLibuv ソースコードの生成とビルド

cd ring/extensions/ringlibuv
gencode.bat
buildvc.bat

RingFreeGLUT ソースコードの生成とビルド

cd ring/extensions/ringfreeglut
gencode.bat
buildvc.bat

RingOpenGL ソースコードの生成とビルド

ringopengl のサブフォルダには OpenGL 1.1 ～ 4.6 が収録されています。

cd ring/extensions/ringopengl/opengl21
gencode.bat
buildvc.bat

RingPostgreSQL ソースコードの生成とビルド

cd ring/extensions/ringpostgresql
gencode.bat
buildvc.bat

RingQt ソースコードの生成とビルド

Qt 5.12 と Qt 5.15 で検証済み

Qt 5.12 の手順 ( Qt 5.12 のインストール : https://download.qt.io/archive/qt/5.12/5.12.6/ )

cd ring/extensions/ringqt
gencodeqt512_nobluetooth.bat
buildqt512_nobluetooth.bat

Qt ランタイムファイルを ring/bin フォルダへコピーします。

cd ring/extensions/ringqt/binupdate
installqt512.bat

Qt 5.15 の手順 ( Qt 5.15 のインストール : https://www.qt.io/blog/qt-5.15-released )

cd ring/extensions/ringqt
gencodeqt515_nobluetooth.bat
buildqt515_nobluetooth.bat

Qt ランタイムファイルを ring/bin フォルダへコピーします。

cd ring/extensions/ringqt/binupdate
installqt515.bat

どのフォルダからでも Ring を呼び出せるようにします。

cd ring/bin
install.bat

システムパスへ Ring/bin を追加

"Windows キー" の打鍵。
"システム環境変数の編集" の入力
"詳細" タブ を選択。
"環境変数..." をクリック
"パス" のダブル・クリック
パスの末尾へセミコロンで区切った新しいパスを追加します。
    ;C:\Ring\Bin

Ring ノートパッドの実行

cd ring/tools/ringnotepad
ring rnote.ring

Ubuntu Linux でのビルド方法

ソースコードの取得

git clone http://github.com/ring-lang/ring.git

ライブラリのインストール

cd ring/language/src
./installdep.sh

Ring (コンパイラ、仮想計算機) のビルド

sudo ./buildgcc.sh

Ring2EXE のビルド

cd ring/tools/ring2exe
sudo ./buildring2exe.sh

RingConsoleColors ソースコードの生成とビルド

cd ring/extensions/ringconsolecolors
./gencode.sh
./buildgcc.sh

RingInternet のビルド

cd ring/extensions/ringinternet
./buildgcc.sh

RingLibCurl ソースコードの生成とビルド

cd ring/extensions/ringcurl
./gencode.sh
./buildgcc.sh

RingZip ソースコードの生成とビルド

cd ring/extensions/ringzip
./gencode.sh
./buildgcc.sh

RingPM のビルド

cd ring/tools/ringpm
sudo ./buildringpm.sh

RingODBC のビルド

cd ring/extensions/ringodbc
./buildgcc.sh

RingMySQL のビルド

cd ring/extensions/ringmysql
./buildgcc.sh

RingSQLite のビルド

cd ring/extensions/ringsqlite
./buildgcc.sh

RingPostgreSQL のビルド

cd ring/extensions/ringpostgresql
gencode.sh
buildgcc.sh

RingOpenSSL のビルド

cd ring/extensions/ringopenssl
./buildgcc.sh

RingMurmurHash のビルド

cd ring/extensions/ringmurmurhash
./buildgcc.sh

RingAllegro ソースコードの生成とビルド

cd ring/extensions/ringallegro
./gencode.sh
./buildgcc.sh

RingLibuv ソースコードの生成とビルド

最初に Libuv をビルドします

cd ring/extensions/ringlibuv/libuv
sudo apt-get install libtool m4 automake
sh autogen.sh
./configure
make
make check
sudo make install

次に RingLibuv をビルドします

cd ring/extensions/ringlibuv
./gencode.sh
./buildgcc.sh

RingFreeGLUT ソースコードの生成とビルド

cd ring/extensions/ringfreeglut
./gencode.sh
./buildgcc.sh

RingOpenGL ソースコードの生成とビルド

ringopengl のサブフォルダには OpenGL 1.1 ～ 4.6 が収録されています。

cd ring/extensions/ringopengl/opengl21
gencode.sh
buildgcc.sh

RingPostgreSQL ソースコードの生成とビルド

cd ring/extensions/ringpostgresql
./gencode.sh
./buildgcc.sh

RingQt ソースコードの生成とビルド

cd ring/extensions/ringqt
./gencode.sh
./buildgcc.sh

どのフォルダからでも Ring を呼び出せるようにします。

cd ring/bin
sudo ./install.sh

Ring ノートパッドの実行

cd ring/tools/ringnotepad
ring rnote.ring

Fedora Linux でのビルド方法

ソースコードの取得

git clone http://github.com/ring-lang/ring.git

ライブラリのインストール

cd ring/language/src
./installdepfedora.sh

Ring (コンパイラ、仮想計算機) のビルド

sudo ./buildgcc.sh

Ring2EXE のビルド

cd ring/tools/ring2exe
sudo ./buildring2exe.sh

RingConsoleColors ソースコードの生成とビルド

cd ring/extensions/ringconsolecolors
./gencode.sh
./buildgcc.sh

RingInternet のビルド

cd ring/extensions/ringinternet
./buildgcc.sh

RingLibCurl ソースコードの生成とビルド

cd ring/extensions/ringcurl
./gencode.sh
./buildgcc.sh

RingZip ソースコードの生成とビルド

cd ring/extensions/ringzip
./gencode.sh
./buildgcc.sh

RingPM のビルド

cd ring/tools/ringpm
sudo ./buildringpm.sh

RingODBC のビルド

cd ring/extensions/ringodbc
./buildgcc.sh

RingMySQL のビルド

cd ring/extensions/ringmysql
./buildgccfedora.sh

RingSQLite のビルド

cd ring/extensions/ringsqlite
./buildgcc.sh

RingPostgreSQL のビルド

cd ring/extensions/ringpostgresql
gencode.sh
buildgcc.sh

RingOpenSSL のビルド

cd ring/extensions/ringopenssl
./buildgcc.sh

RingMurmurHash のビルド

cd ring/extensions/ringmurmurhash
./buildgcc.sh

RingAllegro ソースコードの生成とビルド

cd ring/extensions/ringallegro
./gencode.sh
./buildgcc.sh

RingLibuv ソースコードの生成とビルド

最初に Libuv をビルドします

cd ring/extensions/ringlibuv/libuv
sudo dnf install libtool m4 autoconf automake
sh autogen.sh
./configure
make
make check
sudo make install

次に RingLibuv をビルドします

cd ring/extensions/ringlibuv
./gencode.sh
./buildgcc.sh

RingFreeGLUT ソースコードの生成とビルド

cd ring/extensions/ringfreeglut
./gencode.sh
./buildgcc.sh

RingOpenGL ソースコードの生成とビルド

ringopengl のサブフォルダには OpenGL 1.1 ～ 4.6 が収録されています。

cd ring/extensions/ringopengl/opengl21
gencode.sh
buildgcc.sh

RingPostgreSQL ソースコードの生成とビルド

cd ring/extensions/ringpostgresql
./gencode.sh
./buildgcc.sh

RingQt ソースコードの生成とビルド

cd ring/extensions/ringqt
./gencode.sh
./buildgccfedora.sh

どのフォルダからでも Ring を呼び出せるようにします。

cd ring/bin
sudo ./install.sh

Ring ノートパッドの実行

cd ring/tools/ringnotepad
ring rnote.ring

macOS でのビルド方法

ソースコードの取得

git clone http://github.com/ring-lang/ring.git

homebrew のインストール (homebrew のホームページに記載されている説明に従ってください)。

ライブラリのインストール

cd ring/language/src
./installdepmac.sh

Ring (コンパイラ、仮想計算機) のビルド

./buildclang.sh

Ring2EXE のビルド

cd ring/tools/ring2exe
sudo ./buildring2exe.sh

RingConsoleColors ソースコードの生成とビルド

cd ring/extensions/ringconsolecolors
./gencode.sh
./buildclang.sh

RingInternet のビルド

cd ring/extensions/ringinternet
./buildclang.sh

RingLibCurl ソースコードの生成とビルド

cd ring/extensions/ringcurl
./gencode.sh
./buildclang.sh

RingZip ソースコードの生成とビルド

cd ring/extensions/ringzip
./gencode.sh
./buildclang.sh

RingPM のビルド

cd ring/tools/ringpm
sudo ./buildringpm.sh

RingODBC のビルド

cd ring/extensions/ringodbc
./buildclang.sh

RingMySQL のビルド

cd ring/extensions/ringmysql
./buildclang.sh

RingSQLite のビルド

cd ring/extensions/ringsqlite
./buildclang.sh

RingPostgreSQL のビルド

cd ring/extensions/ringpostgresql
gencode.sh
buildclang.sh

RingOpenSSL のビルド

cd ring/extensions/ringopenssl
./buildclang.sh

RingMurmurHash のビルド

cd ring/extensions/ringmurmurhash
./buildclang.sh

RingAllegro ソースコードの生成とビルド

cd ring/extensions/ringallegro
./gencode.sh
./buildclang.sh

RingLibuv ソースコードの生成とビルド

cd ring/extensions/ringlibuv
./gencode.sh
./buildclang.sh

RingFreeGLUT ソースコードの生成とビルド

cd ring/extensions/ringfreeglut
./gencode.sh
./buildclang.sh

RingOpenGL ソースコードの生成とビルド

ringopengl のサブフォルダには OpenGL 1.1 ～ 4.6 が収録されています。

cd ring/extensions/ringopengl/opengl21
./gencode.sh
./buildclang.sh

RingPostgreSQL ソースコードの生成とビルド

cd ring/extensions/ringpostgresql
./gencode.sh
./buildclang.sh

RingQt ソースコードの生成とビルド

cd ring/extensions/ringqt
./gencodemac.sh
./buildclang.sh

どのフォルダからでも Ring を呼び出せるようにします。

cd ring/bin
sudo ./install.sh

Ring ノートパッドの実行

cd ring/tools/ringnotepad
sudo ring rnote.ring

CMake によるビルド方法

Ring のコンパイラと仮想計算機をビルドするには、

cmake .
make

開発への参戦について

Ring は、自由なオープンソースプロジェクトです。どなたさまでも Ring の開発参戦は歓迎します。

プロジェクトの本拠地 : https://github.com/ring-lang/ring

多種多様な才能を発揮していただくことにより、プロジェクトの支援へとつながります。

参加前に GitHub の用法の学習、環境構築を各自にお願いしております (不明点がございましたらグループ、またはフォーラムまでお気軽に質問をお願いします)。

なお、外出先などで Git クライアントをインストールせずにウェブブラウザで編集するには、 GitHub へログイン後に作業対象のファイルを表示してから鉛筆アイコンをクリックします。編集作業後に pull リクエストを送るのをお忘れなく。

取扱説明書

ウェブサイト

動作検証

サンプル

アプリケーション

エディタの対応

Ring のライブラリ

C/C++ による拡張機能

コンパイラと仮想計算機 (VM)

意見と提案

戦士たちへ心からの敬意を

このプロジェクトの開発では、学生ならびに専門家からの参戦が非常に頼りになりました。

勇敢なる戦士たちの戦果は非常に貴重なものでした。我々は感謝の意を表して、すべての熱い戦いに表彰したいと思います。

Ring チーム: http://ring-lang.sf.net/team.html

Ring チーム(日本非公式): http://ring-lang-081.osdn.jp/team.html

取扱説明書

このフォルダにあるテキストファイル (*.txt) を更新することにより、取扱説明書の内容を変更できます。

https://github.com/ring-lang/ring/tree/master/documents/source

取扱説明書は Sphinx で生成しています : http://www.sphinx-doc.org/ja/stable/

また、日本語版の翻訳には OmegaT を使用しています : https://omegat.org/

英語や日本語以外の翻訳、記事の加筆や寄稿に限らず、誤字脱字、スペルミスなど些細なものであっても改善や修正は歓迎します。ご遠慮なくお気軽にご参戦ください。

ウェブサイト

このフォルダにあるファイル (*.template, *.data) を更新することにより、ウェブサイトの内容を変更できます。

https://github.com/ring-lang/ring/tree/master/marketing/website

Ring を世界に広めるべく、我々はもっと格好良くて訴求力が高く、さらに軽くて快適な公式サイトを求めています。

「世界よ。これがウェブデザインだ」と名を知らしめたいかたはお気軽にご参戦ください。

動作検証

このフォルダには新しい動作検証を記述できます :

https://github.com/ring-lang/ring/tree/master/language/tests/scripts

サンプル

このフォルダには新しいサンプルを追加できます :

https://github.com/ring-lang/ring/tree/master/samples

アプリケーション

このフォルダには新しいアプリケーションを追加できます :

https://github.com/ring-lang/ring/tree/master/applications

エディタの対応

あなたのご助力で様々なコードエディタを Ring へ対応させることができます。

このフォルダをご確認ください :

https://github.com/ring-lang/ring/tree/master/tools/editors

Ring のライブラリ

このフォルダへライブラリの追加と更新ができます。

https://github.com/ring-lang/ring/tree/master/libraries

C/C++ による拡張機能

このフォルダへ拡張機能の追加と更新ができます。

https://github.com/ring-lang/ring/tree/master/extensions

コンパイラと仮想計算機 (VM)

ソースコード (C 言語) : https://github.com/ring-lang/ring/tree/master/language/src

ビジュアルソース (PWCT) : https://github.com/ring-lang/ring/tree/master/language/visualsrc

アイディアと提案

このグループでアイディア、提案と質問を共有できます。

https://groups.google.com/forum/#!forum/ring-lang

言語リファレンス

解説内容は、

言語のキーワード

言語の関数

コンパイラのエラー

実行時のエラー

動作環境のエラー

言語の文法

仮想計算機 (VM) の命令

言語のキーワード

キーワードの総数 : 49

again

and

but

bye

call

case

catch

changeringkeyword

changeringoperator

class

def

do

done

else

elseif

end

exit

for

from

func

get

give

if

import

in

load

loadsyntax

loop

new

next

not

off

ok

on

or

other

package

private

put

return

see

step

switch

to

try

while

endfunc

endclass

endpackage

言語の関数

関数の総数 : 236

acos()
add()
addattribute()
adddays()
addmethod()
addsublistsbyfastcopy()
addsublistsbymove()
ascii()
asin()
assert()
atan()
atan2()
attributes()
binarysearch()
bytes2double()
bytes2float()
bytes2int()
callgarbagecollector()
callgc()
ceil()
cfunctions()
char()
chdir()
checkoverflow()
classes()
classname()
clearerr()
clock()
clockspersecond()
closelib()
copy()
cos()
cosh()
currentdir()
date()
dec()
decimals()
del()
diffdays()
dir()
direxists()
double2bytes()
eval()
exefilename()
exefolder()
exp()
fabs()
fclose()
feof()
ferror()
fexists()
fflush()
fgetc()
fgetpos()
fgets()
filename()
find()
float2bytes()
floor()
fopen()
fputc()
fputs()
fread()
freopen()
fseek()
fsetpos()
ftell()
functions()
fwrite()
getarch()
getattribute()
getchar()
getpathtype()
getpointer()
getptr()
globals()
hex()
hex2str()
input()
insert()
int2bytes()
intvalue()
isalnum()
isalpha()
isandroid()
isattribute()
iscfunction()
isclass()
iscntrl()
isdigit()
isfreebsd()
isfunction()
isglobal()
isgraph()
islinux()
islist()
islocal()
islower()
ismacosx()
ismethod()
ismsdos()
isnull()
isnumber()
isobject()
ispackage()
ispackageclass()
ispointer()
isprint()
isprivateattribute()
isprivatemethod()
ispunct()
isspace()
isstring()
isunix()
isupper()
iswindows()
iswindows64()
isxdigit()
left()
len()
lines()
list()
list2str()
loadlib()
locals()
log()
log10()
lower()
max()
memcpy()
memorycopy()
mergemethods()
methods()
min()
murmur3hash()
newlist()
nofprocessors()
nullpointer()
nullptr()
number()
obj2ptr()
object2pointer()
objectid()
packageclasses()
packagename()
packages()
perror()
pointer2object()
pointer2string()
pointercompare()
pow()
prevfilename()
ptr2obj()
ptr2str()
ptrcmp()
raise()
random()
randomize()
read()
remove()
rename()
reverse()
rewind()
right()
ring_give()
ring_see()
ring_state_delete()
ring_state_filetokens()
ring_state_findvar()
ring_state_init()
ring_state_main()
ring_state_mainfile()
ring_state_new()
ring_state_newvar()
ring_state_runcode()
ring_state_runfile()
ring_state_runobjectfile()
ring_state_setvar()
ringvm_callfunc()
ringvm_calllist()
ringvm_cfunctionslist()
ringvm_classeslist()
ringvm_evalinscope()
ringvm_fileslist()
ringvm_functionslist()
ringvm_genarray()
ringvm_give()
ringvm_hideerrormsg()
ringvm_info()
ringvm_memorylist()
ringvm_packageslist()
ringvm_passerror()
ringvm_scopescount()
ringvm_see()
ringvm_settrace()
ringvm_tracedata()
ringvm_traceevent()
ringvm_tracefunc()
setattribute()
setpointer()
setptr()
shutdown()
sin()
sinh()
sort()
space()
sqrt()
srandom()
str2hex()
str2hexcstyle()
str2list()
strcmp()
string()
substr()
swap()
sysget()
sysset()
system()
sysunset()
tan()
tanh()
tempfile()
tempname()
time()
timelist()
trim()
type()
ungetc()
unsigned()
upper()
uptime()
variablepointer()
varptr()
version()
windowsnl()
write()

コンパイラのエラー

Error (C1) : 要求された識別子において、仮引数リストにエラーがあります。

Error (C2) : クラス名にエラーがあります。

Error (C3) : ‘ok’ が欠落しているため、制御構造を閉じることができません。

Error (C4) : ‘end’ が欠落しているため、制御構造を閉じることができません。

Error (C5) : next が欠落しているため、制御構造を閉じることができません。

Error (C6) : 関数名にエラーがあります。

Error (C7) : リストの項目にエラーがあります。

Error (C8) : 丸括弧 ‘)’ が欠落しています。

Error (C9) : 角括弧 ‘]’ が欠落しています。

Error (C10) : 親クラス名にエラーがあります。

Error (C11) : 演算子の式にエラーがあります。

Error (C12) : クラスが定義されていません。

Error (C13) : 変数名にエラーがあります。

Error (C14) : Try/Catch で Catch キーワードが欠落しています！

Error (C15) : Try/Catch で Done キーワードが欠落しています！

Error (C16) : Switch ステートメントの式でエラーがあります！

Error (C17) : Switch ステートメントに OFF がありません。

Error (C18) : 開いているブロックで括弧を閉じるのを忘れています！

Error (C19) : 数値オーバーフロー！

Error (C20) : パッケージ名にエラーがあります。

Error (C21) : ‘again’ が欠落しているため、制御構造を閉じることができません。

Error (C22) : 関数は既に存在しますが、関数が再定義されました！

Error (C23) : 数値の後に ‘(‘ が使用されています！

Error (C24) : 親クラス名はサブクラス名と重複しています。

Error (C25) : オブジェクト名の後に自己参照アクセスをしようとしています。”

Error (C26) : クラスは既に存在しますが、クラスが再定義されました！

Error (S1) : リテラルが閉じられていません！

Warning (W1) : ファイル名が重複しています。

Warning (W2) : コンパイラ命令 ChangeRingKeyword では二種類の語句が引数として必要です。

Warning (W3) : コンパイラ命令 ChangeRingKeyword - キーワードが見つかりません！

Warning (W4) : コンパイラ命令 ChangeRingOperator では二種類の語句が引数として必要です。

Warning (W5) : コンパイラ命令 ChangeRingOperator - 演算子が見つかりません！

Warning (W6) : ループの外側で EXIT 命令を使用しています。

Warning (W7) : ループの外側で LOOP 命令を使用しています。

実行時のエラー

Error (R1) : ゼロ除算はできません！

Error (R2) : 配列へのアクセス (インデックスの範囲外です)！

Error (R3) : 未定義関数を呼び出そうとしました！

Error (R4) : スタックオーバーフロー！

Error (R5) : オブジェクトはリストではないため、リストの項目へアクセスできません！

Error (R6) : 変数が必要です。

Error (R7) : 文字列内にある文字には一文字以上割り当てることはできません。

Error (R8) : 変数は文字列ではありません。

Error (R9) : ループの外側で Exit 命令を使用しています。

Error (R10) : 数値の範囲外で Exit 命令を使用しています。

Error (R11) : クラスが見つからないため、クラス名にエラーがあります！

Error (R12) : プロパティが見つからないため、プロパティ名にエラーがあります！

Error (R13) : オブジェクトが必要です。

Error (R14) : 未定義メソッドを呼び出そうとしました！

Error (R15) : 親クラスが見つからないため、クラス名にエラーがあります！

Error (R16) : 未知のオブジェクトへのアクセスで括弧を使用しようしました！

Error (R17) : 親クラスのない状態で‘Super’を使用したためエラーになりました！

Error (R18) : 数値オーバーフロー！

Error (R19) : 関数の呼び出しで仮引数の個数が不足しています！

Error (R20) : 関数の呼び出しで仮引数の個数が超過しています！

Error (R21) : 演算子で不正な型の値を使用しています。

Error (R22) : ループの外側で Loop 命令を使用しています。

Error (R23) : 数値の範囲外で Loop 命令を使用しています。

Error (R24) : 未初期化変数を使用しようとしました。

Error (R25) : パッケージが見つからないため、パッケージ名にエラーがあります！

Error (R26) : クラスの外側でプライベートメソッドを使用しようとしました。

Error (R27) : クラスの外側でプライベート属性を使用しようとしました。

Error (R28) : ステップ値で不正なデータ型が使用されています。

Error (R29) : For ループで不正なデータ型が使用されています。

Error (R30) : 親クラス名は子クラス名と重複しています。

Error (R31) : オブジェクトを自己参照で破棄しようとしました。

Error (R32) : CALL 命令で要求された変数に文字列があります！

Error (R33) : 不正な十進数値です (正しい範囲は >= 0 から <=90 まで)！

Error (R34) : 代入操作には変数が必要です。

Error (R35) : ファイルを開く、または作成できません！

Error (R36) : カラム番号が正しくありません！　リストのカラム番号より大きいです。

Error (R37) : 申し訳ございません。このコンテキストにおいてこの命令は対応していません。

Error (R38) : 動的ライブラリの読み込み時に実行時エラーが発生しました！

Error (R39) : 唯一無二のファイル名を作成するときにエラーが発生しました。

Error (R40) : 数値アンダーフロー！

Error (R41) : 不正な数値文字列です。

動作環境のエラー

Error (E1) : セグメンテーション違反が発生しました！

Error (E2) : メモリが足りません！

Error (E3) : スコープが存在しないのにスコープを削除しようとしました！

Error (E4) : 仮想計算機の命令が長すぎます！

Error (E5) : ファイルの種類が正しくありません ― 仮想計算機は Ring オブジェクトファイルのみ扱えます。

Error (E6) : Ring オブジェクトファイルのバージョンが正しくありません！

Error (E7) : sscanf() 関数で内部エラーが発生しました！

Error (E8) : fscanf() 関数で内部エラーが発生しました！

言語の文法

プログラム → {ステートメント}

ステートメント → ‘package’ <識別子> { ‘.’ <識別子> } [‘{‘ {ステートメント} ‘}’] [‘end’|’endpackage’]

ステートメント → ‘class’ <識別子> [ ‘from’|’:’|’<’ <識別子> ] [‘{‘ {ステートメント} ‘}’][‘end’|’endclass’]

ステートメント → ‘func’|’def’ <識別子> [仮引数リスト] [‘{‘ {ステートメント} ‘}’][‘end’|’endfunc’]

ステートメント → ‘import’ <識別子> { ‘.’ <識別子> }

ステートメント → ‘private’

ステートメント → ‘load’; [‘package'|'again' ] <リテラル>

ステートメント → ‘loadsyntax’ <リテラル>

ステートメント → ‘changeringkeyword’ <旧キーワード> <新キーワード>

ステートメント → ‘changeringoperator’ <旧演算子> <新演算子>

ステートメント → ‘see’|’put’ <式>

ステートメント → ‘give’|’get’ <識別子>

ステートメント → ‘if’ <式> [‘{‘] {ステートメント} [ {‘but’|’elseif’ <式> {ステートメント} } ] [‘else’ {ステートメント} ] ‘ok’|’end’|’}’

ステートメント → ‘Switch’ <式> [‘{‘] { ‘on’|’case’ <式> {ステートメント} } [‘other’ {ステートメント} ] ‘off’|’end’|’}’

ステートメント → ‘for’ <識別子> ‘=’ <式> ‘to’ <式> [ ‘step’ <式> ] [‘{‘] {ステートメント} ‘next’|’end’|’}’

ステートメント → ‘for’ <識別子> ‘in’ <式> [ ‘step’ <式> ] [‘{‘] {ステートメント} ‘next’|’end’|’}’

ステートメント → ‘while’ <式> [‘{‘] {ステートメント} ‘end’|’}’

ステートメント → ‘do’ {ステートメント} ‘again’ <式>

ステートメント → ‘try’ {ステートメント} [‘{‘] ‘catch’ {ステートメント} ‘done’|’end’|’}’

ステートメント → ‘return’ <式>

ステートメント → ‘bye’

ステートメント → ‘exit’

ステートメント → ‘loop’

ステートメント → <式>

ステートメント → エプシロン

仮引数リスト → エプシロン

仮引数リスト → [‘(‘] <識別子> [{ ‘,’ <識別子> }] [‘)’]

式 → <LogicNot> [{ ‘and’|’or’ <LogicNot> }]

LogicNot → [‘not’] <EqualOrNot>

EqualOrNot → [ ‘=’|’!=’ ] <比較>

比較 → <BitOrXor> [ { ‘<’ | ‘>’ | ‘<=’ | ‘>=’ <BitOrXor> } ]

BitOrXor → <BitAnd> [ { ‘|’ | ‘^’ <BitAnd> } ]

BitAnd → <BitShift> [ { ‘&’ <BitShift> } ]

BitShift → <演算> [ { ‘<<’ | ‘>>’ <演算> } ]

演算 → <項> [ { ‘+’ | ‘-‘ <項> } ]

項 → <範囲> [ { ‘*’ | ‘/’ | ‘%’ <範囲> } ]

範囲 → <要素> [ ‘:’ <要素> ]

要素 → <識別子> [ {混成} ] [ ‘=’ <式> ]

要素 → <数値>

要素 → <リテラル>

要素 → ‘:’ <識別子>

要素 → ‘-‘ <要素>

要素 → ‘(‘ <式> ‘)’

要素 → <リスト>

要素 → ‘new’ <識別子>

要素 → <無名関数>

要素 → ‘call’ <識別子> { ‘.’ <識別子> } ‘(‘ <仮引数> ‘)’

リスト → ‘[‘ [ <式> { ‘,’ <式> } ] ‘]’

混成 → { ‘.’ <識別子> }

混成 → ‘[‘ <式> ‘]’

混成 → ‘(‘ [ <式> [ { ‘,’ <式> }] ] ‘)’

混成 → ‘{‘ {ステートメント} ‘}’

無名関数 → ‘func’|’def’| [<仮引数リスト>] ‘{‘ {ステートメント} ‘}’

仮想計算機 (VM) の命令

定義:

VM : 仮想計算機

Stack : VM スタック

IR : 命令レジスタ

PC : プログラムカウンタ

VP : 変数のポインタ

Stack[nSize] : スタックの最後にある項目 (LIFO 構造 : 末尾入力、先頭出力)

VV : 変数の値 (変数にはポインタがあり、この変数の値へアクセスします。)

(スタックと変数)

演算

説明

ICO_PUSHC

IR からスタックへ文字列を追加します。

ICO_PUSHN

IR からスタックへ数値を追加します。

ICO_PUSHV

VP を stack[nSize] により変数の値で置換します。

ICO_LOADADDRESS

IR から変数名を読み取り VP をスタックへ退避します。

ICO_ASSIGNMENT

Stack[nSize-1] VV = Stack[nSize] VV , Stack[nSize] の復帰

ICO_INC

Stack[nSize] の数値を 1 ずつ増分します。

ICO_LOADAPUSHV

ICO_LOADADDRESS そして ICO_PUSHV と同じです。

ICO_NEWLINE

新しい行番号を格納します (デバッグ情報)。

ICO_FREESTACK

スタックから項目を全て削除します。 nSize = 0 になります。

ICO_FILENAME

ソースコードのファイル名を格納します (デバッグ情報)。

ICO_FREELOADASCOPE

現在の式にあるスコープリストを解放します。

(ジャンプ)

演算

説明

ICO_JUMP

IR から PC へ新しい値を設定します。

ICO_JUMPZERO

Stack[nSize] が number = 0 の場合は IR から PC へ新しい値を設定します。

ICO_JUMPFOR

For ループの終了

ICO_JUMPONE

Stack[nSize] が number = 1 の場合は IR から PC へ新しい値を設定します。

ICO_JUMPZERO2

ICO_JUMPZERO と似ていますがスタックへ 1 加算します (複数の ‘AND’条件で必要となります)。

ICO_JUMPONE2

ICO_JUMPONE と似ていますがスタックへ 1 加算します (複数の ‘OR’ 条件で必要となります)。

(比較)

演算

説明

ICO_LESSEQUAL

If stack[nSize-1] <= stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0

ICO_EQUAL

If stack[nSize-1] = stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0

ICO_LESS

If stack[nSize-1] < stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0

ICO_GREATER

If stack[nSize-1] > stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0

ICO_GREATEREQUAL

If stack[nSize-1] >= stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0

ICO_NOTEQUAL

If stack[nSize-1] != stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0

(算術)

演算

説明

ICO_SUM

Stack[nSize-1] = Stack[nSize-1] + Stack[nSize] , POP stack[nSize]

ICO_SUB

Stack[nSize-1] = Stack[nSize-1] - Stack[nSize] , POP stack[nSize]

ICO_MUL

Stack[nSize-1] = Stack[nSize-1] * Stack[nSize] , POP stack[nSize]

ICO_DIV

Stack[nSize-1] = Stack[nSize-1] / Stack[nSize] , POP stack[nSize]

ICO_MOD

Stack[nSize-1] = Stack[nSize-1] % Stack[nSize] , POP stack[nSize]

ICO_NEG

Stack[nSize] = - Stack[nSize-1]

ICO_PLUSPLUS

Stack[nSize] = Stack[nSize] + 1

ICO_MINUSMINUS

Stack[nSize] = Stack[nSize] - 1

(論理)

演算

説明

ICO_AND

Stack[nSize-1] = Stack[nSize-1] && Stack[nSize] , POP stack[nSize]

ICO_OR

Stack[nSize-1] = Stack[nSize-1] || Stack[nSize] , POP stack[nSize]

ICO_NOT

Stack[nSize] = ! Stack[nSize]

(リスト)

演算

説明

ICO_LISTSTART

一時作業用メモリへ新しいリストを開始します。

ICO_LISTITEM

リスト項目を追加します。

ICO_LISTEND

リストを終了します。

ICO_LOADINDEXADDRESS

Stack[nSize-1] = Stack[nSize-1] VV [ Stack[nSize] ] , POP stack[nSize]

(関数)

演算

説明

ICO_LOADFUNC

関数を検索します。

ICO_CALL

関数を呼び出します。

ICO_RETURN

関数から返します。

ICO_RETNULL

関数から NULL を返します。

ICO_RETFROMEVAL

eval() の後に返します。

ICO_RETITEMREF

リスト項目の参照を返します - 値ではありません。

ICO_NEWFUNC

新しい関数を開始します。

ICO_BLOCKFLAG

後でジャンプ先を決定するためにフラグを立てます (ICO_RETURN の後で)。

ICO_FUNCEXE

関数の実行を開始します。

ICO_ENDFUNCEXE

関数の実行を終了します。

ICO_ANONYMOUS

無名関数

ICO_FREETEMPLISTS

一時作業領域の削除。リスト。

(ユーザインタフェース)

演算

説明

ICO_PRINT

値を標準出力へ表示します。

ICO_GIVE

キーボードからの標準入力

(プログラムの終了・ループ)

演算

説明

ICO_BYE

仮想計算機の実行を終了します。

ICO_EXITMARK

ループを終了する場所です。

ICO_POPEXITMARK

exit マークを削除します。

ICO_EXIT

一階層以上のループを打ち切ります。

ICO_LOOP

次のループを継続します。

(実行性能の改善)

演算

説明

ICO_PUSHP

スタックへポインタを退避します。

ICO_INCP

ポインタを使用して変数の値を増分します。

ICO_PUSHPV

変数ポインタを使用して変数の値を退避します。

ICO_INCJUMP

増分後にジャンプします。

ICO_INCPJUMP

ポインタを使用して増分した後にジャンプします。

ICO_JUMPVARLENUM

変数の値が <= 数値の値ならばジャンプします。

ICO_JUMPVARPLENUM

変数の値が (ポインタを使用) <= 数値の値ならばジャンプします。

ICO_LOADFUNCP

関数ポインタを退避します。

ICO_PUSHPLOCAL

ローカル変数のポインタを退避します。

ICO_INCLPJUMP

ローカル変数のポインタで値を増分した後にジャンプします。

ICO_JUMPVARLPLENUM

変数の値が (ポインタを使用) <= 数値の値ならばジャンプします。

ICO_INCPJUMPSTEP1

変数のポインタで値を増分した後にジャンプします (For ループ step = 1)。

ICO_JUMPVARPLENUMSTEP1

変数のポインタで値を増分した後にジャンプします (For ループ step = 1)。

(Try～Catch～Done)

演算

説明

ICO_TRY

try の範囲を開始します。

ICO_DONE

try の範囲を終了します。

(複製と範囲)

演算

説明

ICO_DUPLICATE

スタックの値を複製します。

ICO_RANGE

値からリストの値を作成します。

オブジェクト指向プログラミング(OOP)

演算

説明

ICO_NEWOBJ

新しいオブジェクトの作成してから、IR からクラス名を取得を行い、スタックへオブジェクトのポインタを退避します。

ICO_SETSCOPE

オブジェクトのスコープへ有効なスコープを設定してから新しいオブジェクトの作成後に呼び出します。

ICO_LOADSUBADDRESS

ポインタをスタックに退避してからオブジェクトの属性を取得します。

ICO_LOADMETHOD

オブジェクトのメソッドを検索します。

ICO_AFTERCALLMETHOD

メソッドの呼び出し後に使用されます - 通常時

ICO_AFTERCALLMETHOD2

メソッドの呼び出し後に使用されます - 次の場合

ICO_NEWCLASS

新しいクラスの範囲を開始します。

ICO_BRACESTART

括弧を開きます。

ICO_BRACEEND

括弧を閉じます。

ICO_IMPORT

パッケージのインポート

ICO_PRIVATE

プライベート属性の範囲を開始します。

ICO_SETPROPERTY

属性の値を設定します - Setter を確認します。

ICO_CALLCLASSINIT

init() クラスメソッドの呼び出し。

(その他)

演算

説明

ICO_SETREFERENCE

参照によりコピーします。

ICO_KILLREFERENCE

参照を削除します。

ICO_ASSIGNMENTPOINTER

左辺側の変数を決定します。

ICO_BEFOREEQUAL

+= , -= , ... などの演算子を決定します。

(ビット操作演算子)

演算

説明

ICO_BITAND

Stack[nSize-1] = Stack[nSize-1] & Stack[nSize] , POP stack[nSize]

ICO_BITOR

Stack[nSize-1] = Stack[nSize-1] | Stack[nSize] , POP stack[nSize]

ICO_BITXOR

Stack[nSize-1] = Stack[nSize-1] ^ Stack[nSize] , POP stack[nSize]

ICO_BITNOT

Stack[nSize] = ! Stack[nSize]

ICO_BITSHL

Stack[nSize-1] = Stack[nSize-1] << Stack[nSize] , POP stack[nSize]

ICO_BITSHR

Stack[nSize-1] = Stack[nSize-1] >> Stack[nSize] , POP stack[nSize]

(For Step)

演算

説明

ICO_STEPNUMBER

For ループにおけるステップ数を決定します。

ICO_POPSTEP

ステップスタックからステップ数を復帰 (POP) します。

ICO_LOADAFIRST

変数名に関連する最初のアドレスを読み込みます。

(カスタムグローバルスコープ)

演算

説明

ICO_NEWGLOBALSCOPE

新しいカスタムグローバルスコープの開始 - ‘load package’ 命令で使用されます。

ICO_ENDGLOBALSCOPE

カスタムグローバルスコープの終了 - ‘load package’ 命令で使用されます。

ICO_SETGLOBALSCOPE

現在のグローバルスコープを設定します。

関連情報

Ring の関連情報を掲載しております。

Ring のウェブサイト

Ring の最新情報はウェブサイトを参照してください。

http://ring-lang.net/

http://ring-lang-081.osdn.jp/ (日本語版非公式サイト)

ソースコード

Ring は自由なオープンソースです (MIT ライセンス)

ソースコード : https://github.com/ring-lang/ring/

作者の連絡先

Ring チーム

http://ring-lang.sourceforge.net/team.html

Ring チーム (日本)

http://ring-lang-081.osdn.jp/team.html

日本語版翻訳者 (isVowel)

Twitter: https://www.twitter.com/isvowel/

Jami : isvowel

索引

記号 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | あ | こ | そ | な | は | ほ | よ | ア | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | サ | シ | ス | セ | ソ | タ | チ | ツ | テ | ト | ネ | ハ | ヒ | フ | ヘ | マ | メ | モ | ユ | ラ | リ | ル | レ | ロ | 一 | 三 | 上 | 中 | 主 | 事 | 二 | 代 | 仮 | 低 | 作 | 使 | 例 | 入 | 全 | 共 | 円 | 再 | 分 | 列 | 制 | 動 | 十 | 参 | 反 | 収 | 取 | 命 | 品 | 型 | 基 | 変 | 多 | 大 | 字 | 定 | 実 | 宣 | 対 | 平 | 幾 | 式 | 当 | 性 | 戦 | 拡 | 括 | 指 | 接 | 描 | 改 | 数 | 整 | 文 | 新 | 日 | 明 | 時 | 暗 | 最 | 本 | 条 | 検 | 構 | 標 | 正 | 歴 | 沿 | 注 | 深 | 演 | 無 | 現 | 球 | 用 | 画 | 異 | 短 | 秀 | 移 | 立 | 第 | 等 | 算 | 簡 | 純 | 組 | 継 | 編 | 美 | 自 | 英 | 表 | 複 | 規 | 視 | 言 | 設 | 評 | 論 | 警 | 車 | 返 | 追 | 透 | 違 | 部 | 配 | 長 | 開 | 関 | 静 | 音 | 項 | 顧 | 高

記号

! 演算子を not として使うには

Ring 1.6 の変更履歴

&& および || 演算子の用法

Ring 1.6 の変更履歴

2D ゲームエンジン

Animate クラス

Flappy Bird 3000 ゲーム

Game クラス

GameObject クラス

Map クラス

Sound クラス

Sprite クラス

Stars Fighter ゲーム

Super Man 2016 ゲーム

Text クラス

はじめに

アニメーション

アニメーション - イベント

アニメーションと関数

オブジェクトと描画処理

キーボードによる自動移動

グラフィックスライブラリのバインディング

グラフィックスライブラリへのインタフェース

ゲームの階層

ゲームエンジンのクラス

ゲームエンジンの用法 - ゲームウィンドウの作成

スプライト - キー入力イベント

スプライト - ステートイベント

スプライト - マウスイベント

テキストの描画

テキストの移動

プロジェクトの階層

マップ

マップイベント

音声の再生

2Dテキスト

Qt3D によるグラフィックスプログラミング

3D 立方体とテクスチャ

RingOpenGL と RingAllegro の用法 (3D グラフィックス)

3Dカメラ

RingRayLib によるゲーム開発

3Dサンプルの追加

Ring 1.11 の変更履歴

3Dピッキング

RingRayLib によるゲーム開発

3D自由視点カメラ

RingRayLib によるゲーム開発

? 演算子で式の表示後に改行するには

Ring 1.6 の変更履歴

‘=’ 演算子を ‘is’ へ変更するには

自然言語プログラミング

‘from’キーワードの代わりに‘<’または‘:’演算子の使用

Ring 1.3 の変更履歴

‘see’と‘give’ の代わりに‘put’と‘get’を使うには

シンタックスの柔軟性

A

AbstractAxis クラス

RingQt クラスリファレンス

AbstractBarSeries クラス

RingQt クラスリファレンス

addattribute()

リフレクションとメタプログラミング

AddDays()

日付と時刻

addmethod()

リフレクションとメタプログラミング

Allegro ライブラリ用の設定ファイル

コード生成器

Analog Clock

時速でデキるアプリケーション開発

Android SDK の更新

モバイル用 RingQt アプリケーションのビルド方法

Android SDK の要件と更新のダウンロード

Android 用ゲームのビルド方法

Android 版 Ring の改善

Ring 1.6 の変更履歴

Android 用ゲームのビルド方法

Android SDK の要件と更新のダウンロード

はじめに

プロジェクトのビルド

プロジェクトのフォルダ

Android 開発についての注釈 (RingQt)

モバイル用 RingQt アプリケーションのビルド方法

Animate クラス

2D ゲームエンジン

Apache ウェブサーバーの設定

XAMPP Apache ウェブサーバーの用法

ウェブ開発 (CGI ライブラリ)

Application クラス

ウェブ開発 (CGI ライブラリ)

apppath()

Stdlib 関数

ASCII コード表アプリケーション

Ring 1.12 の変更履歴

Ascii() 関数

データ型

ASCIIList2Str() 関数

Stdlib 関数

Assert()

Eval() とデバッグ

Atom

テキストエディタの設定

attributes()

リフレクションとメタプログラミング

B

Better RingQt の改良

Ring 1.13 の変更履歴

bignumber

BigNumber クラス

BigNumber 関数

はじめに

ライブラリのソースコード

ライブラリの読み込み

用例

BigNumber クラス

bignumber

BigNumber ライブラリ

Ring 1.9 の変更履歴

BigNumber 関数

bignumber

binarydigits()

Stdlib 関数

BMI 計算機アプリケーション

Ring 1.12 の変更履歴

BraceError() メソッド

自然言語プログラミング

BraceExprEval メソッド

自然言語プログラミング

BraceStart と BraceEnd メソッド

自然言語プログラミング

C

C# や Java よりも Ring を使用する利点は？

よくある質問と回答

C++ クラスの接続に関するコード生成器の規則

コード生成器

C++ ライブラリ接続用設定ファイルの用法

コード生成器

C/C++ による拡張機能

開発への参戦について

C/C++ コンパイラとリンカの使用

Ring アプリケーションの配布方法 (手動)

C/C++ プログラムへ Ring を組み込むには

Ring のステート

Ring ステート変数

Ring ステート関数

はじめに

Calculator アプリケーション

Ring 1.5 の変更履歴

Call 命令の改良

Ring 1.2 の変更履歴

callgc()

低水準関数

capitalized()

Stdlib 関数

Cards ゲーム

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

Cards ゲームの改善

Ring 1.8 の変更履歴

cfunctions()

リフレクションとメタプログラミング

CGI への対応

コマンドラインオプション

changestring()

Stdlib 関数

Char() 関数

データ型

char(9) の代わりに Tab を使うには

Ring 1.6 の変更履歴

ChDir() 関数

システム関数

Checkers ゲーム

Ring 1.11 の変更履歴

Chess Endgame アプリケーション

Ring 1.15 の変更履歴

Chess ゲーム

Ring 1.10 の変更履歴

classes()

リフレクションとメタプログラミング

classname()

リフレクションとメタプログラミング

Clearerr()

ファイル

CLOC (Count Lines of Code) の追加

Ring 1.14 の変更履歴

clock()

日付と時刻

ClosPerSecond()

日付と時刻

CMake によるビルド方法

ソースコードからのビルド方法

Code Browser

テキストエディタの設定

CodeEditor クラス

RingQt クラスリファレンス

Combobox および QTableWidget のセルへ他の要素を追加するには？

よくある質問と回答

Conversion クラス

Stdlib クラス

Cookies (クッキー)

ウェブ開発 (CGI ライブラリ)

Copy()

文字列

CR をキャリッジリターンとして使うには

Ring 1.6 の変更履歴

CurrentDir() 関数

システム関数

D

Database, ModelBase と ControllerBase クラス

ウェブ開発 (CGI ライブラリ)

DataType クラス

Stdlib クラス

Date()

日付と時刻

DateTime クラス

Stdlib クラス

dayofweek()

Stdlib 関数

dBase/Harbour データベースへ接続できますか？

よくある質問と回答

Debug クラス

Stdlib クラス

Dec()

データ型

Decimals()

算術関数

Decrypt()

セキュリティとインターネット関数

DiffDays()

日付と時刻

Dir()

ファイル

Direxists()

ファイル

Do ～ Again ループ

制御構造 - 第一形式

Download()

セキュリティとインターネット関数

E

Emacs Editor 用の Ring モード

Ring 1.3 の変更履歴

Emacs エディタ

テキストエディタの設定

Employee アプリケーション

Ring 1.6 の変更履歴

Encrypt()

セキュリティとインターネット関数

endswith()

Stdlib 関数

EpochTime()

Stdlib 関数

日付と時刻

Escape ゲーム

Ring 1.13 の変更履歴

Eval()

Eval() とデバッグ

Eval() とデバッグ

Assert()

Eval()

Raise()

Try/Carch/Done

はじめに

evenorodd()

Stdlib 関数

ExeFileName() 関数

システム関数

ExeFolder() 関数

システム関数

Exit 命令

制御構造 - 第一形式

F

Facebook へのログイン

RingLibCurl

factorial()

Stdlib 関数

factors()

Stdlib 関数

Fclose()

ファイル

Fedora Linux でのビルド方法

ソースコードからのビルド方法

Feof()

ファイル

Ferror()

ファイル

FetchStockData アプリケーション

時速でデキるアプリケーション開発

Fexists()

ファイル

Fflush()

ファイル

Fgetc()

ファイル

Fgetpos()

ファイル

Fgets()

ファイル

fibonacci()

Stdlib 関数

Fifteen Puzzle ゲーム 2

時速でデキるアプリケーション開発

File クラス

Stdlib クラス

file2list()

Stdlib 関数

filter()

Stdlib 関数

Find in files アプリケーション

Ring 1.8 の変更履歴

Find() とオブジェクトのリスト

オブジェクト指向プログラミング (OOP)

Flappy Bird 3000 ゲーム

2D ゲームエンジン

Fopen()

ファイル

Fopen() および Fclose() の実装

拡張機能

For in でのリスト変更方法

制御構造 - 第一形式

For In ループ

制御構造 - 第三形式

For in ループ

制御構造 - 第一形式

制御構造 - 第二形式

For ループ

制御構造 - 第一形式

制御構造 - 第三形式

制御構造 - 第二形式

For ループでローカルスコープを使用

Ring 1.8 の変更履歴

スコープ規則

FoxRing ライブラリ

Ring 1.8 の変更履歴

FoxRing 関数

FoxRing 関数リファレンス

FoxRing 関数リファレンス

FoxRing 関数

frAbs() 関数

frAddBs() 関数

frALines() 関数

frAllTrim() 関数

frAsc() 関数

frAt() 関数

frAtC() 関数

frBetween() 関数

frChr() 関数

frEmpty() 関数

frFile() 関数

frFileToStr() 関数

frForceExt() 関数

frForcePath() 関数

frIIf() 関数

frInList() 関数

frInt() 関数

frJustDrive() 関数

frJustExt() 関数

frJustFName() 関数

frJustPath() 関数

frJustStem() 関数

frLen() 関数

frListToString() 関数

frLTrim() 関数

frPadL() 関数

frPadR() 関数

frProper() 関数

frReplicate() 関数

frRTrim() 関数

frSetIfEmpty() 関数

frSetSeparatorTo() 関数

frSpace() 関数

frStr() 関数

frStringToList() 関数

frStrTran() 関数

frStuff() 関数

frSubStr() 関数

frTransform() 関数

frVal() 関数

frVarType() 関数

はじめに

用例

Fputc()

ファイル

Fputs()

ファイル

frAbs() 関数

FoxRing 関数リファレンス

frAddBs() 関数

FoxRing 関数リファレンス

frALines() 関数

FoxRing 関数リファレンス

frAllTrim() 関数

FoxRing 関数リファレンス

frAsc() 関数

FoxRing 関数リファレンス

frAt() 関数

FoxRing 関数リファレンス

frAtC() 関数

FoxRing 関数リファレンス

frBetween() 関数

FoxRing 関数リファレンス

frChr() 関数

FoxRing 関数リファレンス

Fread()

ファイル

frEmpty() 関数

FoxRing 関数リファレンス

Freopen()

ファイル

frFile() 関数

FoxRing 関数リファレンス

frFileToStr() 関数

FoxRing 関数リファレンス

frForceExt() 関数

FoxRing 関数リファレンス

frForcePath() 関数

FoxRing 関数リファレンス

frIIf() 関数

FoxRing 関数リファレンス

frInList() 関数

FoxRing 関数リファレンス

frInt() 関数

FoxRing 関数リファレンス

frJustDrive() 関数

FoxRing 関数リファレンス

frJustExt() 関数

FoxRing 関数リファレンス

frJustFName() 関数

FoxRing 関数リファレンス

frJustPath() 関数

FoxRing 関数リファレンス

frJustStem() 関数

FoxRing 関数リファレンス

frLen() 関数

FoxRing 関数リファレンス

frListToString() 関数

FoxRing 関数リファレンス

frLTrim() 関数

FoxRing 関数リファレンス

frPadL() 関数

FoxRing 関数リファレンス

frPadR() 関数

FoxRing 関数リファレンス

frProper() 関数

FoxRing 関数リファレンス

frReplicate() 関数

FoxRing 関数リファレンス

frRTrim() 関数

FoxRing 関数リファレンス

frSetIfEmpty() 関数

FoxRing 関数リファレンス

frSetSeparatorTo() 関数

FoxRing 関数リファレンス

frSpace() 関数

FoxRing 関数リファレンス

frStr() 関数

FoxRing 関数リファレンス

frStringToList() 関数

FoxRing 関数リファレンス

frStrTran() 関数

FoxRing 関数リファレンス

frStuff() 関数

FoxRing 関数リファレンス

frSubStr() 関数

FoxRing 関数リファレンス

frTransform() 関数

FoxRing 関数リファレンス

frVal() 関数

FoxRing 関数リファレンス

frVarType() 関数

FoxRing 関数リファレンス

Fseek()

ファイル

Fsetpos()

ファイル

FSize()

Stdlib 関数

Ftell()

ファイル

ftell() と fseek() でファイルの大きさを取得するには？

よくある質問と回答

functions()

リフレクションとメタプログラミング

Fwrite()

ファイル

G

Game of Life ゲーム

Ring 1.10 の変更履歴

Game クラス

2D ゲームエンジン

GameObject クラス

2D ゲームエンジン

gcd()

Stdlib 関数

Geany

テキストエディタの設定

Get リクエスト

RingLibCurl

GetArch() 関数

システム関数

getattribute()

リフレクションとメタプログラミング

GetChar() 関数

標準入力の取得

getnumber()

Stdlib 関数

Getpathtype()

ファイル

getpointer()

低水準関数

getstring()

Stdlib 関数

Getter と Setter メソッドでのアクセスにより属性を使えますか？

よくある質問と回答

Give 命令

標準入力の取得

globals()

リフレクションとメタプログラミング

Go ゲーム

Ring 1.12 の変更履歴

Gold Magic 800 ゲーム

あそびかた

はじめに

ゲームストーリー

スクリーンショット

ソースコード

上達のコツ

Google API Shortener アプリケーション

時速でデキるアプリケーション開発

GUI アプリケーションでボタンの配列を作成するには？

よくある質問と回答

GUI アプリケーションによるライブラリの用法

RingQt アプリケーション用のオブジェクトライブラリ

GUI アプリケーションのウィンドウごとにクラスを作成するには

スコープ規則

GUI クラスからの継承

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

H

HashTable クラス

Stdlib クラス

Hassouna Course のサンプル集

Ring 1.13 の変更履歴

Hello World

libui

チュートリアル: C/C++ による拡張機能の開発方法

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

Hello World プログラム

クラウド経由でのウェブアプリケーションの配布方法

Hex() 関数

データ型

Hex2str() 関数

データ型

HTML のテーブル

ウェブ開発 (CGI ライブラリ)

HTML のリスト

ウェブ開発 (CGI ライブラリ)

HTML の特殊文字

ウェブ開発 (CGI ライブラリ)

HtmlPage クラス

ウェブ開発 (CGI ライブラリ), [1]

HTTP Get の用例

ウェブ開発 (CGI ライブラリ)

HTTP POST の用例

ウェブ開発 (CGI ライブラリ)

I

If ステートメント

制御構造 - 第三形式

制御構造 - 第二形式

If ステートメントで‘but’の代わりに‘elseif’キーワードを使うには

シンタックスの柔軟性

Input() 関数

標準入力の取得

Internet クラス

Stdlib クラス

IsAlNum() 関数

データ型

IsAlpha() 関数

データ型

IsAndroid() 関数

システム関数

isattribute()

リフレクションとメタプログラミング

IsBetween() 関数

Stdlib 関数

iscfunction()

リフレクションとメタプログラミング

isclass()

リフレクションとメタプログラミング

IsCntrl() 関数

データ型

IsDigit() 関数

データ型

IsFreeBSD() 関数

システム関数

isfunction()

リフレクションとメタプログラミング

isglobal()

リフレクションとメタプログラミング

IsGraph() 関数

データ型

isleapyear()

Stdlib 関数

IsLinux() 関数

システム関数

IsList() 関数

データ型

IsListContainsItems() 関数

Stdlib 関数

islocal()

リフレクションとメタプログラミング

IsLower() 関数

データ型

IsMacOSX() 関数

システム関数

ismainsourcefile()

Stdlib 関数

ismethod()

リフレクションとメタプログラミング

IsMSDOS() 関数

システム関数

isNULL() 関数

データ型

IsNumber() 関数

データ型

isobject()

リフレクションとメタプログラミング

ispackage()

リフレクションとメタプログラミング

ispackagesclass()

リフレクションとメタプログラミング

ispalindrome()

Stdlib 関数

ispointer()

低水準関数

isprime()

Stdlib 関数

IsPrint() 関数

データ型

isprivateattribute()

リフレクションとメタプログラミング

isprivatemethod()

リフレクションとメタプログラミング

IsPunct() 関数

データ型

IsSpace() 関数

データ型

isspecial()

Stdlib 関数

IsString() 関数

データ型

IsUnix() 関数

システム関数

IsUpper() 関数

データ型

isvowel()

Stdlib 関数

IsWindows() 関数

システム関数

IsWindows64() 関数

システム関数

IsXdigit() 関数

データ型

J

JustFileName()

Stdlib 関数

JustFilePath()

Stdlib 関数

K

Knight Tour ゲーム

Ring 1.10 の変更履歴

L

Laser ゲーム

Ring 1.13 の変更履歴

lcm()

Stdlib 関数

Left()

文字列

len() と For ループの使用

性能改善に関する情報

LibSDL と Tilengine の併用

tilengine

libui

Hello World

あいさつをする

なにか言ってみる

はじめに

グラデーションの描画

コントロールの見本帳

サンプル集の描画

テキストの描画

ヒストグラム

メニューバーの用法

追加サンプル集の描画

linecount()

Stdlib 関数

Lines()

文字列

Lisp や Smalltalk よりも Ring を選ぶ利点は？

よくある質問と回答

List クラス

Stdlib クラス

List2Code() 関数

Stdlib 関数

list2file()

Stdlib 関数

ListAllFiles() 関数

Stdlib 関数

Load Again

プログラムの構造

Load Again コマンド

Ring 1.12 の変更履歴

Load Package

プログラムの構造

locals()

リフレクションとメタプログラミング

Loop 命令

制御構造 - 第一形式

Loop|Exit 命令の改善

Ring 1.3 の変更履歴

M

macOS でのビルド方法

ソースコードからのビルド方法

Magic Balls ゲーム

Ring 1.13 の変更履歴

Main 関数

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

makedir()

Stdlib 関数

Manjaro Linux でのコンパイル

Ring 1.8 の変更履歴

Map クラス

2D ゲームエンジン

map()

Stdlib 関数

Matching ゲーム

Ring 1.13 の変更履歴

Math クラス

Stdlib クラス

matrixmulti()

Stdlib 関数

matrixtrans()

Stdlib 関数

Maze ゲーム

Ring 1.11 の変更履歴

MD5()

セキュリティとインターネット関数

memcpy()

低水準関数

mergemethods()

リフレクションとメタプログラミング

methods()

リフレクションとメタプログラミング

Microsoft Windows でのビルド方法

ソースコードからのビルド方法

Microsoft Windows 用のアプリケーションの配布

Ring アプリケーションの配布方法 (手動)

Minesweeper ゲーム

Ring 1.10 の変更履歴

MoneyBoxes ゲーム

Ring 1.13 の変更履歴

MurmurHash1 関数

RingMurmurHash 関数リファレンス

MurmurHash2 関数

RingMurmurHash 関数リファレンス

MurmurHash3 関数

RingMurmurHash 関数リファレンス

MVC 版 CRUD の用例

ウェブ開発 (CGI ライブラリ)

MyCoffee (Web ウェブアプリケーション)

Ring 1.14 の変更履歴

MySQL クラス

Stdlib クラス

MySQL 関数

MySQL_AutoCommit()

MySQL_Close()

MySQL_Columns()

MySQL_Commit()

MySQL_Connect()

MySQL_Error()

MySQL_Escape_String()

MySQL_Info()

MySQL_Init()

MySQL_Inser_ID()

MySQL_Next_Result()

MySQL_Query()

MySQL_Result()

MySQL_Result2()

MySQL_Rollback()

はじめに

クエリの結果を表示するには

データベースからイメージを復元するには

データベースのイメージを保存するには

データベースの作成

テーブルの作成とデータの挿入

トランザクションの用例

MySQL_AutoCommit()

MySQL 関数

MySQL_Close()

MySQL 関数

MySQL_Columns()

MySQL 関数

MySQL_Columns() 関数の実装

拡張機能

MySQL_Commit()

MySQL 関数

MySQL_Connect()

MySQL 関数

MySQL_Error()

MySQL 関数

MySQL_Escape_String()

MySQL 関数

MySQL_Info()

MySQL 関数

MySQL_Init()

MySQL 関数

MySQL_Inser_ID()

MySQL 関数

MySQL_Next_Result()

MySQL 関数

MySQL_Query()

MySQL 関数

MySQL_Result()

MySQL 関数

MySQL_Result2()

MySQL 関数

MySQL_Rollback()

MySQL 関数

N

Natural コードで Eval() を使うには

自然言語プログラミング

NofProcessors() 関数

システム関数

Notepad アプリケーション

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

Notepad++

テキストエディタの設定

NULL と isNULL() 関数の用法は？

よくある質問と回答

nullpointer()

低水準関数

NULLPointer() の代わりに NULL を使用

Ring 1.2 の変更履歴

Number() 関数

データ型

O

object2pointer()

低水準関数

objectid()

リフレクションとメタプログラミング

ODBC から SQLite を使うには？

よくある質問と回答

ODBC クラス

Stdlib クラス

ODBC データソースのリストを表示

ODBC 関数

ODBC ドライバのリストを表示

ODBC 関数

ODBC 関数

ODBC データソースのリストを表示

ODBC ドライバのリストを表示

odbc_autocommit() 関数

odbc_close() 関数

odbc_colcount() 関数

odbc_columns() 関数

odbc_commit() 関数

odbc_connect() 関数

odbc_datasources() 関数

odbc_disconnect() 関数

odbc_drivers() 関数

odbc_execute() 関数

odbc_fetch() 関数

odbc_getdata() 関数

odbc_init() 関数

odbc_rollback() 関数

odbc_tables() 関数

はじめに

イメージの保存と復元

クエリの実行と結果の表示

トランザクションおよびコミットとロールバックの用法

接続の開始と終了

odbc_autocommit() 関数

ODBC 関数

odbc_close() 関数

ODBC 関数

odbc_colcount() 関数

ODBC 関数

odbc_columns() 関数

ODBC 関数

odbc_commit() 関数

ODBC 関数

odbc_connect() 関数

ODBC 関数

odbc_datasources() 関数

ODBC 関数

odbc_disconnect() 関数

ODBC 関数

odbc_drivers() 関数

ODBC 関数

odbc_execute() 関数

ODBC 関数

odbc_fetch() 関数

ODBC 関数

odbc_getdata() 関数

ODBC 関数

odbc_init() 関数

ODBC 関数

odbc_rollback() 関数

ODBC 関数

odbc_tables() 関数

ODBC 関数

openWindowAndLink() 関数

RingQt アプリケーション用のオブジェクトライブラリ

openWindowInPackages() 関数

RingQt アプリケーション用のオブジェクトライブラリ

OSCopyFile() 関数

Stdlib 関数

OSCopyFolder() 関数

Stdlib 関数

OSCreateOpenFolder() 関数

Stdlib 関数

OSDeleteFile() 関数

Stdlib 関数

OSDeleteFolder() 関数

Stdlib 関数

OSRenameFile() 関数

Stdlib 関数

P

Package/Class/Function で括弧 { } を使うには

シンタックスの柔軟性

Package/Class/Function キーワードの後で‘endpackage’/’endclass’/’endfunc’を使うには

シンタックスの柔軟性

Package/Class/Function キーワードの後で‘end’を使うには

シンタックスの柔軟性

packagename()

リフレクションとメタプログラミング

packages()

リフレクションとメタプログラミング

packagesclasses()

リフレクションとメタプログラミング

Page クラス

ウェブ開発 (CGI ライブラリ)

Pairs ゲーム

Ring 1.13 の変更履歴

Perl, PHP, Python や Ruby よりも Ring を使用する利点は？

よくある質問と回答

permutation()

Stdlib 関数

Perror()

ファイル

PNG 画像の表示

RingLibSDL

pointer2object()

低水準関数

pointer2string()

低水準関数

Pong ゲーム

Ring 1.10 の変更履歴

Post リクエスト

RingLibCurl

PostgreSQL

RingPostgreSQL 定数

RingPostgreSQL 関数

はじめに

ライブラリの読み込み

用例

PostgreSQL クラス

Stdlib クラス

PrevFileName() 関数

システム関数

print()

Stdlib 関数

Print2Str() 関数

Stdlib 関数

prodlist()

Stdlib 関数

ptrcmp()

低水準関数

puts()

Stdlib 関数

Q

QAbstractAspect クラス

RingQt クラスリファレンス

QAbstractButton クラス

RingQt クラスリファレンス

QAbstractCameraController クラス

RingQt クラスリファレンス

QAbstractItemView クラス

RingQt クラスリファレンス

QAbstractPrintDialog クラス

RingQt クラスリファレンス

QAbstractScrollArea クラス

RingQt クラスリファレンス

QAbstractSeries クラス

RingQt クラスリファレンス

QAbstractSlider クラス

RingQt クラスリファレンス

QAbstractSocket クラス

RingQt クラスリファレンス

QAbstractSpinBox クラス

RingQt クラスリファレンス

QAction クラス

RingQt クラスリファレンス

QAllEvents クラス

RingQt クラスリファレンス

QApp クラス

RingQt クラスリファレンス

QApp クラス名の末尾に () を付けない理由は？

よくある質問と回答

QAreaLegendMarker クラス

RingQt クラスリファレンス

QAreaSeries クラス

RingQt クラスリファレンス

QAspectEngine クラス

RingQt クラスリファレンス

QAxBase クラス

RingQt クラスリファレンス

QAxObject クラス

RingQt クラスリファレンス

QAxWidget クラス

RingQt クラスリファレンス

QAxWidget2 クラス

RingQt クラスリファレンス

QBarCategoryAxis クラス

RingQt クラスリファレンス

QBarLegendMarker クラス

RingQt クラスリファレンス

QBarSeries クラス

RingQt クラスリファレンス

QBarSet クラス

RingQt クラスリファレンス

QBitmap クラス

RingQt クラスリファレンス

QBluetoothAddress クラス

RingQt クラスリファレンス

QBluetoothDeviceDiscoveryAgent クラス

RingQt クラスリファレンス

QBluetoothDeviceInfo クラス

RingQt クラスリファレンス

QBluetoothHostInfo クラス

RingQt クラスリファレンス

QBluetoothLocalDevice クラス

RingQt クラスリファレンス

QBluetoothServer クラス

RingQt クラスリファレンス

QBluetoothServiceDiscoveryAgent クラス

RingQt クラスリファレンス

QBluetoothServiceInfo クラス

RingQt クラスリファレンス

QBluetoothSocket クラス

RingQt クラスリファレンス

QBluetoothTransferManager クラス

RingQt クラスリファレンス

QBluetoothTransferReply クラス

RingQt クラスリファレンス

QBluetoothTransferRequest クラス

RingQt クラスリファレンス

QBluetoothUuid クラス

RingQt クラスリファレンス

QBoxLayout クラス

RingQt クラスリファレンス

QBoxPlotLegendMarker クラス

RingQt クラスリファレンス

QBoxPlotSeries クラス

RingQt クラスリファレンス

QBoxSet クラス

RingQt クラスリファレンス

QBrush クラス

RingQt クラスリファレンス

QBuffer クラス

RingQt クラスリファレンス

QButtonGroup クラス

RingQt クラスリファレンス

QByteArray クラス

RingQt クラスリファレンス

QCalendarWidget クラス

RingQt クラスリファレンス

QCamera クラス

RingQt クラスリファレンス

QCameraImageCapture クラス

RingQt クラスリファレンス

QCameraLens クラス

RingQt クラスリファレンス

QCameraSelector クラス

RingQt クラスリファレンス

QCameraViewfinder クラス

RingQt クラスリファレンス

QCandlestickLegendMarker クラス

RingQt クラスリファレンス

QCandlestickModelMapper クラス

RingQt クラスリファレンス

QCandlestickSeries クラス

RingQt クラスリファレンス

QCandlestickSet クラス

RingQt クラスリファレンス

QCategoryAxis クラス

RingQt クラスリファレンス

QChar クラス

RingQt クラスリファレンス

QChart クラス

RingQt クラスリファレンス

QChartView クラス

RingQt クラスリファレンス

QCheckBox の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QCheckBox クラス

RingQt クラスリファレンス

QChildEvent クラス

RingQt クラスリファレンス

QClipboard クラス

RingQt クラスリファレンス

QColor クラス

RingQt クラスリファレンス

QColorDialog クラス

RingQt クラスリファレンス

QColorDialog クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QComboBox クラス

RingQt クラスリファレンス

QComboBox クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QCompleter クラス

RingQt クラスリファレンス

QCompleter2 クラス

RingQt クラスリファレンス

QCompleter3 クラス

RingQt クラスリファレンス

QConeGeometry クラス

RingQt クラスリファレンス

QConeMesh クラス

RingQt クラスリファレンス

QCoreApplication クラス

RingQt クラスリファレンス

QCuboidMesh クラス

RingQt クラスリファレンス

QCullFace クラス

RingQt クラスリファレンス

QCursor クラス

RingQt クラスリファレンス

QCylinderMesh クラス

RingQt クラスリファレンス

QDate クラス

RingQt クラスリファレンス

QDateEdit の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QDateEdit クラス

RingQt クラスリファレンス

QDateTime クラス

RingQt クラスリファレンス

QDateTimeAxis クラス

RingQt クラスリファレンス

QDateTimeEdit クラス

RingQt クラスリファレンス

QDepthTest クラス

RingQt クラスリファレンス

QDesktopServices クラス

RingQt クラスリファレンス

QDesktopWidget クラス

RingQt クラスリファレンス

QDesktopWidget クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QDial の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QDial クラス

RingQt クラスリファレンス

QDialog クラス

RingQt クラスリファレンス

QDiffuseSpecularMaterial クラス

RingQt クラスリファレンス

QDir クラス

RingQt クラスリファレンス

QDirModel クラス

RingQt クラスリファレンス

QDockWidget の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QDockWidget クラス

RingQt クラスリファレンス

QDrag クラス

RingQt クラスリファレンス

QDragEnterEvent クラス

RingQt クラスリファレンス

QDragLeaveEvent クラス

RingQt クラスリファレンス

QDragMoveEvent クラス

RingQt クラスリファレンス

QDropEvent クラス

RingQt クラスリファレンス

QEffect クラス

RingQt クラスリファレンス

QEntity クラス

RingQt クラスリファレンス

QEvent クラス

RingQt クラスリファレンス

QExtrudedTextMesh クラス

RingQt クラスリファレンス

QFile クラス

RingQt クラスリファレンス

QFile2 クラス

RingQt クラスリファレンス

QFileDevice クラス

RingQt クラスリファレンス

QFileDialog クラス

RingQt クラスリファレンス

QFileDialog クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QFileInfo クラス

RingQt クラスリファレンス

QFileSystemModel クラス

RingQt クラスリファレンス

QFirstPersonCameraController クラス

RingQt クラスリファレンス

QFont クラス

RingQt クラスリファレンス

QFontDialog クラス

RingQt クラスリファレンス

QFontMetrics クラス

RingQt クラスリファレンス

QForwardRenderer クラス

RingQt クラスリファレンス

QFrame の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QFrame クラス

RingQt クラスリファレンス

QFrame2 クラス

RingQt クラスリファレンス

QFrame3 クラス

RingQt クラスリファレンス

QFrameAction クラス

RingQt クラスリファレンス

QGeoAddress クラス

RingQt クラスリファレンス

QGeoAreaMonitorInfo クラス

RingQt クラスリファレンス

QGeoAreaMonitorSource クラス

RingQt クラスリファレンス

QGeoCircle クラス

RingQt クラスリファレンス

QGeoCoordinate クラス

RingQt クラスリファレンス

QGeoPositionInfo クラス

RingQt クラスリファレンス

QGeoPositionInfoSource クラス

RingQt クラスリファレンス

QGeoRectangle クラス

RingQt クラスリファレンス

QGeoSatelliteInfo クラス

RingQt クラスリファレンス

QGeoSatelliteInfoSource クラス

RingQt クラスリファレンス

QGeoShape クラス

RingQt クラスリファレンス

QGoochMaterial クラス

RingQt クラスリファレンス

QGradient クラス

RingQt クラスリファレンス

QGraphicsScene クラス

RingQt クラスリファレンス

QGraphicsVideoItem クラス

RingQt クラスリファレンス

QGraphicsView クラス

RingQt クラスリファレンス

QGridLayout クラス

RingQt クラスリファレンス

QGuiApplication クラス

RingQt クラスリファレンス

QHBarModelMapper クラス

RingQt クラスリファレンス

QHBoxLayout クラス

RingQt クラスリファレンス

QHBoxPlotModelMapper クラス

RingQt クラスリファレンス

QHCandlestickModelMapper クラス

RingQt クラスリファレンス

QHeaderView クラス

RingQt クラスリファレンス

QHorizontalBarSeries クラス

RingQt クラスリファレンス

QHorizontalPercentBarSeries クラス

RingQt クラスリファレンス

QHorizontalStackedBarSeries クラス

RingQt クラスリファレンス

QHostAddress クラス

RingQt クラスリファレンス

QHostInfo クラス

RingQt クラスリファレンス

QHPieModelMapper クラス

RingQt クラスリファレンス

QHXYModelMapper クラス

RingQt クラスリファレンス

QIcon クラス

RingQt クラスリファレンス

QImage クラス

RingQt クラスリファレンス

QInputAspect クラス

RingQt クラスリファレンス

QInputDialog クラス

RingQt クラスリファレンス

QInputDialog クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QIODevice クラス

RingQt クラスリファレンス

QJsonArray クラス

RingQt クラスリファレンス

QJsonDocument クラス

RingQt クラスリファレンス

QJsonObject クラス

RingQt クラスリファレンス

QJsonParseError クラス

RingQt クラスリファレンス

QJsonValue クラス

RingQt クラスリファレンス

QKeySequence クラス

RingQt クラスリファレンス

QLabel による寸法変更画像の表示方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QLabel による画像の表示方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QLabel へハイパーリンクを追加するには

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QLabel クラス

RingQt クラスリファレンス

QLayout クラス

RingQt クラスリファレンス

QLCDNumber クラス

RingQt クラスリファレンス

qLCDNumber クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QLegend クラス

RingQt クラスリファレンス

QLegendMarker クラス

RingQt クラスリファレンス

QLinearGradient クラス

RingQt クラスリファレンス

QLineEdit イベントと QMessageBox

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QLineEdit クラス

RingQt クラスリファレンス

QLineSeries クラス

RingQt クラスリファレンス

QListView クラス

RingQt クラスリファレンス

QListWidget クラス

RingQt クラスリファレンス

QListWidget クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QListWidgetItem クラス

RingQt クラスリファレンス

QLocale クラス

RingQt クラスリファレンス

QLogicAspect クラス

RingQt クラスリファレンス

QLogValueAxis クラス

RingQt クラスリファレンス

QMainWindow クラス

RingQt クラスリファレンス

QMaterial クラス

RingQt クラスリファレンス

QMatrix4x4 クラス

RingQt クラスリファレンス

QMdiArea クラス

RingQt クラスリファレンス

QMdiSubWindow クラス

RingQt クラスリファレンス

QMediaObject クラス

RingQt クラスリファレンス

QMediaPlayer クラス

RingQt クラスリファレンス

QMediaPlaylist クラス

RingQt クラスリファレンス

QMenu クラス

RingQt クラスリファレンス

QMenuBar クラス

RingQt クラスリファレンス

QMesh クラス

RingQt クラスリファレンス

QMessagebox の用例

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QMessageBox クラス

RingQt クラスリファレンス

QMetalRoughMaterial クラス

RingQt クラスリファレンス

QMimeData クラス

RingQt クラスリファレンス

QMorphPhongMaterial クラス

RingQt クラスリファレンス

QMovie クラス

RingQt クラスリファレンス

QMutex クラス

RingQt クラスリファレンス

QMutexLocker クラス

RingQt クラスリファレンス

QNetworkAccessManager クラス

RingQt クラスリファレンス

QNetworkProxy クラス

RingQt クラスリファレンス

QNetworkReply クラス

RingQt クラスリファレンス

QNetworkRequest クラス

RingQt クラスリファレンス

QNmeaPositionInfoSource クラス

RingQt クラスリファレンス

QNode クラス

RingQt クラスリファレンス

QObject クラス

RingQt クラスリファレンス

QObjectPicker クラス

RingQt クラスリファレンス

QOpenGLBuffer クラス

RingQt クラスリファレンス

QOpenGLContext クラス

RingQt クラスリファレンス

QOpenGLDebugLogger クラス

RingQt クラスリファレンス

QOpenGLFramebufferObject クラス

RingQt クラスリファレンス

QOpenGLFunctions クラス

RingQt クラスリファレンス

QOpenGLFunctions_3_2_Core クラス

RingQt クラスリファレンス

QOpenGLPaintDevice クラス

RingQt クラスリファレンス

QOpenGLShader クラス

RingQt クラスリファレンス

QOpenGLShaderProgram クラス

RingQt クラスリファレンス

QOpenGLTexture クラス

RingQt クラスリファレンス

QOpenGLTimerQuery クラス

RingQt クラスリファレンス

QOpenGLVersionProfile クラス

RingQt クラスリファレンス

QOpenGLVertexArrayObject クラス

RingQt クラスリファレンス

QOpenGLWidget クラス

RingQt クラスリファレンス

QOrbitCameraController クラス

RingQt クラスリファレンス

QPageSetupDialog クラス

RingQt クラスリファレンス

QPaintDevice クラス

RingQt クラスリファレンス

QPainter による描画方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QPainter クラス

RingQt クラスリファレンス

QPainter2 クラス

RingQt クラスリファレンス

QPainterPath クラス

RingQt クラスリファレンス

QPen クラス

RingQt クラスリファレンス

QPercentBarSeries クラス

RingQt クラスリファレンス

QPerVertexColorMaterial クラス

RingQt クラスリファレンス

QPhongMaterial クラス

RingQt クラスリファレンス

QPicture クラス

RingQt クラスリファレンス

QPieLegendMarker クラス

RingQt クラスリファレンス

QPieSeries クラス

RingQt クラスリファレンス

QPieSlice クラス

RingQt クラスリファレンス

QPixmap クラス

RingQt クラスリファレンス

QPixmap2 クラス

RingQt クラスリファレンス

QPlainTextEdit クラス

RingQt クラスリファレンス

QPlaneMesh クラス

RingQt クラスリファレンス

QPoint クラス

RingQt クラスリファレンス

QPointF クラス

RingQt クラスリファレンス

QPointLight クラス

RingQt クラスリファレンス

QPolarChart クラス

RingQt クラスリファレンス

QPrintDialog クラス

RingQt クラスリファレンス

QPrinter による印刷方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QPrinter クラス

RingQt クラスリファレンス

QPrinterInfo クラス

RingQt クラスリファレンス

QPrintPreviewDialog の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QPrintPreviewDialog クラス

RingQt クラスリファレンス

QPrintPreviewWidget クラス

RingQt クラスリファレンス

QProcess クラス

RingQt クラスリファレンス

QProgressBar およびタイマーの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QProgressBar の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QProgressBar クラス

RingQt クラスリファレンス

QPushButton クラス

RingQt クラスリファレンス

QQmlEngine クラス

RingQt クラスリファレンス

QQmlError クラス

RingQt クラスリファレンス

QQuaternion クラス

RingQt クラスリファレンス

QQuickView クラス

RingQt クラスリファレンス

QQuickWidget クラス

RingQt クラスリファレンス

QRadioButton と QButtonGroup の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QRadioButton クラス

RingQt クラスリファレンス

QRect クラス

RingQt クラスリファレンス

QRegion クラス

RingQt クラスリファレンス

QRegularExpression クラス

RingQt クラスリファレンス

QRegularExpressionMatch クラス

RingQt クラスリファレンス

QRegularExpressionMatchIterator クラス

RingQt クラスリファレンス

QRenderAspect クラス

RingQt クラスリファレンス

QRenderPass クラス

RingQt クラスリファレンス

QScatterSeries クラス

RingQt クラスリファレンス

QSceneLoader クラス

RingQt クラスリファレンス

QScreen クラス

RingQt クラスリファレンス

QScrollArea クラス

RingQt クラスリファレンス

QScrollBar クラス

RingQt クラスリファレンス

QSerialPort クラス

RingQt クラスリファレンス

QSerialPortInfo クラス

RingQt クラスリファレンス

QSize クラス

RingQt クラスリファレンス

QSkyboxEntity クラス

RingQt クラスリファレンス

QSlider の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QSlider クラス

RingQt クラスリファレンス

QSphereMesh クラス

RingQt クラスリファレンス

QSpinBox の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QSpinBox クラス

RingQt クラスリファレンス

QSplashScreen クラス

RingQt クラスリファレンス

QSplineSeries クラス

RingQt クラスリファレンス

QSplitter クラス

RingQt クラスリファレンス

QSqlDatabase クラス

RingQt クラスリファレンス

QSqlDriver クラス

RingQt クラスリファレンス

QSqlDriverCreatorBase クラス

RingQt クラスリファレンス

QSqlError クラス

RingQt クラスリファレンス

QSqlField クラス

RingQt クラスリファレンス

QSqlIndex クラス

RingQt クラスリファレンス

QSqlQuery クラス

RingQt クラスリファレンス

QSqlRecord クラス

RingQt クラスリファレンス

QStackedBarSeries クラス

RingQt クラスリファレンス

QStackedWidget クラス

RingQt クラスリファレンス

QStandardPaths クラス

RingQt クラスリファレンス

QStatusBar クラス

RingQt クラスリファレンス

QString2 クラス

RingQt クラスリファレンス

QStringList クラス

RingQt クラスリファレンス

QStringRef クラス

RingQt クラスリファレンス

QSurfaceFormat クラス

RingQt クラスリファレンス

QSystemTrayIcon クラス

RingQt クラスリファレンス

Qt for Android のインストール

モバイル用 RingQt アプリケーションのビルド方法

Qt と RingQt の違い

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

Qt クラスコンバーター

Ring 1.4 の変更履歴

Qt フレームワーク用の設定ファイル

コード生成器

Qt リソースファイルの作成方法 (Folder2qrc)

Ring2EXE による Ring アプリケーションの配布方法

Qt3D によるグラフィックスプログラミング

2Dテキスト

オブジェクト・ピッカー

カメラ

キー入力

シーン

テキストの押し出し

テクスチャ

トーラスの描画

フレームアクション

モデル

モデルテクスチャ

事務所の描画

円柱の描画

円錐の描画

平面の描画

球体の描画

立方体の描画

複数オブジェクト

Qt3DCamera クラス

RingQt クラスリファレンス

Qt3DWindow クラス

RingQt クラスリファレンス

QTabBar クラス

RingQt クラスリファレンス

QTableView クラス

RingQt クラスリファレンス

QTableWidget で選択されたセルの内容に処理を行うには？

よくある質問と回答

QTableWidget の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QTableWidget クラス

RingQt クラスリファレンス

QTableWidgetItem クラス

RingQt クラスリファレンス

QTabWidget の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QTabWidget クラス

RingQt クラスリファレンス

QTcpServer クラス

RingQt クラスリファレンス

QTcpSocket クラス

RingQt クラスリファレンス

QTechnique クラス

RingQt クラスリファレンス

QTest クラス

RingQt クラスリファレンス

QText2DEntity クラス

RingQt クラスリファレンス

QTextBlock クラス

RingQt クラスリファレンス

QTextBrowser クラス

RingQt クラスリファレンス

QTextCharFormat クラス

RingQt クラスリファレンス

QTextCodec クラス

RingQt クラスリファレンス

QTextCursor クラス

RingQt クラスリファレンス

QTextDocument クラス

RingQt クラスリファレンス

QTextEdit クラス

RingQt クラスリファレンス

QTextEdit クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QTextStream クラス

RingQt クラスリファレンス

QTextStream2 クラス

RingQt クラスリファレンス

QTextStream3 クラス

RingQt クラスリファレンス

QTextStream4 クラス

RingQt クラスリファレンス

QTextStream5 クラス

RingQt クラスリファレンス

QTextToSpeech クラス

RingQt クラスリファレンス

QTextureLoader クラス

RingQt クラスリファレンス

QTextureMaterial クラス

RingQt クラスリファレンス

QThread クラス

RingQt クラスリファレンス

QThreadPool クラス

RingQt クラスリファレンス

QTime クラス

RingQt クラスリファレンス

QTimer クラス

RingQt クラスリファレンス

QTimer クラスの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QToolBar クラス

RingQt クラスリファレンス

QToolButton クラス

RingQt クラスリファレンス

QTorusMesh クラス

RingQt クラスリファレンス

QTransform クラス

RingQt クラスリファレンス

QTreeView および QFileSystemModel の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QTreeView クラス

RingQt クラスリファレンス

QTreeWidget と QTreeWidgetItem の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QTreeWidget クラス

RingQt クラスリファレンス

QTreeWidgetItem クラス

RingQt クラスリファレンス

Queue クラス

Stdlib クラス

QUrl クラス

RingQt クラスリファレンス

QUuid クラス

RingQt クラスリファレンス

QValueAxis クラス

RingQt クラスリファレンス

QVariant クラス

RingQt クラスリファレンス

QVariant2 クラス

RingQt クラスリファレンス

QVariant3 クラス

RingQt クラスリファレンス

QVariant4 クラス

RingQt クラスリファレンス

QVariant5 クラス

RingQt クラスリファレンス

QVariantDouble クラス

RingQt クラスリファレンス

QVariantFloat クラス

RingQt クラスリファレンス

QVariantInt クラス

RingQt クラスリファレンス

QVariantString クラス

RingQt クラスリファレンス

QVBarModelMapper クラス

RingQt クラスリファレンス

QVBoxLayout クラス

RingQt クラスリファレンス

QVBoxPlotModelMapper クラス

RingQt クラスリファレンス

QVCandlestickModelMapper クラス

RingQt クラスリファレンス

QVector2D クラス

RingQt クラスリファレンス

QVector3D クラス

RingQt クラスリファレンス

QVector4D クラス

RingQt クラスリファレンス

QVectorQVoice クラス

RingQt クラスリファレンス

QVideoWidget と QMediaPlayer

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QVideoWidget クラス

RingQt クラスリファレンス

QVideoWidgetControl クラス

RingQt クラスリファレンス

QViewport クラス

RingQt クラスリファレンス

QVoice クラス

RingQt クラスリファレンス

QVPieModelMapper クラス

RingQt クラスリファレンス

QVXYModelMapper クラス

RingQt クラスリファレンス

QWebEnginePage クラス

RingQt クラスリファレンス

QWebEngineView クラス

RingQt クラスリファレンス

QWebView の用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

QWebView クラス

RingQt クラスリファレンス, [1]

QWidget クラス

RingQt クラスリファレンス

QWindow クラス

RingQt クラスリファレンス

QXmlStreamAttribute クラス

RingQt クラスリファレンス

QXmlStreamAttributes クラス

RingQt クラスリファレンス

QXmlStreamEntityDeclaration クラス

RingQt クラスリファレンス

QXmlStreamEntityResolver クラス

RingQt クラスリファレンス

QXmlStreamNamespaceDeclaration クラス

RingQt クラスリファレンス

QXmlStreamNotationDeclaration クラス

RingQt クラスリファレンス

QXmlStreamReader クラス

RingQt クラスリファレンス

QXmlStreamWriter クラス

RingQt クラスリファレンス

QXYLegendMarker クラス

RingQt クラスリファレンス

QXYSeries クラス

RingQt クラスリファレンス

R

Raise()

Eval() とデバッグ

RandBytes()

セキュリティとインターネット関数

Random()

算術関数

Read() 関数によるファイル内容の読み取り

ファイル

readline()

Stdlib 関数

Remove()

ファイル

Rename()

ファイル

Rewind()

ファイル

Right()

文字列

Ring 1.1 の変更履歴

Ring で記述された StdLib 関数とクラス

Ring オブジェクトファイル (\*.ringo) の生成と実行

RingLibSDL

RingSQLite

はじめに

クラスのメソッド内における多重括弧での This.属性 の使用

シンタックスの柔軟性

デモプロジェクト - 2D ゲームエンジン

取扱説明書の増補

拡張機能用のコード生成器の改善

新しい属性を定義するためにクラス範囲で Self.属性 の使用

新しい関数と変更

新機能と変更リスト

自然言語プログラミング機能を改善

Ring 1.10 の変更履歴

Chess ゲーム

Game of Life ゲーム

Knight Tour ゲーム

Minesweeper ゲーム

Pong ゲーム

Ring パッケージ管理プログラム (RingPM)

Snakes And Ladder ゲーム

Visual Studio Code 用の Ring 拡張機能

そのほかの改善

はじめに

テストの改善

新作ゲーム

新機能と変更リスト

Ring 1.11 の変更履歴

3Dサンプルの追加

Checkers ゲーム

Maze ゲーム

RingQt の改良

RingRayLib 拡張機能

Snake ゲーム

Sokoban ゲーム

StdLib - 関数の追加

Sudoku ゲーム

ZeroLib ライブラリ

そのほかの改善

はじめに

デスクトップスクリーンショットアプリケーション

取扱説明書の増補

実行性能の向上

文書読み上げアプリケーション

新機能と変更リスト

Ring 1.12 の変更履歴

ASCII コード表アプリケーション

BMI 計算機アプリケーション

Go ゲーム

Load Again コマンド

ring_state_filetokens() 関数

RingRayLib の改良

そのほかの改善

はじめに

カレンダーアプリケーション

チュートリアル: 数値を単語表記へ変換

ユリウス積日カレンダーアプリケーション

新機能と変更リスト

組み込み型オブジェクトファイルの生成

Ring 1.13 の変更履歴

Better RingQt の改良

Escape ゲーム

Hassouna Course のサンプル集

Laser ゲーム

Magic Balls ゲーム

Matching ゲーム

MoneyBoxes ゲーム

Pairs ゲーム

Ring 入門書のご案内

RingRayLib の改良

RingStbImage 拡張機能

SpaceVim エディタへの対応

Tetris ゲーム

WebAssembly への対応

Word ゲーム

そのほかの改善

はじめに

スレッド機能の改良

フォルダ構成の改善

低水準関数の追加

新機能と変更リスト

Ring 1.14 の変更履歴

CLOC (Count Lines of Code) の追加

MyCoffee (Web ウェブアプリケーション)

RingLibui 拡張機能

RingOpenSSL の改良

RingSockets 拡張機能

RingThreads 拡張機能

RingTilengine 拡張機能

そのほかの改善

はじめに

アーランのＢ式

ウェブ開発のサンプル

数値処理の改良

文字列処理における実行性能の向上

新作サンプル集

新機能と変更リスト

関数の改良

関数の追加

顧客情報フォーム

Ring 1.15 の変更履歴

Chess Endgame アプリケーション

そのほかの改善

はじめに

新作サンプル集

新機能と変更リスト

Ring 1.2 の変更履歴

Call 命令の改良

NULLPointer() の代わりに NULL を使用

Ring ノートパッドの改良

RingLibCurl

RingQt の改良

RingQt 用のオブジェクトライブラリ

はじめに

品質の改善

新しい関数

新機能と変更リスト

警告表示のオプション

関数の改良

Ring 1.3 の変更履歴

Emacs Editor 用の Ring モード

Loop|Exit 命令の改善

Ring のステートを共有せずに Ring を組み込む

Ring ノートパッドの改善

RingQt の改善

RingZip ライブラリ

StdLib の改善

はじめに

フォームデザイナー

参照による Self 返し

新しい関数

新機能と変更リスト

‘from’キーワードの代わりに‘<’または‘:’演算子の使用

Ring 1.4 の変更履歴

Qt クラスコンバーター

Ring 1.4.1 の変更履歴

Ring ノートパッドへ新しいスタイルを追加

RingQt の改良

RingREPL

StdLib の改良

WebLib の改良

はじめに

変更: 基本拡張機能を Ring VM から分離

数値とバイト間の変換

新機能と変更リスト

自然言語ライブラリ

Ring 1.4.1 の変更履歴

Ring 1.4 の変更履歴

Ring 1.5 の変更履歴

Calculator アプリケーション

Ring 1.5.1 の変更履歴

Ring 1.5.2 の変更履歴

Ring 1.5.3 の変更履歴

Ring 1.5.4 の変更履歴

Ring VM - トレース関数

Ring ノートパッドの改善

RingFreeGLUT 拡張機能

RingOpenGL 拡張機能

RingQt の改善

StdLib の改善

Video-Music-Player アプリケーション

WebLib の改善

Windows StartUp Manager アプリケーション

はじめに

オブジェクトライブラリの改善

シンタックスの柔軟性を向上

トレースライブラリとインタラクティブデバッガ

品質の改善

型ヒントライブラリ

拡張機能用のコード生成器の改善

拡張機能用のドキュメント生成器の改善

新機能と変更リスト

Ring 1.5.1 の変更履歴

Ring 1.5 の変更履歴

Ring 1.5.2 の変更履歴

Ring 1.5 の変更履歴

Ring 1.5.3 の変更履歴

Ring 1.5 の変更履歴

Ring 1.5.4 の変更履歴

Ring 1.5 の変更履歴

Ring 1.6 の変更履歴

! 演算子を not として使うには

&& および || 演算子の用法

? 演算子で式の表示後に改行するには

Android 版 Ring の改善

char(9) の代わりに Tab を使うには

CR をキャリッジリターンとして使うには

Employee アプリケーション

Ring VM の改善

Ring ノートパッドの改善

Ring ビルド用スクリプトの改善

RingConsoleColors 拡張機能

RingMurmurHash 拡張機能

RingQt の改善

RingREPL の改善

StdLib の改善

はじめに

新ツール - Folder2qrc

新ツール - Ring2EXE

新機能と変更リスト

Ring 1.7 の変更履歴

Ring VM の改善

Ring ノートパッドの改善

Ring2EXE の改善

ring_state_new() と ring_state_mainfile() 関数

RingLibuv 拡張機能

RingQt の改善

ringvm_see() と ringvm_give() 関数

RingZip の改善

はじめに

トレースライブラリの改善

取扱説明書の改訂

新しい命令: Load Package

新機能と変更リスト

Ring 1.8 の変更履歴

Cards ゲームの改善

Find in files アプリケーション

For ループでローカルスコープを使用

FoxRing ライブラリ

Manjaro Linux でのコンパイル

Ring コンパイラと VM の改善

RingQt の改善

StopWatch アプリケーション

String2Constant アプリケーション

そのほかの 3D サンプル

はじめに

オブジェクト属性のデフォルト値

クラス範囲で This を Self として使用

バイナリ文字の統合

フォームデザイナーの改善

実行性能の改善

拡張機能用コード生成器の改善

拡張機能開発者への告知

新機能と変更リスト

Ring 1.9 の変更履歴

BigNumber ライブラリ

Ring ノートパッドの改善

RingPostgreSQL 拡張機能

RingQt の改善

StdLib の改善

そのほかの改善

はじめに

クラウド経由でのウェブアプリケーション配布

メモリ管理の改善

拡張機能用のコード生成器の更新

新作ゲーム

新機能と変更リスト

注目の新作ゲーム : Gold Magic 800

RING API - リスト関数

拡張機能

RING API - 文字列関数

拡張機能

Ring CGI - Hello World プログラム

ウェブ開発 (CGI ライブラリ)

Ring Ring をオススメする理由

言語設計

Ring VM - トレース関数

Ring 1.5 の変更履歴

Ring VM の改善

Ring 1.6 の変更履歴

Ring 1.7 の変更履歴

Ring が関数とメソッドを見つける方法は？

関数とメソッドのスコープ規則

Ring で ‘See’, ‘Give’, ‘But’ および ‘Ok’ キーワードを採用する理由は？

よくある質問と回答

Ring でのブール値とは？

よくある質問と回答

Ring でグローバル変数とクラスの属性名間の名前衝突を回避しない理由は？

よくある質問と回答

Ring で記述された StdLib 関数とクラス

Ring 1.1 の変更履歴

Ring と Python との違いは？ Ring はオープンソースなの？

よくある質問と回答

Ring に “Main” 関数を実装した理由は？

よくある質問と回答

Ring においてデータ型の背景にある哲学とは？

よくある質問と回答

Ring における変数と属性の定義方法

スコープ規則

Ring による変数の検出方法

スコープ規則

Ring にコンストラクタメソッドはありますか？

よくある質問と回答

Ring のインデックスが 1 から始まる理由は？

よくある質問と回答

Ring のウェブサイト

関連情報

Ring のステート

C/C++ プログラムへ Ring を組み込むには

Ring のステートを共有せずに Ring を組み込む

Ring 1.3 の変更履歴

Ring のメモリ管理方法は？

よくある質問と回答

Ring のライブラリ

開発への参戦について

Ring の描画

RingRayLib によるゲーム開発

Ring の評判

時速でデキるアプリケーション開発

Ring へ Ring を組み込むには

Ring へ Ring を組み込んだときのランタイムエラーについて

ring_state_filetokens() 関数

ring_state_new() と ring_state_mainfile() 関数

ring_state_setvar()

はじめに

ステートを共有せずに Ring へ Ring を組み込むには

プログラムの直列実行

Ring へ Ring を組み込んだときのランタイムエラーについて

Ring へ Ring を組み込むには

Ring アプリケーションの Qt プロジェクト

WebAssembly 用 RingQt アプリケーションのビルド方法

Ring アプリケーションの配布方法 (手動)

C/C++ コンパイラとリンカの使用

Microsoft Windows 用のアプリケーションの配布

ring.ring と ring.ringo ファイル

Windows インストーラの作成

はじめに

ソースコードの保護

モバイル機器向けアプリケーションおよびゲームの配布

Ring アプリケーション用の Qt プロジェクト

モバイル用 RingQt アプリケーションのビルド方法

Ring アーキテクチャとは？

よくある質問と回答

Ring オブジェクトファイル (\*.ringo) の生成と実行

Ring 1.1 の変更履歴

Ring コンパイラと VM の改善

Ring 1.8 の変更履歴

Ring ステート変数

C/C++ プログラムへ Ring を組み込むには

Ring ステート関数

C/C++ プログラムへ Ring を組み込むには

Ring ソースコードファイルとパーミッション

クラウド経由でのウェブアプリケーションの配布方法

Ring データ表現方法は？

よくある質問と回答

Ring ノートパッド

Ring ノートパッド - GUI / WebAssembly / モバイル・アプリケーションの作成と実行

Ring ノートパッド - ウェブアプリケーションの作成と実行

Ring ノートパッド - コンソールアプリケーションの作成と実行

Ring ノートパッド - デスクトップとモバイルゲームの作成と実行

Ring ノートパッド - メインウィンドウ

はじめに

ツールメニュー

ブラウザメニュー

プログラムメニュー

プロジェクトのメインファイル

ファイルメニュー

ヘルプメニュー

編集メニュー

表示メニュー

配布メニュー

Ring ノートパッド - GUI / WebAssembly / モバイル・アプリケーションの作成と実行

Ring ノートパッド

Ring ノートパッド - ウェブアプリケーションの作成と実行

Ring ノートパッド

Ring ノートパッド - コンソールアプリケーションの作成と実行

Ring ノートパッド

Ring ノートパッド - デスクトップとモバイルゲームの作成と実行

Ring ノートパッド

Ring ノートパッド - メインウィンドウ

Ring ノートパッド

Ring ノートパッドの改善

Ring 1.3 の変更履歴

Ring 1.5 の変更履歴

Ring 1.6 の変更履歴

Ring 1.7 の変更履歴

Ring 1.9 の変更履歴

Ring ノートパッドの改良

Ring 1.2 の変更履歴

Ring ノートパッドへ新しいスタイルを追加

Ring 1.4 の変更履歴

Ring パッケージ管理プログラム (RingPM)

Ring 1.10 の変更履歴

RingPM レジストリの更新

RingPM レジストリファイル

はじめに

インストール済みパッケージのリスト表示

カレントフォルダでのパッケージ作成

コマンドラインオプション

パッケージのインストール

パッケージの全削除

パッケージの削除

パッケージの更新

パッケージの検索

パッケージスクリプトの実行

パッケージテンプレートの新規作成

パッケージ概要ファイル

Ring ビルド用スクリプトの改善

Ring 1.6 の変更履歴

Ring ファイルの実行可能権限を許可するには

ウェブ開発 (CGI ライブラリ)

Ring 以外のプログラミング言語

はじめに

Ring 入門書のご案内

Ring 1.13 の変更履歴

ring.ring と ring.ringo ファイル

Ring アプリケーションの配布方法 (手動)

Ring2EXE による Ring アプリケーションの配布方法

Qt リソースファイルの作成方法 (Folder2qrc)

Ring2EXE に関する重要情報

Ring2EXE の動作方法

Ring2EXE の用法

RingAllegro アプリケーションの配布方法

RingQt アプリケーションの配布方法

WebAssembly 用アプリケーションの配布方法 (RingQt)

はじめに

オプション

スタンドアロン形式によるコンソールアプリケーションのビルド方法

フォームデザイナーをモバイル機器用にビルドするには (RingQt)

モバイル版 Cards ゲームのビルド方法 (RingQt)

モバイル版 Weight History アプリケーションのビルド方法 (RingQt)

モバイル用アプリケーションの配布方法 (RingQt)

用例

Ring2EXE に関する重要情報

Ring2EXE による Ring アプリケーションの配布方法

Ring2EXE の動作方法

Ring2EXE による Ring アプリケーションの配布方法

Ring2EXE の改善

Ring 1.7 の変更履歴

Ring2EXE の用法

Ring2EXE による Ring アプリケーションの配布方法

WebAssembly 用 RingQt アプリケーションのビルド方法

モバイル用 RingQt アプリケーションのビルド方法

ring_ext.c

拡張機能

ring_ext.h

拡張機能

ring_state_filetokens() 関数

Ring 1.12 の変更履歴

Ring へ Ring を組み込むには

ring_state_new() と ring_state_mainfile() 関数

Ring 1.7 の変更履歴

Ring へ Ring を組み込むには

ring_state_setvar()

Ring へ Ring を組み込むには

RingAllegro アプリケーションの配布方法

Ring2EXE による Ring アプリケーションの配布方法

RingAllegro 関数リファレンス

はじめに

RingCodeHighlighter クラス

RingQt クラスリファレンス

RingConsoleColors 拡張機能

Ring 1.6 の変更履歴

RingConsoleColors 関数リファレンス

はじめに

RingFreeGLUT とは？

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingFreeGLUT によるはじめてのウィンドウ

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingFreeGLUT 拡張機能

Ring 1.5 の変更履歴

RingFreeGLUT 関数リファレンス

はじめに

RingLibCurl

Facebook へのログイン

Get リクエスト

Post リクエスト

Ring 1.2 の変更履歴

Yahoo! から株式情報を取得

はじめに

実行結果を文字列で保存

RingLibCurl 関数リファレンス

はじめに

RingLibSDL

PNG 画像の表示

Ring 1.1 の変更履歴

TTF フォントの使用

はじめに

ウィンドウの作成

ウィンドウを閉じるためのイベント

マウスのイベント

ライブラリの読み込み

二枚の画像切り替え

画像の表示

透過画像の表示

長方形の描画

音声の再生

RingLibSDL 関数リファレンス

はじめに

参考文献

RingLibui 拡張機能

Ring 1.14 の変更履歴

RingLibuv

RingLibuv によるはじめてのアプリケーション

はじめに

イベントループ

クライアントの用例

クラスによるクライアントの用例

クラスによるサーバーの用例

サーバーの用例

スレッドの用例

スレッドの用例 - クラスの使用

RingLibuv によるはじめてのアプリケーション

RingLibuv

RingLibuv 拡張機能

Ring 1.7 の変更履歴

RingLibuv 関数リファレンス

はじめに

RingLibZip 関数リファレンス

はじめに

RingMurmurHash 拡張機能

Ring 1.6 の変更履歴

RingMurmurHash 関数リファレンス

MurmurHash1 関数

MurmurHash2 関数

MurmurHash3 関数

はじめに

用例

RingOpenGL (OpenGL 1.1) 関数リファレンス

はじめに

RingOpenGL (OpenGL 1.2) 関数リファレンス

はじめに

RingOpenGL (OpenGL 1.3) 関数リファレンス

はじめに

RingOpenGL (OpenGL 1.4) 関数リファレンス

はじめに

RingOpenGL (OpenGL 1.5) 関数リファレンス

はじめに

RingOpenGL (OpenGL 2.0) 関数リファレンス

はじめに

RingOpenGL (OpenGL 2.1) 関数リファレンス

はじめに

RingOpenGL (OpenGL 3.0) 関数リファレンス

はじめに

RingOpenGL (OpenGL 3.1) 関数リファレンス

はじめに

RingOpenGL (OpenGL 3.2) 関数リファレンス

はじめに

RingOpenGL (OpenGL 3.3) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.0) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.1) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.2) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.3) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.4) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.5) 関数リファレンス

はじめに

RingOpenGL (OpenGL 4.6) 関数リファレンス

はじめに

RingOpenGL での描画

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingOpenGL と RingAllegro の用法 (3D グラフィックス)

3D 立方体とテクスチャ

TicTacToe 3D ゲーム

その他の 3D サンプル

はじめに

複数の立方体

RingOpenGL と RingFreeGLUT による立方体の作例

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingFreeGLUT とは？

RingFreeGLUT によるはじめてのウィンドウ

RingOpenGL での描画

RingOpenGL と RingFreeGLUT による立方体の作例

RingOpenGL とは？

はじめての三角形

はじめに

ウィンドウの大きさ変更イベント

カメラ

キーボードイベントと配色

サンプルソース (作者)

フォントの用法

マウスイベント

メニューイベント

一秒あたりのフレーム数

三角形の回転

RingOpenGL とは？

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

RingOpenGL 拡張機能

Ring 1.5 の変更履歴

RingOpenSSL の改良

Ring 1.14 の変更履歴

RingPM レジストリの更新

Ring パッケージ管理プログラム (RingPM)

RingPM レジストリファイル

Ring パッケージ管理プログラム (RingPM)

RingPostgreSQL 定数

PostgreSQL

RingPostgreSQL 拡張機能

Ring 1.9 の変更履歴

RingPostgreSQL 関数

PostgreSQL

RingQt の拡張機能とクラスの追加方法は？

よくある質問と回答

RingQt の改善

Ring 1.3 の変更履歴

Ring 1.5 の変更履歴

Ring 1.6 の変更履歴

Ring 1.7 の変更履歴

Ring 1.8 の変更履歴

Ring 1.9 の変更履歴

RingQt の改良

Ring 1.11 の変更履歴

Ring 1.2 の変更履歴

Ring 1.4 の変更履歴

RingQt アプリケーションの配布方法

Ring2EXE による Ring アプリケーションの配布方法

RingQt アプリケーション用のオブジェクトライブラリ

GUI アプリケーションによるライブラリの用法

openWindowAndLink() 関数

openWindowInPackages() 関数

はじめに

オブジェクトライブラリのソースコード

用例

RingQt クラスおよび Qt の取扱説明書

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

RingQt クラスリファレンス

AbstractAxis クラス

AbstractBarSeries クラス

CodeEditor クラス

QAbstractAspect クラス

QAbstractButton クラス

QAbstractCameraController クラス

QAbstractItemView クラス

QAbstractPrintDialog クラス

QAbstractScrollArea クラス

QAbstractSeries クラス

QAbstractSlider クラス

QAbstractSocket クラス

QAbstractSpinBox クラス

QAction クラス

QAllEvents クラス

QApp クラス

QAreaLegendMarker クラス

QAreaSeries クラス

QAspectEngine クラス

QAxBase クラス

QAxObject クラス

QAxWidget クラス

QAxWidget2 クラス

QBarCategoryAxis クラス

QBarLegendMarker クラス

QBarSeries クラス

QBarSet クラス

QBitmap クラス

QBluetoothAddress クラス

QBluetoothDeviceDiscoveryAgent クラス

QBluetoothDeviceInfo クラス

QBluetoothHostInfo クラス

QBluetoothLocalDevice クラス

QBluetoothServer クラス

QBluetoothServiceDiscoveryAgent クラス

QBluetoothServiceInfo クラス

QBluetoothSocket クラス

QBluetoothTransferManager クラス

QBluetoothTransferReply クラス

QBluetoothTransferRequest クラス

QBluetoothUuid クラス

QBoxLayout クラス

QBoxPlotLegendMarker クラス

QBoxPlotSeries クラス

QBoxSet クラス

QBrush クラス

QBuffer クラス

QButtonGroup クラス

QByteArray クラス

QCalendarWidget クラス

QCamera クラス

QCameraImageCapture クラス

QCameraLens クラス

QCameraSelector クラス

QCameraViewfinder クラス

QCandlestickLegendMarker クラス

QCandlestickModelMapper クラス

QCandlestickSeries クラス

QCandlestickSet クラス

QCategoryAxis クラス

QChar クラス

QChart クラス

QChartView クラス

QCheckBox クラス

QChildEvent クラス

QClipboard クラス

QColor クラス

QColorDialog クラス

QComboBox クラス

QCompleter クラス

QCompleter2 クラス

QCompleter3 クラス

QConeGeometry クラス

QConeMesh クラス

QCoreApplication クラス

QCuboidMesh クラス

QCullFace クラス

QCursor クラス

QCylinderMesh クラス

QDate クラス

QDateEdit クラス

QDateTime クラス

QDateTimeAxis クラス

QDateTimeEdit クラス

QDepthTest クラス

QDesktopServices クラス

QDesktopWidget クラス

QDial クラス

QDialog クラス

QDiffuseSpecularMaterial クラス

QDir クラス

QDirModel クラス

QDockWidget クラス

QDrag クラス

QDragEnterEvent クラス

QDragLeaveEvent クラス

QDragMoveEvent クラス

QDropEvent クラス

QEffect クラス

QEntity クラス

QEvent クラス

QExtrudedTextMesh クラス

QFile クラス

QFile2 クラス

QFileDevice クラス

QFileDialog クラス

QFileInfo クラス

QFileSystemModel クラス

QFirstPersonCameraController クラス

QFont クラス

QFontDialog クラス

QFontMetrics クラス

QForwardRenderer クラス

QFrame クラス

QFrame2 クラス

QFrame3 クラス

QFrameAction クラス

QGeoAddress クラス

QGeoAreaMonitorInfo クラス

QGeoAreaMonitorSource クラス

QGeoCircle クラス

QGeoCoordinate クラス

QGeoPositionInfo クラス

QGeoPositionInfoSource クラス

QGeoRectangle クラス

QGeoSatelliteInfo クラス

QGeoSatelliteInfoSource クラス

QGeoShape クラス

QGoochMaterial クラス

QGradient クラス

QGraphicsScene クラス

QGraphicsVideoItem クラス

QGraphicsView クラス

QGridLayout クラス

QGuiApplication クラス

QHBarModelMapper クラス

QHBoxLayout クラス

QHBoxPlotModelMapper クラス

QHCandlestickModelMapper クラス

QHeaderView クラス

QHorizontalBarSeries クラス

QHorizontalPercentBarSeries クラス

QHorizontalStackedBarSeries クラス

QHostAddress クラス

QHostInfo クラス

QHPieModelMapper クラス

QHXYModelMapper クラス

QIcon クラス

QImage クラス

QInputAspect クラス

QInputDialog クラス

QIODevice クラス

QJsonArray クラス

QJsonDocument クラス

QJsonObject クラス

QJsonParseError クラス

QJsonValue クラス

QKeySequence クラス

QLabel クラス

QLayout クラス

QLCDNumber クラス

QLegend クラス

QLegendMarker クラス

QLinearGradient クラス

QLineEdit クラス

QLineSeries クラス

QListView クラス

QListWidget クラス

QListWidgetItem クラス

QLocale クラス

QLogicAspect クラス

QLogValueAxis クラス

QMainWindow クラス

QMaterial クラス

QMatrix4x4 クラス

QMdiArea クラス

QMdiSubWindow クラス

QMediaObject クラス

QMediaPlayer クラス

QMediaPlaylist クラス

QMenu クラス

QMenuBar クラス

QMesh クラス

QMessageBox クラス

QMetalRoughMaterial クラス

QMimeData クラス

QMorphPhongMaterial クラス

QMovie クラス

QMutex クラス

QMutexLocker クラス

QNetworkAccessManager クラス

QNetworkProxy クラス

QNetworkReply クラス

QNetworkRequest クラス

QNmeaPositionInfoSource クラス

QNode クラス

QObject クラス

QObjectPicker クラス

QOpenGLBuffer クラス

QOpenGLContext クラス

QOpenGLDebugLogger クラス

QOpenGLFramebufferObject クラス

QOpenGLFunctions クラス

QOpenGLFunctions_3_2_Core クラス

QOpenGLPaintDevice クラス

QOpenGLShader クラス

QOpenGLShaderProgram クラス

QOpenGLTexture クラス

QOpenGLTimerQuery クラス

QOpenGLVersionProfile クラス

QOpenGLVertexArrayObject クラス

QOpenGLWidget クラス

QOrbitCameraController クラス

QPageSetupDialog クラス

QPaintDevice クラス

QPainter クラス

QPainter2 クラス

QPainterPath クラス

QPen クラス

QPercentBarSeries クラス

QPerVertexColorMaterial クラス

QPhongMaterial クラス

QPicture クラス

QPieLegendMarker クラス

QPieSeries クラス

QPieSlice クラス

QPixmap クラス

QPixmap2 クラス

QPlainTextEdit クラス

QPlaneMesh クラス

QPoint クラス

QPointF クラス

QPointLight クラス

QPolarChart クラス

QPrintDialog クラス

QPrinter クラス

QPrinterInfo クラス

QPrintPreviewDialog クラス

QPrintPreviewWidget クラス

QProcess クラス

QProgressBar クラス

QPushButton クラス

QQmlEngine クラス

QQmlError クラス

QQuaternion クラス

QQuickView クラス

QQuickWidget クラス

QRadioButton クラス

QRect クラス

QRegion クラス

QRegularExpression クラス

QRegularExpressionMatch クラス

QRegularExpressionMatchIterator クラス

QRenderAspect クラス

QRenderPass クラス

QScatterSeries クラス

QSceneLoader クラス

QScreen クラス

QScrollArea クラス

QScrollBar クラス

QSerialPort クラス

QSerialPortInfo クラス

QSize クラス

QSkyboxEntity クラス

QSlider クラス

QSphereMesh クラス

QSpinBox クラス

QSplashScreen クラス

QSplineSeries クラス

QSplitter クラス

QSqlDatabase クラス

QSqlDriver クラス

QSqlDriverCreatorBase クラス

QSqlError クラス

QSqlField クラス

QSqlIndex クラス

QSqlQuery クラス

QSqlRecord クラス

QStackedBarSeries クラス

QStackedWidget クラス

QStandardPaths クラス

QStatusBar クラス

QString2 クラス

QStringList クラス

QStringRef クラス

QSurfaceFormat クラス

QSystemTrayIcon クラス

Qt3DCamera クラス

Qt3DWindow クラス

QTabBar クラス

QTableView クラス

QTableWidget クラス

QTableWidgetItem クラス

QTabWidget クラス

QTcpServer クラス

QTcpSocket クラス

QTechnique クラス

QTest クラス

QText2DEntity クラス

QTextBlock クラス

QTextBrowser クラス

QTextCharFormat クラス

QTextCodec クラス

QTextCursor クラス

QTextDocument クラス

QTextEdit クラス

QTextStream クラス

QTextStream2 クラス

QTextStream3 クラス

QTextStream4 クラス

QTextStream5 クラス

QTextToSpeech クラス

QTextureLoader クラス

QTextureMaterial クラス

QThread クラス

QThreadPool クラス

QTime クラス

QTimer クラス

QToolBar クラス

QToolButton クラス

QTorusMesh クラス

QTransform クラス

QTreeView クラス

QTreeWidget クラス

QTreeWidgetItem クラス

QUrl クラス

QUuid クラス

QValueAxis クラス

QVariant クラス

QVariant2 クラス

QVariant3 クラス

QVariant4 クラス

QVariant5 クラス

QVariantDouble クラス

QVariantFloat クラス

QVariantInt クラス

QVariantString クラス

QVBarModelMapper クラス

QVBoxLayout クラス

QVBoxPlotModelMapper クラス

QVCandlestickModelMapper クラス

QVector2D クラス

QVector3D クラス

QVector4D クラス

QVectorQVoice クラス

QVideoWidget クラス

QVideoWidgetControl クラス

QViewport クラス

QVoice クラス

QVPieModelMapper クラス

QVXYModelMapper クラス

QWebEnginePage クラス

QWebEngineView クラス

QWebView クラス, [1]

QWidget クラス

QWindow クラス

QXmlStreamAttribute クラス

QXmlStreamAttributes クラス

QXmlStreamEntityDeclaration クラス

QXmlStreamEntityResolver クラス

QXmlStreamNamespaceDeclaration クラス

QXmlStreamNotationDeclaration クラス

QXmlStreamReader クラス

QXmlStreamWriter クラス

QXYLegendMarker クラス

QXYSeries クラス

RingCodeHighlighter クラス

はじめに

RingQt 用のオブジェクトライブラリ

Ring 1.2 の変更履歴

RingRayLib によるゲーム開発

3Dカメラ

3Dピッキング

3D自由視点カメラ

Ring の描画

はじめに

カラーパレット

キュービックマップ

キー入力

テクスチャの入力

ファーストパーソンカメラ

ベジェ曲線

マウスホイール

マウス入力

マルチタッチ入力

二個の立方体

全画面表示

基本ウィンドウ

基本図形

幾何学的図形

当たり判定の領域

画像の描画

画像生成

視線追従

長方形の拡縮

関数

音声の読み込みと再生

音楽のストリーミング再生

RingRayLib の改良

Ring 1.12 の変更履歴

Ring 1.13 の変更履歴

RingRayLib 拡張機能

Ring 1.11 の変更履歴

RingREPL

Ring 1.4 の変更履歴

RingREPL の改善

Ring 1.6 の変更履歴

RingSockets 拡張機能

Ring 1.14 の変更履歴

RingSQLite

Ring 1.1 の変更履歴

RingStbImage 拡張機能

Ring 1.13 の変更履歴

RingStbImage 関数リファレンス

はじめに

RingThreads 拡張機能

Ring 1.14 の変更履歴

RingTilengine 拡張機能

Ring 1.14 の変更履歴

ringvm_callfunc()

低水準関数

RingVM_CallList()

低水準関数

RingVM_CFunctionsList()

低水準関数

RingVM_ClassesList()

低水準関数

ringvm_evalinscope()

低水準関数

RingVM_FilesList()

低水準関数

RingVM_FunctionsList()

低水準関数

ringvm_give()

低水準関数

ringvm_hideerrorMsg()

低水準関数

ringvm_info()

低水準関数

RingVM_MemoryList()

低水準関数

RingVM_PackagesList()

低水準関数

ringvm_passerror()

低水準関数

ringvm_scopescount()

低水準関数

ringvm_see()

低水準関数

ringvm_see() と ringvm_give() 関数

Ring 1.7 の変更履歴

ringvm_settrace()

低水準関数

ringvm_tracedata()

低水準関数

ringvm_traceevent()

低水準関数

ringvm_tracefunc()

低水準関数

RingZip

RingZip クラスの用法

Zip クラスリファレンス

Zip ファイルにあるファイルのリスト表示

Zip ファイルの作成

Zip ファイルの展開

ZipEntry クラスリファレンス

はじめに

RingZip の改善

Ring 1.7 の変更履歴

RingZip クラスの用法

RingZip

RingZip ライブラリ

Ring 1.3 の変更履歴

S

Say Hello

チュートリアル: C/C++ による拡張機能の開発方法

ScriptFunctions クラス

ウェブ開発 (CGI ライブラリ)

Security クラス

Stdlib クラス

Self オブジェクト

スコープ規則

Self.属性 と Self.メソッド() の用法

オブジェクト指向プログラミング (OOP)

SendEmail()

セキュリティとインターネット関数

setattribute()

リフレクションとメタプログラミング

setClickEvent() でオブジェクトのメソッドを参照しない理由は？

よくある質問と回答

setpointer()

低水準関数

Setter と Getter

オブジェクト指向プログラミング (OOP)

SHA1()

セキュリティとインターネット関数

SHA224()

セキュリティとインターネット関数

SHA256()

セキュリティとインターネット関数

SHA384()

セキュリティとインターネット関数

SHA512()

セキュリティとインターネット関数

shebang (シェバン) 行の設定

ウェブ開発 (CGI ライブラリ)

Shutdown() 関数

システム関数

sign()

Stdlib 関数

Sin() 関数の実装

拡張機能

Single: Qt3D によるグラフィックスプログラミング

Qt3D によるグラフィックスプログラミング

Single: RingRayLib によるゲーム開発

はじめに

Single: ZeroLib の用法

はじめに

sleep()

Stdlib 関数

Snake ゲーム

Ring 1.11 の変更履歴

Snakes And Ladder ゲーム

Ring 1.10 の変更履歴

Sokoban ゲーム

Ring 1.11 の変更履歴

Sort() とオブジェクトのリスト

オブジェクト指向プログラミング (OOP)

Sound クラス

2D ゲームエンジン

space()

低水準関数

SpaceVim

テキストエディタの設定

SpaceVim エディタへの対応

Ring 1.13 の変更履歴

split()

Stdlib 関数

splitmany()

Stdlib 関数

Sprite クラス

2D ゲームエンジン

SQLite

sqlite_close()

sqlite_execute()

sqlite_init()

sqlite_open()

はじめに

SQLite クラス

Stdlib クラス

sqlite_close()

SQLite

sqlite_execute()

SQLite

sqlite_init()

SQLite

sqlite_open()

SQLite

Squares Puzzle ゲーム

時速でデキるアプリケーション開発

SRandom()

算術関数

Stack クラス

Stdlib クラス

Stars Fighter ゲーム

2D ゲームエンジン

startswith()

Stdlib 関数

StdBase クラス

Stdlib クラス

StdLib - 関数の追加

Ring 1.11 の変更履歴

StdLib の改善

Ring 1.3 の変更履歴

Ring 1.5 の変更履歴

Ring 1.6 の変更履歴

Ring 1.9 の変更履歴

StdLib の改良

Ring 1.4 の変更履歴

Stdlib クラス

Conversion クラス

DataType クラス

DateTime クラス

Debug クラス

File クラス

HashTable クラス

Internet クラス

List クラス

Math クラス

MySQL クラス

ODBC クラス

PostgreSQL クラス

Queue クラス

Security クラス

SQLite クラス

Stack クラス

StdBase クラス

String クラス

System クラス

Tree クラス

はじめに

Stdlib 関数

apppath()

ASCIIList2Str() 関数

binarydigits()

capitalized()

changestring()

dayofweek()

endswith()

EpochTime()

evenorodd()

factorial()

factors()

fibonacci()

file2list()

filter()

FSize()

gcd()

getnumber()

getstring()

IsBetween() 関数

isleapyear()

IsListContainsItems() 関数

ismainsourcefile()

ispalindrome()

isprime()

isspecial()

isvowel()

JustFileName()

JustFilePath()

lcm()

linecount()

List2Code() 関数

list2file()

ListAllFiles() 関数

makedir()

map()

matrixmulti()

matrixtrans()

OSCopyFile() 関数

OSCopyFolder() 関数

OSCreateOpenFolder() 関数

OSDeleteFile() 関数

OSDeleteFolder() 関数

OSRenameFile() 関数

permutation()

print()

Print2Str() 関数

prodlist()

puts()

readline()

sign()

sleep()

split()

splitmany()

startswith()

Str2ASCIIList() 関数

substring()

sumlist()

SystemCmd() 関数

SystemSilent() 関数

TimeInfo() 関数

times()

TrimAll()

TrimLeft()

TrimRight()

value()

はじめに

Step オプション

制御構造 - 第一形式

StopWatch アプリケーション

Ring 1.8 の変更履歴

Str2ASCIIList() 関数

Stdlib 関数

Str2hex() 関数

データ型

str2list() と list2str()

文字列

strcmp()

文字列

StrCmp() の実行結果について解説していただけますか？

よくある質問と回答

String クラス

Stdlib クラス

String() 関数

データ型

String2Constant の用法

多国語アプリケーション

String2Constant アプリケーション

Ring 1.8 の変更履歴

StyleFunctions クラス

ウェブ開発 (CGI ライブラリ)

Sublime Text 2

テキストエディタの設定

Substr()

文字列

substring()

Stdlib 関数

Sudoku ゲーム

Ring 1.11 の変更履歴

sumlist()

Stdlib 関数

Super Man 2016 ゲーム

2D ゲームエンジン

Switch ステートメント

制御構造 - 第一形式

制御構造 - 第三形式

制御構造 - 第二形式

Switch ステートメントで‘on’の代わりに‘case’を使うには

シンタックスの柔軟性

Switch ステートメントで‘other’の代わりに‘else’キーワードを使うには

シンタックスの柔軟性

SysGet() 関数

システム関数

SysSet() 関数

システム関数

System クラス

Stdlib クラス

System() 関数

システム関数

SystemCmd() 関数

Stdlib 関数

SystemSilent() 関数

Stdlib 関数

SysUnset() 関数

システム関数

T

TCP クライアント

ソケット

TCP サーバ

ソケット

Tempfile()

ファイル

Tempname()

ファイル

Tetris ゲーム

Ring 1.13 の変更履歴

Text クラス

2D ゲームエンジン

This.属性 と This.メソッド() の用法

オブジェクト指向プログラミング (OOP)

Threads

はじめに

スレッドの作成

リファレンス

追加の用例

TicTacToe 3D ゲーム

RingOpenGL と RingAllegro の用法 (3D グラフィックス)

tilengine

Introduction

LibSDL と Tilengine の併用

リファレンス

入門

追加サンプル

Time()

日付と時刻

TimeInfo() 関数

Stdlib 関数

TimeList()

日付と時刻

times()

Stdlib 関数

Tree クラス

Stdlib クラス

Trim()

文字列

TrimAll()

Stdlib 関数

TrimLeft()

Stdlib 関数

TrimRight()

Stdlib 関数

TrueType フォント

グラフィックスと 2D ゲームプログラミング (RingAllegro)

Try/Carch/Done

Eval() とデバッグ

TTF フォントの使用

RingLibSDL

U

Ubuntu Linux でのビルド方法

ソースコードからのビルド方法

Ungetc()

ファイル

Unsigned()

算術関数

Upload Files

ウェブ開発 (CGI ライブラリ)

URL エンコード

ウェブ開発 (CGI ライブラリ)

Using RING_API_RETMANAGEDCPOINTER() の用法

拡張機能

V

value()

Stdlib 関数

varptr()

低水準関数

Version() 関数

システム関数

Video-Music-Player アプリケーション

Ring 1.5 の変更履歴

時速でデキるアプリケーション開発

Visual Studio Code

テキストエディタの設定

Visual Studio Code 用の Ring 拡張機能

Ring 1.10 の変更履歴

Visual Studio IDE

テキストエディタの設定

W

WebAssembly への対応

Ring 1.13 の変更履歴

WebAssembly 用 RingQt の開発における注解

WebAssembly 用 RingQt アプリケーションのビルド方法

WebAssembly 用 RingQt アプリケーションのビルド方法

Ring アプリケーションの Qt プロジェクト

Ring2EXE の用法

WebAssembly 用 RingQt の開発における注解

はじめに

オンラインアプリケーション

ダイアログ

ダウンロード用件

WebAssembly 用アプリケーションの配布方法 (RingQt)

Ring2EXE による Ring アプリケーションの配布方法

WebLib API

ウェブ開発 (CGI ライブラリ)

WebLib および GUILib によるレポートの作成方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

WebLib の改善

Ring 1.5 の変更履歴

WebLib の改良

Ring 1.4 の変更履歴

WebPage クラス

ウェブ開発 (CGI ライブラリ)

Weight History アプリケーション

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

While ループ

制御構造 - 第一形式

制御構造 - 第三形式

Windows StartUp Manager アプリケーション

Ring 1.5 の変更履歴

Windows インストーラの作成

Ring アプリケーションの配布方法 (手動)

Windowsnl() 関数

システム関数

Word ゲーム

Ring 1.13 の変更履歴

Write() 関数によるファイルへの書き込み

ファイル

X

XAMPP Apache ウェブサーバーの用法

Apache ウェブサーバーの設定

Y

Yahoo! から株式情報を取得

RingLibCurl

Z

Z() 関数

ZeroLib の用法

ZeroBasedList クラス

ZeroLib の用法

ZeroBasedString クラス

ZeroLib の用法

ZeroLib の用法

Z() 関数

ZeroBasedList クラス

ZeroBasedString クラス

はじめに

ソースコード

ZeroLib ライブラリ

Ring 1.11 の変更履歴

Zip クラスリファレンス

RingZip

Zip ファイルにあるファイルのリスト表示

RingZip

Zip ファイルの作成

RingZip

Zip ファイルの展開

RingZip

ZipEntry クラスリファレンス

RingZip

あ

あいさつをする

libui

あそびかた

Gold Magic 800 ゲーム

こ

この用例で GetChar() を二度使用する理由は？

よくある質問と回答

そ

そのほかの 3D サンプル

Ring 1.8 の変更履歴

そのほかのウイジェットイベント

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

そのほかの改善

Ring 1.10 の変更履歴

Ring 1.11 の変更履歴

Ring 1.12 の変更履歴

Ring 1.13 の変更履歴

Ring 1.14 の変更履歴

Ring 1.15 の変更履歴

Ring 1.9 の変更履歴

そのほかの演算子

演算子

その他の 3D サンプル

RingOpenGL と RingAllegro の用法 (3D グラフィックス)

その他のサンプルとテスト

フォームデザイナーの用法

な

なぜ弱い型付けを採用したのですか？

よくある質問と回答

なにか言ってみる

libui

は

はじめての GUI アプリケーション

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

はじめての三角形

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

はじめての拡張機能開発

はじめに

収録先

拡張機能の作成手順

関数の動作検証

はじめに

Ring 以外のプログラミング言語

RingRayLib によるゲーム開発

ZeroLib の用法

はじめに

クラウド経由でのウェブアプリケーションの配布方法

ライセンス

主な機能

動機

歴史

ほ

ほとんどのアプリケーションで十分に高速動作します

言語設計

よ

よくある質問と回答

C# や Java よりも Ring を使用する利点は？

Combobox および QTableWidget のセルへ他の要素を追加するには？

dBase/Harbour データベースへ接続できますか？

ftell() と fseek() でファイルの大きさを取得するには？

Getter と Setter メソッドでのアクセスにより属性を使えますか？

GUI アプリケーションでボタンの配列を作成するには？

Lisp や Smalltalk よりも Ring を選ぶ利点は？

NULL と isNULL() 関数の用法は？

ODBC から SQLite を使うには？

Perl, PHP, Python や Ruby よりも Ring を使用する利点は？

QApp クラス名の末尾に () を付けない理由は？

QTableWidget で選択されたセルの内容に処理を行うには？

Ring で ‘See’, ‘Give’, ‘But’ および ‘Ok’ キーワードを採用する理由は？

Ring でのブール値とは？

Ring でグローバル変数とクラスの属性名間の名前衝突を回避しない理由は？

Ring と Python との違いは？ Ring はオープンソースなの？

Ring に “Main” 関数を実装した理由は？

Ring においてデータ型の背景にある哲学とは？

Ring にコンストラクタメソッドはありますか？

Ring のインデックスが 1 から始まる理由は？

Ring のメモリ管理方法は？

Ring アーキテクチャとは？

Ring データ表現方法は？

RingQt の拡張機能とクラスの追加方法は？

setClickEvent() でオブジェクトのメソッドを参照しない理由は？

StrCmp() の実行結果について解説していただけますか？

この用例で GetChar() を二度使用する理由は？

なぜ弱い型付けを採用したのですか？

はじめに

ウィンドウのタイトルバーが画面外に移動してしまう原因は？

ウィンドウを閉じた後に別のウィンドウを表示するには？

オブジェクトのあるリストを表示するには？

オブジェクトの新規作成時に起きていることは？

クラスを定義している間にグローバルな名前の検索を行う理由は？

シンタックスの処理ではなく自作言語の定義機能があり、コードなどで構文解析の使用を可能にしている理由は？

ネイティブ C や C++ よりも Ring を選ぶ利点は？

プロジェクトで複数のソースコードを使うには？

モーダルウィンドウの作成方法は？

リストで nl を表示するときに変な結果になる理由は？

リストやディクショナリでキーまたは値のみを表示するには？

ループの中断時に数値の指定ができる理由は？

三種類の標準コード記法について

代入演算子で深いコピーを使用する理由は？

定義エラーを起こさずに関数を呼び出せる理由は？

改行と文字を表示するには？

最大化ボタンの無効化およびウィンドウのサイズを変更するには？

現在のソースファイルのパスを取得するには？

英数大小文字を区別しない理由は？

車輪の再発明 (YAPL) の必要性

関数の定義済み仮引数、またはオプションの仮引数とは？

関数型プログラミングへの対応が言及されていますが、これは他になにが起きますか？

ア

アイディアと提案

開発への参戦について

アニメーション

2D ゲームエンジン

アニメーション - イベント

2D ゲームエンジン

アニメーションと関数

2D ゲームエンジン

アプリケーション

開発への参戦について

アプリケーションのデータベース

クラウド経由でのウェブアプリケーションの配布方法

アーランのＢ式

Ring 1.14 の変更履歴

イ

イベントでイベントフィルタによるメソッド

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

イベントのコード

フォームデザイナーの用法

イベントをすべてトレースするには

トレースライブラリとインタラクティブデバッガ

イベントループ

RingLibuv

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

イメージの保存と復元

ODBC 関数

インストール済みパッケージのリスト表示

Ring パッケージ管理プログラム (RingPM)

インタプリタ (VM) 全体の停止なし (GIL なし)

言語設計

インタラクティブデバッガ

トレースライブラリとインタラクティブデバッガ

インタラクティブデバッガの用法

トレースライブラリとインタラクティブデバッガ

ウ

ウィンドウのタイトルバーが画面外に移動してしまう原因は？

よくある質問と回答

ウィンドウの作成

RingLibSDL

ウィンドウの大きさ変更イベント

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

ウィンドウを閉じた後に別のウィンドウを表示するには？

よくある質問と回答

ウィンドウを閉じるためのイベント

RingLibSDL

ウィンドウフラグ

フォームデザイナーの用法

ウェブサイト

開発への参戦について

ウェブライブラリの機能

ウェブ開発 (CGI ライブラリ)

ウェブライブラリ版 Hello World プログラム

ウェブ開発 (CGI ライブラリ)

ウェブ開発 (CGI ライブラリ)

Apache ウェブサーバーの設定

Application クラス

Cookies (クッキー)

Database, ModelBase と ControllerBase クラス

HTML のテーブル

HTML のリスト

HTML の特殊文字

HtmlPage クラス, [1]

HTTP Get の用例

HTTP POST の用例

MVC 版 CRUD の用例

Page クラス

Ring CGI - Hello World プログラム

Ring ファイルの実行可能権限を許可するには

ScriptFunctions クラス

shebang (シェバン) 行の設定

StyleFunctions クラス

Upload Files

URL エンコード

WebLib API

WebPage クラス

はじめに

ウェブライブラリの機能

ウェブライブラリ版 Hello World プログラム

オブジェクト版 Bootstrap ライブラリの用法

オブジェクト版ページ生成

グラデーション

テンプレート

ハッシュ関数

ユーザの登録とログイン

画像の無作為表示

関数版 Bootstrap ライブラリの用法

ウェブ開発のサンプル

Ring 1.14 の変更履歴

エ

エディタの対応

開発への参戦について

エラーの渡しかた

トレースライブラリとインタラクティブデバッガ

エラーメッセージの表示

拡張機能

オ

オブジェクト.属性の用法

スコープ規則

オブジェクトと描画処理

2D ゲームエンジン

オブジェクトのあるリストを表示するには？

よくある質問と回答

オブジェクトのアクセス完了後にコードを実行するには

宣言型プログラミング

オブジェクトの新規作成時に起きていることは？

よくある質問と回答

オブジェクトの表示

オブジェクト指向プログラミング (OOP)

オブジェクトファイルの生成

コマンドラインオプション

オブジェクトライブラリのソースコード

RingQt アプリケーション用のオブジェクトライブラリ

オブジェクトライブラリの改善

Ring 1.5 の変更履歴

オブジェクト・ピッカー

Qt3D によるグラフィックスプログラミング

オブジェクト属性のデフォルト値

Ring 1.8 の変更履歴

オブジェクト指向プログラミング (OOP)

オブジェクト指向による宣言型プログラミング

宣言型プログラミング

オブジェクト指向プログラミング (OOP)

Find() とオブジェクトのリスト

Self.属性 と Self.メソッド() の用法

Setter と Getter

Sort() とオブジェクトのリスト

This.属性 と This.メソッド() の用法

はじめに

オブジェクトの表示

オブジェクト属性のデフォルト値

クラスとオブジェクト

クラス範囲で This を Self として使用

コンポジション

パッケージ

プライベート属性とメソッド

動的属性

括弧を用いたオブジェクトへのアクセス

演算子のオーバーロード

継承

オブジェクト版 Bootstrap ライブラリの用法

ウェブ開発 (CGI ライブラリ)

オブジェクト版ページ生成

ウェブ開発 (CGI ライブラリ)

オプション

Ring2EXE による Ring アプリケーションの配布方法

オンラインアプリケーション

WebAssembly 用 RingQt アプリケーションのビルド方法

カ

カメラ

Qt3D によるグラフィックスプログラミング

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

カラーパレット

RingRayLib によるゲーム開発

カレンダーアプリケーション

Ring 1.12 の変更履歴

カレントフォルダでのパッケージ作成

Ring パッケージ管理プログラム (RingPM)

キ

キュービックマップ

RingRayLib によるゲーム開発

キーボードによる自動移動

2D ゲームエンジン

キーボードイベントと配色

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

キーボードショートカット

フォームデザイナーの用法

キーワード‘And’の変更'

自然言語プログラミング

キーワードの後にくる行を無視

シンタックスの柔軟性

キーワード変更

シンタックスの柔軟性

キー入力

Qt3D によるグラフィックスプログラミング

RingRayLib によるゲーム開発

キー入力とマウス移動イベント

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

ク

グラデーション

ウェブ開発 (CGI ライブラリ)

グラデーションの描画

libui

グラフィックスと 2D ゲームプログラミング (RingAllegro)

TrueType フォント

はじめに

スレッドの用法

描画、アニメーションと入力

画像の寸法変更と回転

透過画像の表示

音声ファイルの再生

グラフィックスライブラリのバインディング

2D ゲームエンジン

グラフィックスライブラリへのインタフェース

2D ゲームエンジン

クエリの実行と結果の表示

ODBC 関数

クエリの結果を表示するには

MySQL 関数

クライアントの用例

RingLibuv

クラウド経由でのウェブアプリケーションの配布方法

Hello World プログラム

Ring ソースコードファイルとパーミッション

はじめに, [1]

アプリケーションのデータベース

ローカルテスト

用法

配布後の更新

クラウド経由でのウェブアプリケーション配布

Ring 1.9 の変更履歴

クラスとオブジェクト

オブジェクト指向プログラミング (OOP)

クラスとメソッドでデフォルトのイベントを使うには

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

クラスによるクライアントの用例

RingLibuv

クラスによるサーバーの用例

RingLibuv

クラスによる命令の定義

自然言語ライブラリの用法

クラスのメソッド内にある括弧からクラスの属性にアクセスするには

スコープ規則

クラスのメソッド内における多重括弧での This.属性 の使用

Ring 1.1 の変更履歴

クラスを定義している間にグローバルな名前の検索を行う理由は？

よくある質問と回答

クラス属性とグローバル変数の間での名前衝突

スコープ規則

クラス属性とローカル変数の間での名前衝突

スコープ規則

クラス範囲で This を Self として使用

Ring 1.8 の変更履歴

オブジェクト指向プログラミング (OOP)

クラス範囲にある括弧内の Self と Self 間との名前衝突

スコープ規則

ケ

ゲームの階層

2D ゲームエンジン

ゲームエンジンのクラス

2D ゲームエンジン

ゲームエンジンの用法 - ゲームウィンドウの作成

2D ゲームエンジン

ゲームストーリー

Gold Magic 800 ゲーム

コ

コマンドラインオプション

CGI への対応

Ring パッケージ管理プログラム (RingPM)

はじめに

オブジェクトファイルの生成

コンパイルの実行

トークンの表示

中間コードの表示

命令演算コードの表示

実行性能の計測

文法規則の表示

最終中間コードの表示

組み込み型オブジェクトファイルの生成

コマンドライン引数の取得

システム関数

コメントの記述

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

コンテキストメニュー

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

コントロールの見本帳

libui

コンパイラと仮想計算機 (VM)

開発への参戦について

コンパイラのエラー

言語リファレンス

コンパイルの実行

コマンドラインオプション

コンポジション

オブジェクト指向プログラミング (OOP)

コードの内側で型を使うには

型ヒントライブラリ

コードの生成時にコード実行するには

コード生成器

コードの追加

コード生成器

コード品質の向上

宣言型プログラミング

コード生成器

Allegro ライブラリ用の設定ファイル

C++ クラスの接続に関するコード生成器の規則

C++ ライブラリ接続用設定ファイルの用法

Qt フレームワーク用の設定ファイル

はじめに

コードの生成時にコード実行するには

コードの追加

スレッドへの対応

ツールの用法

ファイルの読み込み

マネージドクラス

列挙型と数値

定数の定義

定数型

新しい関数の登録

条件式による篩い分け

構造体を接続する関数の生成

構造体メンバ型の決定

設定ファイル

設定ファイルにコメントを書くには

設定ファイルの用例

関数プロトタイプの用法

関数名の接頭辞

静的メソッド

サ

サクラエディタ

テキストエディタの設定

サンプル

開発への参戦について

サンプルソース (作者)

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

サンプル集の描画

libui

サーバーの用例

RingLibuv

シ

システム関数

ChDir() 関数

CurrentDir() 関数

ExeFileName() 関数

ExeFolder() 関数

GetArch() 関数

IsAndroid() 関数

IsFreeBSD() 関数

IsLinux() 関数

IsMacOSX() 関数

IsMSDOS() 関数

IsUnix() 関数

IsWindows() 関数

IsWindows64() 関数

NofProcessors() 関数

PrevFileName() 関数

Shutdown() 関数

SysGet() 関数

SysSet() 関数

System() 関数

SysUnset() 関数

Version() 関数

Windowsnl() 関数

はじめに

コマンドライン引数の取得

使用中のソースファイル名を取得

用例

シンタックスの処理ではなく自作言語の定義機能があり、コードなどで構文解析の使用を可能にしている理由は？

よくある質問と回答

シンタックスの柔軟性

If ステートメントで‘but’の代わりに‘elseif’キーワードを使うには

Package/Class/Function で括弧 { } を使うには

Package/Class/Function キーワードの後で‘endpackage’/’endclass’/’endfunc’を使うには

Package/Class/Function キーワードの後で‘end’を使うには

Ring 1.1 の変更履歴

Switch ステートメントで‘on’の代わりに‘case’を使うには

Switch ステートメントで‘other’の代わりに‘else’キーワードを使うには

はじめに

キーワードの後にくる行を無視

キーワード変更

シンタックスファイルの読み込み

ステートメントの末尾および間でセミコロンを使うには

制御構造で‘end’キーワードを使うには

制御構造の開始と終了で括弧 { } を使うには

変数名に $ と @ を使うには

演算子の変更

関数とメソッドの定義で‘func’の代わりに‘def’を使うには

関数の引数を“()” で囲うには

‘see’と‘give’ の代わりに‘put’と‘get’を使うには

シンタックスの柔軟性を向上

Ring 1.5 の変更履歴

シンタックスファイルの読み込み

シンタックスの柔軟性

シンプルなクライアントとサーバーの用例

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

シーン

Qt3D によるグラフィックスプログラミング

ス

スクリーンショット

Gold Magic 800 ゲーム

スコープ規則

For ループでローカルスコープを使用

GUI アプリケーションのウィンドウごとにクラスを作成するには

Ring における変数と属性の定義方法

Ring による変数の検出方法

Self オブジェクト

はじめに

オブジェクト.属性の用法

クラスのメソッド内にある括弧からクラスの属性にアクセスするには

クラス属性とグローバル変数の間での名前衝突

クラス属性とローカル変数の間での名前衝突

クラス範囲にある括弧内の Self と Self 間との名前衝突

スコープ規則のまとめ

三種類のスコープ

変数の定義と変数へのアクセス

括弧によるクラスメソッド内オブジェクトへのアクセス方法

括弧による現在のオブジェクトスコープの除外方法

スコープ規則のまとめ

スコープ規則

スタンドアロン形式によるコンソールアプリケーションのビルド方法

Ring2EXE による Ring アプリケーションの配布方法

ステータスバーの作成方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

ステートを共有せずに Ring へ Ring を組み込むには

Ring へ Ring を組み込むには

ステートメントの末尾および間でセミコロンを使うには

シンタックスの柔軟性

スプライト - キー入力イベント

2D ゲームエンジン

スプライト - ステートイベント

2D ゲームエンジン

スプライト - マウスイベント

2D ゲームエンジン

スマートガベージコレクター

言語設計

スレッドの作成

Threads

スレッドの用例

RingLibuv

スレッドの用例 - クラスの使用

RingLibuv

スレッドの用法

グラフィックスと 2D ゲームプログラミング (RingAllegro)

スレッドへの対応

コード生成器

スレッド機能の改良

Ring 1.13 の変更履歴

セ

セキュリティとインターネット関数

Decrypt()

Download()

Encrypt()

MD5()

RandBytes()

SendEmail()

SHA1()

SHA224()

SHA256()

SHA384()

SHA512()

はじめに

ファイルのハッシュ

大規模ファイルのハッシュ値計算

用例

ソ

ソケット

TCP クライアント

TCP サーバ

はじめに

定数

関数

ソースコード

Gold Magic 800 ゲーム

ZeroLib の用法

関連情報

ソースコードからのビルド方法

CMake によるビルド方法

Fedora Linux でのビルド方法

macOS でのビルド方法

Microsoft Windows でのビルド方法

Ubuntu Linux でのビルド方法

はじめに

ソースコードの保護

Ring アプリケーションの配布方法 (手動)

ソースコードファイルの階層

プログラムの構造

タ

ダイアログ

WebAssembly 用 RingQt アプリケーションのビルド方法

ダイアログ関数

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

ダウンロード用件

WebAssembly 用 RingQt アプリケーションのビルド方法

チ

チュートリアル: C/C++ による拡張機能の開発方法

Hello World

Say Hello

チュートリアル: C/C++ による拡張機能の開発方法

テーブルの作成

テーブルの更新

リストの生成

リストの表示

リスト項目の増分

リスト項目の篩い分け

リスト項目の複製

二数値の合計

数値リストの総和

異動作環境間での機能拡張のビルド

チュートリアル: 数値を単語表記へ変換

Ring 1.12 の変更履歴

ツ

ツールの用法

コード生成器

ツールバーの作成方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

ツールボックス

フォームデザイナーの用法

ツールメニュー

Ring ノートパッド

テ

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

Cards ゲーム

GUI クラスからの継承

Notepad アプリケーション

QCheckBox の用法

QColorDialog クラスの用法

QComboBox クラスの用法

QDateEdit の用法

QDesktopWidget クラスの用法

QDial の用法

QDockWidget の用法

QFileDialog クラスの用法

QFrame の用法

QInputDialog クラスの用法

QLabel による寸法変更画像の表示方法

QLabel による画像の表示方法

QLabel へハイパーリンクを追加するには

qLCDNumber クラスの用法

QLineEdit イベントと QMessageBox

QListWidget クラスの用法

QMessagebox の用例

QPainter による描画方法

QPrinter による印刷方法

QPrintPreviewDialog の用法

QProgressBar およびタイマーの用法

QProgressBar の用法

QRadioButton と QButtonGroup の用法

QSlider の用法

QSpinBox の用法

Qt と RingQt の違い

QTableWidget の用法

QTabWidget の用法

QTextEdit クラスの用法

QTimer クラスの用法

QTreeView および QFileSystemModel の用法

QTreeWidget と QTreeWidgetItem の用法

QVideoWidget と QMediaPlayer

QWebView の用法

RingQt クラスおよび Qt の取扱説明書

WebLib および GUILib によるレポートの作成方法

Weight History アプリケーション

そのほかのウイジェットイベント

はじめての GUI アプリケーション

はじめに

イベントでイベントフィルタによるメソッド

イベントループ

キー入力とマウス移動イベント

クラスとメソッドでデフォルトのイベントを使うには

コンテキストメニュー

シンプルなクライアントとサーバーの用例

ステータスバーの作成方法

ダイアログ関数

ツールバーの作成方法

テキストの回転

フォーカスの変更

マウスによるオブジェクトの移動方法

メニューバーとスタイルシートの用例

メニューバーの作成方法

レイアウトの用法

動的オブジェクト

新しいクラス名 - 1 からインデックスを開始

正規表現

移動可能ラベルの用例

複数ウィンドウの作成方法

音声の再生

デスクトップスクリーンショットアプリケーション

Ring 1.11 の変更履歴

デモプログラム

はじめに

メインメニュー

デモプロジェクト - 2D ゲームエンジン

Ring 1.1 の変更履歴

データの表現方法

言語設計

データベースからイメージを復元するには

MySQL 関数

データベースのイメージを保存するには

MySQL 関数

データベースの作成

MySQL 関数

データ型

Ascii() 関数

Char() 関数

Dec()

Hex() 関数

Hex2str() 関数

IsAlNum() 関数

IsAlpha() 関数

IsCntrl() 関数

IsDigit() 関数

IsGraph() 関数

IsList() 関数

IsLower() 関数

isNULL() 関数

IsNumber() 関数

IsPrint() 関数

IsPunct() 関数

IsSpace() 関数

IsString() 関数

IsUpper() 関数

IsXdigit() 関数

Number() 関数

Str2hex() 関数

String() 関数

Type() 関数

はじめに

データ型の判定

変換処理

字種判定

データ型の判定

データ型

テキストの回転

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

テキストの押し出し

Qt3D によるグラフィックスプログラミング

テキストの描画

2D ゲームエンジン

libui

テキストの移動

2D ゲームエンジン

テキストエディタの設定

Atom

Code Browser

Emacs エディタ

Geany

Notepad++

SpaceVim

Sublime Text 2

Visual Studio Code

Visual Studio IDE

はじめに

サクラエディタ

秀丸エディタ

テクスチャ

Qt3D によるグラフィックスプログラミング

テクスチャの入力

RingRayLib によるゲーム開発

テストの改善

Ring 1.10 の変更履歴

テンプレート

ウェブ開発 (CGI ライブラリ)

テーブルの作成

チュートリアル: C/C++ による拡張機能の開発方法

テーブルの作成とデータの挿入

MySQL 関数

テーブルの更新

チュートリアル: C/C++ による拡張機能の開発方法

ト

トランザクションおよびコミットとロールバックの用法

ODBC 関数

トランザクションの用例

MySQL 関数

トレースライブラリとインタラクティブデバッガ

Ring 1.5 の変更履歴

はじめに

イベントをすべてトレースするには

インタラクティブデバッガ

インタラクティブデバッガの用法

エラーの渡しかた

トレースライブラリの読み込み

ブレークポイント

ブレークポイントの禁止

プログラムを一行ずつ実行

関数と制御フローのトレース

トレースライブラリの改善

Ring 1.7 の変更履歴

トレースライブラリの読み込み

トレースライブラリとインタラクティブデバッガ

トークンの表示

コマンドラインオプション

トーラスの描画

Qt3D によるグラフィックスプログラミング

ネ

ネイティブ C や C++ よりも Ring を選ぶ利点は？

よくある質問と回答

ハ

バイナリ文字の統合

Ring 1.8 の変更履歴

文字列

パッケージ

オブジェクト指向プログラミング (OOP)

パッケージのインストール

Ring パッケージ管理プログラム (RingPM)

パッケージの全削除

Ring パッケージ管理プログラム (RingPM)

パッケージの削除

Ring パッケージ管理プログラム (RingPM)

パッケージの更新

Ring パッケージ管理プログラム (RingPM)

パッケージの検索

Ring パッケージ管理プログラム (RingPM)

パッケージスクリプトの実行

Ring パッケージ管理プログラム (RingPM)

パッケージテンプレートの新規作成

Ring パッケージ管理プログラム (RingPM)

パッケージ概要ファイル

Ring パッケージ管理プログラム (RingPM)

ハッシュ関数

ウェブ開発 (CGI ライブラリ)

ヒ

ビジュアル実装

言語設計

ビット演算子

演算子

ヒストグラム

libui

フ

ブラウザメニュー

Ring ノートパッド

ブレークポイント

トレースライブラリとインタラクティブデバッガ

ブレークポイントの禁止

トレースライブラリとインタラクティブデバッガ

プライベート属性とメソッド

オブジェクト指向プログラミング (OOP)

プログラムの実行

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

プログラムの構造

Load Again

Load Package

はじめに

ソースコードファイルの階層

複数のソースコードファイルを扱う方法

プログラムの直列実行

Ring へ Ring を組み込むには

プログラムを一行ずつ実行

トレースライブラリとインタラクティブデバッガ

プログラムメニュー

Ring ノートパッド

プロジェクトで複数のソースコードを使うには？

よくある質問と回答

プロジェクトのビルド

Android 用ゲームのビルド方法

プロジェクトのフォルダ

Android 用ゲームのビルド方法

プロジェクトのメインファイル

Ring ノートパッド

プロジェクトの階層

2D ゲームエンジン

プロパティ

フォームデザイナーの用法

ファイル

Clearerr()

Dir()

Direxists()

Fclose()

Feof()

Ferror()

Fexists()

Fflush()

Fgetc()

Fgetpos()

Fgets()

Fopen()

Fputc()

Fputs()

Fread()

Freopen()

Fseek()

Fsetpos()

Ftell()

Fwrite()

Getpathtype()

Perror()

Read() 関数によるファイル内容の読み取り

Remove()

Rename()

Rewind()

Tempfile()

Tempname()

Ungetc()

Write() 関数によるファイルへの書き込み

はじめに

数値とバイト

用例

ファイルのハッシュ

セキュリティとインターネット関数

ファイルの読み込み

コード生成器

ファイルメニュー

Ring ノートパッド

ファーストパーソンカメラ

RingRayLib によるゲーム開発

フォルダ構成の改善

Ring 1.13 の変更履歴

フォントの用法

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

フォーカスの変更

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

フォームの実行

フォームデザイナーの用法

フォームの翻訳

多国語アプリケーション

フォームデザイナー

Ring 1.3 の変更履歴

フォームデザイナーのウィンドウ

フォームデザイナーの用法

フォームデザイナーの改善

Ring 1.8 の変更履歴

フォームデザイナーの用法

その他のサンプルとテスト

はじめに

イベントのコード

ウィンドウフラグ

キーボードショートカット

ツールボックス

プロパティ

フォームの実行

フォームデザイナーのウィンドウ

メニューバーデザイナー

レイアウトの用法

項目の入力

フォームデザイナーの翻訳

多国語アプリケーション

フォームデザイナーをモバイル機器用にビルドするには (RingQt)

Ring2EXE による Ring アプリケーションの配布方法

フレームアクション

Qt3D によるグラフィックスプログラミング

ヘ

ベジェ曲線

RingRayLib によるゲーム開発

ヘルプメニュー

Ring ノートパッド

マ

マウスによるオブジェクトの移動方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

マウスのイベント

RingLibSDL

マウスイベント

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

マウスホイール

RingRayLib によるゲーム開発

マウス入力

RingRayLib によるゲーム開発

マップ

2D ゲームエンジン

マップイベント

2D ゲームエンジン

マネージドクラス

コード生成器

マルチタッチ入力

RingRayLib によるゲーム開発

メ

メインメニュー

デモプログラム

メニューイベント

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

メニューバーとスタイルシートの用例

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

メニューバーの作成方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

メニューバーの用法

libui

メニューバーデザイナー

フォームデザイナーの用法

メモリ管理の改善

Ring 1.9 の変更履歴

モ

モジュールの組織化

拡張機能

モデル

Qt3D によるグラフィックスプログラミング

モデルテクスチャ

Qt3D によるグラフィックスプログラミング

モバイル機器向けアプリケーションおよびゲームの配布

Ring アプリケーションの配布方法 (手動)

モバイル版 Cards ゲームのビルド方法 (RingQt)

Ring2EXE による Ring アプリケーションの配布方法

モバイル版 Weight History アプリケーションのビルド方法 (RingQt)

Ring2EXE による Ring アプリケーションの配布方法

モバイル用 RingQt アプリケーションのビルド方法

Android SDK の更新

Android 開発についての注釈 (RingQt)

Qt for Android のインストール

Ring アプリケーション用の Qt プロジェクト

Ring2EXE の用法

はじめに

開発環境のダウンロード

モバイル用アプリケーションの配布方法 (RingQt)

Ring2EXE による Ring アプリケーションの配布方法

モーダルウィンドウの作成方法は？

よくある質問と回答

ユ

ユリウス積日カレンダーアプリケーション

Ring 1.12 の変更履歴

ユーザの登録とログイン

ウェブ開発 (CGI ライブラリ)

ユーザ型

型ヒントライブラリ

ラ

ライセンス

はじめに

ライブラリのソースコード

bignumber

ライブラリの読み込み

bignumber

PostgreSQL

RingLibSDL

リ

リスト

はじめに

リストと再帰による多次元配列の作成方法

リストによる仮引数または実引数の渡しかた

リストのコピー

リストのサイズ取得

リストの作成

リストを定義時に使用するには

リストを関数へ渡すには

リスト配列による仮引数または実引数の渡しかた

リスト項目の削除

リスト項目の取得

リスト項目の挿入

リスト項目の追加

リスト項目への代入

反転

多重リスト

整列

文字列インデックスによるリストへのアクセス

検索

第一級リスト

項目の交換

リスト: リストまたはハッシュテーブルを引数として返すには

リストで nl を表示するときに変な結果になる理由は？

よくある質問と回答

リストと再帰による多次元配列の作成方法

リスト

リストによる仮引数または実引数の渡しかた

リスト

リストのコピー

リスト

リストのサイズ取得

リスト

リストの作成

リスト

性能改善に関する情報

リストの生成

チュートリアル: C/C++ による拡張機能の開発方法

リストの表示

チュートリアル: C/C++ による拡張機能の開発方法

リストへオブジェクトを作成するには

宣言型プログラミング

リストやディクショナリでキーまたは値のみを表示するには？

よくある質問と回答

リストを定義時に使用するには

リスト

リストを関数へ渡すには

リスト

リスト配列による仮引数または実引数の渡しかた

リスト

リスト項目の削除

リスト

リスト項目の取得

リスト

リスト項目の増分

チュートリアル: C/C++ による拡張機能の開発方法

リスト項目の挿入

リスト

リスト項目の篩い分け

チュートリアル: C/C++ による拡張機能の開発方法

リスト項目の複製

チュートリアル: C/C++ による拡張機能の開発方法

リスト項目の追加

リスト

リスト項目への代入

リスト

リファレンス

Threads

tilengine

リフレクションとメタプログラミング

addattribute()

addmethod()

attributes()

cfunctions()

classes()

classname()

functions()

getattribute()

globals()

isattribute()

iscfunction()

isclass()

isfunction()

isglobal()

islocal()

ismethod()

isobject()

ispackage()

ispackagesclass()

isprivateattribute()

isprivatemethod()

locals()

mergemethods()

methods()

objectid()

packagename()

packages()

packagesclasses()

setattribute()

はじめに

ル

ループの中断時に数値の指定ができる理由は？

よくある質問と回答

ループ処理

制御構造 - 第一形式

制御構造 - 第三形式

制御構造 - 第二形式

レ

レイアウトの用法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

フォームデザイナーの用法

ロ

ローカルテスト

クラウド経由でのウェブアプリケーションの配布方法

一

一秒あたりのフレーム数

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

三

三種類のスコープ

スコープ規則

三種類の標準コード記法について

よくある質問と回答

三角形の回転

RingOpenGL と RingFreeGLUT の用法 (3D グラフィックス)

上

上達のコツ

Gold Magic 800 ゲーム

中

中間コードの表示

コマンドラインオプション

主

主な機能

はじめに

事

事務所の描画

Qt3D によるグラフィックスプログラミング

二

二個の立方体

RingRayLib によるゲーム開発

二数値の合計

チュートリアル: C/C++ による拡張機能の開発方法

二枚の画像切り替え

RingLibSDL

二階層のループからの脱出

制御構造 - 第一形式

代

代入演算子

演算子

代入演算子で深いコピーを使用する理由は？

よくある質問と回答

仮

仮引数の個数を検査するには

拡張機能

仮引数の値を取得するには

拡張機能

仮引数の型を検査するには

拡張機能

仮引数の宣言

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

仮引数の送信

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

仮想計算機 (VM) の命令

言語リファレンス

低

低水準関数

callgc()

getpointer()

ispointer()

memcpy()

nullpointer()

object2pointer()

pointer2object()

pointer2string()

ptrcmp()

ringvm_callfunc()

RingVM_CallList()

RingVM_CFunctionsList()

RingVM_ClassesList()

ringvm_evalinscope()

RingVM_FilesList()

RingVM_FunctionsList()

ringvm_give()

ringvm_hideerrorMsg()

ringvm_info()

RingVM_MemoryList()

RingVM_PackagesList()

ringvm_passerror()

ringvm_scopescount()

ringvm_see()

ringvm_settrace()

ringvm_tracedata()

ringvm_traceevent()

ringvm_tracefunc()

setpointer()

space()

varptr()

はじめに

用例 - トレースライブラリ

用例 - トレース関数の用法

低水準関数の追加

Ring 1.13 の変更履歴

作

作者の連絡先

関連情報

使

使用中のソースファイル名を取得

システム関数

例

例外処理

制御構造 - 第三形式

制御構造 - 第二形式

入

入門

tilengine

入門 - 第一形式

Hello World

はじめに

コメントの記述

プログラムの実行

実行可能ファイルの作成

式の表示後に ? で改行するには

文末終端子は明示不要

標準入力の取得

英数大小文字同一視

複数行リテラル

入門 - 第三形式

Hello World

はじめに

コメントの記述

プログラムの実行

実行可能ファイルの作成

文末終端子は明示不要

標準入力の取得

英数大小文字同一視

複数行リテラル

入門 - 第二形式

Hello World

はじめに

コメントの記述

プログラムの実行

実行可能ファイルの作成

文末終端子は明示不要

標準入力の取得

英数大小文字同一視

複数行リテラル

全

全画面表示

RingRayLib によるゲーム開発

共

共有ライブラリ

拡張機能

円

円柱の描画

Qt3D によるグラフィックスプログラミング

円錐の描画

Qt3D によるグラフィックスプログラミング

再

再帰処理

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

分

分岐処理

制御構造

制御構造 - 第三形式

制御構造 - 第二形式

列

列挙型と数値

コード生成器

制

制御構造

分岐処理

制御構造 - 第一形式

Do ～ Again ループ

Exit 命令

For in でのリスト変更方法

For in ループ

For ループ

Loop 命令

Step オプション

Switch ステートメント

While ループ

はじめに

ループ処理

二階層のループからの脱出

短絡評価

評価方法の解説

制御構造 - 第三形式

For In ループ

For ループ

If ステートメント

Switch ステートメント

While ループ

はじめに

ループ処理

例外処理

分岐処理

制御構造 - 第二形式

For in ループ

For ループ

If ステートメント

Switch ステートメント

はじめに

ループ処理

例外処理

分岐処理

制御構造で‘end’キーワードを使うには

シンタックスの柔軟性

制御構造の開始と終了で括弧 { } を使うには

シンタックスの柔軟性

動

動作検証

開発への参戦について

動作環境のエラー

言語リファレンス

動機

はじめに

動的オブジェクト

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

動的型付け

変数

動的属性

オブジェクト指向プログラミング (OOP)

十

十六進数を使うには

算術関数

参

参照によりオブジェクトを返すには

宣言型プログラミング

参照による Self 返し

Ring 1.3 の変更履歴

参考文献

関数型プログラミング

反

反転

リスト

収

収録先

はじめての拡張機能開発

取

取扱説明書

開発への参戦について

取扱説明書の増補

Ring 1.1 の変更履歴

Ring 1.11 の変更履歴

取扱説明書の改訂

Ring 1.7 の変更履歴

命

命令の定義

自然言語ライブラリの用法

命令演算コードの表示

コマンドラインオプション

品

品質の改善

Ring 1.2 の変更履歴

Ring 1.5 の変更履歴

型

型ヒントを使う理由

型ヒントライブラリ

型ヒントライブラリ

Ring 1.5 の変更履歴

コードの内側で型を使うには

ユーザ型

型ヒントを使う理由

型ヒントライブラリについて

用例

規則

基

基本ウィンドウ

RingRayLib によるゲーム開発

基本図形

RingRayLib によるゲーム開発

変

変換処理

データ型

変数

はじめに

動的型付け

暗黙的型変換

深いコピー

変数のスコープ

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

変数の定義と変数へのアクセス

スコープ規則

変数名に $ と @ を使うには

シンタックスの柔軟性

変更: 基本拡張機能を Ring VM から分離

Ring 1.4 の変更履歴

多

多国語アプリケーション

String2Constant の用法

はじめに

フォームの翻訳

フォームデザイナーの翻訳

多重リスト

リスト

大

大規模ファイルのハッシュ値計算

セキュリティとインターネット関数

字

字種判定

データ型

定

定数

ソケット

定数の定義

コード生成器

定数型

コード生成器

定義エラーを起こさずに関数を呼び出せる理由は？

よくある質問と回答

実

実用性

時速でデキるアプリケーション開発

実行可能ファイルの作成

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

実行性能の向上

Ring 1.11 の変更履歴

実行性能の改善

Ring 1.8 の変更履歴

実行性能の計測

コマンドラインオプション

実行時のエラー

言語リファレンス

実行結果を文字列で保存

RingLibCurl

宣

宣言型プログラミング

はじめに

オブジェクトのアクセス完了後にコードを実行するには

オブジェクト指向による宣言型プログラミング

コード品質の向上

リストへオブジェクトを作成するには

参照によりオブジェクトを返すには

宣言型言語の定義

言語設計

対

対話型プログラミング言語シェル

対話型プログラミング言語シェル, [1]

平

平面の描画

Qt3D によるグラフィックスプログラミング

幾

幾何学的図形

RingRayLib によるゲーム開発

式

式の表示後に ? で改行するには

入門 - 第一形式

当

当たり判定の領域

RingRayLib によるゲーム開発

性

性能改善に関する情報

len() と For ループの使用

はじめに

リストの作成

算術演算子

関数とメソッドの呼び出し

戦

戦士たちへ心からの敬意を

開発への参戦について

拡

拡張機能

Fopen() および Fclose() の実装

MySQL_Columns() 関数の実装

RING API - リスト関数

RING API - 文字列関数

ring_ext.c

ring_ext.h

Sin() 関数の実装

Using RING_API_RETMANAGEDCPOINTER() の用法

はじめに

エラーメッセージの表示

モジュールの組織化

仮引数の個数を検査するには

仮引数の値を取得するには

仮引数の型を検査するには

共有ライブラリ

返値

関数の構造

関数プロトタイプ

拡張機能の作成手順

はじめての拡張機能開発

拡張機能用のコード生成器の改善

Ring 1.1 の変更履歴

Ring 1.5 の変更履歴

拡張機能用のコード生成器の更新

Ring 1.9 の変更履歴

拡張機能用のドキュメント生成器の改善

Ring 1.5 の変更履歴

拡張機能用コード生成器の改善

Ring 1.8 の変更履歴

拡張機能開発者への告知

Ring 1.8 の変更履歴

括

括弧によるクラスメソッド内オブジェクトへのアクセス方法

スコープ規則

括弧による現在のオブジェクトスコープの除外方法

スコープ規則

括弧を用いたオブジェクトへのアクセス

オブジェクト指向プログラミング (OOP)

指

指定位置から末尾までの部分文字列を取得するには

文字列

接

接続の開始と終了

ODBC 関数

描

描画、アニメーションと入力

グラフィックスと 2D ゲームプログラミング (RingAllegro)

改

改行と文字を表示するには？

よくある質問と回答

数

数値とバイト

ファイル

数値とバイト間の変換

Ring 1.4 の変更履歴

数値の末尾に f を使うには

算術関数

数値の桁間に _ を使うには

算術関数

数値リストの総和

チュートリアル: C/C++ による拡張機能の開発方法

数値処理の改良

Ring 1.14 の変更履歴

整

整列

リスト

文

文字のつづりを変換するには

文字列

文字の位置を数値で取得するには

文字列

文字列

Copy()

Left()

Lines()

Right()

str2list() と list2str()

strcmp()

Substr()

Trim()

はじめに

バイナリ文字の統合

指定位置から末尾までの部分文字列を取得するには

文字のつづりを変換するには

文字の位置を数値で取得するには

文字列にある文字へのアクセス

文字列の長さを取得するには

文字列リテラル

部分文字列の検索

部分文字列を別の部分文字列へ置換するには

文字列にある文字へのアクセス

文字列

文字列の長さを取得するには

文字列

文字列インデックスによるリストへのアクセス

リスト

文字列リテラル

文字列

文字列処理における実行性能の向上

Ring 1.14 の変更履歴

文書読み上げアプリケーション

Ring 1.11 の変更履歴

文末終端子は明示不要

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

文法規則の表示

コマンドラインオプション

新

新しいクラス名 - 1 からインデックスを開始

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

新しい命令: Load Package

Ring 1.7 の変更履歴

新しい属性を定義するためにクラス範囲で Self.属性 の使用

Ring 1.1 の変更履歴

新しい関数

Ring 1.2 の変更履歴

Ring 1.3 の変更履歴

新しい関数と変更

Ring 1.1 の変更履歴

新しい関数の登録

コード生成器

新ツール - Folder2qrc

Ring 1.6 の変更履歴

新ツール - Ring2EXE

Ring 1.6 の変更履歴

新作ゲーム

Ring 1.10 の変更履歴

Ring 1.9 の変更履歴

新作サンプル集

Ring 1.14 の変更履歴

Ring 1.15 の変更履歴

新機能と変更リスト

Ring 1.1 の変更履歴

Ring 1.10 の変更履歴

Ring 1.11 の変更履歴

Ring 1.12 の変更履歴

Ring 1.13 の変更履歴

Ring 1.14 の変更履歴

Ring 1.15 の変更履歴

Ring 1.2 の変更履歴

Ring 1.3 の変更履歴

Ring 1.4 の変更履歴

Ring 1.5 の変更履歴

Ring 1.6 の変更履歴

Ring 1.7 の変更履歴

Ring 1.8 の変更履歴

Ring 1.9 の変更履歴

日

日付と時刻

AddDays()

clock()

ClosPerSecond()

Date()

DiffDays()

EpochTime()

Time()

TimeList()

はじめに

明

明確な設計目標

言語設計

時

時速でデキるアプリケーション開発

Analog Clock

FetchStockData アプリケーション

Fifteen Puzzle ゲーム 2

Google API Shortener アプリケーション

Ring の評判

Squares Puzzle ゲーム

Video-Music-Player アプリケーション

はじめに

実用性

本書のサンプル

画期的

暗

暗黙的型変換

変数

最

最大化ボタンの無効化およびウィンドウのサイズを変更するには？

よくある質問と回答

最終中間コードの表示

コマンドラインオプション

本

本書のサンプル

時速でデキるアプリケーション開発

本物の自然言語コード

自然言語プログラミング

条

条件式による篩い分け

コード生成器

検

検索

リスト

構

構造体を接続する関数の生成

コード生成器

構造体メンバ型の決定

コード生成器

標

標準入力の取得

GetChar() 関数

Give 命令

Input() 関数

はじめに

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

正

正規表現

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

歴

歴史

はじめに

沿

沿革

自然言語プログラミング

注

注目の新作ゲーム : Gold Magic 800

Ring 1.9 の変更履歴

深

深いコピー

変数

演

演算子

そのほかの演算子

はじめに

ビット演算子

代入演算子

演算子の評価優先順位

算術演算子

自然言語ライブラリの用法

論理演算子

関係演算子

演算子 ‘+’ の変更

自然言語プログラミング

演算子のオーバーロード

オブジェクト指向プログラミング (OOP)

演算子の変更

シンタックスの柔軟性

演算子の評価優先順位

演算子

無

無名関数と多重関数

関数型プログラミング

現

現在のクラスで名前を共有する関数とメソッドを呼び出すには

関数とメソッドのスコープ規則

現在のソースファイルのパスを取得するには？

よくある質問と回答

球

球体の描画

Qt3D によるグラフィックスプログラミング

用

用例

bignumber

FoxRing 関数リファレンス

PostgreSQL

Ring2EXE による Ring アプリケーションの配布方法

RingMurmurHash 関数リファレンス

RingQt アプリケーション用のオブジェクトライブラリ

システム関数

セキュリティとインターネット関数

ファイル

型ヒントライブラリ

算術関数

自然言語プログラミング

用例 - トレースライブラリ

低水準関数

用例 - トレース関数の用法

低水準関数

用法

クラウド経由でのウェブアプリケーションの配布方法

画

画像の寸法変更と回転

グラフィックスと 2D ゲームプログラミング (RingAllegro)

画像の描画

RingRayLib によるゲーム開発

画像の無作為表示

ウェブ開発 (CGI ライブラリ)

画像の表示

RingLibSDL

画像生成

RingRayLib によるゲーム開発

画期的

時速でデキるアプリケーション開発

異

異動作環境間での機能拡張のビルド

チュートリアル: C/C++ による拡張機能の開発方法

短

短絡評価

制御構造 - 第一形式

秀

秀丸エディタ

テキストエディタの設定

移

移動可能ラベルの用例

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

立

立方体の描画

Qt3D によるグラフィックスプログラミング

第

第一級リスト

リスト

第一級関数

関数型プログラミング

等

等式関数

関数型プログラミング

算

算術演算子

性能改善に関する情報

演算子

算術関数

Decimals()

Random()

SRandom()

Unsigned()

はじめに

十六進数を使うには

数値の末尾に f を使うには

数値の桁間に _ を使うには

用例

関数のリスト

簡

簡明

言語設計

簡潔なシンタックス

言語設計

純

純粋関数

関数型プログラミング

組

組み込み型オブジェクトファイルの生成

Ring 1.12 の変更履歴

コマンドラインオプション

組織化の奨励

言語設計

継

継承

オブジェクト指向プログラミング (OOP)

編

編集メニュー

Ring ノートパッド

美

美しい自然言語コード

自然言語プログラミング

自

自然言語ステートメントの定義

言語設計

自然言語プログラミング

BraceError() メソッド

BraceExprEval メソッド

BraceStart と BraceEnd メソッド

Natural コードで Eval() を使うには

はじめに

キーワード‘And’の変更'

本物の自然言語コード

沿革

演算子 ‘+’ の変更

用例

美しい自然言語コード

‘=’ 演算子を ‘is’ へ変更するには

自然言語プログラミング機能を改善

Ring 1.1 の変更履歴

自然言語ライブラリ

Ring 1.4 の変更履歴

自然言語ライブラリ - デモプログラム

自然言語ライブラリの用法

自然言語ライブラリの用法

はじめに

クラスによる命令の定義

命令の定義

演算子

自然言語ライブラリ - デモプログラム

英

英数大小文字を区別しない理由は？

よくある質問と回答

英数大小文字同一視

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

表

表示メニュー

Ring ノートパッド

複

複数のソースコードファイルを扱う方法

プログラムの構造

複数の立方体

RingOpenGL と RingAllegro の用法 (3D グラフィックス)

複数ウィンドウの作成方法

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

複数オブジェクト

Qt3D によるグラフィックスプログラミング

複数行リテラル

入門 - 第一形式

入門 - 第三形式

入門 - 第二形式

規

規則

型ヒントライブラリ

視

視線追従

RingRayLib によるゲーム開発

言

言語のキーワード

言語リファレンス

言語の文法

言語リファレンス

言語の関数

言語リファレンス

言語リファレンス

はじめに

コンパイラのエラー

仮想計算機 (VM) の命令

動作環境のエラー

実行時のエラー

言語のキーワード

言語の文法

言語の関数

言語設計

Ring Ring をオススメする理由

はじめに

ほとんどのアプリケーションで十分に高速動作します

インタプリタ (VM) 全体の停止なし (GIL なし)

スマートガベージコレクター

データの表現方法

ビジュアル実装

宣言型言語の定義

明確な設計目標

簡明

簡潔なシンタックス

組織化の奨励

自然言語ステートメントの定義

透過型実装

違和感の排除

設

設定ファイル

コード生成器

設定ファイルにコメントを書くには

コード生成器

設定ファイルの用例

コード生成器

評

評価方法の解説

制御構造 - 第一形式

論

論理演算子

演算子

警

警告表示のオプション

Ring 1.2 の変更履歴

車

車輪の再発明 (YAPL) の必要性

よくある質問と回答

返

返値

拡張機能

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

追

追加の用例

Threads

追加サンプル

tilengine

追加サンプル集の描画

libui

透

透過型実装

言語設計

透過画像の表示

RingLibSDL

グラフィックスと 2D ゲームプログラミング (RingAllegro)

違

違和感の排除

言語設計

部

部分文字列の検索

文字列

部分文字列を別の部分文字列へ置換するには

文字列

配

配布メニュー

Ring ノートパッド

配布後の更新

クラウド経由でのウェブアプリケーションの配布方法

長

長方形の拡縮

RingRayLib によるゲーム開発

長方形の描画

RingLibSDL

開

開発への参戦について

C/C++ による拡張機能

Ring のライブラリ

はじめに

アイディアと提案

アプリケーション

ウェブサイト

エディタの対応

コンパイラと仮想計算機 (VM)

サンプル

動作検証

取扱説明書

戦士たちへ心からの敬意を

開発環境のダウンロード

モバイル用 RingQt アプリケーションのビルド方法

関

関係演算子

演算子

関数

RingRayLib によるゲーム開発

ソケット

関数 - 第一形式

Main 関数

はじめに

仮引数の宣言

仮引数の送信

再帰処理

変数のスコープ

返値

関数の呼び出し, [1]

関数の定義

関数 - 第三形式

Main 関数

はじめに

仮引数の宣言

仮引数の送信

再帰処理

変数のスコープ

返値

関数の呼び出し

関数の定義

関数 - 第二形式

Main 関数

はじめに

仮引数の宣言

仮引数の送信

再帰処理

変数のスコープ

返値

関数の定義

関数とメソッドのスコープ規則

Ring が関数とメソッドを見つける方法は？

はじめに

現在のクラスで名前を共有する関数とメソッドを呼び出すには

関数とメソッドの間で名前を共有する方法の用例

関数とメソッドの呼び出し

性能改善に関する情報

関数とメソッドの定義で‘func’の代わりに‘def’を使うには

シンタックスの柔軟性

関数とメソッドの間で名前を共有する方法の用例

関数とメソッドのスコープ規則

関数と制御フローのトレース

トレースライブラリとインタラクティブデバッガ

関数のリスト

算術関数

関数の動作検証

はじめての拡張機能開発

関数の呼び出し

関数 - 第一形式, [1]

関数 - 第三形式

関数の定義

関数 - 第一形式

関数 - 第三形式

関数 - 第二形式

関数の定義済み仮引数、またはオプションの仮引数とは？

よくある質問と回答

関数の引数を“()” で囲うには

シンタックスの柔軟性

関数の改良

Ring 1.14 の変更履歴

Ring 1.2 の変更履歴

関数の構造

拡張機能

関数の追加

Ring 1.14 の変更履歴

関数プロトタイプ

拡張機能

関数プロトタイプの用法

コード生成器

関数名の接頭辞

コード生成器

関数型プログラミング

はじめに

参考文献

無名関数と多重関数

第一級関数

等式関数

純粋関数

高階関数

関数型プログラミングへの対応が言及されていますが、これは他になにが起きますか？

よくある質問と回答

関数版 Bootstrap ライブラリの用法

ウェブ開発 (CGI ライブラリ)

関連情報

Ring のウェブサイト

はじめに

ソースコード

作者の連絡先

静

静的メソッド

コード生成器

音

音声の再生

2D ゲームエンジン

RingLibSDL

デスクトップ、 WebAssembly とモバイル開発 (RingQt)

音声の読み込みと再生

RingRayLib によるゲーム開発

音声ファイルの再生

グラフィックスと 2D ゲームプログラミング (RingAllegro)

音楽のストリーミング再生

RingRayLib によるゲーム開発

項

項目の交換

リスト

項目の入力

フォームデザイナーの用法

顧

顧客情報フォーム

Ring 1.14 の変更履歴

高

高階関数

関数型プログラミング