Annotation of researchv9/X11/src/X.V11R1/server/ddx/cfb/cfbscrinit.c, revision 1.1

1.1     ! root        1: /************************************************************
        !             2: Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
        !             3: 
        !             4:                     All Rights Reserved
        !             5: 
        !             6: Permission  to  use,  copy,  modify,  and  distribute   this
        !             7: software  and  its documentation for any purpose and without
        !             8: fee is hereby granted, provided that the above copyright no-
        !             9: tice  appear  in all copies and that both that copyright no-
        !            10: tice and this permission notice appear in  supporting  docu-
        !            11: mentation,  and  that the names of Sun or MIT not be used in
        !            12: advertising or publicity pertaining to distribution  of  the
        !            13: software  without specific prior written permission. Sun and
        !            14: M.I.T. make no representations about the suitability of this
        !            15: software for any purpose. It is provided "as is" without any
        !            16: express or implied warranty.
        !            17: 
        !            18: SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
        !            19: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
        !            20: NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
        !            21: ABLE  FOR  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
        !            22: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA  OR
        !            23: PROFITS,  WHETHER  IN  AN  ACTION OF CONTRACT, NEGLIGENCE OR
        !            24: OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
        !            25: THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            26: 
        !            27: ********************************************************/
        !            28: 
        !            29: #include "X.h"
        !            30: #include "Xmd.h"
        !            31: #include       <servermd.h>
        !            32: #include "scrnintstr.h"
        !            33: #include "pixmapstr.h"
        !            34: #include "resource.h"
        !            35: #include "colormap.h"
        !            36: #include "colormapst.h"
        !            37: #include "cfb.h"
        !            38: #include "mi.h"
        !            39: #include "mistruct.h"
        !            40: #include "dix.h"
        !            41: 
        !            42: extern void miGetImage();      /* XXX should not be needed */
        !            43: extern ColormapPtr CreateStaticColormap();     /* XXX is this needed? */
        !            44: 
        !            45: static VisualRec visuals[] = {
        !            46: /* vid screen class rMask gMask bMask oRed oGreen oBlue bpRGB cmpE nplan */
        !            47: #ifdef notdef
        !            48:     /*  Eventually,  we would like to offer this visual too */
        !            49:     0, 0, StaticGray, 0,   0,    0,   0,    0,   0,    1,   2,    1,
        !            50: #endif
        !            51: #ifdef STATIC_COLOR
        !            52:     0,  0, StaticColor,0,   0,    0,   0,    0,   0,    8,  256,   8,
        !            53: #else
        !            54:     0,  0, PseudoColor,0,   0,    0,   0,    0,   0,    8,  256,   8,
        !            55: #endif
        !            56: };
        !            57: 
        !            58: #define        NUMVISUALS      ((sizeof visuals)/(sizeof visuals[0]))
        !            59: #define        ROOTVISUAL      (NUMVISUALS-1)
        !            60: 
        !            61: static DepthRec depths[] = {
        !            62: /* depth       numVid          vids */
        !            63:     1,         0,              NULL,
        !            64:     8,         1,              NULL,
        !            65: };
        !            66: 
        !            67: static ColormapPtr cfbColorMaps[NUMVISUALS];   /* assume one per visual */
        !            68: #define NUMDEPTHS      ((sizeof depths)/(sizeof depths[0]))
        !            69: 
        !            70: /* dts * (inch/dot) * (25.4 mm / inch) = mm */
        !            71: Bool
        !            72: cfbScreenInit(index, pScreen, pbits, xsize, ysize, dpi)
        !            73:     int index;
        !            74:     register ScreenPtr pScreen;
        !            75:     pointer pbits;             /* pointer to screen bitmap */
        !            76:     int xsize, ysize;          /* in pixels */
        !            77:     int dpi;                   /* dots per inch */
        !            78: {
        !            79:     long       *pVids;
        !            80:     register PixmapPtr pPixmap;
        !            81:     int        i;
        !            82:     void cfbInitialize332Colormap();
        !            83: 
        !            84:     pScreen->myNum = index;
        !            85:     pScreen->width = xsize;
        !            86:     pScreen->height = ysize;
        !            87:     pScreen->mmWidth = (xsize * 254) / (dpi * 10);
        !            88:     pScreen->mmHeight = (ysize * 254) / (dpi * 10);
        !            89:     pScreen->numDepths = NUMDEPTHS;
        !            90:     pScreen->allowedDepths = depths;
        !            91: 
        !            92:     pScreen->rootDepth = 8;
        !            93:     pScreen->minInstalledCmaps = 1;
        !            94:     pScreen->maxInstalledCmaps = 1;
        !            95:     pScreen->backingStoreSupport = NotUseful;
        !            96:     pScreen->saveUnderSupport = NotUseful;
        !            97: 
        !            98:     /* cursmin and cursmax are device specific */
        !            99: 
        !           100:     pScreen->numVisuals = NUMVISUALS;
        !           101:     pScreen->visuals = visuals;
        !           102: 
        !           103:     pPixmap = (PixmapPtr )Xalloc(sizeof(PixmapRec));
        !           104:     pPixmap->drawable.type = DRAWABLE_PIXMAP;
        !           105:     pPixmap->drawable.depth = 8;
        !           106:     pPixmap->drawable.pScreen = pScreen;
        !           107:     pPixmap->drawable.serialNumber = 0;
        !           108:     pPixmap->width = xsize;
        !           109:     pPixmap->height = ysize;
        !           110:     pPixmap->refcnt = 1;
        !           111:     pPixmap->devPrivate = pbits;
        !           112:     pPixmap->devKind = PixmapBytePad(xsize, 8);
        !           113:     pScreen->devPrivate = (pointer)pPixmap;
        !           114: 
        !           115:     /* anything that cfb doesn't know about is assumed to be done
        !           116:        elsewhere.  (we put in no-op only for things that we KNOW
        !           117:        are really no-op.
        !           118:     */
        !           119:     pScreen->QueryBestSize = cfbQueryBestSize;
        !           120:     pScreen->CreateWindow = cfbCreateWindow;
        !           121:     pScreen->DestroyWindow = cfbDestroyWindow;
        !           122:     pScreen->PositionWindow = cfbPositionWindow;
        !           123:     pScreen->ChangeWindowAttributes = cfbChangeWindowAttributes;
        !           124:     pScreen->RealizeWindow = cfbMapWindow;
        !           125:     pScreen->UnrealizeWindow = cfbUnmapWindow;
        !           126: 
        !           127:     pScreen->RealizeFont = mfbRealizeFont;
        !           128:     pScreen->UnrealizeFont = mfbUnrealizeFont;
        !           129:     pScreen->GetImage = miGetImage;
        !           130:     pScreen->GetSpans = cfbGetSpans;   /* XXX */
        !           131:     pScreen->CreateGC = cfbCreateGC;
        !           132:     pScreen->CreatePixmap = cfbCreatePixmap;
        !           133:     pScreen->DestroyPixmap = cfbDestroyPixmap;
        !           134:     pScreen->ValidateTree = miValidateTree;
        !           135: 
        !           136: #ifdef STATIC_COLOR
        !           137:     pScreen->InstallColormap = NoopDDA;
        !           138:     pScreen->UninstallColormap = NoopDDA;
        !           139:     pScreen->ListInstalledColormaps = cfbListInstalledColormaps;
        !           140: #endif
        !           141: #ifdef STATIC_COLOR
        !           142:     pScreen->StoreColors = NoopDDA;
        !           143:     pScreen->ResolveColor = cfbResolveStaticColor;
        !           144: #endif
        !           145: 
        !           146:     pScreen->RegionCreate = miRegionCreate;
        !           147:     pScreen->RegionCopy = miRegionCopy;
        !           148:     pScreen->RegionDestroy = miRegionDestroy;
        !           149:     pScreen->Intersect = miIntersect;
        !           150:     pScreen->Inverse = miInverse;
        !           151:     pScreen->Union = miUnion;
        !           152:     pScreen->Subtract = miSubtract;
        !           153:     pScreen->RegionReset = miRegionReset;
        !           154:     pScreen->TranslateRegion = miTranslateRegion;
        !           155:     pScreen->RectIn = miRectIn;
        !           156:     pScreen->PointInRegion = miPointInRegion;
        !           157:     pScreen->WindowExposures = miWindowExposures;
        !           158:     pScreen->RegionNotEmpty = miRegionNotEmpty;
        !           159:     pScreen->RegionEmpty = miRegionEmpty;
        !           160:     pScreen->RegionExtents = miRegionExtents;
        !           161: 
        !           162:     pScreen->BlockHandler = NoopDDA;
        !           163:     pScreen->WakeupHandler = NoopDDA;
        !           164:     pScreen->blockData = (pointer)0;
        !           165:     pScreen->wakeupData = (pointer)0;
        !           166: 
        !           167:     pScreen->CreateColormap = cfbInitialize332Colormap;
        !           168:     pScreen->DestroyColormap = NoopDDA;
        !           169: 
        !           170:     /*  Set up the remaining fields in the visuals[] array & make a RT_VISUALID */
        !           171:     for (i = 0; i < NUMVISUALS; i++) {
        !           172:        visuals[i].vid = FakeClientID(0);
        !           173:        visuals[i].screen = index;
        !           174:        AddResource(visuals[i].vid, RT_VISUALID, &visuals[i], NoopDDA, RC_CORE);
        !           175:        switch (visuals[i].class) {
        !           176:        case StaticGray:
        !           177:        case StaticColor:
        !           178:            CreateColormap(FakeClientID(0), pScreen, &visuals[i], 
        !           179:                &cfbColorMaps[i], AllocAll, 0);
        !           180:            break;
        !           181:        case PseudoColor:
        !           182:        case GrayScale:
        !           183:            CreateColormap(FakeClientID(0), pScreen, &visuals[i], 
        !           184:                &cfbColorMaps[i], AllocNone, 0);
        !           185:            break;
        !           186:        case TrueColor:
        !           187:        case DirectColor:
        !           188:            FatalError("Bad visual in cfbScreenInit\n");
        !           189:        }
        !           190:        if (!cfbColorMaps[i])
        !           191:            FatalError("Can't create colormap in cfbScreenInit\n");
        !           192:     }
        !           193:     pScreen->defColormap = cfbColorMaps[ROOTVISUAL]->mid;
        !           194:     pScreen->rootVisual = visuals[ROOTVISUAL].vid;
        !           195: 
        !           196:     /*  Set up the remaining fields in the depths[] array */
        !           197:     for (i = 0; i < NUMDEPTHS; i++) {
        !           198:        if (depths[i].numVids > 0) {
        !           199:            depths[i].vids = pVids = (long *) Xalloc(sizeof (long) * depths[i].numVids);
        !           200:            /* XXX - here we offer only the 8-bit visual */
        !           201:            pVids[0] = visuals[ROOTVISUAL].vid;
        !           202:        }
        !           203:     }
        !           204:     return( TRUE );
        !           205: }
        !           206: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.