#include <CBulletGenericObject.h>
Public Member Functions | |
| cBulletGenericObject (cBulletWorld *a_world) | |
| Constructor of cBulletGenericBody. More... | |
| virtual | ~cBulletGenericObject () |
| Destructor of cBulletGenericBody. More... | |
| virtual void | updateBodyPosition (void) |
| This method updates the position and orientation from the Bullet model to CHAI3D model. More... | |
| virtual void | setMass (const double a_mass) |
| This method assigns a mass value to this object. More... | |
| double | getMass () const |
| This method returns the mass value for this object. More... | |
| virtual void | setInertia (const cVector3d &a_inertia) |
| This method assigns an inertia properties to this object. More... | |
| cVector3d | getInertia () |
| This method returns the inertia properties of this object. More... | |
| virtual void | setMassInertia (const double a_mass, const cVector3d &a_inertia) |
| This method assigns a mass and an inertia to this object. More... | |
| virtual void | estimateInertia () |
| This method estimates the inertia properties for this object. More... | |
| virtual void | setStatic (bool a_static) |
| This method enables of disables the object to be static in the world. More... | |
| virtual bool | getStatic () const |
| This method returns true if the object is static, false otherwise. More... | |
| virtual void | buildDynamicModel () |
| This method builds a dynamic representation of the object in the Bullet world. More... | |
| virtual void | updatePositionFromDynamics () |
| This method updates the CHAI3D position representation from the Bullet dynamics engine. More... | |
| void | setSurfaceFriction (const double a_friction) |
| This method assign a coefficient of friction to this object. More... | |
| double | getSurfaceFriction () |
| This method returns the coefficient of friction for this object. More... | |
| void | addExternalForce (const cVector3d &a_force) |
| This method applies an external force at the center of mass of this object. More... | |
| void | addExternalTorque (const cVector3d &a_torque) |
| This method applies an external torque at the center of mass of of this object. More... | |
| void | addExternalForceAtPoint (const cVector3d &a_force, const cVector3d &a_relativePos) |
| This method applies an external force at a given position described in global coordinates to this object. More... | |
| void | setDamping (const double &a_dampingLin, const double &a_dampingAng) |
| This method assigns a linear and angular damping term to the object. More... | |
| double | getDampingLin () |
| This method returns the linear damping term for this object. More... | |
| double | getDampingAng () |
| This method returns the angular damping term for this object. More... | |
Public Attributes | |
| cBulletWorld * | m_dynamicWorld |
| Bullet world. More... | |
| btRigidBody * | m_bulletRigidBody |
| Bullet rigid body. More... | |
| btCollisionShape * | m_bulletCollisionShape |
| Bullet collision shape. More... | |
| btDefaultMotionState * | m_bulletMotionState |
| Bullet motion state. More... | |
Protected Member Functions | |
| virtual void | initialize (cBulletWorld *a_world) |
| This method initializes the Bullet object. More... | |
Protected Attributes | |
| bool | m_static |
| If true then object is static and does not move, false otherwise. More... | |
| double | m_mass |
| Mass property. More... | |
| cVector3d | m_inertia |
| Inertia properties. More... | |
|
inline |
|
virtual |
This method initializes the Bullet dynamic model.
|
inlinevirtual |
|
virtual |
This method assigns a mass value to this object.
| a_mass | Mass value. |
|
inline |
|
virtual |
This method assigns inertia properties to this object.
| a_inertia | Inertia properties. |
|
inline |
|
virtual |
This method assigns mass and inertia properties to this object.
| a_mass | Mass value. |
| a_inertia | Inertia properties. |
|
virtual |
This method estimates the inertia properties for this object. Make sure to define its mass beforehand.
|
virtual |
This method enables of disables the object to be static in the world.
| a_static | If true then object is static, false it is dynamic as long as mass and inertia properties have been defined. |
|
inlinevirtual |
|
virtual |
This method builds a dynamic representation of the object in the Bullet world.
Reimplemented in chai3d::cBulletVehicle.
|
inlinevirtual |
Reimplemented in chai3d::cBulletMesh, chai3d::cBulletMultiMesh, and chai3d::cBulletVehicle.
| void chai3d::cBulletGenericObject::setSurfaceFriction | ( | const double | a_friction | ) |
This method assign a coefficient of friction to this object.
| double chai3d::cBulletGenericObject::getSurfaceFriction | ( | ) |
This method returns the coefficient of friction for this object. Zero is returned if the object has no dynamic model.
| void chai3d::cBulletGenericObject::addExternalForce | ( | const cVector3d & | a_force | ) |
This method applies an external force at the center of mass of the object.
| a_force | Force vector. |
| void chai3d::cBulletGenericObject::addExternalTorque | ( | const cVector3d & | a_torque | ) |
This method applies an external torque at the center of mass of the object.
| a_torque | Torque vector. |
| void chai3d::cBulletGenericObject::addExternalForceAtPoint | ( | const cVector3d & | a_force, |
| const cVector3d & | a_relativePos | ||
| ) |
This method applies an external force to the object at a given position. The relative position and force are expressed in global coordinates.
| a_force | Force vector. |
| a_relativePos | Relative position where force is applied. |
| void chai3d::cBulletGenericObject::setDamping | ( | const double & | a_dampingLin, |
| const double & | a_dampingAng | ||
| ) |
This method assigns a linear and angular damping term to the object.
| a_dampingLin | Linear damping. |
| a_dampingAng | Angular damping. |
| double chai3d::cBulletGenericObject::getDampingLin | ( | ) |
This method returns the linear damping term for this object. Zero is returned if the object has no dynamic model.
| double chai3d::cBulletGenericObject::getDampingAng | ( | ) |
This method returns the angular damping term for this object. Zero is returned if the object has no dynamic model.
|
protectedvirtual |
This method initializes the Bullet dynamic model.
| a_world | Bullet world to which this new object belongs to. |
init variables
| cBulletWorld* chai3d::cBulletGenericObject::m_dynamicWorld |
| btRigidBody* chai3d::cBulletGenericObject::m_bulletRigidBody |
| btCollisionShape* chai3d::cBulletGenericObject::m_bulletCollisionShape |
| btDefaultMotionState* chai3d::cBulletGenericObject::m_bulletMotionState |
|
protected |
|
protected |
|
protected |


just quick question - can't see my right column with "Game Activity" , "Latest Nes" and other custom that i created ( works fine on Chrome 23.0.1271.64 but not new Firefox 17.0
few more if i may ;-) :
- is 3.0 compatible ( or will be ) with ( ehmmm if i may again ) Battlelog+ ? it worked well with 2.6 but was thinking maybe that's te issue mentioned above after update to 3.0
- the "open settings" doesn't work with 3.0 ( Firefox and Chrome ) ?
thanks for all the hard work again !
BrainFooLong
Administrator
1. I don't know waht you mean. BBLog has no custom features for this areas.
2. I do not test BBLog against B+. B+ has no update since 2 monhts, maybe this is the problem.
3. Open Settings, also don't know what this is.
juress
Theme Developer
The right column bug is caused by B+ in the new FireFox 17, plaese contact their developer.
ORFK
Global Moderator
as brain said. B+ has now updates since more than 2 month, i don't think there will something happen...


detail/singleton.hpp provides a way to access a Singleton of a class type. This is not a general Singleton solution! It is restricted in that the class type must have a default constructor.
namespace details { namespace pool { template <typename T> class singleton_default { private: singleton_default(); public: typedef T object_type; static object_type & instance(); }; } // namespace pool } // namespace details
| Symbol | Meaning |
|---|---|
| T | Any class with a non-throwing default constructor and non-throwing destructor |
| Expression | Return Type | Assertion/Note/Pre/Post-Condition |
|---|---|---|
| singleton_default<T>::instance() | T & | Returns a reference to the singleton instance |
The singleton instance is guaranteed to be constructed before main() begins, and destructed after main() ends. Furthermore, it is guaranteed to be constructed before the first call to singleton_default<T>::instance() is complete (even if called before main() begins). Thus, if there are not multiple threads running except within main(), and if all access to the singleton is restricted by mutexes, then this guarantee allows a thread-safe singleton.
For details on how we provide the guarantees above, see the comments in the header file.
None.
This header may be replaced by a Boost singleton library.
Revised 05 December, 2006
Copyright © 2000, 2001 Stephen Cleary (scleary AT jerviswebb DOT com)
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


(a) Subject to the authorities discussed in 1.103, revisions to the FAR will be prepared and issued through the coordinated action of two councils, the Defense Acquisition Regulations Council (DAR Council) and the Civilian Agency Acquisition Council (CAA Council). Members of these councils shall—
(1) Represent their agencies on a full-time basis;
(2) Be selected for their superior qualifications in terms of acquisition experience and demonstrated professional expertise; and
(3) Be funded by their respective agencies.
(b) The chairperson of the CAA Council shall be the representative of the Administrator of General Services. The other members of this council shall be one each representative from the—
(1) Departments of Agriculture, Commerce, Energy, Health and Human Services, Homeland Security, Interior, Labor, State, Transportation, and Treasury; and
(2) Environmental Protection Agency, Social Security Administration, Small Business Administration, and Department of Veterans Affairs.
(c) The Director of the DAR Council shall be the representative of the Secretary of Defense. The operation of the DAR Council will be as prescribed by the Secretary of Defense. Membership shall include representatives of the military departments, the Defense Logistics Agency, the Defense Contract Management Agency, and the National Aeronautics and Space Administration.
(d) Responsibility for processing revisions to the FAR is apportioned by the two councils so that each council has cognizance over specified parts or subparts.
(e) Each council shall be responsible for—
(1) Agreeing on all revisions with the other council;
(2) Submitting to the FAR Secretariat (see 1.201-2) the information required under paragraphs 1.501-2(b) and (e) for publication in the Federal Register of a notice soliciting comments on a proposed revision to the FAR;
(3) Considering all comments received in response to notice of proposed revisions;
(4) Arranging for public meetings;
(5) Preparing any final revision in the appropriate FAR format and language; and
(6) Submitting any final revision to the FAR Secretariat for publication in the Federal Register and printing for distribution.
(a) The General Services Administration is responsible for establishing and operating the FAR Secretariat to print, publish, and distribute the FAR through the Code of Federal Regulations system (including a loose-leaf edition with periodic updates).
(b) Additionally, the FAR Secretariat shall provide the two councils with centralized services for—
(1) Keeping a synopsis of current FAR cases and their status;
(2) Maintaining official files;
(3) Assisting parties interested in reviewing the files on completed cases; and
(4) Performing miscellaneous administrative tasks pertaining to the maintenance of the FAR.
Agency compliance with the FAR (see 1.304) is the responsibility of the Secretary of Defense (for the military departments and defense agencies), the Administrator of General Services (for civilian agencies other than NASA), and the Administrator of NASA (for NASA activities).


Initially if we are showing 5 records per page then select 25/50 rows per page then scroll bar is enabled. Now if I want to change Records per page the records per page is out of view when clicked.


Population Dynamics
Cooldownaxe
LetterFight
MinMaxRpg
Princess RiffRaff
MSI on windows
Galaxy Domination
APK on Android
Sources
Here
or
There
olivier1664 at yahoo dot com


The official project page is here: https://github.com/eSentire/qspm .
The official hosting site is here: https://esentire.github.io/qspm .
Version: ?
Click here to see the HTML help generated from the README markdown defined on the Quantum Safe Password Manager (qspm) project page if does not display properly below.


There are many different types of Galaxies within our Universe. Wave your mouse over the images to view the different types.


>
|
|
Welcome to the ASCRestaurant opening times:
Mon-Fri: 17:00-21:00 |
Not that hungry? Try one of our smaller offers then, also perfect as a "bar lunch":
| N$ | |
|---|---|
| Meatballs (sel. days only) when available |
12.00 |
| Chicken Drum Sticks (sel. days only) when available |
12.00 |
| Soup Of The Day with toast | 30.00 |
| Toasted Cheese & Ham | 20.00 |
| Toasted Cheese & Ham & Tomato | 25.00 |
| Toasted Mini Steak & Fried Onions | 30.00 |
| Harley Toast (Steak, Onion, Egg) |
35.00 |
| Vollies' Special (Patty, Onion, Egg, Cheese, Spice) |
40.00 |
| Curry / Goulash & Rice / Spaghetti Bolognaise | 35.00 |
| Auzzie Burger & Chips | 55.00 |
Try our salads - fresh and healthy:
| N$ | |
|---|---|
| Green Salad | 25.00 |
| Greek Salad with Feta & Olives | 35.00 |
| Greek Salad with Feta, Olives & Biltong | 55.00 |
Our Dinners will fill you up just nicely:
| N$ | |
|---|---|
| Kassler with Mash & Rotkohl / Veggies |
70.00 |
| Crumbed Pork Chop with Chips & Salad / Veggies |
70.00 |
| Traditional Fish & Chips or inst. of Chips: Veggies / Salad |
65.00 |
| Cordon Bleu with Chips & Salad / Veggies |
80.00 |
| Ayoba Steak (500g) with Chips & Salad / Veggies |
125.00 |
| Steak (300g) with Chips & Salad/Veggies |
95.00 |
| "Naked" Steak (300g - Steak only) |
60.00 |
| Schnitzel (250g) with Chips & Salad / Veggies |
80.00 |
| Schnitzel (250g - Schnitzel only) or Cordon Bleu (only) |
45.00 |
| Footlong "Bockwurst" / Bratwurst with Chips & Salad |
60.00 |
| Footlong (only) | 35.00 |
| "Bockwurst" / Bratwurst with Chips & Salad |
50.00 |
| "Bockwurst" / Bratwurst (only) | 25.00 |
See also our Side Orders to complement your meal
Side Orders available to add to your meal:
| N$ | |
|---|---|
| Portion Chips | 25.00 |
| Portion Spicy Garlic Chips | 35.00 |
| Portion Potato Salad or Veggies or Beetroot |
20.00 |
| Telleressen / Home Cooked Meal (when available) |
50.00 |
Atlantis Pizza - Best Pizza in Town!Our Tasty Pizza Base already comes with: Italian Herbs, Tomato Paste, and Cheese Step 1: Choose Your Pizza Size: |
| N$ | |
|---|---|
| Medium Pizza (with any 3 toppings from below list included - unless marked "excl. med.") |
65.00 |
| Large Pizza (exluding toppings - add from list below) |
60.00 |
Step 2: Choose your toppings | |
| N$ | |
|---|---|
| Crushed Garlic | 5.00 |
| Atjar> (home made) | 5.00 |
| Chilli | 5.00 |
| Peppadew | 10.00 |
| Green Peppers | 5.00 |
| Onions | 5.00 |
| Olives | 7.00 |
| Mushrooms | 7.00 |
| Tomatoes | 5.00 |
| Pineapple | 7.00 |
| Ham / Salami / Bacon | 12.00 |
| Mince (excl. med.) | 15.00 |
| Cheese / Feta / Mozarella | 15.00 |
| Mixed Seafood (excl. med.) (when available) |
45.00 |
| Steak Strips (excl. med.) | 60.00 |
| Schnitzel Strips (excl. med.) | 45.00 |
| Double Decker / Triple Decker | (on req.) |
| Biltong | 20.00 |


Margin, Borders and Padding - what’s the fuss anyway? Glad you asked, there are a few distinct differences and understanding these will help see when and where you should be using each. Lets start off with a picture first:
So what does this show us? Well basically the margin refers to the area around an element and the padding is the space between the element and the content inside the element. And they all get contained within a border. Great… so how does this affect us? Well essentially we can use this to create gaps between elements on our web pages - which is super important for making the presentation and look of your web page “just so” - as well as how our content either grows or shrinks in its specific spaces. So what are some practical examples of this? Let’s start off with padding. In the example below we have two boxes, green and blue, inside of a white box. Both of them are super skinny and the borders (the black outlines) are right up flush against the text as there is no padding present - see how the padding value in .green-box and .blue box is set to 0px
Now if we increase the padding value to 20px in each we see the borders of those elements get pushed out by 20px both above and below the text giving the content more breathing room.
What about the Margin? We’ll use this value to affect the white space around our two coloured boxes. To start off we can see that the two boxes are evenly spaced from each other and in their relative positions to the outer border.
If we change the margin value for the green box to 40px we should expect that box to decrease in size and the blue box to move further away from it. Note how the blue boxes margin of 10px has kept a smaller distance between its border and the outer border of the main box.
Which leaves the border. Well like its name suggests it is what binds around the outside of a specific area containing an element as illustrated back in the first picture. You can control how thick it is and if you want it to have pointed or rounded edges. By adding in the line border-radius: 10px we have rounded out the border edges - choice!
So in conclusion think of all of this as social distancing for your pages elements and content and the cool thing is you get to decide how draconian those social distancing rules need to be!


.selector{property:value;}.another-selector{another-property:another-value;}.am-i-related-to-that-stuff-above{seriously:'who knows';}#tlec.col-b#more-tleo-promo.promo-entry{oh-god:'this is really paranoid';}
Why is it so hard?
People write new CSS for everything.
Everything goes into the global scope.
Not inherently obvious how selectors interrelate.
Build Smaller, Isolated Things
Single Responsibility
Do one thing and do it well
Single Responsibility
Components
Macro-layout
Theming
Single Responsibility
Everything you create broadly fits into one of three buckets:
Component: Most things, flexible, 100% width, positioning of elements.
domain specific ojects e.g. the programme object
Macro-layout: Defining the layout of Components within a page.
Theming: colors for Components.
These types are then brought together - I want this component, with this
coloring in a space this big.
Components
Component: Bootstrap provides a toolkit of UI Components which should be largely retained as they are based on sensible choices and should be added to in the form of plugins and Clinical Insight developed Components, which expand the toolkit to better address the needs of the framework. The language behind these Components may change (jQuery > Angular > Vue) but the Behavioural patterns, Perceptual patterns and Structural makeup of the Components shouldn't deviate through time without a good reason to do so as deviation is expensive
Macro-layout
The heavy lifting should be done using the grid classes - row, col-sm, col-md. Ideally these should be free of style
Theming - Branding
Theming: colors for branding should be managed in a variables file, which is used to create unique stylesheet for the particular project. Clashes become an issue of colour management and if a sensible approach is taken to dark v lights this is manageable.
Theming - Accessibility
Accessibility should be supported in 2 ways
In the Context of a piece of the UI which is for a different User (Patient v Clinician) should have different defaults
In some scenarios the User must have the ability to make changes - increase font size, make the screen reverse from white to black etc. This theming is based on switching classes.
The types of theming possible are discussed in this slide, in Insight we need a combination of (correct my terms) Variable, Context and Switching
Composition
Create Lego bricks to clip together
Be Additive
Mobile first & extend from core functionality
Build Bottom Up
Base Styles → Components → Pages
Naming Conventions
Give hints about how elements interrelate
BEM
<divclass="media media--right"><divclass="media__img"><imgsrc="cats.gif"alt=""/>
<divclass="media__body">
Now you've got a hint that I belong to
the media block when reading HTML


White to play 12
pips White=167 Black=160
(CorrectAnswer= 0/0, ErrorScore= 0)
1. 24/23 6/4* eq: -0.125 47.47% (G:12.76% B:0.55%) 52.53% (G:16.44% B:0.88%) 2. 24/23 13/11 eq: -0.206 (-0.081) 45.02% (G:10.52% B:0.41%) 54.98% (G:15.87% B:0.79%) 3. 6/4* 4/3 eq: -0.207 (-0.082) 45.52% (G:11.38% B:0.48%) 54.48% (G:17.02% B:1.04%) 4. 6/5 6/4* eq: -0.219 (-0.094) 45.66% (G:10.88% B:0.51%) 54.34% (G:18.33% B:1.54%) 5. 24/21 eq: -0.243 (-0.118) 44.34% (G: 9.55% B:0.36%) 55.66% (G:16.18% B:0.65%)


Welcome
Welcome to Maestro
This application is designed to speed up complex skill development by increasing your
learning efficiency.
You will first start by completing a survey that will give you a better idea of what type of
learner you are.
The survey will consist of three section
- Visual
- Auditory
- Kinesthetic
After completion of this survey, you will be given some information about your learning preferences as well
as learning tips for each category


Backend Programmer
"Just a person with love. Like challenge with reward and learning with passion. Don't forget his standard dream and just let it flow."
Junior Web Developer Intern
CV Karya Hidup Sentosa
Build a web application with PHP native, Javascript and framework CodeIgnitier.
Junior Developer
PT Ungaran Sari Garments
The main job is build and maintaining internal application with Python. And the side job is build application with many language (Javascript, NodeJs, React, PHP).
Content Writter
AnbiDev
Content writter about tutorial programming on AnbiDev.
Computer and Network Engineering
SMK Negeri 7 Semarang
Information Technology
Dian Nuswantoro University
alifianadexe
alifianaqshol
alifianadexe
anbidev


Tradeoffs
We discuss here some of the problems we encountered during the development, the solutions for them and the trade-offs in implementing them.
Letter
Problem
Each Outgoing letter has a unique serial number which depends on its type. Type of the letter can be
Bill
,General
orNotesheet
. Serial number of an outgoing letter has following format :-Type of letter Serial Number Format Bill CS/TR/YYYY/XXXX General CS/YYYY/XXXX Notesheet CS/NTS/YYYY/XXXX where
YYYY
is the year in which the letter was sent andXXXX
are the total number of letters of corresponding type sent before that letter in that year plus one.Similar to outgoing letters, incoming letters also has unique serial number with format:-
CS/D/YYYY/XXXX
where 'YYYY' is the year in which the incoming letter was received and XXXX are the total number of incoming letters received before that letter in that year plus one.
Solutions
This problem has many solutions some of which are listed below.
Accept the serial number from user. At the backend we can validate the format and uniqueness of the serial number.
Pros
- Easy to implement.
Cons
- Though we can check the uniqueness of serial number but implementing the logic for validating that value of
XXXX
is actually correct is quite complex. Either we can internally count the total number of letters sent before in that year every time user create, edit or delete a letter and check serial number of all letters sent in that year and accordingly ask user to update serial number of all other letters or we can assume that user always enter correct serial number.
Auto generate serial number whenever a new letter is created or type or date of letter is updated.
Pros
- User will not add serial number(user friendly).
- Serial number of all letters are always correct.
Cons
- Complex to implement. We will need to store latest value of
XXXX
corresponding to every year and type of letter. - Whenever user delete or edit type or date of letter serial number of other letters and latest value of
XXXX
needs to be updated accordingly.
What we implemented
Assuming frequency of deletion of letters is negligible and user always enter record in order in which letter is received or sent we choose to auto generate serial number. We stored latest value of
XXXX
corresponding to every year and type of letter in cache. On creation of letter, value ofXXXX
of corresponding year and type incremented and serial number of that letter is assigned with the value ofXXXX
accordingly. Once letter is created type of outgoing letter is not editable.Pros
- User friendly.
- Easy to implement.
Cons
- Whenever year of date of letter is edited or letter is deleted their corresponding serial number can't be reassigned to another letter.
- value of
XXXX
depends on order in which letter record is entered.
Teacher
Problem
Office staff collect teaching details of all DU college teachers teaching CS every 6 months. Teachers fill their teaching details after receiving notification and submit them before deadline. Also some teachers and Department faculties are assigned as supervisors. Supervisors has their publications and can view their scholar's profile.
Solution
One of the possible solution is to create different guard ans migration for teachers login similar to users login. Teachers can be given their credentials so they can login in the portal and notified for filling teaching details. They can fill and submit their teaching details via portal. Also
supervisor_profile
migration can be created to store supervisor information. Each entry insupervisor_profile
belong to either department faculty i.e.users
table orteachers
table. Publications and Scholars of supervisor belongs tosupervisor_profile
.Pros
- Teacher can't interfere in department work i.e. roles and permissions can't be assigned to them
Cons
- Number of migrations increases.
- Chaining for supervisor profile access. For eg, to access the scholars of a supervisor who is also a teacher would have meant:
$teacher->supervisorProfile->scholars
.
What we implemented
Instead of creating different migration and guard for teachers, a new category
Teacher
is introduced inusers
table. Teachers details can be added inusers
table by selectingTeacher
category. Teachers will have same login as department faculty. Also boolean attributeis_supervisor
added inusers
table which is set to false by default and its value is true if user is supervisor. Publications and scholars of supervisor will belongs tousers
.Pros
- Simple and easy to implement.
- No new migrations are created.
- No chaining for supervisor profile access.
Cons
users
migration size increases.- Accidently, roles and permissions which are designed for department members can be assigned to teachers.
Scholar Advisors
Problem
Department may assign cosupervisor to scholar. Cosupervisor can be department faculty, DU college teacher or external. Advisory committee is assigned to Scholar which consist of scholar's supervisor, cosupervisor (if any) and other members. Other members of advisory committe of the scholar can be cosupervisors, externals and department faculties which are not supervisors. Problem is how to store department cosupervisors and other members of scholar's advisory committee.
Solutions
Some of the possible solutions are listed below
Make separate migration for cosupervisors in which each entry either refers to
users
table if cosupervisor is department faculty or DU college teacher, or store cosupervisors details if cosupervisor is external. Then foreign key for scholar's cosupervisor can be created inscholars
table which refers to the cosupervisor table. To store other members of advisory committee of scholar other migrationadvisor_scholar
can be created. Relation betweenscholars
andadvisor_scholar
would be one to many. Each entry inadvisor_scholar
either would be referring tousers
table (if member is department faculty), cosupervisors table (if member is cosupervisor) or storing member's detail (if member is external).Cons
- Complex in implementation. Many migrations with morphs relation are created.
- Details of external members of scholar advisory committee is duplicated if they are advisors of more than one scholar.
Details of other members of advisory committee who are externals can be stored in separate migration
externals
. Similar to above solution make separate migration for cosupervisors and other members of advisory committee of scholar. Only difference is now each entry inadvisor_scholar
would be referring tousers
table (if member is department faculty), cosupervisors table (if member is cosupervisor) orexternals
(if member is external).Pros
- For each external member of advisory committee unique entry is created. There is no duplication of details of external members of scholar advisory committee if they are advisors of more than one scholar.
Cons
- Complex in implementation. Many migrations with morphs relation are created.
What we implemented
Since all department faculty members and DU college teachers are stored in
users
table, one more boolean attribute in the tableis_cosupervisor
is added which is set to false by default and true if user is cosupervisor. One more category is added inusers
table nameExternal
. All details of externals are stored inusers
table. These externals can be cosupervisors or external member of advisory committee. New migrationadvisor_scholar
for storing other members of scholar advisory committee is created.advisor_scholar
has many to one relation withscholars
table and refer tousers
table for other member.Pros
- Easy to implement and understand.
- For each external (whether cosupervisor or advisory committee member) only one entry is created.
- No new migration for cosupervisors and externals are created.
Cons
- Size of
users
table increases.
Research Committee of a Scholar
A PhD scholar has a research committee
consisting of 3-4 members.
- A supervisor - faculty at DUCS or CS teachers at the UG-colleges.
- A cosupervisor - faculty, or a UG-teacher or an external(person not employed/ affiliated to DU at any post). A scholar may/may not have cosupervisor at a point.
- An external - as stated above
- A faculty teacher
The supervisor and cosupervisor can only be set by the office, while the other members (advisors) of the research committee are set by the scholar's supervisor. Moreover, any of these members can be replaced by the same authority as above. Once replaced, the constituent members need to be recorded with their tenure. An update takes place without recording a member's tenure, while a replacement means changing the member and creating a record of the previous entry with their tenure.
For eg:
If the research committee of a scholar consists of - Supervisor 'A', Cosupervisor 'B' and external 'C'
Supervisor 'A': 2019 - present Co-supervisor 'B': 2019 - present Advisors - (C): 2019-present
when 'C' is replaced by 'E' & 'F', it would require a record.
Advisors - (C): 2019 - 2020
and the new advisors will be like so:
Advisors - (E): 2020 - present
Problem
Storing a scholar's supervisor, cosupervisor and advisors along with maintaining a record of all three.
Solutions
Creating json columns in the
scholars
table for records.Pros
- Need not create new migrations.
- Details of any member would always remain saved even after they were deleted from the app as user/external.
Cons
- Storing these as json columns bulked up the scholars table.
- While deletion of a user is a rare occurence, them updating their details was an actual use-case. json columns could not have handled this relationship.
Create a single pivot table named
research_committee
Pros
- Each entry from this table correspondeds to a user. Hence, any update in their details was reflected here.
- Seperation of advisors from scholars was more clearer.
- Their tenure could be recorded using two pivot columns, start and end date.
Cons
- This approach required for us to create a distinction between a scholar's supervisor, cosupervisor and advisors. For eg, the user being a cosupervisor(is_cosupervisor = true) could not be used as a distinction since scholar B's cosupervisor could be an advisor for scholar B.
Create 3 seperate pivot tables for scholar supervisors, cosupervisors and advisors
Pros
- All 3 from solution 2
- The three different tables handled distinction naturally.
Cons
- More migrations
What we implemented
We went ahead with approach 3 so that any handling of these authorities could be handled easily in future as well. This also offered a clearer design.
Publications
Problem
Research scholars and supervisors have two kinds of publications - journals and conferences. Both these types of publications have more common attributes than uncommon. Journals have a publisher and a number whereas a conference has a city and country. Except for these differences rest all details are the same. Moreover, any publication can have many presentations.
Solutions
Create different tables for journals and conferences
Pros
- Clearer distinction between the two types.
Cons
- This would have required us to create a morph type in presentations to find the associated publication, which although achievable, was a bit against the idea that a publication had a presentation - whether it was a journal or conference did not make a difference.
- Scholar or users would have to have two different relationships for finding their associated journals and conferences.
Creating a same table for both
Pros
- Removing duplication of a table structure.
- presentations were associated using a hasMany relationship.
- Scholar and users have a hasMany relationship for publications, scope on which could be built to find journals and conferences.
Cons
- A pair of columns is null in each type (as mentioned in the description)
What we implemented
We went ahead with the second approach to not create duplications and distinction between the two types based on two trivial attributes. This also made creating relationships easier. Finally, relationships and scopes related to publications was extracted to a trait -
HasPublications
. Since scholars and supervisor profiles extend two different types of layouts, their controllers were created separately, though making use of view partials wherever achievable. (think forms and index details)
Scholar Requests
Problem
A scholar at the end of their tenure requests for a
Phd-Seminar
andThesis Title Approval
(mentioned Title Approval in the app). Their supervisor request for anexaminer
for them. All of these requests are one-time only. We needed to maintain these requets` date and status.Solutions
A common table for all three requests.
Pros
- Lesser number of migrations
- All scholar request types were contained in one table
Cons
- Had to save the
type
of request with every record. - All the three types had a few (1-2) different types of attributes. These had to be left nullable.
- While the requests are singular now, they could become multiple in future. All the three kinds have different requirements for authorizations, more differentiated if they become multiple requests. The common policy file had to contain different methods of authorization for them.
Create 3 different tables for all three types of requests.
Pros
- Clearer distinction between requests.
- Authorisation policies contained respective logic only.
Cons
- More migrations
What we implemented
We went ahead with the second approach for clarity between requests and their authorisation logic. Keeping a common table would have been benificial if there were less differences and the table could be made generic for future requests. Here it did not seem like so. Hence, we created seperate table for all three.


{% extends "base.html" %} {% block body_block %}
PLAN is a real abstract kind of neat-o thing you should check out.


(navbar)
None
Date
Submit
Exchange rate:
empty
Request Date
Exchange Rate Date
Currency
Exchange Rate


|
Panda3D
|
This is a base class for the various different classes that represent the result of a frame of rendering. More...
Public Types | |
| enum | FrameMode { FM_render = 0, FM_parasite = 1, FM_refresh = 2 } |
| enum | RenderTextureMode { RTM_none = 0, RTM_bind_or_copy = 1, RTM_copy_texture = 2, RTM_copy_ram = 3, RTM_triggered_copy_texture = 4, RTM_triggered_copy_ram = 5, RTM_bind_layered = 6 } |
| Public Types inherited from DrawableRegion | |
| enum | RenderTexturePlane { RTP_stencil = 0, RTP_depth_stencil = 1, RTP_color = 2, RTP_aux_rgba_0 = 3, RTP_aux_rgba_1 = 4, RTP_aux_rgba_2 = 5, RTP_aux_rgba_3 = 6, RTP_aux_hrgba_0 = 7, RTP_aux_hrgba_1 = 8, RTP_aux_hrgba_2 = 9, RTP_aux_hrgba_3 = 10, RTP_aux_float_0 = 11, RTP_aux_float_1 = 12, RTP_aux_float_2 = 13, RTP_aux_float_3 = 14, RTP_depth = 15, RTP_COUNT = 16 } |
Public Member Functions | |
| addRenderTexture (Texture tex, GraphicsOutput::RenderTextureMode mode, DrawableRegion::RenderTexturePlane bitplane) | |
| Creates a new Texture object, suitable for rendering the contents of this buffer into, and appends it to the list of render textures. More... | |
| clearChildSort () | |
| Resets the sort value of future offscreen buffers created by make_texture_sort() to the default value. More... | |
| clearDeleteFlag () | |
| Resets the delete flag, so the GraphicsOutput will not be automatically deleted before the beginning of the next frame. More... | |
| clearRenderTextures () | |
| If the GraphicsOutput is currently rendering to a texture, then all textures are dissociated from the GraphicsOuput. More... | |
| int | countTextures () |
| If the GraphicsOutput is set to render into a texture, returns the number of textures that are being rendered into. More... | |
| bool | flipReady () |
| DisplayRegion | getActiveDisplayRegion (int n) |
| Returns the nth active DisplayRegion of those that have been created within the window. More... | |
| list | getActiveDisplayRegions () |
| int | getChildSort () |
| Returns the sort value of future offscreen buffers created by make_texture_sort(). More... | |
| bool | getDeleteFlag () |
| Returns the current setting of the delete flag. More... | |
| DisplayRegion | getDisplayRegion (int n) |
| Returns the nth DisplayRegion of those that have been created within the window. More... | |
| list | getDisplayRegions () |
| GraphicsEngine | getEngine () |
| Returns the graphics engine that created this output. More... | |
| const FrameBufferProperties | getFbProperties () |
| Returns the framebuffer properties of the window. More... | |
| LVecBase2i | getFbSize () |
| Returns the internal size of the window or buffer. More... | |
| int | getFbXSize () |
| Returns the internal width of the window or buffer. More... | |
| int | getFbYSize () |
| Returns the internal height of the window or buffer. More... | |
| GraphicsStateGuardian | getGsg () |
| Returns the GSG that is associated with this window. More... | |
| GraphicsOutput | getHost () |
| This is normally called only from within make_texture_buffer(). More... | |
| bool | getInverted () |
| Returns the current setting of the inverted flag. More... | |
| unsigned int | getLeftEyeColorMask () |
| Returns the color mask in effect when rendering a left-eye view in red_blue stereo mode. More... | |
| str | getName () |
| Returns the name that was passed to the GraphicsOutput constructor. More... | |
| int | getNumActiveDisplayRegions () |
| Returns the number of active DisplayRegions that have been created within the window. More... | |
| int | getNumDisplayRegions () |
| Returns the number of DisplayRegions that have been created within the window, active or otherwise. More... | |
| bool | getOneShot () |
| Returns the current setting of the one-shot flag. More... | |
| DisplayRegion | getOverlayDisplayRegion () |
| Returns the special "overlay" DisplayRegion that is created for each window or buffer. More... | |
| GraphicsPipe | getPipe () |
| Returns the GraphicsPipe that this window is associated with. More... | |
| bool | getRedBlueStereo () |
| Returns whether red-blue stereo mode is in effect for this particular window. More... | |
| unsigned int | getRightEyeColorMask () |
| Returns the color mask in effect when rendering a right-eye view in red_blue stereo mode. More... | |
| GraphicsOutput::RenderTextureMode | getRtmMode (int i) |
| Returns the RenderTextureMode associated with the nth render-texture. More... | |
| const LVecBase4 | getSbsLeftDimensions () |
| Returns the effective sub-region of the window for displaying the left channel, if side-by-side stereo mode is in effect for the window. More... | |
| LVecBase2i | getSbsLeftSize () |
| If side-by-side stereo is enabled, this returns the pixel size of the left eye, based on scaling get_size() by get_sbs_left_dimensions(). More... | |
| int | getSbsLeftXSize () |
| If side-by-side stereo is enabled, this returns the pixel width of the left eye, based on scaling get_x_size() by get_sbs_left_dimensions(). More... | |
| int | getSbsLeftYSize () |
| If side-by-side stereo is enabled, this returns the pixel height of the left eye, based on scaling get_y_size() by get_sbs_left_dimensions(). More... | |
| const LVecBase4 | getSbsRightDimensions () |
| Returns the effective sub-region of the window for displaying the right channel, if side-by-side stereo mode is in effect for the window. More... | |
| LVecBase2i | getSbsRightSize () |
| If side-by-side stereo is enabled, this returns the pixel size of the right eye, based on scaling get_size() by get_sbs_right_dimensions(). More... | |
| int | getSbsRightXSize () |
| If side-by-side stereo is enabled, this returns the pixel width of the right eye, based on scaling get_x_size() by get_sbs_right_dimensions(). More... | |
| int | getSbsRightYSize () |
| If side-by-side stereo is enabled, this returns the pixel height of the right eye, based on scaling get_y_size() by get_sbs_right_dimensions(). More... | |
| Texture | getScreenshot () |
| Captures the most-recently rendered image from the framebuffer and returns it as Texture, or NULL on failure. More... | |
| bool | getScreenshot (PNMImage image) |
| Captures the most-recently rendered image from the framebuffer into the indicated PNMImage. More... | |
| bool | getSideBySideStereo () |
| Returns whether side-by-side stereo mode is in effect for this particular window. More... | |
| const LVecBase2i | getSize () |
| Returns the visible size of the window or buffer, if it is known. More... | |
| int | getSort () |
| Returns the sorting order of this particular GraphicsOutput. More... | |
| bool | getSupportsRenderTexture () |
| Returns true if this particular GraphicsOutput can render directly into a texture, or false if it must always copy-to-texture at the end of each frame to achieve this effect. More... | |
| bool | getSwapEyes () |
| Returns the current setting of the "swap eyes" flag. More... | |
| Texture | getTexture (int i) |
| Returns the nth texture into which the GraphicsOutput renders. More... | |
| NodePath | getTextureCard () |
| Returns a PandaNode containing a square polygon. More... | |
| DrawableRegion::RenderTexturePlane | getTexturePlane (int i) |
| Returns the RenderTexturePlane associated with the nth render-texture. More... | |
| int | getXSize () |
| Returns the visible width of the window or buffer, if it is known. More... | |
| int | getYSize () |
| Returns the visible height of the window or buffer, if it is known. More... | |
| bool | hasSize () |
| Returns true if the size of the window/frame buffer is known, false otherwise. More... | |
| bool | hasTexture () |
| Returns true if the GraphicsOutput is rendering into any textures at all. More... | |
| bool | isActive () |
| Returns true if the window is ready to be rendered into, false otherwise. More... | |
| bool | isNonzeroSize () |
| Returns true if the output has a nonzero size in both X and Y, or false if it is zero (and therefore invalid). More... | |
| bool | isStereo () |
| Returns Returns true if this window can render stereo DisplayRegions, either through red-blue stereo (see set_red_blue_stereo()) or through true hardware stereo rendering. More... | |
| bool | isValid () |
| Returns true if the output is fully created and ready for rendering, false otherwise. More... | |
| GraphicsOutput | makeCubeMap (str name, int size, NodePath camera_rig, DrawMask camera_mask, bool to_ram, FrameBufferProperties fbp) |
| This is similar to make_texture_buffer() in that it allocates a separate buffer suitable for rendering to a texture that can be assigned to geometry in this window, but in this case, the buffer is set up to render the six faces of a cube map. More... | |
| DisplayRegion | makeDisplayRegion () |
| Creates a new DisplayRegion that covers the entire window. More... | |
| DisplayRegion | makeDisplayRegion (const LVecBase4 dimensions) |
| Creates a new DisplayRegion that covers the indicated sub-rectangle within the window. More... | |
| DisplayRegion | makeDisplayRegion (float l, float r, float b, float t) |
| Creates a new DisplayRegion that covers the indicated sub-rectangle within the window. More... | |
| DisplayRegion | makeMonoDisplayRegion () |
| Creates a new DisplayRegion that covers the entire window. More... | |
| DisplayRegion | makeMonoDisplayRegion (const LVecBase4 dimensions) |
| Creates a new DisplayRegion that covers the indicated sub-rectangle within the window. More... | |
| DisplayRegion | makeMonoDisplayRegion (float l, float r, float b, float t) |
| Creates a new DisplayRegion that covers the entire window. More... | |
| StereoDisplayRegion | makeStereoDisplayRegion () |
| Creates a new DisplayRegion that covers the entire window. More... | |
| StereoDisplayRegion | makeStereoDisplayRegion (const LVecBase4 dimensions) |
| Creates a new DisplayRegion that covers the indicated sub-rectangle within the window. More... | |
| StereoDisplayRegion | makeStereoDisplayRegion (float l, float r, float b, float t) |
| Creates a new DisplayRegion that covers the entire window. More... | |
| GraphicsOutput | makeTextureBuffer (str name, int x_size, int y_size, Texture tex, bool to_ram, FrameBufferProperties fbp) |
| Creates and returns an offscreen buffer for rendering into, the result of which will be a texture suitable for applying to geometry within the scene rendered into this window. More... | |
| removeAllDisplayRegions () | |
| Removes all display regions from the window, except the default one that is created with the window. More... | |
| bool | removeDisplayRegion (DisplayRegion display_region) |
| Removes the indicated DisplayRegion from the window, and destructs it if there are no other references. More... | |
| bool | saveScreenshot (const Filename filename, str image_comment) |
| Saves a screenshot of the region to the indicated filename. More... | |
| Filename | saveScreenshotDefault (str prefix) |
| Saves a screenshot of the region to a default filename, and returns the filename, or empty string if the screenshot failed. More... | |
| setActive (bool active) | |
| Sets the active flag associated with the GraphicsOutput. More... | |
| setChildSort (int child_sort) | |
| Specifies the sort value of future offscreen buffers created by make_texture_sort(). More... | |
| setInverted (bool inverted) | |
| Changes the current setting of the inverted flag. More... | |
| setOneShot (bool one_shot) | |
| Changes the current setting of the one-shot flag. More... | |
| setOverlayDisplayRegion (DisplayRegion display_region) | |
| Replaces the special "overlay" DisplayRegion that is created for each window or buffer. More... | |
| setRedBlueStereo (bool red_blue_stereo, unsigned int left_eye_color_mask, unsigned int right_eye_color_mask) | |
| Enables red-blue stereo mode on this particular window. More... | |
| setSideBySideStereo (bool side_by_side_stereo) | |
| Enables side-by-side stereo mode on this particular window. More... | |
| setSideBySideStereo (bool side_by_side_stereo, const LVecBase4 sbs_left_dimensions, const LVecBase4 sbs_right_dimensions) | |
| Enables side-by-side stereo mode on this particular window. More... | |
| setSort (int sort) | |
| Adjusts the sorting order of this particular GraphicsOutput, relative to other GraphicsOutputs. More... | |
| setSwapEyes (bool swap_eyes) | |
| Changes the "swap eyes" flag. More... | |
| setupRenderTexture (Texture tex, bool allow_bind, bool to_ram) | |
| This is a deprecated interface that made sense back when GraphicsOutputs could only render into one texture at a time. More... | |
| bool | shareDepthBuffer (GraphicsOutput graphics_output) |
| Will attempt to use the depth buffer of the input graphics_output. More... | |
| AsyncFuture | triggerCopy () |
| When the GraphicsOutput is in triggered copy mode, this function triggers the copy (at the end of the next frame). More... | |
| unshareDepthBuffer () | |
| Discontinue sharing the depth buffer. More... | |
| Public Member Functions inherited from GraphicsOutputBase | |
| Texture | getTexture (int i) |
| setSort (int sort) | |
| Public Member Functions inherited from TypedWritable | |
| object | __reduce__ () |
| object | __reduce_persist__ (object pickler) |
| VectorUchar | encodeToBamStream () |
| Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a bytes object. More... | |
| bool | encodeToBamStream (VectorUchar data, BamWriter writer) |
| Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string. More... | |
| fillin (DatagramIterator scan, BamReader manager) | |
| This internal function is intended to be called by each class's make_from_bam() method to read in all of the relevant data from the BamFile for the new object. More... | |
| UpdateSeq | getBamModified () |
| Returns the current bam_modified counter. More... | |
| markBamModified () | |
| Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams. More... | |
| Public Member Functions inherited from TypedObject | |
| TypeHandle | getType () |
| int | getTypeIndex () |
| Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
| bool | isExactType (TypeHandle handle) |
| Returns true if the current object is the indicated type exactly. More... | |
| bool | isOfType (TypeHandle handle) |
| Returns true if the current object is or derives from the indicated type. More... | |
| Public Member Functions inherited from ReferenceCount | |
| int | getRefCount () |
| Returns the current reference count. More... | |
| ref () | |
| Explicitly increments the reference count. More... | |
| bool | testRefCountIntegrity () |
| Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
| bool | testRefCountNonzero () |
| Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
| bool | unref () |
| Explicitly decrements the reference count. More... | |
| Public Member Functions inherited from DrawableRegion | |
| disableClears () | |
| Disables both the color and depth clear. More... | |
| bool | getClearActive (int n) |
| Gets the clear-active flag for any bitplane. More... | |
| const LColor | getClearColor () |
| Returns the current clear color value. More... | |
| bool | getClearColorActive () |
| Returns the current setting of the flag that indicates whether the color buffer should be cleared every frame. More... | |
| float | getClearDepth () |
| Returns the current clear depth value. More... | |
| bool | getClearDepthActive () |
| Returns the current setting of the flag that indicates whether the depth buffer should be cleared every frame. More... | |
| unsigned int | getClearStencil () |
| Returns the current clear stencil value. More... | |
| bool | getClearStencilActive () |
| Returns the current setting of the flag that indicates whether the color buffer should be cleared every frame. More... | |
| const LColor | getClearValue (int n) |
| Returns the clear value for any bitplane. More... | |
| float | getPixelFactor () |
| Returns the amount by which the height and width of the region will be scaled internally, based on the zoom factor set by set_pixel_zoom(). More... | |
| float | getPixelZoom () |
| Returns the value set by set_pixel_zoom(), regardless of whether it is being respected or not. More... | |
| bool | isAnyClearActive () |
| Returns true if any of the clear types (so far there are just color or depth) have been set active, or false if none of them are active and there is no need to clear. More... | |
| setClearActive (int n, bool clear_aux_active) | |
| Sets the clear-active flag for any bitplane. More... | |
| setClearColor (const LColor color) | |
| Sets the clear color to the indicated value. More... | |
| setClearColorActive (bool clear_color_active) | |
| Toggles the flag that indicates whether the color buffer should be cleared every frame. More... | |
| setClearDepth (float depth) | |
| Sets the clear depth to the indicated value. More... | |
| setClearDepthActive (bool clear_depth_active) | |
| Toggles the flag that indicates whether the depth buffer should be cleared every frame. More... | |
| setClearStencil (unsigned int stencil) | |
| setClearStencilActive (bool clear_stencil_active) | |
| Toggles the flag that indicates whether the stencil buffer should be cleared every frame. More... | |
| setClearValue (int n, const LColor clear_value) | |
| Sets the clear value for any bitplane. More... | |
| setPixelZoom (float pixel_zoom) | |
| Sets the amount by which the pixels of the region are scaled internally when filling the image interally. More... | |
| bool | supportsPixelZoom () |
| Returns true if a call to set_pixel_zoom() will be respected, false if it will be ignored. More... | |
Static Public Member Functions | |
| static TypeHandle | getClassType () |
| static Filename | makeScreenshotFilename (str prefix) |
| Saves a screenshot of the region to a default filename, and returns the filename, or empty string if the screenshot failed. More... | |
| Static Public Member Functions inherited from GraphicsOutputBase | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from TypedWritableReferenceCount | |
| static TypedWritableReferenceCount | decodeFromBamStream (VectorUchar data, BamReader reader) |
| Reads the bytes created by a previous call to encode_to_bam_stream(), and extracts and returns the single object on those bytes. More... | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from TypedWritable | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from TypedObject | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from ReferenceCount | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from DrawableRegion | |
| static int | getRenderbufferType (int plane) |
| Returns the RenderBuffer::Type that corresponds to a RenderTexturePlane. More... | |
Public Attributes | |
| bool | active |
| Returns true if the window is ready to be rendered into, false otherwise. More... | |
| PointerToDisplayRegion | active_display_regions [] |
| Returns the nth active DisplayRegion of those that have been created within the window. More... | |
| int | child_sort |
| Returns the sort value of future offscreen buffers created by make_texture_sort(). More... | |
| PointerToDisplayRegion | display_regions [] |
| Returns the nth DisplayRegion of those that have been created within the window. More... | |
| GraphicsEngine | engine |
| Returns the graphics engine that created this output. More... | |
| LVecBase2i | fb_size |
| Returns the internal size of the window or buffer. More... | |
| GraphicsStateGuardian | gsg |
| Returns the GSG that is associated with this window. More... | |
| bool | inverted |
| Returns the current setting of the inverted flag. More... | |
| const String | name |
| Returns the name that was passed to the GraphicsOutput constructor. More... | |
| bool | one_shot |
| Returns the current setting of the one-shot flag. More... | |
| GraphicsPipe | pipe |
| Returns the GraphicsPipe that this window is associated with. More... | |
| LVecBase2i | sbs_left_size |
| If side-by-side stereo is enabled, this returns the pixel size of the left eye, based on scaling get_size() by get_sbs_left_dimensions(). More... | |
| LVecBase2i | sbs_right_size |
| If side-by-side stereo is enabled, this returns the pixel size of the right eye, based on scaling get_size() by get_sbs_right_dimensions(). More... | |
| const LVecBase2i | size |
| Returns the visible size of the window or buffer, if it is known. More... | |
| int | sort |
| Returns the sorting order of this particular GraphicsOutput. More... | |
| bool | supports_render_texture |
| Returns true if this particular GraphicsOutput can render directly into a texture, or false if it must always copy-to-texture at the end of each frame to achieve this effect. More... | |
| bool | swap_eyes |
| Returns the current setting of the "swap eyes" flag. More... | |
| Public Attributes inherited from TypedObject | |
| TypeHandle | type |
| Returns the TypeHandle representing this object's type. More... | |
| Public Attributes inherited from ReferenceCount | |
| int | ref_count |
| The current reference count. More... | |
| Public Attributes inherited from DrawableRegion | |
| const LColor | clear_color |
| Returns the current clear color value. More... | |
| float | clear_depth |
| Returns the current clear depth value. More... | |
| unsigned int | clear_stencil |
| Returns the current clear stencil value. More... | |
| float | pixel_factor |
| Returns the amount by which the height and width of the region will be scaled internally, based on the zoom factor set by set_pixel_zoom(). More... | |
| float | pixel_zoom |
| Returns the value set by set_pixel_zoom(), regardless of whether it is being respected or not. More... | |
This is a base class for the various different classes that represent the result of a frame of rendering.
The most common kind of GraphicsOutput is a GraphicsWindow, which is a real-time window on the desktop, but another example is GraphicsBuffer, which is an offscreen buffer.
The actual rendering, and anything associated with the graphics context itself, is managed by the associated GraphicsStateGuardian (which might output to multiple GraphicsOutput objects).
GraphicsOutputs are not actually writable to bam files, of course, but they may be passed as event parameters, so they inherit from TypedWritableReferenceCount instead of TypedReferenceCount for that convenience.
| enum FrameMode |
| enum RenderTextureMode |
| addRenderTexture | ( | Texture | tex, |
| GraphicsOutput::RenderTextureMode | mode, | ||
| DrawableRegion::RenderTexturePlane | bitplane | ||
| ) |
Creates a new Texture object, suitable for rendering the contents of this buffer into, and appends it to the list of render textures.
If tex is not NULL, it is the texture that will be set up for rendering into; otherwise, a new Texture object will be created, in which case you may call get_texture() to retrieve the new texture pointer.
You can specify a bitplane to attach the texture to. the legal choices are:
If you do not specify a bitplane to attach the texture to, this routine will use a default based on the texture's format:
The texture's format will be changed to match the format of the bitplane to which it is attached. For example, if you pass in an F_rgba texture and order that it be attached to RTP_depth_stencil, it will turn into an F_depth_stencil texture.
Also see make_texture_buffer(), which is a higher-level interface for preparing render-to-a-texture mode.
| clearChildSort | ( | ) |
Resets the sort value of future offscreen buffers created by make_texture_sort() to the default value.
See set_child_sort().
| clearDeleteFlag | ( | ) |
Resets the delete flag, so the GraphicsOutput will not be automatically deleted before the beginning of the next frame.
| clearRenderTextures | ( | ) |
If the GraphicsOutput is currently rendering to a texture, then all textures are dissociated from the GraphicsOuput.
| int countTextures | ( | ) |
If the GraphicsOutput is set to render into a texture, returns the number of textures that are being rendered into.
Normally, the textures would be associated with different buffers - a color texture, a depth texture, and a stencil texture.
| bool flipReady | ( | ) |
| DisplayRegion getActiveDisplayRegion | ( | int | n | ) |
Returns the nth active DisplayRegion of those that have been created within the window.
This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call to get_num_active_display_regions().
| list getActiveDisplayRegions | ( | ) |
| int getChildSort | ( | ) |
Returns the sort value of future offscreen buffers created by make_texture_sort().
See set_child_sort().
|
static |
| bool getDeleteFlag | ( | ) |
Returns the current setting of the delete flag.
When this is true, the GraphicsOutput will automatically be removed before the beginning of the next frame by the GraphicsEngine.
| DisplayRegion getDisplayRegion | ( | int | n | ) |
Returns the nth DisplayRegion of those that have been created within the window.
This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call to get_num_display_regions().
| list getDisplayRegions | ( | ) |
| GraphicsEngine getEngine | ( | ) |
Returns the graphics engine that created this output.
Since there is normally only one GraphicsEngine object in an application, this is usually the same as the global GraphicsEngine.
| const FrameBufferProperties getFbProperties | ( | ) |
Returns the framebuffer properties of the window.
| LVecBase2i getFbSize | ( | ) |
Returns the internal size of the window or buffer.
This is almost always the same as get_size(), except when a pixel_zoom is in effect–see set_pixel_zoom().
| int getFbXSize | ( | ) |
Returns the internal width of the window or buffer.
This is almost always the same as get_x_size(), except when a pixel_zoom is in effect–see set_pixel_zoom().
| int getFbYSize | ( | ) |
Returns the internal height of the window or buffer.
This is almost always the same as get_y_size(), except when a pixel_zoom is in effect–see set_pixel_zoom().
| GraphicsStateGuardian getGsg | ( | ) |
Returns the GSG that is associated with this window.
There is a one-to-one association between windows and GSG's.
This may return NULL if the graphics context has not yet been created for the window, e.g. before the first frame has rendered; or after the window has been closed.
| GraphicsOutput getHost | ( | ) |
This is normally called only from within make_texture_buffer().
When called on a ParasiteBuffer, it returns the host of that buffer; but when called on some other buffer, it returns the buffer itself.
| bool getInverted | ( | ) |
Returns the current setting of the inverted flag.
When this is true, the scene is rendered into the window upside-down, flipped like a mirror along the X axis. See set_inverted().
| unsigned int getLeftEyeColorMask | ( | ) |
Returns the color mask in effect when rendering a left-eye view in red_blue stereo mode.
This is one or more bits defined in ColorWriteAttrib::Channels. See set_red_blue_stereo().
| str getName | ( | ) |
Returns the name that was passed to the GraphicsOutput constructor.
| int getNumActiveDisplayRegions | ( | ) |
Returns the number of active DisplayRegions that have been created within the window.
| int getNumDisplayRegions | ( | ) |
Returns the number of DisplayRegions that have been created within the window, active or otherwise.
| bool getOneShot | ( | ) |
Returns the current setting of the one-shot flag.
When this is true, the GraphicsOutput will automatically set itself inactive after the next frame.
| DisplayRegion getOverlayDisplayRegion | ( | ) |
Returns the special "overlay" DisplayRegion that is created for each window or buffer.
This DisplayRegion covers the entire window, but cannot be used for rendering. It is a placeholder only, to indicate the dimensions of the window, and is usually used internally for purposes such as clearing the window, or grabbing a screenshot of the window.
There are very few applications that require access to this DisplayRegion. Normally, you should create your own DisplayRegion that covers the window, if you want to render to the window.
| GraphicsPipe getPipe | ( | ) |
Returns the GraphicsPipe that this window is associated with.
It is possible that the GraphicsPipe might have been deleted while an outstanding PT(GraphicsOutput) prevented all of its children windows from also being deleted; in this unlikely case, get_pipe() may return NULL.
| bool getRedBlueStereo | ( | ) |
Returns whether red-blue stereo mode is in effect for this particular window.
See set_red_blue_stereo().
| unsigned int getRightEyeColorMask | ( | ) |
Returns the color mask in effect when rendering a right-eye view in red_blue stereo mode.
This is one or more bits defined in ColorWriteAttrib::Channels. See set_red_blue_stereo().
| GraphicsOutput::RenderTextureMode getRtmMode | ( | int | i | ) |
Returns the RenderTextureMode associated with the nth render-texture.
Returns RTM_none if there is no such texture.
| const LVecBase4 getSbsLeftDimensions | ( | ) |
Returns the effective sub-region of the window for displaying the left channel, if side-by-side stereo mode is in effect for the window.
See set_side_by_side_stereo().
| LVecBase2i getSbsLeftSize | ( | ) |
If side-by-side stereo is enabled, this returns the pixel size of the left eye, based on scaling get_size() by get_sbs_left_dimensions().
If side-by- side stereo is not enabled, this returns the same as get_size().
| int getSbsLeftXSize | ( | ) |
If side-by-side stereo is enabled, this returns the pixel width of the left eye, based on scaling get_x_size() by get_sbs_left_dimensions().
If side- by-side stereo is not enabled, this returns the same as get_x_size().
| int getSbsLeftYSize | ( | ) |
If side-by-side stereo is enabled, this returns the pixel height of the left eye, based on scaling get_y_size() by get_sbs_left_dimensions().
If side-by-side stereo is not enabled, this returns the same as get_y_size().
| const LVecBase4 getSbsRightDimensions | ( | ) |
Returns the effective sub-region of the window for displaying the right channel, if side-by-side stereo mode is in effect for the window.
See set_side_by_side_stereo().
| LVecBase2i getSbsRightSize | ( | ) |
If side-by-side stereo is enabled, this returns the pixel size of the right eye, based on scaling get_size() by get_sbs_right_dimensions().
If side- by-side stereo is not enabled, this returns the same as get_size().
| int getSbsRightXSize | ( | ) |
If side-by-side stereo is enabled, this returns the pixel width of the right eye, based on scaling get_x_size() by get_sbs_right_dimensions().
If side-by-side stereo is not enabled, this returns the same as get_x_size().
| int getSbsRightYSize | ( | ) |
If side-by-side stereo is enabled, this returns the pixel height of the right eye, based on scaling get_y_size() by get_sbs_right_dimensions().
If side-by-side stereo is not enabled, this returns the same as get_y_size().
| Texture getScreenshot | ( | ) |
Captures the most-recently rendered image from the framebuffer and returns it as Texture, or NULL on failure.
| bool getScreenshot | ( | PNMImage | image | ) |
Captures the most-recently rendered image from the framebuffer into the indicated PNMImage.
Returns true on success, false on failure.
| bool getSideBySideStereo | ( | ) |
Returns whether side-by-side stereo mode is in effect for this particular window.
See set_side_by_side_stereo().
| const LVecBase2i getSize | ( | ) |
Returns the visible size of the window or buffer, if it is known.
In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check has_size() first.
Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
| int getSort | ( | ) |
Returns the sorting order of this particular GraphicsOutput.
The various GraphicsOutputs within a particular thread will be rendered in the indicated order.
| bool getSupportsRenderTexture | ( | ) |
Returns true if this particular GraphicsOutput can render directly into a texture, or false if it must always copy-to-texture at the end of each frame to achieve this effect.
| bool getSwapEyes | ( | ) |
Returns the current setting of the "swap eyes" flag.
See set_swap_eyes().
| Texture getTexture | ( | int | i | ) |
Returns the nth texture into which the GraphicsOutput renders.
Returns NULL if there is no such texture.
If the texture is non-NULL, it may be applied to geometry to be rendered for any other windows or outputs that share the same GSG as this GraphicsOutput. The effect is undefined for windows that share a different GSG; usually in these cases the texture will be invalid.
| NodePath getTextureCard | ( | ) |
Returns a PandaNode containing a square polygon.
The dimensions are (-1,0,-1) to (1,0,1). The texture coordinates are such that the texture of this GraphicsOutput is aligned properly to the polygon. The GraphicsOutput promises to surgically update the Geom inside the PandaNode if necessary to maintain this invariant.
Each invocation of this function returns a freshly- allocated PandaNode. You can therefore safely modify the RenderAttribs of the PandaNode. The PandaNode is initially textured with the texture of this GraphicOutput.
| DrawableRegion::RenderTexturePlane getTexturePlane | ( | int | i | ) |
Returns the RenderTexturePlane associated with the nth render-texture.
Returns 0 if there is no such texture.
| int getXSize | ( | ) |
Returns the visible width of the window or buffer, if it is known.
In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check has_size() first.
Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
| int getYSize | ( | ) |
Returns the visible height of the window or buffer, if it is known.
In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check has_size() first.
Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
| bool hasSize | ( | ) |
Returns true if the size of the window/frame buffer is known, false otherwise.
In certain cases the size may not be known until after the object has been fully created. Also, certain objects (like windows) may change size spontaneously.
| bool hasTexture | ( | ) |
Returns true if the GraphicsOutput is rendering into any textures at all.
| bool isActive | ( | ) |
Returns true if the window is ready to be rendered into, false otherwise.
| bool isNonzeroSize | ( | ) |
Returns true if the output has a nonzero size in both X and Y, or false if it is zero (and therefore invalid).
| bool isStereo | ( | ) |
Returns Returns true if this window can render stereo DisplayRegions, either through red-blue stereo (see set_red_blue_stereo()) or through true hardware stereo rendering.
| bool isValid | ( | ) |
Returns true if the output is fully created and ready for rendering, false otherwise.
| GraphicsOutput makeCubeMap | ( | str | name, |
| int | size, | ||
| NodePath | camera_rig, | ||
| DrawMask | camera_mask, | ||
| bool | to_ram, | ||
| FrameBufferProperties | fbp | ||
| ) |
This is similar to make_texture_buffer() in that it allocates a separate buffer suitable for rendering to a texture that can be assigned to geometry in this window, but in this case, the buffer is set up to render the six faces of a cube map.
The buffer is automatically set up with six display regions and six cameras, each of which are assigned the indicated draw_mask and parented to the given camera_rig node (which you should then put in your scene to render the cube map from the appropriate point of view).
You may take the texture associated with the buffer and apply it to geometry, particularly with TexGenAttrib::M_world_cube_map also in effect, to apply a reflection of everything seen by the camera rig.
| DisplayRegion makeDisplayRegion | ( | ) |
Creates a new DisplayRegion that covers the entire window.
If is_stereo() is true for this window, and default-stereo-camera is configured true, this actually makes a StereoDisplayRegion. Call make_mono_display_region() or make_stereo_display_region() if you want to insist on one or the other.
| DisplayRegion makeDisplayRegion | ( | const LVecBase4 | dimensions | ) |
Creates a new DisplayRegion that covers the indicated sub-rectangle within the window.
The range on all parameters is 0..1.
If is_stereo() is true for this window, and default-stereo-camera is configured true, this actually makes a StereoDisplayRegion. Call make_mono_display_region() or make_stereo_display_region() if you want to insist on one or the other.
| DisplayRegion makeDisplayRegion | ( | float | l, |
| float | r, | ||
| float | b, | ||
| float | t | ||
| ) |
Creates a new DisplayRegion that covers the indicated sub-rectangle within the window.
The range on all parameters is 0..1.
If is_stereo() is true for this window, and default-stereo-camera is configured true, this actually makes a StereoDisplayRegion. Call make_mono_display_region() or make_stereo_display_region() if you want to insist on one or the other.
| DisplayRegion makeMonoDisplayRegion | ( | ) |
Creates a new DisplayRegion that covers the entire window.
This generally returns a mono DisplayRegion, even if is_stereo() is true. However, if side-by-side stereo is enabled, this will return a StereoDisplayRegion whose two eyes are both set to SC_mono. (This is necessary because in side-by-side stereo mode, it is necessary to draw even mono DisplayRegions twice).
| DisplayRegion makeMonoDisplayRegion | ( | const LVecBase4 | dimensions | ) |
Creates a new DisplayRegion that covers the indicated sub-rectangle within the window.
The range on all parameters is 0..1.
This generally returns a mono DisplayRegion, even if is_stereo() is true. However, if side-by-side stereo is enabled, this will return a StereoDisplayRegion whose two eyes are both set to SC_mono. (This is necessary because in side-by-side stereo mode, it is necessary to draw even mono DisplayRegions twice).
| DisplayRegion makeMonoDisplayRegion | ( | float | l, |
| float | r, | ||
| float | b, | ||
| float | t | ||
| ) |
Creates a new DisplayRegion that covers the entire window.
This generally returns a mono DisplayRegion, even if is_stereo() is true. However, if side-by-side stereo is enabled, this will return a StereoDisplayRegion whose two eyes are both set to SC_mono. (This is necessary because in side-by-side stereo mode, it is necessary to draw even mono DisplayRegions twice).
|
static |
Saves a screenshot of the region to a default filename, and returns the filename, or empty string if the screenshot failed.
The default filename is generated from the supplied prefix and from the Config variable screenshot-filename, which contains the following strings:
%~p - the supplied prefix %~f - the frame count %~e - the value of screenshot-extension All other % strings in strftime().
| StereoDisplayRegion makeStereoDisplayRegion | ( | ) |
Creates a new DisplayRegion that covers the entire window.
This always returns a stereo DisplayRegion, even if is_stereo() is false.
| StereoDisplayRegion makeStereoDisplayRegion | ( | const LVecBase4 | dimensions | ) |
Creates a new DisplayRegion that covers the indicated sub-rectangle within the window.
The range on all parameters is 0..1.
This always returns a stereo DisplayRegion, even if is_stereo() is false.
| StereoDisplayRegion makeStereoDisplayRegion | ( | float | l, |
| float | r, | ||
| float | b, | ||
| float | t | ||
| ) |
Creates a new DisplayRegion that covers the entire window.
This always returns a stereo DisplayRegion, even if is_stereo() is false.
| GraphicsOutput makeTextureBuffer | ( | str | name, |
| int | x_size, | ||
| int | y_size, | ||
| Texture | tex, | ||
| bool | to_ram, | ||
| FrameBufferProperties | fbp | ||
| ) |
Creates and returns an offscreen buffer for rendering into, the result of which will be a texture suitable for applying to geometry within the scene rendered into this window.
If tex is not NULL, it is the texture that will be set up for rendering into; otherwise, a new Texture object will be created. In either case, the target texture can be retrieved from the return value with buffer->get_texture() (assuming the return value is not NULL).
If to_ram is true, the buffer will be set up to download its contents to the system RAM memory associated with the Texture object, instead of keeping it strictly within texture memory; this is much slower, but it allows using the texture with any GSG.
This will attempt to be smart about maximizing render performance while minimizing framebuffer waste. It might return a GraphicsBuffer set to render directly into a texture, if possible; or it might return a ParasiteBuffer that renders into this window. The return value is NULL if the buffer could not be created for some reason.
When you are done using the buffer, you should remove it with a call to GraphicsEngine::remove_window().
| removeAllDisplayRegions | ( | ) |
Removes all display regions from the window, except the default one that is created with the window.
| bool removeDisplayRegion | ( | DisplayRegion | display_region | ) |
Removes the indicated DisplayRegion from the window, and destructs it if there are no other references.
Returns true if the DisplayRegion is found and removed, false if it was not a part of the window.
| bool saveScreenshot | ( | const Filename | filename, |
| str | image_comment | ||
| ) |
Saves a screenshot of the region to the indicated filename.
The image comment is an optional user readable string that will be saved with the header of the image (if the file format supports embedded data; for example jpg allows comments). Returns true on success, false on failure.
| Filename saveScreenshotDefault | ( | str | prefix | ) |
Saves a screenshot of the region to a default filename, and returns the filename, or empty string if the screenshot failed.
The filename is generated by make_screenshot_filename().
| setActive | ( | bool | active | ) |
Sets the active flag associated with the GraphicsOutput.
If the GraphicsOutput is marked inactive, nothing is rendered.
| setChildSort | ( | int | child_sort | ) |
Specifies the sort value of future offscreen buffers created by make_texture_sort().
The purpose of this method is to allow the user to limit the sort value chosen for a buffer created via make_texture_buffer(). Normally, this buffer will be assigned a value of get_sort() - 1, so that it will be rendered before this window is rendered; but sometimes this isn't sufficiently early, especially if other buffers also have a view into the same scene.
If you specify a value here, then new buffers created via make_texture_buffer() will be given that sort value instead of get_sort() - 1.
| setInverted | ( | bool | inverted | ) |
Changes the current setting of the inverted flag.
When this is true, the scene is rendered into the window upside-down and backwards, that is, inverted as if viewed through a mirror placed on the floor.
This is primarily intended to support DirectX (and a few buggy OpenGL graphics drivers) that perform a framebuffer-to-texture copy upside-down from the usual OpenGL (and Panda) convention. Panda will automatically set this flag for offscreen buffers on hardware that is known to do this, to compensate when rendering offscreen into a texture.
| setOneShot | ( | bool | one_shot | ) |
Changes the current setting of the one-shot flag.
When this is true, the GraphicsOutput will render the current frame and then automatically set itself inactive. This is particularly useful for buffers that are created for the purposes of render-to-texture, for static textures that don't need to be continually re-rendered once they have been rendered the first time.
Setting the buffer inactive is not the same thing as destroying it. You are still responsible for passing this buffer to GraphicsEngine::remove_window() when you no longer need the texture, in order to clean up fully. (However, you should not call remove_window() on this buffer while the texture is still needed, because depending on the render-to-texture mechanism in use, this may invalidate the texture contents.)
| setOverlayDisplayRegion | ( | DisplayRegion | display_region | ) |
Replaces the special "overlay" DisplayRegion that is created for each window or buffer.
See get_overlay_display_region(). This must be a new DisplayRegion that has already been created for this window, for instance via a call to make_mono_display_region(). You are responsible for ensuring that the new DisplayRegion covers the entire window. The previous overlay display region is not automatically removed; you must explicitly call remove_display_region() on it after replacing it with this method, if you wish it to be removed.
Normally, there is no reason to change the overlay DisplayRegion, so this method should be used only in very unusual circumstances.
| setRedBlueStereo | ( | bool | red_blue_stereo, |
| unsigned int | left_eye_color_mask, | ||
| unsigned int | right_eye_color_mask | ||
| ) |
Enables red-blue stereo mode on this particular window.
When red-blue stereo mode is in effect, DisplayRegions that have the "left" channel set will render in the red (or specified) channel only, while DisplayRegions that have the "right" channel set will render in the blue (or specified) channel only.
The remaining two parameters specify the particular color channel(s) to associate with each eye. Use the bits defined in ColorWriteAttrib::Channels.
This can be used to achieve a cheesy stereo mode in the absence of hardware-supported stereo.
| setSideBySideStereo | ( | bool | side_by_side_stereo | ) |
Enables side-by-side stereo mode on this particular window.
When side-by- side stereo mode is in effect, DisplayRegions that have the "left" channel set will render on the part of the window specified by sbs_left_dimensions (typically the left half: (0, 0.5, 0, 1)), while DisplayRegions that have the "right" channel set will render on the part of the window specified by sbs_right_dimensions (typically the right half: (0.5, 1, 0, 1)).
This is commonly used in a dual-monitor mode, where a window is opened that spans two monitors, and each monitor represents a different eye.
| setSideBySideStereo | ( | bool | side_by_side_stereo, |
| const LVecBase4 | sbs_left_dimensions, | ||
| const LVecBase4 | sbs_right_dimensions | ||
| ) |
Enables side-by-side stereo mode on this particular window.
When side-by- side stereo mode is in effect, DisplayRegions that have the "left" channel set will render on the part of the window specified by sbs_left_dimensions (typically the left half: (0, 0.5, 0, 1)), while DisplayRegions that have the "right" channel set will render on the part of the window specified by sbs_right_dimensions (typically the right half: (0.5, 1, 0, 1)).
This is commonly used in a dual-monitor mode, where a window is opened that spans two monitors, and each monitor represents a different eye.
| setSort | ( | int | sort | ) |
Adjusts the sorting order of this particular GraphicsOutput, relative to other GraphicsOutputs.
| setSwapEyes | ( | bool | swap_eyes | ) |
Changes the "swap eyes" flag.
This flag is normally false. When it is true, the left and right channels of a stereo DisplayRegion are sent to the opposite channels in the rendering backend. This is meant to work around hardware that inadvertently swaps the output channels, or hardware for which it cannot be determined which channel is which until runtime.
| setupRenderTexture | ( | Texture | tex, |
| bool | allow_bind, | ||
| bool | to_ram | ||
| ) |
This is a deprecated interface that made sense back when GraphicsOutputs could only render into one texture at a time.
From now on, use clear_render_textures and add_render_texture instead.
| bool shareDepthBuffer | ( | GraphicsOutput | graphics_output | ) |
Will attempt to use the depth buffer of the input graphics_output.
The buffer sizes must be exactly the same.
| AsyncFuture triggerCopy | ( | ) |
When the GraphicsOutput is in triggered copy mode, this function triggers the copy (at the end of the next frame).
| unshareDepthBuffer | ( | ) |
Discontinue sharing the depth buffer.
| bool active |
Returns true if the window is ready to be rendered into, false otherwise.
| PointerToDisplayRegion active_display_regions[] |
Returns the nth active DisplayRegion of those that have been created within the window.
This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call to get_num_active_display_regions().
| int child_sort |
Returns the sort value of future offscreen buffers created by make_texture_sort().
See set_child_sort().
| PointerToDisplayRegion display_regions[] |
Returns the nth DisplayRegion of those that have been created within the window.
This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call to get_num_display_regions().
| GraphicsEngine engine |
Returns the graphics engine that created this output.
Since there is normally only one GraphicsEngine object in an application, this is usually the same as the global GraphicsEngine.
| LVecBase2i fb_size |
Returns the internal size of the window or buffer.
This is almost always the same as get_size(), except when a pixel_zoom is in effect–see set_pixel_zoom().
Returns the GSG that is associated with this window.
There is a one-to-one association between windows and GSG's.
This may return NULL if the graphics context has not yet been created for the window, e.g. before the first frame has rendered; or after the window has been closed.
| bool inverted |
Returns the current setting of the inverted flag.
When this is true, the scene is rendered into the window upside-down, flipped like a mirror along the X axis. See set_inverted().
| const String name |
Returns the name that was passed to the GraphicsOutput constructor.
| bool one_shot |
Returns the current setting of the one-shot flag.
When this is true, the GraphicsOutput will automatically set itself inactive after the next frame.
| GraphicsPipe pipe |
Returns the GraphicsPipe that this window is associated with.
It is possible that the GraphicsPipe might have been deleted while an outstanding PT(GraphicsOutput) prevented all of its children windows from also being deleted; in this unlikely case, get_pipe() may return NULL.
| LVecBase2i sbs_left_size |
If side-by-side stereo is enabled, this returns the pixel size of the left eye, based on scaling get_size() by get_sbs_left_dimensions().
If side-by- side stereo is not enabled, this returns the same as get_size().
| LVecBase2i sbs_right_size |
If side-by-side stereo is enabled, this returns the pixel size of the right eye, based on scaling get_size() by get_sbs_right_dimensions().
If side- by-side stereo is not enabled, this returns the same as get_size().
| const LVecBase2i size |
Returns the visible size of the window or buffer, if it is known.
In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check has_size() first.
Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
| int sort |
Returns the sorting order of this particular GraphicsOutput.
The various GraphicsOutputs within a particular thread will be rendered in the indicated order.
| bool supports_render_texture |
Returns true if this particular GraphicsOutput can render directly into a texture, or false if it must always copy-to-texture at the end of each frame to achieve this effect.
| bool swap_eyes |
Returns the current setting of the "swap eyes" flag.
See set_swap_eyes().


--- title: New links page date: 2003-07-11T10:00:00.000Z ---
All new links page is up and running! Not as many links as I'd like it to have, but hey, it's a good start. Can't be bothered to put any more on for now (there are 16 currently listed), maybe some more will come later. Hopefully, there's enough there to be of use to you all. Enjoy!


Covid 19
Enter a country name:
Search
loading...
New cases:
New deaths:
Total cases:
Total recovered:
Total deaths:
Total tests:
Stay Safe and Healthy


EnlightenPopoverContentViewController
open class EnlightenPopoverContentViewController : NSViewController
A view controller that manages a EnlightenDownView
for the content of a popover.
-
The progress indicator shown when loading the web view resources takes longer than
progressIndicatorDelay
.Declaration
Swift
public let progressIndicator: NSProgressIndicator
-
The popover’s
EnlightenPopoverDelegate
delegate.Declaration
Swift
public weak var enlightenPopoverDelegate: EnlightenPopoverDelegate?
-
The duration, in seconds, to delay showing the progress indicator.
Declaration
Swift
public var progressIndicatorDelay: TimeInterval
-
Whether the content is detached from the popover.
Declaration
Swift
public private(set) var isDetachedFromPopover: Bool { get set }
-
The
EnlightenDownView
owned by the view controller.Declaration
Swift
public var downView: EnlightenDownView { get }
-
Whether the Markdown content should be center aligned.
Declaration
Swift
public var doesCenterAlignContent: Bool { get set }
-
Initializes a newly allocated Enlighten popover content view controller.
Throws
Throws aDownErrors
if loading the Markdown string fails.Declaration
Swift
public init(markdownString: String, maxWidth: CGFloat, maxHeight: CGFloat = 500) throws
Parameters
markdownString
The Markdown string rendered in the
EnlightenDownView
.maxWidth
The maximum width of the
EnlightenDownView
.maxHeight
The maximum height of the
EnlightenDownView
. -
Undocumented
Declaration
Swift
public required init?(coder: NSCoder)
-
Resets the size of the view to the maximum.
Declaration
Swift
open func resetMaxSize(includingHeight: Bool)
Parameters
includingHeight
Whether to also reset the height to the maximum.
-
Shows the progress indicator, if the view controller’s view is in the view hierarchy.
Declaration
Swift
@objc open func showProgressIndicator()
-
Starts the timer that presents the progress indicator after
progressIndicatorDelay
.Declaration
Swift
open func delayShowingProgressIndicator()
-
Hides the progress indicator, if it is in the view hierarchy, and invalidates the progress indicator presentation timer.
Declaration
Swift
open func hideProgressIndicator()
-
Renders the given CommonMark Markdown string into HTML and updates the
EnlightenDownView
while keeping the style intact.Important
Errors thrown during the loading of the Markdown string are passed to the delegate’s
EnlightenPopoverDelegate.enlightenPopoverFailedToLoad(downError:)
method.Declaration
Swift
open func update(markdownString: String)
Parameters
markdownString
A string containing CommonMark Markdown.
-
Called when the Markdown string was loaded successfully.
Declaration
Swift
open func didDownViewLoadSuccessfully()
-
Invoked when the popover has been released to a detached state.
Declaration
Swift
open func didDetachFromPopover()
-
Invoked when the popover did close.
Declaration
Swift
open func didClosePopover()
-
Undocumented
Declaration
Swift
public func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask)
-
Undocumented
Declaration
Swift
public func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask)


{{#partial "hero"}} {{> components/common/top-with-menu-interior}} {{/partial}} {{#partial "page"}} Your Cart Back to Store {{> components/cart/status-messages}} {{> components/cart/content}} Cart Successfully Updated {{/partial}} {{> layout/base}} `


- Colloquium
- Computer Networks
- Operating Systems
- Introduction to Digital Electronics
- Design & Analysis of Algorithms
- Discrete Mathematics
- Computer Architecture
- Programming Languages
- Data Structures and Algorithms
- Advanced Algorithms
- Design Practices in Large Software
- Architecture of High Performance Computers
|
- Database Systems
- Theory Of Computation
- Digital Image Analysis
- Synthesis of Digital Systems
- Artificial Intelligence
- Digital Hardware Design
- Advanced Optimization
- Wireless Networks
- Intelligent Information Processing
- Optimization Methods (Linear Programming)
- Systems and Networks Security
|
- Economics
- Critical Thinking
- Applied Mechanics
- Project Management
- Signals and Systems
- Financial Management
- Computational Physics
- Manufacturing Processes
- Mind, Machines and Languages
- Introduction to Quantum Mechanics
- Probability & Stochastic Processes
- Analysis and Differential Equations
- Abstract Algebra and Linear Algebra
- Environmental Pollution & Prevention
|


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Expected.20Type.20in.20match.html ---
Is there anyway to explicitly tell lean the expected type of match
, so I would not receive the following error:
invalid match/convoy expression, user did not provide type for the expression,
lean tried to infer one using expected type information, but result is not type correct
for example?
match a, b : \forall a b, expected_type_of_match with ... end
You can also often use type ascription in some cases, i.e. (match a, b with ... end : expected type)
OK, I don't have a good example for this.
Will get back if I found one.
Thank you, this following worked (the other one did not),
{% endraw %}
match a, b : \forall a b, expected_type_of_match with ... end
Last updated: Apr 24 2020 at 19:02 UTC


|
Netsuite 2016_1
|
Data Fields | |
| const | _never = "_never" |
| const | _onAnyChange = "_onAnyChange" |
| const | _whenBaseStatusIsClosed = "_whenBaseStatusIsClosed" |
| const | _whenBaseStatusIsOnHold = "_whenBaseStatusIsOnHold" |
| const | _whenBaseStatusIsOpen = "_whenBaseStatusIsOpen" |
| const | _whenBaseStatusIsResolved = "_whenBaseStatusIsResolved" |
Static Public Attributes | |
| static | $paramtypesmap |
|
static |
| const _never = "_never" |
| const _onAnyChange = "_onAnyChange" |
| const _whenBaseStatusIsClosed = "_whenBaseStatusIsClosed" |
| const _whenBaseStatusIsOnHold = "_whenBaseStatusIsOnHold" |
| const _whenBaseStatusIsOpen = "_whenBaseStatusIsOpen" |
| const _whenBaseStatusIsResolved = "_whenBaseStatusIsResolved" |


\(\because\) Frequent Collaborators \(\because\)
Nathaniel J. Dominy
Associate Professory, Dartmouth College, USA
Human evolution, dietary ecology, primates
Kena Fox-Dobbs
University of Puget Sound, USA
Stable isotopes, African ecology, nutrient cycling
Thilo Gross
Associate Professor, University of Bristol, UK
Dynamic systems, Networks, food webs, complexity
Paulo R. Guimarães Jr.
Professor, University of São Paulo, Brazil
Ecological networks, mutualisms, coevolution, food webs
Paul L. Koch
Full Professor, University of California, Santa Cruz
Stable isotopes, paleoecology, paleoclimate
Marc Mangel
Distinguished Professor, University of California, Santa Cruz
Center for Stock Assessment and Research
University of Bergen, Norway
Theoretical biology, behavioral ecology, stochastic processes, stock dynamics
Jonathan W. Moore
Associate Professor, Simon Fraser University, Canada
Freshwater ecology, salmon, watershed dynamics, life history
Seth D. Newsome
Assistant Professor, University of New Mexico, USA
Stable isotopes, dietary ecology, paleoecology, niche dynamics
Mark Novak
Assistant Professor, Oregon State University, USA
Trophic dynamics, theoretical biology, intertidal systems
Mathias M. Pires
Postdoctoral Fellow, University of São Paulo, Brazil
Food webs, paleoecology, trophic dynamics, community ecology
Lars Rudolf
Researcher, University of Bristol, UK
Max Plank Institute for Complex System, Dresden Germany
Community dynamics, food webs, dynamic systems